<?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>203408</bug_id>
          
          <creation_ts>2019-10-25 06:51:00 -0700</creation_ts>
          <short_desc>Create base class common to AccessibilityObject and AXIsolatedTreeNode.</short_desc>
          <delta_ts>2019-10-31 01:15:29 -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>New Bugs</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="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583787</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-25 06:51:00 -0700</bug_when>
    <thetext>Create base class common to AccessibilityObject and AXIsolatedTreeNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583826</commentid>
    <comment_count>1</comment_count>
      <attachid>381926</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-25 08:22:58 -0700</bug_when>
    <thetext>Created attachment 381926
Created AccessibilityObjectBase, a common base class for both AccessibilityObject and AXIsolatedTreeNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583858</commentid>
    <comment_count>2</comment_count>
      <attachid>381926</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-25 09:25:45 -0700</bug_when>
    <thetext>Comment on attachment 381926
Created AccessibilityObjectBase, a common base class for both AccessibilityObject and AXIsolatedTreeNode.

View in context: https://bugs.webkit.org/attachment.cgi?id=381926&amp;action=review

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:336
&gt;      for (const auto&amp; child : axRenderImage-&gt;children()) {

the method signature

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2973
&gt; +    tree-&gt;setRoot(root);

why do we want to store the actual root instead of the rootID?

&gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:147
&gt; +    return downcast&lt;AccessibilityTableCell&gt;(cell);

this downcast seems unnecessary since we&apos;re returning a AccessibilityObjectBase

&gt; Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm:44
&gt; +    return wrapper;

if we&apos;re detaching a wrapper I don&apos;t think we should be returning it, because it&apos;s essentially deallocated when it comes back after this method

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:121
&gt; +    m_readerThreadNodeMap.add(root-&gt;objectID(), WTFMove(root));

I&apos;m concerned about moving the root into the reader thread here. I think that&apos;s already supposed to have happened</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583861</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-25 09:34:41 -0700</bug_when>
    <thetext>So I think there are too many different kinds of changes rolled up in here

1) rename AXObjectInterface &gt; AXObjectBase
2) Adopt all AXObjectBase methods in AXIsolatedTree
3) move virtual &gt; override
4) rename matchedParent &gt; ancestorMatch and rewrite function
   - I don&apos;t think we should add an &quot;ax&quot; namespace because ax isn&apos;t well known
   - we should probably have a method in WebCore namespace that&apos;s like &quot;accessibilityAncestorMatched&quot;
5) Lots of little cleanup for auto or -&gt; to . syntax
6) rewrite detachWrapper
7) storing root node instead of the root node id
8) rename axObjectID -&gt; objectID()

I&apos;m also worried about having two AXObjectWrappers now. It will double the number of ObjC classes initialized, but I&apos;m also concerned that there are some cases where we will reference once wrapper in once place and then another wrapper in another place and things won&apos;t work correctly.

-------

So I think we should try to break up this patch into smaller patches that separates what each patch does. It will help with reviewing and make it more clear why this change was associated with a specific bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584025</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-25 14:55:35 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #2)
&gt; Comment on attachment 381926 [details]
&gt; Created AccessibilityObjectBase, a common base class for both
&gt; AccessibilityObject and AXIsolatedTreeNode.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381926&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:336
&gt; &gt;      for (const auto&amp; child : axRenderImage-&gt;children()) {
&gt; 
&gt; the method signature

It is fine to return an AccessibilityObject here, no need to return the base class. Although we could change the method signature to return an AccessibilityImageMapLink. is that what you mean?

&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:2973
&gt; &gt; +    tree-&gt;setRoot(root);
&gt; 
&gt; why do we want to store the actual root instead of the rootID?

The root needs to be set during the creation of the tree because:

- (id)isolatedTreeRootObject
{
...
            auto tree = cache-&gt;generateIsolatedAccessibilityTree();
...
            if (auto rootNode = tree-&gt;rootNode())
                return rootNode-&gt;wrapper();
...
    return nil;
}

and tree-&gt;rootNode() will be nil because it won&apos;t find any element in the HashMap for the root ID. If this returns nil, everything else fails.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:147
&gt; &gt; +    return downcast&lt;AccessibilityTableCell&gt;(cell);
&gt; 
&gt; this downcast seems unnecessary since we&apos;re returning a
&gt; AccessibilityObjectBase

Yes, fixed.

&gt; 
&gt; &gt; Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm:44
&gt; &gt; +    return wrapper;
&gt; 
&gt; if we&apos;re detaching a wrapper I don&apos;t think we should be returning it,
&gt; because it&apos;s essentially deallocated when it comes back after this method

Not if the caller assigns it to a variable, strong reference. I did this to allow for swapping the underlying accessible object. For instance:

AXIsolatedTreeNode::f() {
    // cannot fulfill request, have to go back to main thread.
    AccessibilityObject* axObject = get corresponding live object from the ID;
    auto* wrapper = cache-&gt;detachWrapper(*this);
    axObject-&gt;attachWrapper(wrapper);
    // send to main thread axObject-&gt;f()
}

But I&apos;m not using it yet in this patch. So I could revert that if you wish.

&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:121
&gt; &gt; +    m_readerThreadNodeMap.add(root-&gt;objectID(), WTFMove(root));
&gt; 
&gt; I&apos;m concerned about moving the root into the reader thread here. I think
&gt; that&apos;s already supposed to have happened

It hasn&apos;t happened on generating the tree when the root needs to be set. So that&apos;s why we now do setRoot instead of just setRootID, as explained above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584028</commentid>
    <comment_count>5</comment_count>
      <attachid>381969</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-25 15:08:30 -0700</bug_when>
    <thetext>Created attachment 381969
Addresses comment in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584775</commentid>
    <comment_count>6</comment_count>
      <attachid>382144</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-28 18:03:07 -0700</bug_when>
    <thetext>Created attachment 382144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584782</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-28 18:08:09 -0700</bug_when>
    <thetext>This new patch is a subset of the previous patch with only the changes related to making AXCoreObject a common base class for AccessibilityObject and AXIsolatedTreeNode. Builds and passes all tests in both MacOS and iOS. No changes in AXIsolatedTreeNode other than the strictly necessary to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585316</commentid>
    <comment_count>8</comment_count>
      <attachid>382296</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 05:05:30 -0700</bug_when>
    <thetext>Created attachment 382296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585317</commentid>
    <comment_count>9</comment_count>
      <attachid>382297</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 05:35:46 -0700</bug_when>
    <thetext>Created attachment 382297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585318</commentid>
    <comment_count>10</comment_count>
      <attachid>382298</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 05:49:48 -0700</bug_when>
    <thetext>Created attachment 382298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585322</commentid>
    <comment_count>11</comment_count>
      <attachid>382302</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 06:30:04 -0700</bug_when>
    <thetext>Created attachment 382302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585348</commentid>
    <comment_count>12</comment_count>
      <attachid>382310</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 07:38:26 -0700</bug_when>
    <thetext>Created attachment 382310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585376</commentid>
    <comment_count>13</comment_count>
      <attachid>382323</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 09:34:24 -0700</bug_when>
    <thetext>Created attachment 382323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585458</commentid>
    <comment_count>14</comment_count>
      <attachid>382323</attachid>
    <who name="EWS">ews-feeder</who>
    <bug_when>2019-10-30 12:38:47 -0700</bug_when>
    <thetext>Comment on attachment 382323
Patch

Rejecting attachment 382323 from commit-queue.

andresg_22@apple.com does not have committer permissions according to https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585483</commentid>
    <comment_count>15</comment_count>
      <attachid>382323</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 13:44:43 -0700</bug_when>
    <thetext>Comment on attachment 382323
Patch

Clearing flags on attachment: 382323

Committed r251798: &lt;https://trac.webkit.org/changeset/251798&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585484</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 13:44:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585485</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-30 13:45:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/56756913&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585817</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-31 00:56:23 -0700</bug_when>
    <thetext>This patch appears to have broken Windows builds:
e.g.

https://build.webkit.org/builders/Apple%20Win%2010%20Debug%20%28Build%29/builds/7858/steps/compile-webkit/logs/stdio

  JSInternals.cpp
c:\cygwin\home\buildbot\worker\win10-debug\build\source\webkitlegacy\win\accessiblebase.cpp(361): error C2220: warning treated as error - no &apos;object&apos; file generated [C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\Source\WebKitLegacy\WebKitLegacy.vcxproj]
c:\cygwin\home\buildbot\worker\win10-debug\build\source\webkitlegacy\win\accessiblebase.cpp(361): warning C4541: &apos;dynamic_cast&apos; used on polymorphic type &apos;WebCore::AXCoreObject&apos; with /GR-; unpredictable behavior may result [C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\Source\WebKitLegacy\WebKitLegacy.vcxproj]
c:\cygwin\home\buildbot\worker\win10-debug\build\source\webkitlegacy\win\accessiblebase.cpp(1048): warning C4541: &apos;dynamic_cast&apos; used on polymorphic type &apos;WebCore::AXCoreObject&apos; with /GR-; unpredictable behavior may result [C:\cygwin\home\buildbot\worker\win10-debug\build\WebKitBuild\Debug\Source\WebKitLegacy\WebKitLegacy.vcxproj]
  WebDesktopNotificationsDelegate.cpp

We disable RTTI so I&apos;m not certain dynamic_cast even works in WebKit...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585818</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-31 00:59:58 -0700</bug_when>
    <thetext>Also, please be careful with isolated tree work. Most of objects like Node, VisiblePosition, etc... are NOT thread safe. Simply storing a Ref or RefPtr on them in non-main thread would corrupt them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585821</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-31 01:06:11 -0700</bug_when>
    <thetext>Build fix attempt landed in https://trac.webkit.org/changeset/251835.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585824</commentid>
    <comment_count>21</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-31 01:15:29 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #19)
&gt; Also, please be careful with isolated tree work. Most of objects like Node,
&gt; VisiblePosition, etc... are NOT thread safe. Simply storing a Ref or RefPtr
&gt; on them in non-main thread would corrupt them.

Yep we&apos;re very aware of this limitation</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381926</attachid>
            <date>2019-10-25 08:22:58 -0700</date>
            <delta_ts>2019-10-25 15:08:30 -0700</delta_ts>
            <desc>Created AccessibilityObjectBase, a common base class for both AccessibilityObject and AXIsolatedTreeNode.</desc>
            <filename>AccessibilityObjectBase.diff</filename>
            <type>text/plain</type>
            <size>327367</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MzgyZDIyN2E4MS4uNTMyM2I0YmFkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NTEgQEAKKzIwMTktMTAtMjUgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBw
bGUuY29tPgorCisgICAgICAgIENyZWF0ZSBiYXNlIGNsYXNzIGNvbW1vbiB0byBBY2Nlc3NpYmls
aXR5T2JqZWN0IGFuZCBBWElzb2xhdGVkVHJlZU5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkIHNpbmNlIHRoaXMg
ZG9lc24ndCBjaGFuZ2UgYW55IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgRm9sbG93IHVwIHRv
IHRoZSBBWElzb2xhdGVkVHJlZSB3b3JrLgorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSBpcyBhIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBib3RoIEFjY2Vzc2liaWxpdHlPYmplY3QKKyAg
ICAgICAgYW5kIEFYSXNvbGF0ZWRUcmVlTm9kZS4gVGhlcmVmb3JlLCBhbGwgY2xpZW50IGNvZGUg
c2hvdWxkIHVzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZQorICAgICAgICBpbnN0ZWFkIG9mIGFu
eSBvZiB0aGUgZGVyaXZlZCBjbGFzc2VzLiBUaGlzIHdpbGwgYWxsb3cgdG8gc2VhbWxlc3NseQor
ICAgICAgICBzd2l0Y2ggYmV0d2VlbiB1c2luZyBBWElzb2xhdGVkVHJlZU5vZGUgaW4gdGhlIHNl
Y29uZGFyeSB0aHJlYWQgYW5kCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QgaW4gdGhlIG1h
aW4gdGhyZWFkIHdoZW4gbmVlZGVkLiBUaGlzIGNoYW5nZSBhbHNvCisgICAgICAgIGFsbG93cyBm
b3IgY2xlYW5lciBjbGllbnQgY29kZSwgZW5jYXBzdWxhdGluZyB0aGUgZGVjaXNpb24gd2hldGhl
cgorICAgICAgICBBWElzb2xhdGVkVHJlZU5vZGUgY2FuIHJlc3BvbmQgdG8gYSByZXF1ZXN0IG9y
IG5lZWQgdG8gcmVzb3J0IHRvIGl0cworICAgICAgICBjb3JyZXNwb25kaW5nIEFjY2Vzc2liaWxp
dHlPYmplY3QsIGFuZCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNvbXBpbGUKKyAgICAgICAgdGlt
ZSBmbGFnIGNoZWNrcyBmb3IgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpn
ZXRBWElEKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRh
V2l0aENoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0
ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKToK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvclBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvcklu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmluZGV4Rm9yQ2hhcmFjdGVy
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJl
ZENhY2hlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlz
b2xhdGVkQWNjZXNzaWJpbGl0eVRyZWVIaWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6Z2VuZXJhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkUm93RGVzY2VuZGFudCk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6
Y29sdW1uSW5kZXhSYW5nZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93OjpkaXNjbG9zZWRSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxhYmVsOjppbnNlcnRDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGFiZWwuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50
QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50Ojppc01hdGhTY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFk
aWNhbmRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhSb290SW5kZXhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFVuZGVyT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zl
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6Om1hdGhTdWJzY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhTdXBlcnNjcmlwdE9iamVjdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbik6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRU
YWJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxw
VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
dGV4dFVuZGVyRWxlbWVudCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5VGV4
dFNlYXJjaE1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNv
bnRhaW5zVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5U
b0FycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1h
dGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0Vs
ZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
RGVzY2VuZGFudE9mT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9uQW5jZXN0b3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzZWRV
SUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQVhIaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2FibGVBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplZGl0YWJsZUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhZGlvR3JvdXBBbmNlc3RvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZExpc3RJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJl
bnREYXRhRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dCBjb25zdCk6IFJlbmFtZWQgY29udGFpbnNU
ZXh0LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVu
dCk6IFJlbmFtZWQgYW5kIHJlLWltcGxlbWVudGVkIGFzIGF4OjptYXRjaGVkQW5jZXN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoK
KyAgICAgICAgTW9zdCBvZiB0aGUgZGVsZXRpb25zIGhlcmUgYXJlIG1vdmVkIHRvIHRoZSBiYXNl
IGNsYXNzLgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YTo6aXNOdWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjpWaXNpYmxlUG9zaXRpb25S
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb25SYW5nZTo6
aXNOdWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdl
OjpQbGFpblRleHRSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGFpblRleHRS
YW5nZTo6aXNOdWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246
OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldEFYT2JqZWN0SUQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5pdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTVkdSb290IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVNWR0VsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNBdHRhY2htZW50RWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hlYWRpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbWFnZU1hcCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05h
dGl2ZUltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzSW1hZ2VCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQYXNzd29yZEZpZWxkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhc3N3b3JkRmllbGRPckNv
bnRhaW5pbmdQYXNzd29yZEZpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlVGV4dENvbnRyb2wgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWFyY2hGaWVsZCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1dlYkFy
ZWEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNDaGVja2JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1JhZGlvQnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlTGlzdEJveCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3ggY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNM
aXN0Qm94T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzTWVkaWFUaW1lbGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVSZWxhdGVkIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVC
YXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51QnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudUl0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbnB1dEltYWdlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJvZ3Jlc3NJbmRpY2F0
b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNTbGlkZXJUaHVtYiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0lucHV0U2xpZGVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29udHJvbCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhYmVs
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc1RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzRGF0YVRhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVSb3cgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZUNvbHVtbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Rh
YmxlQ2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0ZpZWxkc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzR3JvdXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBVHJlZUdyaWRSb3cgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51TGlzdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c01lbnVMaXN0UG9wdXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNNZW51TGlzdE9wdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwaW5CdXR0b24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNOYXRpdmVTcGlu
QnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzU3BpbkJ1dHRvblBhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNb2NrT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVkaWFPYmplY3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTd2l0
Y2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNUb2dnbGVCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJMaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFiSXRlbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhZGlvR3JvdXAgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb21i
b0JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RyZWVHcmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTGlzdEl0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDaGVja2JveE9yUmFkaW8gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTY3JvbGxWaWV3
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzQ2FudmFzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzUG9wVXBCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb2xvcldlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGxpdHRlciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Rvb2xiYXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNTdW1tYXJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzQ2hlY2tlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWxlY3RlZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ZvY3VzZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNIb3Zl
cmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzSW5kZXRlcm1pbmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xvYWRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc011bHRpU2VsZWN0YWJsZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09mZlNjcmVl
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc1ByZXNzZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNVbnZpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNWaXNpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmVxdWlyZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNSZXF1
aXJlZEF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0xpbmtlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Zpc2libGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb2xsYXBzZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNFeHBhbmRl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Nl
bGVjdGVkT3B0aW9uQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omhhc0JvbGRGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0l0YWxpY0ZvbnQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzUGxhaW5UZXh0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Omhhc1NhbWVGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Omhhc1NhbWVGb250Q29sb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZVN0eWxlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3RhdGljVGV4dCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpo
YXNVbmRlcmxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpjYW5TZXRWYWx1ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXROdW1lcmljVmFsdWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0U2VsZWN0ZWRB
dHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRFeHBhbmRlZEF0
dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpub2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnJlbmRlcmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0YWJsZUxldmVsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZhbHVlRGVzY3Jp
cHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6dmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXhWYWx1ZUZvclJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Rl
cFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGF5b3V0Q291bnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQU93bnMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzUG9wdXAgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FudmFzSGFzRmFs
bGJhY2tDb250ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQURyb3BwaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQURyYWdnaW5nIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QVJJQUdyYWJiZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2V0QVJJQUdyYWJiZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0Q2hpbGQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdENoaWxkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBy
ZXZpb3VzU2libGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpuZXh0U2libGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlz
dHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b2JzZXJ2YWJsZU9iamVjdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5rZWRVSUVs
ZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OnRpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmV4cG9zZXNUaXRsZVVJRWxlbWVudCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb3JyZXNwb25kaW5n
TGFiZWxGb3JDb250cm9sRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzY3JvbGxCYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJv
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6YWNjZXNzaWJpbGl0eVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnRpdGxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmhlbHBUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQVJJQVN0YXRpY1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nVmFsdWUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4dFVuZGVyRWxl
bWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp0ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnRleHRMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVk
QnlBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6ZXhwYW5kZWRUZXh0VmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
b2xvclZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmF4T2JqZWN0SUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jaG9yRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25FbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5kaW5n
Qm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2l6ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50UGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBw
b3J0c1BhdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2VsZWN0ZWRUZXh0UmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uU3RhcnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uRW5kIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVy
bCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6c2VsZWN0ZWRUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc0tleSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6d2lkZ2V0Rm9yQXR0YWNo
bWVudFZpZXcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0
UmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c2V0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6c2V0U2VsZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0U2VsZWN0ZWRSb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om1ha2VSYW5nZVZpc2libGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGVyZm9ybURlZmF1bHRBY3Rpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5jcmVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlY3JlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGls
ZHJlbkNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6dGV4dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWRkQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkSWdub3JlQXR0cmlidXRl
Um9sZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpjYW5IYXZlQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVu
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldE5l
ZWRzVG9VcGRhdGVTdWJ0cmVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Om5lZWRzVG9VcGRhdGVDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGV0YWNoZWRG
cm9tUGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoaWxkcmVuKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYkNoaWxk
cmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNo
b3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3RpdmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJs
ZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5k
c0ZvclJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bmV4dFZpc2libGVQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmV2aW91c1Zpc2libGVQb3NpdGlvbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNp
YmxlUG9zaXRpb25Gb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjppbmRleEZvclZpc2libGVQb3NpdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmRleCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lQnJl
YWtzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmRvQVhSYW5nZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdlRm9ySW5kZXggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFN0cmluZ0ZvclJhbmdl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRvQVhCb3VuZHNGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNl
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzdHJpbmdWYWx1ZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nUm9sZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bmFtZUZvck1TQUEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVzY3Jp
cHRpb25Gb3JNU0FBIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnJvbGVWYWx1ZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZFZhbHVlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdp
b25TdGF0dXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bGl2ZVJlZ2lvblJlbGV2YW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25BdG9taWMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCdXN5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNwZWFr
QXNQcm9wZXJ0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01hdGhFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZyYWN0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNlZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01h
dGhTdWJzY3JpcHRTdXBlcnNjcmlwdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVW5kZXJPdmVyIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFJv
b3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNYXRoU3F1YXJlUm9vdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE51bWJlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhPcGVyYXRv
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01hdGhGZW5jZU9wZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aElkZW50
aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNNYXRoVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVDZWxsIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11
bHRpc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFRva2VuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhNdWx0aXNjcmlw
dE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUmFkaWNhbmRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFJvb3RJbmRleE9iamVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoVW5kZXJPYmplY3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aE92ZXJPYmpl
Y3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0
aE51bWVyYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXRoRGVub21pbmF0b3JPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aEJhc2VPYmplY3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vw
ZXJzY3JpcHRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aEZlbmNlZE9wZW5TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aEZlbmNlZENsb3NlU3RyaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhM
aW5lVGhpY2tuZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQW5vbnltb3VzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhQcmVzY3JpcHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhQb3N0c2Ny
aXB0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0hpZGRlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNo
bWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhcklzSWdub3JlZEZy
b21QYXJlbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWE6OkFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dENyaXRlcmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uOjpBY2Nlc3NpYmlsaXR5
VGV4dE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVy
RWxlbWVudE1vZGU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGFpblRleHRSYW5nZTo6UGxhaW5UZXh0UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhaW5UZXh0UmFuZ2U6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb25SYW5nZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGE6OkFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWRGcm9tUGFyZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGE6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpheDo6bWF0Y2hlZEFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9u
R3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4p
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xp
ZGVyOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVy
OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNwaW5CdXR0b246OmluY3JlbWVudEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbjo6ZGVjcmVtZW50QnV0dG9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6cm93SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNl
bGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
OjpwYXJlbnRSb3cgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVh
ZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgaW5pdFdpdGhEYXRhOmFjY2Vz
c2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5VHJlZUFuY2VzdG9y
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmls
aXR5TGlzdEFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIF9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGFuZG1hcmtBbmNlc3Rvcl0pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRh
YmxlQW5jZXN0b3JdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
X2FjY2Vzc2liaWxpdHlJc0luVGFibGVDZWxsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5RmllbGRzZXRBbmNlc3Rvcl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eUZyYW1lQW5j
ZXN0b3JdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vz
c2liaWxpdHlUcmFpdHNGcm9tQW5jZXN0b3JzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIHRhYmxlQ2VsbFBhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciB0YWJsZVBhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VGl0bGVFbGVtZW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVt
ZW50c10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5RGF0ZXRpbWVWYWx1ZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q29udGFpbmVyXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGFpbFBhcmVudEZvclN1bW1hcnlP
YmplY3Q6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGFp
bFBhcmVudEZvck9iamVjdDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgdHJlZUl0ZW1QYXJlbnRGb3JPYmplY3Q6XSk6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0
cmluZ1NldFN0eWxlKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczphdHRyaWJ1dGVkOl0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U3VwcG9ydHNBUklBRXhwYW5k
ZWRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eUlzRXhwYW5kZWRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6c2V0
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hh
bmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6c2V0Um9vdE5vZGVJRCk6
IFJlbmFtZWQgc2V0Um9vdC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5v
ZGU6OkFYSXNvbGF0ZWRUcmVlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZU5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6Omlu
aXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
Tm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2Rl
OjpjaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OmZvY3Vz
ZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2Rl
OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZFRyZWVOb2RlOjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3Jl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRldGFjaFdy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YXNzb2NpYXRlSXNvbGF0ZWRU
cmVlTm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAo
YWRkQ2hpbGRUb0FycmF5KToKKyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgaW5pdFdpdGhBY2Nlc3NpYmlsaXR5
T2JqZWN0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Ug
YXR0YWNoOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Ug
ZGV0YWNoXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSB1
cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlPYmplY3RdKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGF4QmFja2luZ09iamVjdF0pOgorICAgICAgICAo
YWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZSBpc29sYXRlZFRyZWVOb2RlXSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlOnNwZWxsQ2hlY2s6XSk6CisgICAgICAgIChjb252ZXJ0VG9WZWN0b3IpOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGlsZHJlblZlY3RvclNpemVdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2hpbGRyZW5WZWN0b3JB
cnJheV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIaXRUZXN0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRNZW51XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmdldFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpnZXRTZWxlY3RlZENoaWxkTm9kZXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
cm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisKIDIwMTktMTAtMjUg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRhYmFzZUNvbnRl
eHQgc2hvdWxkIG5vdCBwcmV2ZW50IGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGFh
ZTRkODYzOGI1Li5lZDAwNDhhOGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0yMjcsOSArMjI3LDkgQEAgQVhPYmplY3RDYWNoZTo6
fkFYT2JqZWN0Q2FjaGUoKQogICAgIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuc3RvcCgpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmplY3QgOiBtX29iamVjdHMudmFsdWVzKCkpIHsKLSAg
ICAgICAgZGV0YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOworICAgICAgICBkZXRhY2hXcmFwcGVyKCpvYmplY3QsIEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOwogICAgICAgICBvYmpl
Y3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsK
LSAgICAgICAgb2JqZWN0LT5zZXRBWE9iamVjdElEKDApOworICAgICAgICBvYmplY3QtPnNldE9i
amVjdElEKDApOwogICAgIH0KIH0KIApAQCAtMzM2LDE1ICszMzYsMTUgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KEhUTUxBcmVh
RWxlbWVudCogYXIKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhSZW5kZXJJbWFnZS0+
Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+
KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgaWYg
KGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpjaGlsZCkuYXJlYUVsZW1lbnQo
KSA9PSBhcmVhRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICB9
ICAgIAotICAgIAorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbms+KGNoaWxkLmdldCgpKTsKKyAgICB9CisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1l
bnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQVhP
YmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKIHsK
ICAgICBpZiAoIWdBY2Nlc3NpYmlsaXR5RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0zNTUsMTIgKzM1NSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hl
Ojpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogICAgIGlmIChpczxI
VE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJ
bWFnZU1hcFVJRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50
KSk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxO
b2RlKj4oZm9jdXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogb2JqID0gZm9jdXNlZERvY3VtZW50LT5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKGZvY3VzZWRFbGVtZW50ID8gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZvY3VzZWRFbGVt
ZW50KSA6IGZvY3VzZWREb2N1bWVudCk7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKG9iai0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpIHsK
LSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2
ZURlc2NlbmRhbnQoKSkKKyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkZXNj
ZW5kYW50ID0gb2JqLT5hY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICBvYmogPSBkZXNj
ZW5kYW50OwogICAgIH0KIApAQCAtNTYwLDEwICs1NjAsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBnZXRB
WElEKG5ld09iai5nZXQoKSk7CiAgICAgCi0gICAgbV93aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3
aWRnZXQsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
YXhPYmplY3RJRCgpLCBuZXdPYmopOyAgICAKKyAgICBtX3dpZGdldE9iamVjdE1hcHBpbmcuc2V0
KHdpZGdldCwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFw
cGVyKG5ld09iai5nZXQoKSk7CisgICAgYXR0YWNoV3JhcHBlcigqbmV3T2JqKTsKICAgICByZXR1
cm4gbmV3T2JqLmdldCgpOwogfQogCkBAIC02MDgsMTAgKzYwOCwxMCBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgZ2V0
QVhJRChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwg
bmV3T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVj
dElEKCksIG5ld09iaik7CisgICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2Jq
LT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3
T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQo
KSk7CisgICAgYXR0YWNoV3JhcHBlcigqbmV3T2JqKTsKICAgICBuZXdPYmotPnNldExhc3RLbm93
bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKTsKICAgICAv
LyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSB3aWxsIGNhdXNlIHRo
ZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAgICAgLy8gaXQgd2lsbCBk
aXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBsZWFkaW5nIHRvIGEgdXNl
LWFmdGVyLWZyZWUuCkBAIC02MzYsMTAgKzYzNiwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
WE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAgICAg
Z2V0QVhJRChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgbmV3T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2Jq
LT5heE9iamVjdElEKCksIG5ld09iaik7CisgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFw
cGVyKG5ld09iai5nZXQoKSk7CisgICAgYXR0YWNoV3JhcHBlcigqbmV3T2JqKTsKICAgICBuZXdP
YmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKTsKICAgICAvLyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSB3aWxsIGNhdXNlIHRoZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAg
ICAgLy8gaXQgd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBs
ZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCkBAIC03MDksOSArNzA5LDkgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9vYmplY3Rz
LnNldChvYmotPmF4T2JqZWN0SUQoKSwgb2JqKTsgICAgCisgICAgbV9vYmplY3RzLnNldChvYmot
Pm9iamVjdElEKCksIG9iaik7CiAgICAgb2JqLT5pbml0KCk7Ci0gICAgYXR0YWNoV3JhcHBlcihv
YmouZ2V0KCkpOworICAgIGF0dGFjaFdyYXBwZXIoKm9iaik7CiAgICAgcmV0dXJuIG9iai5nZXQo
KTsKIH0KIApAQCAtNzI0LDkgKzcyNCw5IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFY
SUQgYXhJRCkKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGV0YWNo
V3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVu
dERlc3Ryb3llZCk7CisgICAgZGV0YWNoV3JhcHBlcigqb2JqZWN0LCBBY2Nlc3NpYmlsaXR5RGV0
YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQpOwogICAgIG9iamVjdC0+ZGV0YWNoKEFjY2Vz
c2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCwgdGhpcyk7Ci0gICAgb2Jq
ZWN0LT5zZXRBWE9iamVjdElEKDApOworICAgIG9iamVjdC0+c2V0T2JqZWN0SUQoMCk7CiAKICAg
ICBtX2lkc0luVXNlLnJlbW92ZShheElEKTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09M
QVRFRF9UUkVFKQpAQCAtNzk5LDcgKzc5OSw3IEBAIEFYSUQgQVhPYmplY3RDYWNoZTo6cGxhdGZv
cm1HZW5lcmF0ZUFYSUQoKSBjb25zdAogQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iaikKIHsKICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeS1hc3NpZ25l
ZCBJRAotICAgIEFYSUQgb2JqSUQgPSBvYmotPmF4T2JqZWN0SUQoKTsKKyAgICBBWElEIG9iaklE
ID0gb2JqLT5vYmplY3RJRCgpOwogICAgIGlmIChvYmpJRCkgewogICAgICAgICBBU1NFUlQobV9p
ZHNJblVzZS5jb250YWlucyhvYmpJRCkpOwogICAgICAgICByZXR1cm4gb2JqSUQ7CkBAIC04MDgs
NyArODA4LDcgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iaikKICAgICBvYmpJRCA9IHBsYXRmb3JtR2VuZXJhdGVBWElEKCk7CiAKICAgICBtX2lk
c0luVXNlLmFkZChvYmpJRCk7Ci0gICAgb2JqLT5zZXRBWE9iamVjdElEKG9iaklEKTsKKyAgICBv
YmotPnNldE9iamVjdElEKG9iaklEKTsKICAgICAKICAgICByZXR1cm4gb2JqSUQ7CiB9CkBAIC04
ODEsMTIgKzg4MSwxMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJPYmplY3QqIG5ld0NoaQogICAgIGNoaWxkcmVuQ2hh
bmdlZChnZXQocmVuZGVyZXIpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNo
YW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQordm9pZCBBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iaikKIHsKICAgICBpZiAoIW9i
aikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3Qu
YWRkKG9iaik7CisgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3QuYWRkKG9iaik7CiB9
CiAgICAgCiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkK
QEAgLTg5OSw4ICs4OTksOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RU
aW1lckZpcmVkKCkKICAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG1fbm90aWZpY2F0
aW9uc1RvUG9zdCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0
aW9ucykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBub3RlLmZpcnN0Lmdl
dCgpOwotICAgICAgICBpZiAoIW9iai0+YXhPYmplY3RJRCgpKQorICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsKKyAgICAgICAgaWYgKCFvYmot
Pm9iamVjdElEKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoIW9iai0+
YXhPYmplY3RDYWNoZSgpKQpAQCAtOTg4LDcgKzk4OCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdE5vdGlmaWNhdGlvbihOb2RlKiBub2RlLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24s
IFBvCiAgICAgcG9zdE5vdGlmaWNhdGlvbihvYmplY3QuZ2V0KCksICZub2RlLT5kb2N1bWVudCgp
LCBub3RpZmljYXRpb24sIHBvc3RUYXJnZXQsIHBvc3RUeXBlKTsKIH0KIAotdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgRG9j
dW1lbnQqIGRvY3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQg
cG9zdFRhcmdldCwgUG9zdFR5cGUgcG9zdFR5cGUpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RO
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iamVjdCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9zdFRhcmdl
dCwgUG9zdFR5cGUgcG9zdFR5cGUpCiB7CiAgICAgc3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZXMoKTsKIApAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpz
ZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRN
YXIKICAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7
CiAgICAgfQogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2Jq
ZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgp
OwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRh
LmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4dE1hcmtl
ckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwpA
QCAtMjIzMCw3ICsyMjMwLDcgQEAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2Fj
aGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFYKICAgICBUZXh0TWFy
a2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0
ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwogICAgIAotICAgIHRl
eHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFy
a2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRh
Lm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9IHZp
c2libGVQb3MuYWZmaW5pdHkoKTsKQEAgLTIyNjIsNyArMjI2Miw3IEBAIE9wdGlvbmFsPFRleHRN
YXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25J
blRleHRDb250CiAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CiAgICAgbWVtc2V0
KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1hcmtl
ckRhdGEpKTsKICAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5heE9i
amVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+b2JqZWN0SUQo
KTsKICAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRleHRDb250cm9sOwogCiAgICAgY2FjaGUt
PnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwpAQCAtMjcwNyw3ICsyNzA3LDcgQEAgSW50UmVj
dCBBWE9iamVjdENhY2hlOjphYnNvbHV0ZUNhcmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KGNv
bnN0IENoYXJhY3Rlck9mZnMKICAgICByZXR1cm4gYWJzb2x1dGVCb3VuZHNGb3JMb2NhbENhcmV0
UmVjdChjYXJldFBhaW50ZXIsIGxvY2FsUmVjdCk7CiB9CiAKLUNoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JQb2ludChjb25zdCBJbnRQb2ludCAmcG9pbnQs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hl
OjpjaGFyYWN0ZXJPZmZzZXRGb3JQb2ludChjb25zdCBJbnRQb2ludCAmcG9pbnQsIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBvYmopCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBD
aGFyYWN0ZXJPZmZzZXQoKTsKQEAgLTI3NzMsNyArMjc3Myw3IEBAIENoYXJhY3Rlck9mZnNldCBB
WE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mTGluZShjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oc3Rh
cnRMaW5lKTsKIH0KIAotQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9m
ZnNldEZvckluZGV4KGludCBpbmRleCwgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQor
Q2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvckluZGV4KGlu
dCBpbmRleCwgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iaikKIHsKICAgICBpZiAo
IW9iaikKICAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOwpAQCAtMjgwNyw3ICsyODA3
LDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvcklu
ZGV4KGludCBpbmRleCwgY29uc3QgQWNjZXNzaWIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1p
bnQgQVhPYmplY3RDYWNoZTo6aW5kZXhGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK2ludCBB
WE9iamVjdENhY2hlOjppbmRleEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iaikKIHsKICAg
ICAvLyBDcmVhdGUgYSBjb2xsYXBzZWQgcmFuZ2Ugc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBWaXNp
YmxlUG9zaXRpb24gZnJvbSBpdC4KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gcmFuZ2VGb3JV
bm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyT2Zmc2V0
KTsKQEAgLTI5MDcsOSArMjkwNyw5IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUoKQogICAgIH0KICAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTm9k
ZUxpc3QuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2RlZmVycmVkQ2hpbGRy
ZWRDaGFuZ2VkTGlzdCkKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9kZWZlcnJlZENoaWxkcmVu
Q2hhbmdlZExpc3QpCiAgICAgICAgIGNoaWxkLT5jaGlsZHJlbkNoYW5nZWQoKTsKLSAgICBtX2Rl
ZmVycmVkQ2hpbGRyZWRDaGFuZ2VkTGlzdC5jbGVhcigpOworICAgIG1fZGVmZXJyZWRDaGlsZHJl
bkNoYW5nZWRMaXN0LmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBtX2RlZmVycmVk
VGV4dENoYW5nZWRMaXN0KQogICAgICAgICB0ZXh0Q2hhbmdlZChub2RlKTsKQEAgLTI5NDEsMjUg
KzI5NDEsMjUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0
ZSgpCiAKICAgICBwbGF0Zm9ybVBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CiB9Ci0gICAg
CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotUmVmPEFYSXNvbGF0
ZWRUcmVlTm9kZT4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJl
ZUhpZXJhcmNoeShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIEFYSUQgcGFyZW50SUQsIEFY
SXNvbGF0ZWRUcmVlJiB0cmVlLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRUcmVlTm9kZT4+JiBub2Rl
Q2hhbmdlcykKK1JlZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlz
b2xhdGVkQWNjZXNzaWJpbGl0eVRyZWVIaWVyYXJjaHkoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Um
IG9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQVhJc29sYXRlZFRyZWUmIHRyZWUsIFZlY3RvcjxSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4mIG5vZGVDaGFuZ2VzKQogewogICAgIGF1dG8gaXNvbGF0ZWRU
cmVlTm9kZSA9IEFYSXNvbGF0ZWRUcmVlTm9kZTo6Y3JlYXRlKG9iamVjdCk7CiAgICAgbm9kZUNo
YW5nZXMuYXBwZW5kKGlzb2xhdGVkVHJlZU5vZGUuY29weVJlZigpKTsKIAogICAgIGlzb2xhdGVk
VHJlZU5vZGUtPnNldFRyZWVJZGVudGlmaWVyKHRyZWUudHJlZUlkZW50aWZpZXIoKSk7CiAgICAg
aXNvbGF0ZWRUcmVlTm9kZS0+c2V0UGFyZW50KHBhcmVudElEKTsKLSAgICBhc3NvY2lhdGVJc29s
YXRlZFRyZWVOb2RlKG9iamVjdCwgaXNvbGF0ZWRUcmVlTm9kZSwgdHJlZS50cmVlSWRlbnRpZmll
cigpKTsKKyAgICBhdHRhY2hXcmFwcGVyKGlzb2xhdGVkVHJlZU5vZGUpOwogCiAgICAgZm9yIChh
dXRvIGNoaWxkIDogb2JqZWN0LmNoaWxkcmVuKCkpIHsKLSAgICAgICAgYXV0byBzdGF0aWNDaGls
ZCA9IGNyZWF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0eVRyZWVIaWVyYXJjaHkoKmNoaWxkLCBpc29s
YXRlZFRyZWVOb2RlLT5pZGVudGlmaWVyKCksIHRyZWUsIG5vZGVDaGFuZ2VzKTsKLSAgICAgICAg
aXNvbGF0ZWRUcmVlTm9kZS0+YXBwZW5kQ2hpbGQoc3RhdGljQ2hpbGQtPmlkZW50aWZpZXIoKSk7
CisgICAgICAgIGF1dG8gc3RhdGljQ2hpbGQgPSBjcmVhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlU
cmVlSGllcmFyY2h5KCpjaGlsZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgdHJlZSwg
bm9kZUNoYW5nZXMpOworICAgICAgICBpc29sYXRlZFRyZWVOb2RlLT5hcHBlbmRDaGlsZChzdGF0
aWNDaGlsZC0+b2JqZWN0SUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGlzb2xhdGVkVHJlZU5v
ZGU7CiB9Ci0gICAgCisKIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhPYmplY3RDYWNoZTo6Z2VuZXJh
dGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC0yOTcwLDcgKzI5NzAsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFY
T2JqZWN0Q2FjaGU6OmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJlZSgpCiAgICAgCiAg
ICAgVmVjdG9yPFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+PiBub2RlQ2hhbmdlczsKICAgICBhdXRv
IHJvb3QgPSBjcmVhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlSGllcmFyY2h5KCpyb290T2Jq
ZWN0KCksIEludmFsaWRBWElELCAqdHJlZSwgbm9kZUNoYW5nZXMpOwotICAgIHRyZWUtPnNldFJv
b3ROb2RlSUQocm9vdC0+aWRlbnRpZmllcigpKTsKKyAgICB0cmVlLT5zZXRSb290KHJvb3QpOwog
ICAgIHRyZWUtPmFwcGVuZE5vZGVDaGFuZ2VzKG5vZGVDaGFuZ2VzKTsKIAogICAgIHJldHVybiBt
YWtlUmVmKCp0cmVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmgKaW5kZXggZTUyMjAzYmViMTQuLjQ2NTI1MzBkMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFYT2JqZWN0
Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFn
ZShjb25zdCBQYWdlKik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgdGhl
IGVudGlyZSBkb2N1bWVudC4KICAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiByb290T2JqZWN0KCk7CkBAIC0xNzMsMTEgKzE3MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmUoV2lkZ2V0Kik7CiAgICAgdm9pZCByZW1vdmUoQVhJRCk7CiAKLSAgICB2b2lkIGRldGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZSk7Ci0gICAgdm9pZCBhdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSYsIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSk7CisgICAgdm9pZCBhdHRhY2hX
cmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJik7CisKICAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChOb2RlKiwgTm9kZSogbmV3Q2hpbGQgPSBudWxscHRyKTsKICAgICB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqIG5ld0NoaWxkID0gbnVsbHB0cik7
Ci0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKik7CiAgICAgdm9pZCBj
aGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFz
IGp1c3QgYmVlbiBhdHRhY2hlZCwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdo
dCBzdWJjbGFzcyBvZiBBY2Nlc3NpYmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVB
ZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqKTsKQEAgLTE5NCw4ICsxOTUsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8QVhJc29sYXRlZFRyZWU+IGdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJlZSgp
OwogCi0gICAgdm9pZCBhc3NvY2lhdGVJc29sYXRlZFRyZWVOb2RlKEFjY2Vzc2liaWxpdHlPYmpl
Y3QmLCBBWElzb2xhdGVkVHJlZU5vZGUmLCBBWElzb2xhdGVkVHJlZUlEKTsKLSAgICBSZWY8QVhJ
c29sYXRlZFRyZWVOb2RlPiBjcmVhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlSGllcmFyY2h5
KEFjY2Vzc2liaWxpdHlPYmplY3QmLCBBWElELCBBWElzb2xhdGVkVHJlZSYsIFZlY3RvcjxSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4mKTsKKyAgICBSZWY8QVhJc29sYXRlZFRyZWVOb2RlPiBjcmVh
dGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlSGllcmFyY2h5KEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlJiwgQVhJRCwgQVhJc29sYXRlZFRyZWUmLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRUcmVlTm9k
ZT4+Jik7CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKQEAgLTI1Nyw3
ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzU2VudGVuY2VT
dGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAv
LyBCb3VuZHMKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmLCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgQ2hhcmFjdGVyT2Zmc2V0
IGNoYXJhY3Rlck9mZnNldEZvclBvaW50KGNvbnN0IEludFBvaW50JiwgQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqKTsKICAgICBJbnRSZWN0IGFic29sdXRlQ2FyZXRCb3VuZHNGb3JDaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldEZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgYm9vbCk7CiAgICAgCkBAIC0yNjYs
OCArMjY2LDggQEAgcHVibGljOgogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENoYXJhY3Rlck9m
ZnNldE9mTGluZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAvLyBJbmRleAot
ICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICBpbnQgaW5kZXhGb3JDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiwgQWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIENoYXJhY3Rl
ck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKik7CisgICAgaW50IGluZGV4Rm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKik7CiAKICAgICBlbnVtIEFYTm90
aWZpY2F0aW9uIHsKICAgICAgICAgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKQEAgLTMwNyw3
ICszMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oUmVuZGVyT2Jq
ZWN0KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlw
ZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKE5vZGUq
LCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0g
UG9zdEFzeW5jaHJvbm91c2x5KTsKLSAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJn
ZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CisgICAgdm9pZCBwb3N0
Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiwgRG9jdW1lbnQqLCBBWE5vdGlm
aWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5j
aHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dJbnRlbnQoY29uc3Qg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1Niw3ICszNTYsNyBAQCBwdWJsaWM6CiAg
ICAgCiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOworICAgIHZvaWQgcG9zdFBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiwgQVhOb3RpZmljYXRpb24pOwog
ICAgIHZvaWQgcGxhdGZvcm1IYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGRG
b2N1c2VkTm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVBl
cmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CkBAIC00NTgsNyArNDU4LDcgQEAgcHJpdmF0ZToK
ICAgICBIYXNoU2V0PEFYSUQ+IG1faWRzSW5Vc2U7CiAKICAgICBUaW1lciBtX25vdGlmaWNhdGlv
blBvc3RUaW1lcjsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiwgQVhOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7CisgICAgVmVjdG9y
PHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+LCBBWE5vdGlmaWNhdGlv
bj4+IG1fbm90aWZpY2F0aW9uc1RvUG9zdDsKIAogICAgIFRpbWVyIG1fcGFzc3dvcmROb3RpZmlj
YXRpb25Qb3N0VGltZXI7CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBwcml2YXRlOgogICAgIExpc3RI
YXNoU2V0PEVsZW1lbnQqPiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdDsKICAgICBM
aXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFz
aFNldDxFbGVtZW50Kj4gbV9kZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKLSAg
ICBMaXN0SGFzaFNldDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGls
ZHJlZENoYW5nZWRMaXN0OworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZT4+IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0
PE5vZGUqPiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTm9kZUxpc3Q7CiAgICAgSGFzaE1hcDxF
bGVtZW50KiwgU3RyaW5nPiBtX2RlZmVycmVkVGV4dEZvcm1Db250cm9sVmFsdWU7CiAgICAgSGFz
aE1hcDxFbGVtZW50KiwgUXVhbGlmaWVkTmFtZT4gbV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcAppbmRleCBkNzMwOTg4Zjg5Ny4uZDU5ZTU3NGM3YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gQWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVuZGVyZXIpKTsKIH0KIAotYm9vbCBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNoaWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1
bnNpZ25lZCYgY29sdW1uQ291bnQpCitib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFi
bGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGNoaWxkLCBIYXNoU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpCiB7
CiAgICAgaWYgKCFjaGlsZCB8fCAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKmNoaWxkKSAm
JiAhaXM8QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93PigqY2hpbGQpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODUsNyArODUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6aXNN
dWx0aVNlbGVjdGFibGUoKSBjb25zdAogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoYXJpYU11bHRpU2VsZWN0YWJsZSwgImZhbHNlIik7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHJv
d0NoaWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNp
Z25lZCYgY29sdW1uQ291bnQpCit2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkUm93RGVz
Y2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNz
aWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsK
ICAgICBpZiAoIXJvd0NoaWxkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAppbmRleCBiOGU3YmFm
NGE1Yi4uMDUxZjEyMjZkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQXJpYVRhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZvaWQgYWRkUm93RGVzY2Vu
ZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKLSAgICBib29sIGFkZFRhYmxl
Q2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmpl
Y3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOworICAgIHZvaWQgYWRk
Um93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSosIEhhc2hTZXQ8QWNjZXNzaWJp
bGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CisgICAg
Ym9vbCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSosIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5k
ZXggZDAyM2Y4Y2U1N2YuLmU5YzI5OTllODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gQVJJQSBncmlkY2VsbHMgbWF5IGhhdmUgbXVs
dGlwbGUgbGV2ZWxzIG9mIHVuaWdub3JlZCBhbmNlc3RvcnMgdGhhdCBhcmUgbm90IHRoZSBwYXJl
bnQgdGFibGUsCiAgICAgLy8gaW5jbHVkaW5nIHJvd3MgYW5kIGludGVyYWN0aXZlIHJvd2dyb3Vw
cy4gSW4gYWRkaXRpb24sIHBvb3JseS1mb3JtZWQgZ3JpZHMgbWF5IGNvbnRhaW4gZWxlbWVudHMK
ICAgICAvLyB3aGljaCBwYXNzIHRoZSB0ZXN0cyBmb3IgaW5jbHVzaW9uLgotICAgIGZvciAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHBhcmVu
dDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgeworICAgIGZvciAo
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKICAg
ICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJl
bnQpOwogICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgCiB2b2lkIEFjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4mIHJvd1JhbmdlKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4
KSBjb24KICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFuZ2Uuc2Vj
b25kKSwgMSk7CiAgICAgfQogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm4gMTsKICAgICAKQEAgLTEzNCw3ICsxMzQsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXgodW5zaWduZWQgcm93SW5kZXgpIGNv
bgogCiB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKSBjb25zdAogewotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAK
aW5kZXggZjI5NjQ2N2NhNGUuLjIxZDg1MjVlMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRSb3dz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAgYXV0byYgYWxsUm93cyA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkucm93cygpOwogICAgIGludCBy
b3dDb3VudCA9IGFsbFJvd3Muc2l6ZSgpOwogICAgIGZvciAoaW50IGsgPSBpbmRleCArIDE7IGsg
PCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IGFs
bFJvd3Nba10uZ2V0KCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiByb3cgPSBh
bGxSb3dzW2tdLmdldCgpOwogICAgICAgICAvLyBTdG9wIGF0IHRoZSBmaXJzdCByb3cgdGhhdCBk
b2Vzbid0IG1hdGNoIHRoZSBjb3JyZWN0IGxldmVsLgogICAgICAgICBpZiAocm93LT5oaWVyYXJj
aGljYWxMZXZlbCgpICE9IGxldmVsICsgMSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIsNyAr
ODIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIH0KIH0KICAgICAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBj
b25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6
ZGlzY2xvc2VkQnlSb3coKSBjb25zdAogewogICAgIC8vIFRoZSByb3cgdGhhdCBkaXNjbG9zZXMg
dGhpcyBvbmUgaXMgdGhlIHJvdyBpbiB0aGUgdGFibGUKICAgICAvLyB0aGF0IGlzIGFyaWEtbGV2
ZWwgc3VidHJhY3QgMSBmcm9tIHRoaXMgcm93LgpAQCAtMTAzLDcgKzEwMyw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBj
b25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBmb3IgKGludCBrID0gaW5k
ZXggLSAxOyBrID49IDA7IC0taykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cg
PSBhbGxSb3dzW2tdLmdldCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcm93
ID0gYWxsUm93c1trXS5nZXQoKTsKICAgICAgICAgaWYgKHJvdy0+aGllcmFyY2hpY2FsTGV2ZWwo
KSA9PSBsZXZlbCAtIDEpCiAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgIH0KQEAgLTEzMyw3
ICsxMzMsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6
cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVjdCgpCitBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmpl
Y3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
Um93SGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKaW5kZXggN2JhNzRmNGRkMjMuLmViMjg1MWM1NGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmgKQEAgLTQwLDkgKzQwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlBUklBR3JpZFJvdygpOwogICAgIAogICAgIHZvaWQgZGlzY2xvc2VkUm93cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBk
aXNjbG9zZWRCeVJvdygpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkaXNj
bG9zZWRCeVJvdygpIGNvbnN0OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBoZWFkZXJP
YmplY3QoKSBvdmVycmlkZTsKICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJp
bGl0eUFSSUFHcmlkUm93KFJlbmRlck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCmluZGV4IGI0NWZjNjAwMjRhLi4x
ZTQyZjBmYTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGFiZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxhYmVsLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eUxhYmVsOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0
eSA9IGZhbHNlOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlMYWJlbDo6aW5zZXJ0Q2hpbGQoQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJp
bGl0eUxhYmVsOjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqZWN0LCB1
bnNpZ25lZCBpbmRleCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnNlcnRD
aGlsZChvYmplY3QsIGluZGV4KTsKICAgICBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMYWJlbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGFiZWwuaAppbmRleCBiMTNhZjJkN2Q5Mi4uOWY5YzI2NjZhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJD
aGlsZHJlbigpIGZpbmFsOwotICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVj
dCosIHVuc2lnbmVkKSBmaW5hbDsKKyAgICB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiwgdW5zaWduZWQpIGZpbmFsOwogICAgIGJvb2wgbV9jb250YWluc09ubHlTdGF0
aWNUZXh0RGlydHkgOiAxOwogICAgIGJvb2wgbV9jb250YWluc09ubHlTdGF0aWNUZXh0IDogMTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3guY3BwCmluZGV4IDA3YWVkYzk3MTQ2Li4xODU2MDU0MGY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlz
dEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTAogICAgIHJldHVybiAm
bGlzdEJveE9iamVjdDsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlMaXN0Qm94
OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAogewogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxlbWVudCBtZXRob2RzIGZvciBy
ZXR1cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CiAgICAgLy8gaWdub3JlIG9wdGdy
b3VwIGVsZW1lbnRzLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
CiAgICAgCiAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CiAg
ICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbiA9IG51bGxwdHI7Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGxpc3RCb3hPcHRpb24gPSBudWxscHRyOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBkb3du
Y2FzdDxSZW5kZXJMaXN0Qm94PigqbV9yZW5kZXJlcikuaXRlbUJvdW5kaW5nQm94UmVjdChwYXJl
bnRSZWN0LmxvY2F0aW9uKCksIGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCmluZGV4IDQ3YTM5Y2U5NWE1Li44MmYwNjBhMWM1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3guaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5TZXRTZWxl
Y3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZWxl
Y3RlZENoaWxkcmVuKGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZWxlY3RlZENo
aWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwog
ICAgIApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc05hdGl2ZUxpc3RC
b3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQqKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmNwcAppbmRleCA3YWJmZmFlNGZhMS4uMWUzNTNkMzIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6aXNNYXRoVGFibGVDZWxsKCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlw
ZSB0eXBlKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWMK
IAogYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmpl
Y3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKIHsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNNYXRoTXVsdGlzY3JpcHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFkaWNhbmRPYmplY3QoKQorQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFk
aWNhbmRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoUm9vdCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTI1MCw3ICsyNTAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKICAgICByZXR1cm4gY2hp
bGRyZW5bMF0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoUm9vdEluZGV4T2JqZWN0KCkKK0FjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCgpCiB7
CiAgICAgaWYgKCFpc01hdGhSb290KCkgfHwgaXNNYXRoU3F1YXJlUm9vdCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI2Miw3ICsyNjIsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCgpCiAgICAgcmV0
dXJuIGNoaWxkcmVuWzFdLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCgpCitBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmpl
Y3QoKQogewogICAgIGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yNzQsNyArMjc0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJl
blswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCiB7
CiAgICAgaWYgKCFpc01hdGhGcmFjdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTI4Niw3ICsyODYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKICAgICByZXR1cm4gY2hpbGRyZW5bMV0u
Z2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QoKQorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoVW5kZXJPYmplY3QoKQogewogICAgIGlmICghaXNNYXRo
VW5kZXJPdmVyKCkgfHwgIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDEs
NyArMzAxLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhVbmRlck9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgp
CitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1h
dGhPdmVyT2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFVuZGVyT3ZlcigpIHx8ICFub2RlKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzE4LDcgKzMxOCw3IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCgpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhCYXNlT2JqZWN0KCkKIHsKICAgICBp
ZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgJiYgIWlzTWF0aFVuZGVyT3ZlcigpICYm
ICFpc01hdGhNdWx0aXNjcmlwdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMzMSw3
ICszMzEsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6bWF0aEJhc2VPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVj
dCgpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhTdWJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJz
Y3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Niw3ICsz
NDYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFN1YnNjcmlwdE9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3VwZXJzY3JpcHRP
YmplY3QoKQorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoU3VwZXJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQuaAppbmRleCA1ODBiODU5Y2JjMS4uNjQ3OTUwMTcyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmgKQEAgLTc3LDIzICs3NywyMyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNNYXRoTXVsdGlz
Y3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgLy8gR2VuZXJpYyBjb21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBSb290IGNvbXBv
bmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3Zl
cnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoUmFkaWNhbmRPYmplY3Qo
KSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFJvb3RJbmRleE9i
amVjdCgpIG92ZXJyaWRlOwogCiAgICAgLy8gRnJhY3Rpb24gY29tcG9uZW50cy4KLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdWJzY3JpcHQvc3Vw
ZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2Ny
aXB0T2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVy
c2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1h
dGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGZW5jZWQgY29t
cG9uZW50cy4KICAgICBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuaAppbmRleCBjOTg1ZmRkZDNkYi4uZjNhZDZkOTZlMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGhl
bHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBj
b25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApp
bmRleCBlZjEzNzdiZjQ2Yy4uYTJjYjUxN2FmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxkcmVuKCkKIAogICAgIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqbGlzdCkuc2V0UGFyZW50KHRoaXMpOwog
ICAgIGlmIChsaXN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKLSAgICAgICAgY2FjaGUt
PnJlbW92ZShsaXN0LT5heE9iamVjdElEKCkpOworICAgICAgICBjYWNoZS0+cmVtb3ZlKGxpc3Qt
Pm9iamVjdElEKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwCmluZGV4IGVlOTYxYjVjZjVjLi45ZmU1NDhiNTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAKQEAgLTExMiwxMCArMTEyLDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6
OmNoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVj
dENhY2hlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IG1fY2hpbGRyZW4uc2l6ZSgpOyBpID4gMCA7
IC0taSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCA9IG1fY2hpbGRyZW5b
aSAtIDFdLmdldCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogY2hpbGQgPSBt
X2NoaWxkcmVuW2kgLSAxXS5nZXQoKTsKICAgICAgICAgaWYgKGNoaWxkLT5hY3Rpb25FbGVtZW50
KCkgJiYgIWNoaWxkLT5hY3Rpb25FbGVtZW50KCktPmluUmVuZGVyZWREb2N1bWVudCgpKSB7CiAg
ICAgICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVBhcmVudCgpOwotICAgICAgICAgICAgY2FjaGUt
PnJlbW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZW1vdmUo
Y2hpbGQtPm9iamVjdElEKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMwLDcgKzEz
MCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9w
dGlvbihpbnQgb3B0aW9uSW5kZXgpCiAgICAgQVNTRVJUX0FSRyhvcHRpb25JbmRleCwgb3B0aW9u
SW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2hpbGRyZW4uc2l6ZSgpKSk7CiAKICAgICBBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gY2hpbGQgPSBtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKTsKKyAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+IGNoaWxkID0gbV9jaGlsZHJlbltvcHRpb25J
bmRleF0uZ2V0KCk7CiAKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQoKSwg
ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFy
Z2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwogICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0
aW9uKGNoaWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRl
bVNlbGVjdGVkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCmluZGV4IGEyZDMyN2Y4Y2YxLi43ZTM4NzAxMGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAg
LTkxMiw3ICs5MTIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwKCkg
Y29uc3QKICAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgfHwgcm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25UZXh0R3JvdXA7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKK0FjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCiB7CiAg
ICAgaWYgKCFpc1JhZGlvR3JvdXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MjUs
NyArOTI1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnNlbGVjdGVkUmFkaW9CdXR0b24oKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKCkK
K0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0
ZWRUYWJJdGVtKCkKIHsKICAgICBpZiAoIWlzVGFiTGlzdCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmhlbHBUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikgY29uCiAgICAg
ICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgewogICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0ZpZWxkc2V0KCkgJiYgIW9iamVjdC5h
cmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKS5pc0VtcHR5KCk7CiAgICAgICAgIH07Ci0gICAgICAg
IGlmIChjb25zdCBhdXRvKiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFy
ZW50KCp0aGlzLCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKKyAgICAgICAgaWYgKGNvbnN0
IGF1dG8qIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4o
KnRoaXMsIGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVuYykpKQogICAgICAgICAgICAgdGV4dE9yZGVy
LmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChwYXJlbnQtPmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0
ZSgpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogICAgIH0KIApAQCAtMTc3
MCw3ICsxNzcwLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJF
bGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW8KICAgICBpZiAoaXM8VGV4dD4o
bm9kZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxUZXh0Pigqbm9kZSkud2hvbGVUZXh0KCk7
CiAKLSAgICBib29sIGlzQXJpYVZpc2libGUgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
KSB7CisgICAgYm9vbCBpc0FyaWFWaXNpYmxlID0gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCkgewogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
b2JqZWN0LmdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAiZmFsc2UiKTsKICAgICB9KSAh
PSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKaW5kZXggYTg2N2MwY2YwYWMuLmYwYzU2YzYxOWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oCkBAIC0xMDEsOCArMTAxLDggQEAgcHVibGljOgogICAgIGZsb2F0IG1pblZh
bHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBzdGVwVmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRS
YWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVk
VGFiSXRlbSgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzZWxlY3Rl
ZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNl
bGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBj
aGVja2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgaGll
cmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGU4YWE2OWJlYzE3
Li43NjRlNDAxOGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0RldGFjaGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1ib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
KiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXpl
X3QgaW5kZXgpCiB7CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsK
ICAgICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBu
b24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0LgpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4
KEFjY2Vzc2liaWxpdHlPCiAgICAgfQogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQorYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogYXhPYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3Jp
dGVyaWEpCiB7CiAgICAgaWYgKCFheE9iamVjdCB8fCAhY3JpdGVyaWEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI3Niw3ICsyNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAg
c2l6ZV90IGxlbmd0aCA9IGNyaXRlcmlhLT5zZWFyY2hLZXlzLnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChpc0FjY2Vzc2liaWxp
dHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoYXhPYmplY3QsIGNyaXRlcmlhLCBpKSkgewotICAg
ICAgICAgICAgaWYgKGNyaXRlcmlhLT52aXNpYmxlT25seSAmJiAhYXhPYmplY3QtPmlzT25zY3Jl
ZW4oKSkKKyAgICAgICAgICAgIGlmIChjcml0ZXJpYS0+dmlzaWJsZU9ubHkgJiYgIWF4T2JqZWN0
LT5pc09uU2NyZWVuKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI4NCwxNSArMjg0LDE1IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNz
aWJpbGl0eU9iamVjdCoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQorYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqIGNyaXRlcmlhKQogewogICAgIGlmICghYXhPYmplY3QgfHwgIWNyaXRlcmlhKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIGF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5
T2JqZWN0Q29udGFpbnNUZXh0KCZjcml0ZXJpYS0+c2VhcmNoVGV4dCk7CisgICAgcmV0dXJuIGF4
T2JqZWN0LT5jb250YWluc1RleHQoJmNyaXRlcmlhLT5zZWFyY2hUZXh0KTsKIH0KIAotYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmlu
ZyogdGV4dCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29udGFpbnNUZXh0KFN0
cmluZyogdGV4dCkgY29uc3QKIHsKICAgICAvLyBJZiB0ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2Ug
cmV0dXJuIHRydWUuCiAgICAgcmV0dXJuICF0ZXh0CkBAIC01MjIsMTEgKzUyMiwxMSBAQCB1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2ZWwoKSBjb25zdAogICAgIHJl
dHVybiBsZXZlbDsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVj
dDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdAogewot
ICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vz
c2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gIW9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25z
dApAQCAtNjIwLDEyICs2MjAsMTIgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3Np
YmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgV1RGOjoKIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkgY29uc3QKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBh
cmVudCgqdGhpcywgZmFsc2UsIFsmcm9sZV0gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+KCp0aGlzLCBmYWxzZSwgWyZyb2xlXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gcm9sZTsKICAgICB9
KSAhPSBudWxscHRyOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHRzKQorc3RhdGljIHZvaWQgYXBwZW5kQWNjZXNz
aWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqZWN0LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAg
Ly8gRmluZCB0aGUgbmV4dCBkZXNjZW5kYW50IG9mIHRoaXMgYXR0YWNobWVudCBvYmplY3Qgc28g
c2VhcmNoIGNhbiBjb250aW51ZSB0aHJvdWdoIGZyYW1lcy4KICAgICBpZiAob2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkgewpAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEFjY2Vz
c2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5
CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNp
Z25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWNo
aWxkKQogICAgICAgICByZXR1cm47CkBAIC02ODQsMTIgKzY4NCwxMiBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNp
Z25lZCBpbmRleAogICAgIGNoaWxkLT5jbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCk7CiB9
CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSogY2hpbGQpCiB7CiAgICAgaW5zZXJ0Q2hpbGQoY2hpbGQsIG1fY2hp
bGRyZW4uc2l6ZSgpKTsKIH0KICAgICAKLXN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJh
eShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiByZXN1bHRzKQorc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0Fy
cmF5KEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogc3RhcnRPYmplY3QsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKIHsKICAgICAvLyBBIHRhYmxlJ3Mg
Y2hpbGRyZW4gaW5jbHVkZXMgZWxlbWVudHMgd2hvc2Ugb3duIGNoaWxkcmVuIGFyZSBhbHNvIHRo
ZSB0YWJsZSdzIGNoaWxkcmVuIChkdWUgdG8gdGhlIHdheSB0aGUgTWFjIGV4cG9zZXMgdGFibGVz
KS4KICAgICAvLyBUaGUgcm93cyBmcm9tIHRoZSB0YWJsZSBzaG91bGQgYmUgcXVlcmllZCwgc2lu
Y2UgdGhvc2UgYXJlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0aGUgdGFibGUsIGFuZCB0aGV5IGNv
bnRhaW4gY29udGVudC4KQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGls
ZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwg
QQogCiAgICAgLy8gSWYgdGhlIHN0YXJ0T2JqZWN0IGlzIGlnbm9yZWQsIHdlIHNob3VsZCB1c2Ug
YW4gYWNjZXNzaWJsZSBzaWJsaW5nIGFzIGEgc3RhcnQgZWxlbWVudCBpbnN0ZWFkLgogICAgIGlm
IChzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpICYm
IHN0YXJ0T2JqZWN0LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChvYmplY3QpKSB7Ci0gICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmpl
Y3QoKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudE9iamVjdCA9IHN0
YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKICAgICAgICAgLy8gR28gdXAgdGhlIHBhcmVudCBj
aGFpbiB0byBmaW5kIHRoZSBoaWdoZXN0IGFuY2VzdG9yIHRoYXQncyBhbHNvIGJlaW5nIGlnbm9y
ZWQuCiAgICAgICAgIHdoaWxlIChwYXJlbnRPYmplY3QgJiYgcGFyZW50T2JqZWN0LT5hY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAgICAgIGlmIChwYXJlbnRPYmplY3QgPT0gb2Jq
ZWN0KQpAQCAtNzM1LDcgKzczNSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJh
eShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBCiB9CiAKIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgaXMgbm93ID49IHRoZSBudW1i
ZXIgb2YgcmVzdWx0cyBkZXNpcmVkLgotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvYmplY3RN
YXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9i
amVjdE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAgaWYgKGlzQWNjZXNz
aWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpICYmIGlzQWNjZXNzaWJp
bGl0eVRleHRTZWFyY2hNYXRjaChvYmplY3QsIGNyaXRlcmlhKSkgewogICAgICAgICByZXN1bHRz
LmFwcGVuZChvYmplY3QpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNy
aXRlCiAgICAgLy8gSXQgZG9lcyB0aGlzIGJ5IHN0ZXBwaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4g
YW5kIGF0IGVhY2ggbGV2ZWwgZG9pbmcgYSBERlMuCiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBu
byBzdGFydCBvYmplY3QsIGl0IG1lYW5zIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcuCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSBjcml0ZXJpYS0+c3RhcnRPYmpl
Y3Q7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHN0YXJ0T2JqZWN0ID0gY3JpdGVyaWEt
PnN0YXJ0T2JqZWN0OwogICAgIGlmICghc3RhcnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0
ID0gdGhpczsKICAgICAKQEAgLTc3MSwxNCArNzcxLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNy
aXRlCiAgICAgLy8gVGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUgb3V0ZXIgbG9vcCB3aWxsIGV4
YW1pbmUgdGhlIGNoaWxkcmVuIG9mIHRoZSBzdGFydCBvYmplY3QgZm9yIG1hdGNoZXMuIEhvd2V2
ZXIsIHdoZW4KICAgICAvLyBpdGVyYXRpbmcgYmFja3dhcmRzLCB0aGUgc3RhcnQgb2JqZWN0IGNo
aWxkcmVuIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCwgc28gdGhlIGxvb3AgaXMgc2tpcHBlZCBh
aGVhZC4gV2UgbWFrZSBhbgogICAgIC8vIGV4Y2VwdGlvbiB3aGVuIG5vIHN0YXJ0IG9iamVjdCB3
YXMgc3BlY2lmaWVkIGJlY2F1c2Ugd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZyByZWdhcmRs
ZXNzIG9mIHNlYXJjaCBkaXJlY3Rpb24uCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlv
dXNPYmplY3QgPSBudWxscHRyOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwcmV2aW91
c09iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKCFpc0ZvcndhcmQgJiYgc3RhcnRPYmplY3QgIT0g
dGhpcykgewogICAgICAgICBwcmV2aW91c09iamVjdCA9IHN0YXJ0T2JqZWN0OwogICAgICAgICBz
dGFydE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICB9
CiAgICAgCiAgICAgLy8gVGhlIG91dGVyIGxvb3Agc3RlcHMgdXAgdGhlIHBhcmVudCBjaGFpbiBl
YWNoIHRpbWUgKHVuaWdub3JlZCBpcyBpbXBvcnRhbnQgaGVyZSBiZWNhdXNlIG90aGVyd2lzZSBl
bGVtZW50cyB3b3VsZCBiZSBzZWFyY2hlZCB0d2ljZSkKLSAgICBmb3IgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIHN0b3BTZWFyY2hFbGVtZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHN0YXJ0
T2JqZWN0ICYmIHN0YXJ0T2JqZWN0ICE9IHN0b3BTZWFyY2hFbGVtZW50OyBzdGFydE9iamVjdCA9
IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgeworICAgIGZvciAoQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIHN0b3BTZWFyY2hFbGVtZW50ID0gcGFyZW50T2JqZWN0VW5pZ25v
cmVkKCk7IHN0YXJ0T2JqZWN0ICYmIHN0YXJ0T2JqZWN0ICE9IHN0b3BTZWFyY2hFbGVtZW50OyBz
dGFydE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewogCiAg
ICAgICAgIC8vIE9ubHkgYXBwZW5kIHRoZSBjaGlsZHJlbiBhZnRlci9iZWZvcmUgdGhlIHByZXZp
b3VzIGVsZW1lbnQsIHNvIHRoYXQgdGhlIHNlYXJjaCBkb2VzIG5vdCBjaGVjayBlbGVtZW50cyB0
aGF0IGFyZSAKICAgICAgICAgLy8gYWxyZWFkeSBiZWhpbmQvYWhlYWQgb2Ygc3RhcnQgZWxlbWVu
dC4KQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRNYXRj
aGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZQogCiAgICAgICAg
IC8vIFRoaXMgbm93IGRvZXMgYSBERlMgYXQgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgdGhlIHBhcmVu
dC4KICAgICAgICAgd2hpbGUgKCFzZWFyY2hTdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlYXJjaE9iamVjdCA9IHNlYXJjaFN0YWNrLmxhc3QoKS5n
ZXQoKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzZWFyY2hPYmplY3Qg
PSBzZWFyY2hTdGFjay5sYXN0KCkuZ2V0KCk7CiAgICAgICAgICAgICBzZWFyY2hTdGFjay5yZW1v
dmVMYXN0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChvYmplY3RNYXRjaGVzU2Vh
cmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoc2VhcmNoT2JqZWN0LCBjcml0ZXJpYSwgcmVzdWx0
cykpCkBAIC0xOTM4LDcgKzE5MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0
ZUJhY2tpbmdTdG9yZSgpCiAKIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVk
ZVNlbGYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3PihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBpbmNsdWRlU2Vs
ZiwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldz4oYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqdGhpcywgaW5jbHVkZVNlbGYsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGlzPEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PihvYmplY3QpOwogICAgIH0pKTsKIH0K
QEAgLTIwMzEsMjYgKzIwMzEsMTYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9iamVjdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKHJlbmRlck9iamVjdCk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNj
ZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKmF4
T2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0g
ICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhl
YWRpbmc7Ci0gICAgfSkpOwotfQogCi1jb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmKT4mIG1hdGNoZXMpCi17Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50ID0gaW5jbHVkZVNlbGYgPyAmb2JqZWN0IDogb2JqZWN0LnBhcmVudE9i
amVjdCgpOwotICAgIGZvciAoOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0
KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoZXMoKnBhcmVudCkpCi0gICAgICAgICAgICByZXR1cm4g
cGFyZW50OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYXg6Om1hdGNo
ZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqYXhPYmplY3QsIHRydWUsIFtdIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5y
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsKKyAgICB9KTsKIH0KIAog
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiByZXN1bHQpCkBAIC0yMzYwLDE3ICsyMzUwLDE3IEBAIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwogfSAgICAKIAotYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGF4T2Jq
ZWN0KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5oYXNDaGlsZHJl
bigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbYXhPYmplY3RdIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKworICAgIHJldHVybiBheDo6bWF0Y2hlZEFu
Y2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW2F4T2JqZWN0XSAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAmb2JqZWN0
ID09IGF4T2JqZWN0OwogICAgIH0pICE9IG51bGxwdHI7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4
T2JqZWN0KSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmpl
Y3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGF4T2JqZWN0KSBjb25zdAogewogICAg
IGlmICghYXhPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3MzksOSArMjcyOSw5
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhj
bHVkZUlmT2ZmKSBjb25zdAogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAogewot
ICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCB0cnVlLCBbZXhjbHVkZUlmT2ZmXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgcmV0dXJuIGF4OjptYXRjaGVkQW5j
ZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIHRydWUsIFtleGNsdWRlSWZPZmZdIChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVj
dC5zdXBwb3J0c0xpdmVSZWdpb24oZXhjbHVkZUlmT2ZmKTsKLSAgICB9KSk7CisgICAgfSk7CiB9
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0CkBAIC0yNzc4LDcgKzI3NjgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBv
cnRzTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZikgY29uc3QKICAgICByZXR1cm4gZXhjbHVk
ZUlmT2ZmID8gbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChsaXZlUmVnaW9uU3RhdHVzVmFsdWUp
IDogIWxpdmVSZWdpb25TdGF0dXNWYWx1ZS5pc0VtcHR5KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsgCiAgICAgLy8gU2VuZCB0aGUgaGl0IHRlc3Qg
YmFjayBpbnRvIHRoZSBzdWItZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIGlmIChpc0F0dGFjaG1l
bnQoKSkgewpAQCAtMjgwNSw3ICsyNzk1LDcgQEAgQVhPYmplY3RDYWNoZSogQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2VkVUlFbGVtZW50KCkg
Y29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1
c2VkVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOwog
ICAgIHJldHVybiBwYWdlID8gQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2Uo
cGFnZSkgOiBudWxscHRyOwpAQCAtMjk1OCwxMiArMjk0OCwxMiBAQCBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzRXhwYW5kZWQoKSBjb25zdAogICAgIAogICAgIC8vIFN1bW1hcnkgZWxlbWVu
dCBzaG91bGQgdXNlIGl0cyBkZXRhaWxzIHBhcmVudCdzIGV4cGFuZGVkIHN0YXR1cy4KICAgICBp
ZiAoaXNTdW1tYXJ5KCkpIHsKLSAgICAgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNl
LCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgICAgIGlmIChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBheDo6bWF0Y2hlZEFuY2VzdG9yPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgewogICAgICAgICAgICAgcmV0dXJuIGlzPEhUTUxEZXRhaWxzRWxlbWVu
dD4ob2JqZWN0Lm5vZGUoKSk7CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+aXNFeHBhbmRlZCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsgIAogfQog
CkBAIC0zMTAzLDcgKzMwOTMsNyBAQCBzdGF0aWMgaW50IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0
KGludCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCBpbnQgc3ViZm9jdXNNaW4sIGludAogICAgIHJldHVy
biAob2JqZWN0TWluICsgb2JqZWN0TWF4IC0gdmlld3BvcnRNaW4gLSB2aWV3cG9ydE1heCkgLyAy
OwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAorYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuKCkgY29uc3QKIHsgICAKICAgICBib29s
IGlzT25zY3JlZW4gPSB0cnVlOwogCkBAIC0zNDI1LDcgKzM0MTUsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdAogLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvdGVybXMjZGVmX2hpZGRlbgogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FYSGlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9y
PEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShvYmplY3QuZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIik7CiAg
ICAgfSkgIT0gbnVsbHB0cjsKIH0KQEAgLTM0ODAsNyArMzQ3MCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgIGF0dHJp
YnV0ZUNhY2hlID0gY2FjaGUtPmNvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUoKTsKICAgICAK
ICAgICBpZiAoYXR0cmlidXRlQ2FjaGUpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbiBpZ25vcmVkID0gYXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQoYXhPYmplY3RJRCgp
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkID0gYXR0cmli
dXRlQ2FjaGUtPmdldElnbm9yZWQob2JqZWN0SUQoKSk7CiAgICAgICAgIHN3aXRjaCAoaWdub3Jl
ZCkgewogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9i
amVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzQ5NSw3ICszNDg1LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIAog
ICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJpYnV0ZSBj
YWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBleGlzdHMu
CiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChh
eE9iamVjdElEKCksIHJlc3VsdCA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9y
ZU9iamVjdCA6IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpOwor
ICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChvYmplY3RJRCgpLCByZXN1bHQgPyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0zNTM4LDE2ICszNTI4LDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0UHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sIG9uKQogCiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2FibGVBbmNlc3RvcigpCiB7Ci0gICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om1hdGNoZWRQYXJlbnQoKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpIHsKKyAgICByZXR1cm4gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LmNhblNldEZvY3VzQXR0cmlidXRlKCk7Ci0gICAg
fSkpOworICAgIH0pOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjplZGl0YWJsZUFuY2VzdG9yKCkKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywg
dHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVy
biBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBb
XSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBv
YmplY3QuaXNUZXh0Q29udHJvbCgpOwotICAgIH0pKTsKKyAgICB9KTsKIH0KIAogQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6aGlnaGVzdEVkaXRhYmxlQW5jZXN0b3Io
KQpAQCAtMzU3MCw5ICszNTYwLDkgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGlnaGVzdEVkaXRhYmxlQW5jZXN0b3IoKQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYWRpb0dyb3VwQW5jZXN0b3IoKSBjb25zdAogewotICAg
IHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2li
aWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LmlzUmFkaW9Hcm91cCgpOwotICAgIH0p
KTsKKyAgICB9KTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N0eWxlRm9ybWF0
R3JvdXAoKSBjb25zdApAQCAtMzYyMCw3ICszNjEwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpl
bGVtZW50KS5pc1Bhc3N3b3JkRmllbGQoKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQorQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQogewogICAg
IGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+aXNMaXN0SXRlbSgpICYmIChjaGlsZC0+aXNTZWxlY3RlZCgpIHx8IGNoaWxkLT5pc0FjdGl2
ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSkpCkBAIC0zNzUyLDcgKzM3NDIsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0bwogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShvd25lcnMsIGFyaWFfb3duc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVj
dCogY2hpbGQpCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJl
bnREYXRhRm9yQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGNoaWxkKQogewogICAgIGlm
ICghY2hpbGQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggM2ZmMGMzNjAxYjQuLjJiN2VkODI3
MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaApAQCAtMzEsMTMgKzMxLDkgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNs
dWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3JC
ZWhhdmlvci5oIgotI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgotI2luY2x1ZGUgIlZpc2li
bGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUzLDggKzQ5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogCi10eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOwot
CiBPQkpDX0NMQVNTIE5TQXJyYXk7CiBPQkpDX0NMQVNTIE5TQXR0cmlidXRlZFN0cmluZzsKIE9C
SkNfQ0xBU1MgTlNEYXRhOwpAQCAtNjgsMjAgKzYyLDkgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7Ci1jbGFzcyBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzsKLWNsYXNzIEFYT2JqZWN0Q2FjaGU7Ci1jbGFzcyBFbGVt
ZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBJbnRQb2ludDsKIGNs
YXNzIEludFNpemU7Ci1jbGFzcyBOb2RlOwotY2xhc3MgUGFnZTsKLWNsYXNzIFJlbmRlck9iamVj
dDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwotY2xhc3MgU2Nyb2xsVmlldzsKLWNsYXNzIFdpZGdl
dDsKLXN0cnVjdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9uczsKIAogZW51bSBjbGFzcyBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZSB7CiAgICAgQWx0ZXJuYXRpdmUsCkBAIC0xMjEsNDk2ICsxMDQs
MjcyIEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dCB7CiAgICAgfQogfTsKIAotc3RydWN0IEFj
Y2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7Ci0gICAgZW51bSBDaGlsZHJlbkluY2x1
c2lvbiB7Ci0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwK
LSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCi0gICAgICAg
IFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgLy8g
VGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5hbWVGcm9tCi0gICAgfTsKLSAgICAK
LSAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1c2lvbjsKLSAgICBib29sIGluY2x1
ZGVGb2N1c2FibGVDb250ZW50OwotICAgIE5vZGUqIGlnbm9yZWRDaGlsZE5vZGU7Ci0gICAgCi0g
ICAgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKENoaWxkcmVuSW5jbHVzaW9uIGMg
PSBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hpbGRyZW4sIGJvb2wgaSA9IGZhbHNl
LCBOb2RlKiBpZ25vcmVkID0gbnVsbHB0cikKLSAgICAgICAgOiBjaGlsZHJlbkluY2x1c2lvbihj
KQotICAgICAgICAsIGluY2x1ZGVGb2N1c2FibGVDb250ZW50KGkpCi0gICAgICAgICwgaWdub3Jl
ZENoaWxkTm9kZShpZ25vcmVkKQotICAgIHsgfQotfTsKLQotLy8gVXNlIHRoaXMgc3RydWN0IHRv
IHN0b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNv
IHRoYXQgaW4gYWRkQ2hpbGRyZW4oKQotLy8gd2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBj
aGFpbiBmb3IgZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2Vm
dWwgaW5mb3JtYXRpb24gYWxyZWFkeS4KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJv
bVBhcmVudERhdGEgewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCB7IG51bGxwdHIg
fTsKLSAgICBib29sIGlzQVhIaWRkZW4geyBmYWxzZSB9OwotICAgIGJvb2wgaXNQcmVzZW50YXRp
b25hbENoaWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJh
cnJlblBhcmVudCB7IGZhbHNlIH07Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZy
b21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG51bGxwdHIpCi0gICAg
ICAgIDogcGFyZW50KHBhcmVudCkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gIXBhcmVudDsgfQotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uIHsKLSAgICBWZXJ0aWNhbCwKLSAgICBIb3Jpem9udGFsLAotICAgIFVuZGVmaW5l
ZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gewot
ICAgIEluY2x1ZGVPYmplY3QsCi0gICAgSWdub3JlT2JqZWN0LAotICAgIERlZmF1bHRCZWhhdmlv
ciwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7Ci0gICAg
T2ZmID0gMCwKLSAgICBPbiwKLSAgICBNaXhlZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vz
c2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKLSAgICBOb25lLAotICAgIEFzY2VuZGluZywKLSAgICBE
ZXNjZW5kaW5nLAotICAgIE90aGVyLAotICAgIEludmFsaWQsCi19OwotCi1lbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewotICAgIE5leHQgPSAxLAotICAgIFByZXZpb3Vz
LAotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHsKLSAgICBBbnlUeXBl
ID0gMSwKLSAgICBBcnRpY2xlLAotICAgIEJsb2NrcXVvdGVTYW1lTGV2ZWwsCi0gICAgQmxvY2tx
dW90ZSwKLSAgICBCb2xkRm9udCwKLSAgICBCdXR0b24sCi0gICAgQ2hlY2tCb3gsCi0gICAgQ29u
dHJvbCwKLSAgICBEaWZmZXJlbnRUeXBlLAotICAgIEZvbnRDaGFuZ2UsCi0gICAgRm9udENvbG9y
Q2hhbmdlLAotICAgIEZyYW1lLAotICAgIEdyYXBoaWMsCi0gICAgSGVhZGluZ0xldmVsMSwKLSAg
ICBIZWFkaW5nTGV2ZWwyLAotICAgIEhlYWRpbmdMZXZlbDMsCi0gICAgSGVhZGluZ0xldmVsNCwK
LSAgICBIZWFkaW5nTGV2ZWw1LAotICAgIEhlYWRpbmdMZXZlbDYsCi0gICAgSGVhZGluZ1NhbWVM
ZXZlbCwKLSAgICBIZWFkaW5nLAotICAgIEhpZ2hsaWdodGVkLAotICAgIEl0YWxpY0ZvbnQsCi0g
ICAgS2V5Ym9hcmRGb2N1c2FibGUsCi0gICAgTGFuZG1hcmssCi0gICAgTGluaywKLSAgICBMaXN0
LAotICAgIExpdmVSZWdpb24sCi0gICAgTWlzc3BlbGxlZFdvcmQsCi0gICAgT3V0bGluZSwKLSAg
ICBQbGFpblRleHQsCi0gICAgUmFkaW9Hcm91cCwKLSAgICBTYW1lVHlwZSwKLSAgICBTdGF0aWNU
ZXh0LAotICAgIFN0eWxlQ2hhbmdlLAotICAgIFRhYmxlU2FtZUxldmVsLAotICAgIFRhYmxlLAot
ICAgIFRleHRGaWVsZCwKLSAgICBVbmRlcmxpbmUsCi0gICAgVW52aXNpdGVkTGluaywKLSAgICBW
aXNpdGVkTGluaywKLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlv
bkZvckJvdW5kcyB7Ci0gICAgRmlyc3QsCi0gICAgTGFzdCwKLX07Ci0KLXN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2Jq
ZWN0OwotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gc2VhcmNoRGlyZWN0aW9uOwot
ICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBzZWFyY2hLZXlzOwotICAgIFN0cmlu
ZyBzZWFyY2hUZXh0OwotICAgIHVuc2lnbmVkIHJlc3VsdHNMaW1pdDsKLSAgICBib29sIHZpc2li
bGVPbmx5OwotICAgIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5OwotICAgIAotICAgIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFydE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBz
ZWFyY2hUZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wg
aW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQotICAgICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2Jq
ZWN0KQotICAgICAgICAsIHNlYXJjaERpcmVjdGlvbihzZWFyY2hEaXJlY3Rpb24pCi0gICAgICAg
ICwgc2VhcmNoVGV4dChzZWFyY2hUZXh0KQotICAgICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRz
TGltaXQpCi0gICAgICAgICwgdmlzaWJsZU9ubHkodmlzaWJsZU9ubHkpCi0gICAgICAgICwgaW1t
ZWRpYXRlRGVzY2VuZGFudHNPbmx5KGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKLSAgICB7IH0K
LX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSB7IENhY2hl
RGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkIH07Ci0KLXN0cnVjdCBWaXNpYmxlUG9zaXRpb25S
YW5nZSB7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQ7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IGVuZDsKLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKCkge30KLQotICAgIFZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcywgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBlKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAgICAgICwgZW5kKGUpCi0gICAgeyB9Ci0KLSAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24p
Ci0gICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCkpCi0gICAgICAgICwgZW5kKHNlbGVj
dGlvbi5lbmQoKSkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
c3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpOyB9Ci19OwotCi1zdHJ1Y3QgUGxhaW5UZXh0
UmFuZ2UgewotICAgICAgICAKLSAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggeyAwIH07Ci0gICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7Ci0g
ICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UodW5zaWduZWQgcywgdW5zaWduZWQgbCkKLSAgICAgICAg
OiBzdGFydChzKQotICAgICAgICAsIGxlbmd0aChsKQotICAgIHsgfQotICAgIAotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFBsYWluVGV4dFJhbmdlKE5TUmFuZ2UpOwotI2VuZGlmCi0gICAgCi0g
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQotfTsK
LQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSB7Ci0gICAgQmVn
aW4sIC8vIFNlYXJjaCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVsZW1lbnQuCi0gICAgU2Vs
ZWN0aW9uLCAvLyBTZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0
aW9uLgotICAgIEVuZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgotfTsK
LQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiB7Ci0gICAgRm9y
d2FyZCwgLy8gT2NjdXJyZW5jZSBhZnRlciB0aGUgc3RhcnRpbmcgcmFuZ2UuCi0gICAgQmFja3dh
cmQsIC8vIE9jY3VycmVuY2UgYmVmb3JlIHRoZSBzdGFydGluZyByYW5nZS4KLSAgICBDbG9zZXN0
LCAvLyBDbG9zZXN0IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFm
dGVyIG9yIGJlZm9yZS4KLSAgICBBbGwgLy8gQWxsIG9jY3VycmVuY2VzCi19OwotCi1zdHJ1Y3Qg
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSB7Ci0gICAgVmVjdG9yPFN0cmluZz4gc2Vh
cmNoU3RyaW5nczsgLy8gVGV4dCBzdHJpbmdzIHRvIHNlYXJjaCBmb3IuCi0gICAgQWNjZXNzaWJp
bGl0eVNlYXJjaFRleHRTdGFydEZyb20gc3RhcnQ7Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uOwotCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0
ZXJpYSgpCi0gICAgICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206
OlNlbGVjdGlvbikKLSAgICAgICAgLCBkaXJlY3Rpb24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRE
aXJlY3Rpb246OkZvcndhcmQpCi0gICAgeyB9Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlUZXh0T3BlcmF0aW9uVHlwZSB7Ci0gICAgU2VsZWN0LAotICAgIFJlcGxhY2UsCi0gICAgQ2Fw
aXRhbGl6ZSwKLSAgICBMb3dlcmNhc2UsCi0gICAgVXBwZXJjYXNlCi19OwotCi1zdHJ1Y3QgQWNj
ZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gewotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2VzOyAvLyB0ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4KLSAgICBBY2Nl
c3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGUgdHlwZTsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRU
ZXh0OyAvLyBGb3IgdHlwZSA9IHJlcGxhY2UuCi0KLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJh
dGlvbigpCi0gICAgICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNl
bGVjdCkKLSAgICB7IH0KLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRP
YmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OwotZW51bSBjbGFzcyBBY2Nlc3Np
YmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJz
Y3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9OwotCi1lbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRp
b24sIERhdGUsIFRpbWUgfTsKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFj
ZSB7IFNjcmVlbiwgUGFnZSB9OwotCiBib29sIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUq
KTsKLSAgICAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiwgcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Ug
eworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0IDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlIHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgPSBkZWZhdWx0
OwotICAgIAorCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU9iamVjdCgpOwog
CiAgICAgLy8gQWZ0ZXIgY29uc3RydWN0aW5nIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QsIGl0IG11
c3QgYmUgZ2l2ZW4gYQogICAgIC8vIHVuaXF1ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENh
Y2hlLCBhbmQgZmluYWxseSBpbml0KCkgbXVzdAogICAgIC8vIGJlIGNhbGxlZCBsYXN0LgotICAg
IHZvaWQgc2V0QVhPYmplY3RJRChBWElEIGF4T2JqZWN0SUQpIHsgbV9pZCA9IGF4T2JqZWN0SUQ7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIHsgfQorICAgIHZvaWQgc2V0T2JqZWN0SUQoQVhJ
RCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KKyAgICB2b2lkIGluaXQoKSBvdmVycmlkZSB7
IH0KIAogICAgIC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBvYmplY3QgdGhhdCB0
aGlzIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICAvLyB3cmFwcyBpcyBkZWxldGVkLCBpdCBtdXN0
IGJlIGRldGFjaGVkLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURldGFj
aG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG51bGxwdHIpOwotICAgIHZpcnR1YWwg
Ym9vbCBpc0RldGFjaGVkKCkgY29uc3Q7CisgICAgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3I7Ci0g
ICAgCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nICopIGNvbnN0Owor
ICAgIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUGFzc3dv
cmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NvbnRhaW5lZEJ5
UGFzc3dvcmRGaWVsZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
Q2hlY2tib3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q2hlY2tCb3g7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94T3B0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW1hZ2VNYXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1h
Z2VNYXA7IH0KKyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXNzd29yZEZpZWxkT3JD
b250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsgfQorICAgIGJvb2wgaXNDaGVj
a2JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpDaGVja0JveDsgfQorICAgIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRv
bjsgfQorICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9CisgICAgYm9vbCBpc0xp
c3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWVudUJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTWVudUl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZWRp
YVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWVudVJlbGF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNZW51KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVu
dUJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51
SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ZpbGVV
cGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTGFiZWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0xpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEYXRh
VGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxl
Um93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNv
bHVtbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVD
ZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNl
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFUcmVlR3JpZFJv
dygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQcm9ncmVzc0luZGljYXRv
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1NsaWRlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1NsaWRlclRodW1i
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5wdXRTbGlk
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDb250cm9s
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGFiZWwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMaXN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRmllbGRzZXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUxpc3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0
T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGlu
QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlNwaW5CdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTW9ja09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVMaXN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3BpbkJ1dHRvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTcGluQnV0dG9uOyB9CisgICAgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJl
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWVkaWFPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTd2l0Y2go
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNo
OyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0KLSAgICBib29sIGlzVGV4dENv
bnRyb2woKSBjb25zdDsKLSAgICBib29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1RhYkxpc3Qo
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlz
dDsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0K
LSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KKyAgICBib29sIGlzTWVkaWFPYmplY3QoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNo
OyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0KKyAgICBib29s
IGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDsgfQorICAgIGJv
b2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQorICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3Jv
dXA7IH0KKyAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KICAgICBib29sIGlzVHJl
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlOyB9Ci0gICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9CisgICAgYm9vbCBpc1RyZWVH
cmlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAg
ICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KLSAgICBib29sIGlzQnV0dG9uKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9Ci0gICAgYm9vbCBpc0NoZWNrYm94T3JS
YWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hlY2tib3goKSB8fCBpc1JhZGlvQnV0dG9uKCk7IH0K
LSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAgYm9vbCBpc0NhbnZhcygpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDYW52YXM7IH0KLSAg
ICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KLSAgICBib29sIGlzQmxvY2txdW90ZSgpIGNv
bnN0OwotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0OwotICAgIGJvb2wgaXNDb2xvcldlbGwo
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JX
ZWxsOyB9Ci0gICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0OwotICAgIGJvb2wgaXNNZXRl
cigpIGNvbnN0OwotICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQotICAgIGJvb2wgaXNUb29sYmFy
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xi
YXI7IH0KLSAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0OwotICAgIGJvb2wgaXNG
aWd1cmVFbGVtZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkgY29u
c3Q7Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQotICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdDsK
LSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzSG92ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXNp
YmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbGxhcHNl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5k
ZWQoYm9vbCkgeyB9CisgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQorICAgIGJvb2wgaXNDaGVja2JveE9yUmFkaW8o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1dHRvbigp
OyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsgfQorICAgIGJvb2wgaXND
YW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2FudmFzOyB9CisgICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
OyB9CisgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
TGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9y
V2VsbDsgfQorICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bs
aXR0ZXI7IH0KKyAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOyB9CisgICAgYm9vbCBpc1N0
eWxlRm9ybWF0R3JvdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRmlndXJlRWxlbWVu
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7IH0KKyAgICBib29sIGlz
T3V0cHV0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNWaXNpdGVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpbmtlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0V4cGFuZGVkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRlIHsgfQogICAg
IEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRmxvYXRSZWN0
IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZl
cnNpb25TcGFjZSkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29u
c3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBtYW55IGl0ZW1zIGNhbiBiZSBz
ZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGltZS4KLSAgICB2aXJ0dWFsIGJv
b2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFJhbmdlPiBnZXRNaXNz
cGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoRGlyZWN0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVy
T2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2Ft
ZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIGlzU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0gICAgdmlydHVhbCBib29sIGhh
c1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNIaWdobGln
aHRpbmcoKSBjb25zdDsKLQotICAgIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNv
bnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25z
dDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1
dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFs
dWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgdmlydHVhbCBFbGVtZW50KiBl
bGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBoYXNCb2xkRm9udCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNJdGFsaWNGb250KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc01pc3NwZWxsaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1Jhbmdl
KFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZUZvbnRDb2xv
cihSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQorICAgIGJvb2wg
aGFzVW5kZXJsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGhhc0hpZ2hsaWdodGluZygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c0Rh
dGV0aW1lQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
ZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5T
ZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRTZWxl
Y3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNp
b24oKSBjb25zdDsKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBj
b25zdDsKLSAgICAKLSAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7Ci0gICAgCi0gICAgdW5zaWdu
ZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgaGVhZGluZ0xldmVs
KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwoKSBjb25z
dCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hl
Y2tib3hPclJhZGlvVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZURlc2Ny
aXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHZh
bHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9Ci0gICAgdmlydHVhbCBmbG9hdCBt
YXhWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAgIHZpcnR1YWwgZmxv
YXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KLSAgICB2aXJ0dWFs
IGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkVGFi
SXRlbSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxl
Y3RlZExpc3RJdGVtKCk7Ci0gICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVm
YXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYWNjZXNzaWJp
bGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc1No
b3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB2YWxp
ZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdW5zaWduZWQgYmxvY2txdW90
ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJh
ZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgZmxvYXQgdmFsdWVGb3JS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0KKyAgICBmbG9hdCBtYXhWYWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4wZjsgfQorICAgIGZsb2F0IG1p
blZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9CisgICAgZmxv
YXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVj
dGVkVGFiSXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogc2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOworICAgIGludCBsYXlv
dXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUNvbnRyb2woQWNjZXNzaWJpbGl0eVJvbGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUlucHV0KEFjY2Vzc2liaWxp
dHlSb2xlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRh
aW5lcigpIGNvbnN0OwotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0g
ICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVk
QnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3Nh
Z2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lk
IGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBh
cmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFPd25zUmVmZXJl
bmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLQotICAg
IHZpcnR1YWwgYm9vbCBoYXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3Ry
aW5nIHBvcHVwVmFsdWUoKSBjb25zdDsKLSAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Q7Ci0g
ICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3Q7Ci0gICAgYm9vbCBwcmVzc2VkSXNQcmVz
ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdDsKLSAgICBTdHJp
bmcgaW52YWxpZFN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29u
c3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0
c0NoZWNrZWQoKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGly
ZWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUo
KSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29u
c3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Q7Ci0gICAgdm9p
ZCBjbGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBy
b2xlRGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1
cnJlbnRTdGF0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdDsKLSAg
ICBib29sIHN1cHBvcnRzQ3VycmVudCgpIGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyBrZXlTaG9y
dGN1dHNWYWx1ZSgpIGNvbnN0OwotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRh
bnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFBY3Rp
dmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURlc2Ny
aWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGV0YWlsc1Jl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdl
UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2lu
Z0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1Bv
cHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgcG9wdXBW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzRGF0YWxpc3QoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFyaWFJc011
bHRpbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBpbnZhbGlkU3RhdHVzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHN1cHBvcnRzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1
cHBvcnRzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbnZhc0hh
c0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGFz
c0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcm9sZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0
ZSBjdXJyZW50U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgY3VycmVudFZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCBvdmVycmlk
ZTsKKwogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJl
IGlnbm9yZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KLSAgICBib29s
IGlnbm9yZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0OwotICAgIGJvb2wgaXNNb2RhbERlc2Nl
bmRhbnQoTm9kZSopIGNvbnN0OwotICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25zdDsKLSAgICAK
LSAgICBib29sIHN1cHBvcnRzU2V0U2l6ZSgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQb3NJ
blNldCgpIGNvbnN0OwotICAgIGludCBzZXRTaXplKCkgY29uc3Q7Ci0gICAgaW50IHBvc0luU2V0
KCkgY29uc3Q7Ci0gICAgCisgICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29s
IHN1cHBvcnRzU2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQb3NJ
blNldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgaW50IHBvc0luU2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGRyYWcg
YW5kIGRyb3AKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQVJJQUdyYWJiZWQo
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJlZChib29s
KSB7IH0KLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0
cygpIHsgcmV0dXJuIHsgfTsgfQotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNBUklB
RHJhZ2dpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNB
UklBR3JhYmJlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRBUklB
R3JhYmJlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVB
UklBRHJvcEVmZmVjdHMoKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKwogICAgIC8vIENhbGxl
ZCBvbiB0aGUgcm9vdCBBWCBvYmplY3QgdG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBl
bGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAvLyBD
YWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUgcmVuZGVyIHRyZWUgZGV0ZXJtaW5lcyB3
aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlv
dXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQg
bGltaXQpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNT
aWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBwYXJlbnRPYmplY3RJbnRlcmZh
Y2VVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYXJlbnRPYmplY3RVbmlnbm9y
ZWQoKTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGZvY3VzZWRVSUVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3JlZChpbnQgbGlt
aXQpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZp
cnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqKTsKLSAgICB2b2lkIGZpbmRN
YXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFudE9mQmFycmVu
UGFyZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGZpbmRNYXRjaGluZ09i
amVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGlzRGVzY2VuZGFu
dE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Q7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVGV4dCBz
ZWxlY3Rpb24KIHByaXZhdGU6CkBAIC02MTgsMzk3ICszNzcsMzk0IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0OwogICAgIFJlZlB0cjxSYW5nZT4g
ZmluZFRleHRSYW5nZShWZWN0b3I8U3RyaW5nPiBjb25zdCYgc2VhcmNoU3RyaW5ncywgUmVmUHRy
PFJhbmdlPiBjb25zdCYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uKSBj
b25zdDsKIHB1YmxpYzoKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmluZFRleHRSYW5nZXMo
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0OwotICAgIFZlY3Rv
cjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
IGNvbnN0Jik7Ci0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVP
YmplY3QoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxpbmtl
ZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgeyB9Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b24pIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlS
b2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlVua25vd247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlh
Um9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGFyaWFSb2xl
SGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmluZFRleHRSYW5nZXMoQWNjZXNz
aWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZl
Y3RvcjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0
aW9uIGNvbnN0Jikgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZh
YmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZvaWQg
bGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZSB7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGV4cG9zZXNUaXRsZVVJRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNw
b25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOyB9CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hp
bGRPZkFyaWFSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBBY2Nlc3NpYmlsaXR5IFRleHQK
LSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlU
ZXh0PiYpIGNvbnN0IHsgfTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4mKSBjb25zdCBvdmVycmlkZSB7IH07CiAgICAgLy8gQSBzaW5nbGUgbWV0
aG9kIGZvciBnZXR0aW5nIGEgY29tcHV0ZWQgbGFiZWwgZm9yIGFuIEFYT2JqZWN0LiBJdCBjb25k
ZW5zZXMgdGhlIG51YW5jZXMgb2YgYWNjZXNzaWJpbGl0eVRleHQuIFVzZWQgYnkgSW5zcGVjdG9y
LgotICAgIFN0cmluZyBjb21wdXRlZExhYmVsKCk7Ci0gICAgCisgICAgU3RyaW5nIGNvbXB1dGVk
TGFiZWwoKSBvdmVycmlkZTsKKwogICAgIC8vIEEgcHJvZ3JhbW1hdGljIHdheSB0byBzZXQgYSBu
YW1lIG9uIGFuIEFjY2Vzc2libGVPYmplY3QuCi0gICAgdmlydHVhbCB2b2lkIHNldEFjY2Vzc2li
bGVOYW1lKGNvbnN0IEF0b21TdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmli
dXRlc1JlcXVpcmVkRm9ySW5jbHVzaW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBY2Nlc3NpYmxl
TmFtZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBoYXNBdHRyaWJ1
dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEFjY2Vz
c2liaWxpdHkgVGV4dCAtIChUbyBiZSBkZXByZWNhdGVkKS4KLSAgICB2aXJ0dWFsIFN0cmluZyBh
Y2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAg
U3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9CisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQogCiAgICAgLy8gTWV0aG9kcyBmb3IgZGV0ZXJtaW5pbmcgYWNjZXNzaWJp
bGl0eSB0ZXh0LgotICAgIGJvb2wgaXNBUklBU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9
Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVu
ZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoKSkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUo
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNj
cmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgY29uc3Qg
U3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdDsKLSAgICBib29sIGFjY2Vzc2libGVOYW1l
RGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3Q7Ci0gICAgCisgICAgYm9vbCBpc0FSSUFTdGF0aWNU
ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQorICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHRleHRVbmRlckVs
ZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRl
eHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9
CisgICAgU3RyaW5nIHRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFN0
cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyAgICBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJv
bUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIEFiYnJldmlhdGlvbnMKLSAgICB2
aXJ0dWFsIFN0cmluZyBleHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgU3RyaW5n
IGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVs
ZW1lbnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8v
IE9ubHkgaWYgaXNDb2xvcldlbGwoKQotICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGludCYg
ciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0IHsgciA9IDA7IGcgPSAwOyBiID0gMDsgfQorICAgIHZv
aWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25zdCBvdmVycmlkZSB7IHIg
PSAwOyBnID0gMDsgYiA9IDA7IH0KIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcm9sZTsgfQogCi0gICAgdmlydHVhbCBBWE9iamVj
dENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7Ci0gICAgQVhJRCBheE9iamVjdElEKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQotICAgIAorICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWElEIG9iamVjdElEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pZDsgfQorCiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFuY2hv
ckVsZW1lbnRGb3JOb2RlKE5vZGUqKTsKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCog
aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqKTsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGFuY2hv
ckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1By
ZXNzQWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGlu
Z0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICBJbnRSZWN0IHBp
eGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0
KGJvdW5kaW5nQm94UmVjdCgpKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVj
dCgpIGNvbnN0ID0gMDsKLSAgICBMYXlvdXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBlbGVt
ZW50UmVjdCgpLnNpemUoKTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgY2xpY2tQb2ludCgpOwor
ICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgYm9vbCBzdXBwb3J0c1ByZXNzQWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91bmRpbmdC
b3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc25hcHBlZEludFJlY3QoYm91bmRpbmdC
b3hSZWN0KCkpOyB9CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRl
ID0gMDsKKyAgICBMYXlvdXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbGVt
ZW50UmVjdCgpLnNpemUoKTsgfQorICAgIEludFBvaW50IGNsaWNrUG9pbnQoKSBvdmVycmlkZTsK
ICAgICBzdGF0aWMgSW50UmVjdCBib3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVjdCosIGNv
bnN0IFZlY3RvcjxGbG9hdFF1YWQ+Jik7Ci0gICAgdmlydHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkg
Y29uc3QgeyByZXR1cm4gUGF0aCgpOyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBs
YWluVGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0
UmFuZ2UoKTsgfQotICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
c2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsgfQotICAgIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCgp
IGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkubGVuZ3RoOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gVVJMKCk7IH0KLSAgICB2aXJ0dWFsIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVNlbGVjdGlv
bigpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNv
bnN0IHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBQYWdlKiBwYWdlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZyYW1lVmlldyog
ZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsKLSAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKLSAg
ICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Q7Ci0gICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkg
Y29uc3Q7Ci0gICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7CisgICAgUGF0aCBlbGVtZW50UGF0aCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFBhdGgoKTsgfQorICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRl
eHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxh
aW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
bGFpblRleHRSYW5nZSgpOyB9CisgICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgpLnN0YXJ0OyB9CisgICAgdW5zaWdu
ZWQgc2VsZWN0aW9uRW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFu
Z2UoKS5sZW5ndGg7IH0KKworICAgIFVSTCB1cmwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBV
UkwoKTsgfQorICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOyB9CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgQXRvbVN0cmlu
ZyYgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAg
IGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdpZGdldCog
d2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFdpZGdldCog
d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXco
KSBjb25zdCBvdmVycmlkZTsKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIHRvcERv
Y3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2Vz
dG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgLy8gMS1iYXNlZCwgdG8gbWF0Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQot
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIHsgfQotICAgIGJvb2wgcmVwbGFjZVRl
eHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJik7Ci0gICAgYm9v
bCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
KGZsb2F0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpOwotICAgIGJvb2wgcGVy
Zm9ybURlZmF1bHRBY3Rpb24oKSB7IHJldHVybiBwcmVzcygpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgaW5jcmVtZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpIHsg
fQotCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB0ZXh0Q2hhbmdlZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3NpYmls
aXR5Um9sZSgpIHsgfQotICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hp
bGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkcmVuKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0
eU9iamVjdCosIHVuc2lnbmVkKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRy
aWJ1dGVSb2xlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1faGF2ZUNoaWxkcmVuOyB9CisgICAg
dW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CisKKyAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRT
ZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxl
Y3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCByZXBsYWNl
VGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlk
ZTsKKyAgICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkKGJv
b2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBtYWtlUmFuZ2VWaXNpYmxl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBwcmVzcygpIG92
ZXJyaWRlOworICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBvdmVycmlkZSB7IHJldHVy
biBwcmVzcygpOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGluY3JlbWVudCgpIG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgZGVjcmVtZW50KCkgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdGV4dENoYW5nZWQoKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGUgeyB9CisgICAgY29uc3Qg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29sIHVwZGF0ZUNoaWxkcmVu
SWZOZWVkZWQgPSB0cnVlKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopIG92ZXJy
aWRlOworICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqLCB1bnNp
Z25lZCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGF2ZUNoaWxkcmVuOyB9CiAgICAgdm9pZCB1
cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Rv
VXBkYXRlU3VidHJlZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0g
ICAgdmlydHVhbCBib29sIG5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCk7CisgICAgdm9pZCBkZXRhY2hG
cm9tUGFyZW50KCkgb3ZlcnJpZGU7CiAjZWxzZQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9t
UGFyZW50KCkgeyB9CisgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyB9CiAj
ZW5kaWYKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSB7IHJldHVybiBm
YWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaWJs
ZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRh
bnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFj
dGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFF
eHBhbmRlZENoYW5nZWQoKSB7IH0KLSAgICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QqKSBjb25zdDsKLSAgICBib29sIGlzQW5jZXN0b3JPZk9iamVj
dChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KikgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Q7CisgICAgYm9vbCBpc0RldGFj
aGVkRnJvbVBhcmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGNh
bkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHNob3VsZEZvY3VzQWN0
aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJp
ZGUgeyB9CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBbmNlc3Rvck9mT2JqZWN0
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJv
bGVUb1dlYkNvcmVSb2xlKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgaGFzQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGJvb2wgaGFzVGFnTmFtZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBWaXNpYmxlUG9z
aXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvblJhbmdlKCk7IH0KLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoKTsgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdlKCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlv
blJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoKTsgfQorCisgICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2UoKSBjb25z
dCBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihO
b2RlKiByZXBsYWNlZE5vZGUpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxlZnRMaW5lVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJs
ZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OwotICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OworCisgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBv
c2l0aW9uT2ZSaWdodFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5jZUZv
clBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFu
Z2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBTdHJpbmcgc3Ry
aW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsK
LSAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Q7Ci0gICAgdmly
dHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJ
bnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IHsgcmV0dXJu
IEludFJlY3QoKTsgfQotICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxl
Y3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29u
c3QgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKGNv
bnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChj
b25zdCBJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zKSBjb25zdCB7IHJldHVybiB2aXNpYmxlUG9zLm5leHQoKTsgfQotICAgIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MucHJldmlvdXMoKTsgfQot
ICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEVuZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lRW5kUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNlU3Rh
cnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9z
aXRpb24gbmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAq
LykgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNpYmxl
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gMDsgfQotCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0
UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8
aW50PiYpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9y
TGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBs
YWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkg
Y29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBsYWluVGV4dFJhbmdlIGRv
QVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBTdHJp
bmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmly
dHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgU3RyaW5n
IHN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJl
Y3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IGJv
dW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNv
bnN0IG92ZXJyaWRlIHsgfQorCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZv
ckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJv
dW5kcykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHZpc2libGVQb3MubmV4dCgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2aW91cygpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9u
IG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9z
aXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5k
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKworICAgIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGluZUZvclBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4dFJh
bmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXgoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KKworICAgIHZvaWQgbGlu
ZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIFBsYWluVGV4dFJh
bmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBs
YWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JQb3NpdGlv
bihjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4dFJhbmdlIGRv
QVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRl
eHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRleCh1
bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KKyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIEludFJlY3QgZG9BWEJv
dW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGxp
c3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mKTsKIAotICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpOworICAgIHVu
c2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpIG92ZXJyaWRlOwogCi0gICAgU3RyaW5n
IGNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBjb21wdXRlZFJvbGVTdHJp
bmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlRm9y
TVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nUm9sZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwg
U3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHN0cmluZ1Jv
bGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKTsgfQorCisgICAgU3RyaW5nIHBhc3N3b3JkRmll
bGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBp
c1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWYWx1ZUF1dG9m
aWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZh
bHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdDsKLSAgICBib29sIGlzVmFsdWVBdXRvZmls
bEF2YWlsYWJsZSgpIGNvbnN0OwotICAgIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxs
QnV0dG9uVHlwZSgpIGNvbnN0OwotICAgIAogICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRv
IGdldCBhbGwgaXRzIHJvd3MuCi0gICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJik7CisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0
byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KLSAgICB2
b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jik7Ci0gICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25seSBpdHMgY29u
dGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLiAKLSAgICB2b2lk
IGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAg
CisgICAgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIG92ZXJyaWRlOworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIGl0ZW0gdG8g
Z2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxkIHRyZWUgaXRlbXMgYW5kIGdy
b3Vwcy4KKyAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGxpdmUtcmVnaW9uIGZlYXR1cmVzLgot
ICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29u
c3Q7Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVl
KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9v
bCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBs
aXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCB7IHJldHVybiBudWxsQXRv
bSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1
ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNs
dWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBib29sIGxpdmVS
ZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5Um9s
ZSk7CiAgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9t
U3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY29udGVudEVkaXRhYmxlQXR0cmlidXRlSXNFbmFi
bGVkKEVsZW1lbnQqKTsKLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgp
IGNvbnN0OworICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c1JlYWRP
bmx5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKKworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgYm9v
bCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBhdXRvQ29tcGxldGVW
YWx1ZSgpIGNvbnN0OwotICAgIAotICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0OwotICAgIAogICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCi0gICAgdmlydHVhbCBP
cHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gT3B0aW9u
U2V0PFNwZWFrQXM+IHsgfTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJvcGVy
dHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcHRpb25TZXQ8U3BlYWtBcz4geyB9OyB9CiAK
ICAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xsaW5nIGFzIG1hbnkgbmVz
dGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxU
b01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3Qg
YmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0
ZXMuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29u
c3QgSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJG
b2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2Nyb2xsIHRoaXMg
b2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0b3At
bGV2ZWwgd2luZG93LgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0
IEludFBvaW50JikgY29uc3Q7Ci0gICAgCi0gICAgZW51bSBjbGFzcyBTY3JvbGxCeVBhZ2VEaXJl
Y3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsKLSAgICBib29sIHNjcm9sbEJ5UGFnZShT
Y3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0OwotICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
KCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdDsgICAgCi0g
ICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKLSAgICB2b2lkIHNj
cm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25z
dDsKLSAgICAKLSAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCk7Ci0gICAgdm9pZCBz
ZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKTsKKyAgICB2b2lkIHNjcm9sbFRvR2xvYmFs
UG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgc2Nyb2xs
QnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIHNjcm9sbENv
bnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZUNv
bnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxl
KGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRM
YXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKIAogICAgIC8vIEZpcmVzIGEg
Y2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25v
cmVkIHZhbHVlIGNoYW5nZWQuCi0gICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQo
KTsKKyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0aEVsZW1lbnQoKS4K
LSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlT3BlcmF0b3Io
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBhcmF0
b3JPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWF0aElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVj
dFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE11
bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNN
YXRoUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0
aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNYXRoVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhUb2tlbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhTY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNz
aWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRo
UmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIG1hdGhSb290SW5kZXhPYmplY3QoKSBvdmVycmlkZSB7IHJldHVy
biBudWxscHRyOyB9CisKICAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCi0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFVuZGVy
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBtYXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogICAgIC8vIEZyYWN0aW9uIGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoTnVtZXJhdG9y
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9i
amVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1hdGhTdWJzY3Jp
cHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKwogICAgIC8vIEZlbmNlZCBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgU3RyaW5n
IG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfQotICAgIHZpcnR1YWwgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCisgICAgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgbWF0aEZl
bmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAg
ICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Cisg
ICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KLSAgICB0eXBlZGVm
IFZlY3RvcjxzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOwotICAgIHZpcnR1YWwgdm9p
ZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlz
Y3JpcHRQYWlycyYpIHsgfQotICAgIAorICAgIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBtYXRoUG9z
dHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9
CisKICAgICAvLyBWaXNpYmlsaXR5LgotICAgIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0OwotICAg
IGJvb2wgaXNET01IaWRkZW4oKSBjb25zdDsKLSAgICBib29sIGlzSGlkZGVuKCkgY29uc3QgeyBy
ZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVuKCk7IH0KKyAgICBib29sIGlzQVhIaWRk
ZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRE9NSGlkZGVuKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQVhIaWRk
ZW4oKSB8fCBpc0RPTUhpZGRlbigpOyB9CiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9CisgICAg
dm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKSBvdmVy
cmlkZSB7IG1fd3JhcHBlciA9IHdyYXBwZXI7IH0KICNlbHNlCiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2ht
ZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCk7CisgICAgdm9pZCBvdmVycmlk
ZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCkgb3ZlcnJp
ZGU7CiAjZWxzZQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxp
dHlPYmplY3QqKSB7IH0KKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSopIG92ZXJyaWRlIHsgfQogI2VuZGlmCi0gICAgCisKICNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWSkKICAgICAvLyBhIHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3Ig
ZGV0ZXJtaW5pbmcgaWYgYW4gYXR0YWNobWVudCBpcyBpZ25vcmVkCi0gICAgYm9vbCBhY2Nlc3Np
YmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0OworICAgIGJvb2wgYWNjZXNzaWJpbGl0eUln
bm9yZUF0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBnaXZlcyBwbGF0Zm9ybXMg
dGhlIG9wcG9ydHVuaXR5IHRvIGluZGljYXRlIGlmIGFuZCBob3cgYW4gb2JqZWN0IHNob3VsZCBi
ZSBpbmNsdWRlZAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAjZWxzZQotICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBh
Y2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsgfQorICAgIGJvb2wgYWNj
ZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZv
cm1JbmNsdWRlc09iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0aCgp
OwotICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0lu
cHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3Q7CisgICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29y
ZEZpZWxkTGVuZ3RoKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgotICAgIAorCiAgICAgLy8gYWxsb3dzIGZvciBhbiBBY2Nlc3Np
YmlsaXR5T2JqZWN0IHRvIHVwZGF0ZSBpdHMgcmVuZGVyIHRyZWUgb3IgcGVyZm9ybQogICAgIC8v
IG90aGVyIG9wZXJhdGlvbnMgdXBkYXRlIHR5cGUgb3BlcmF0aW9ucwotICAgIHZvaWQgdXBkYXRl
QmFja2luZ1N0b3JlKCk7Ci0gICAgCisgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVy
cmlkZTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcHJldmVudEtleWJvYXJkRE9N
RXZlbnREaXNwYXRjaCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sKTsKLSAgICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJ
blRpdGxlKCkgY29uc3Q7CisgICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNo
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNW
YWx1ZUluVGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc3BlZWNoSGludEF0dHJp
YnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBib29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKKyAgICBib29sIGNh
cmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDYXJldEJy
b3dzaW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogZm9jdXNhYmxlQW5jZXN0b3IoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBl
ZGl0YWJsZUFuY2VzdG9yKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGlnaGVzdEVkaXRh
YmxlQW5jZXN0b3IoKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2FibGVBbmNlc3Rv
cigpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVkaXRhYmxlQW5jZXN0b3Io
KSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoaWdoZXN0RWRpdGFibGVBbmNl
c3RvcigpIG92ZXJyaWRlOworCisgICAgY29uc3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFu
Y2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9vbCBpbmNsdWRlU2VsZikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlk
ZSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJv
bVBhcmVudERhdGEoKTsgfQorICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JD
aGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopIG92ZXJyaWRlOwogCi0gICAgY29uc3QgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9v
bCBpbmNsdWRlU2VsZikgY29uc3Q7Ci0gICAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGNoZWRQYXJlbnQoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYsIGJvb2wgaW5jbHVk
ZVNlbGYsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Jik+Jik7Ci0gICAgCi0gICAgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgeyBt
X2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJl
bnREYXRhKCk7IH0KLSAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQo
QWNjZXNzaWJpbGl0eU9iamVjdCopOwotICAgIAogcHJvdGVjdGVkOgogICAgIEFYSUQgbV9pZCB7
IDAgfTsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKQEAgLTEw
MjEsMjQgKzc3NywyNCBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKICAgICBib29sIG1faXNvbGF0ZWRUcmVlTm9kZUluaXRpYWxpemVkIHsgZmFs
c2UgfTsKICNlbmRpZgotICAgIAotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEo
QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSB7IG1faXNJZ25vcmVk
RnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CisKKyAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJl
bnREYXRhKEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSYgZGF0YSkgb3ZlcnJp
ZGUgeyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCiAgICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIAorCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMs
IHJldHVybiBpdHMgU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgeyB9CiAg
ICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhQW5jZXN0b3IoKSBjb25zdDsKICAgICB2
b2lkIHNjcm9sbEFyZWFBbmRBbmNlc3RvcihzdGQ6OnBhaXI8U2Nyb2xsYWJsZUFyZWEqLCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4mKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7Ci0gICAgc3RhdGljIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKik7Ci0gICAgc3RhdGljIGJvb2wgb2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlh
V2l0aFJlc3VsdExpbWl0KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKworICAgIHN0YXRpYyBi
b29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7CisgICAg
c3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAgICBzdGF0aWMg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAgICBzdGF0aWMgYm9vbCBvYmpl
Y3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGJ1dHRvblJvbGVUeXBl
KCkgY29uc3Q7Ci0gICAgYm9vbCBpc09uc2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBpc09uU2Ny
ZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXNwYXRjaFRvdWNoRXZlbnQoKTsKIAog
ICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xMDY0LDEwICs4MjAsMTAg
QEAgcHJvdGVjdGVkOgogfTsKIAogI2lmICFFTkFCTEUoQUNDRVNTSUJJTElUWSkKLWlubGluZSBj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0K
K2lubGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fY2hpbGRyZW47IH0KIGlubGluZSBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFjdGlvblZlcmIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiBpbmxpbmUg
aW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCB7IHJldHVybiAtMTsgfQotaW5saW5lIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgeyB9CitpbmxpbmUgdm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVycmlkZSB7IH0KICNlbmRpZgogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2Rl
KiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKT4m
IGlzQWNjZXNzaWJsZSk7CkBAIC0xMDc2LDkgKzgzMiw5IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqLCBjb25zdCBXVEY6OkZ1
bmN0CiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKFRvVmFs
dWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5wcmVk
aWNhdGU7IH0gXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7IHJldHVybiBvYmplY3QucHJlZGljYXRlOyB9IFwK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KQotc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UmIGNvbnRleHQpIHsgcmV0
dXJuIGNvbnRleHQuaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7IH0KK3N0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgY29udGV4dCkgeyByZXR1
cm4gY29udGV4dC5pc0FjY2Vzc2liaWxpdHlPYmplY3QoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA5OGZmYjMxNWUyMS4uOThkMDE2
OTZkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0yNSw3ICsyNSwxMiBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yQmVoYXZpb3IuaCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lm
IFBMQVRGT1JNKFdJTikKQEAgLTQ1LDYgKzUwLDIzIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE5vZGU7CitjbGFzcyBF
bGVtZW50OworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNz
IFBhdGg7CitjbGFzcyBXaWRnZXQ7CitjbGFzcyBQYWdlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFz
cyBGcmFtZTsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIFNjcm9sbFZpZXc7CitjbGFzcyBBWE9i
amVjdENhY2hlOworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2U7CitjbGFzcyBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzsKK3N0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dDsKK3N0cnVjdCBTY3Jv
bGxSZWN0VG9WaXNpYmxlT3B0aW9uczsKKwogdHlwZWRlZiB1bnNpZ25lZCBBWElEOwogZXh0ZXJu
IGNvbnN0IEFYSUQgSW52YWxpZEFYSUQ7CiB0eXBlZGVmIHVuc2lnbmVkIEFYSXNvbGF0ZWRUcmVl
SUQ7ICAgIApAQCAtMjAzLDM2ICsyMjUsODgwIEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJv
bGUgewogICAgIFdpbmRvdywKIH07CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UgeworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgeyBDYWNoZURlc3Ry
b3llZCwgRWxlbWVudERlc3Ryb3llZCwgRWxlbWVudENoYW5nZSB9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UgeyBTY3JlZW4sIFBhZ2UgfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHsKKyAgICBOZXh0ID0gMSwKKyAgICBQcmV2
aW91cywKK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSB7CisgICAgQW55
VHlwZSA9IDEsCisgICAgQXJ0aWNsZSwKKyAgICBCbG9ja3F1b3RlU2FtZUxldmVsLAorICAgIEJs
b2NrcXVvdGUsCisgICAgQm9sZEZvbnQsCisgICAgQnV0dG9uLAorICAgIENoZWNrQm94LAorICAg
IENvbnRyb2wsCisgICAgRGlmZmVyZW50VHlwZSwKKyAgICBGb250Q2hhbmdlLAorICAgIEZvbnRD
b2xvckNoYW5nZSwKKyAgICBGcmFtZSwKKyAgICBHcmFwaGljLAorICAgIEhlYWRpbmdMZXZlbDEs
CisgICAgSGVhZGluZ0xldmVsMiwKKyAgICBIZWFkaW5nTGV2ZWwzLAorICAgIEhlYWRpbmdMZXZl
bDQsCisgICAgSGVhZGluZ0xldmVsNSwKKyAgICBIZWFkaW5nTGV2ZWw2LAorICAgIEhlYWRpbmdT
YW1lTGV2ZWwsCisgICAgSGVhZGluZywKKyAgICBIaWdobGlnaHRlZCwKKyAgICBJdGFsaWNGb250
LAorICAgIEtleWJvYXJkRm9jdXNhYmxlLAorICAgIExhbmRtYXJrLAorICAgIExpbmssCisgICAg
TGlzdCwKKyAgICBMaXZlUmVnaW9uLAorICAgIE1pc3NwZWxsZWRXb3JkLAorICAgIE91dGxpbmUs
CisgICAgUGxhaW5UZXh0LAorICAgIFJhZGlvR3JvdXAsCisgICAgU2FtZVR5cGUsCisgICAgU3Rh
dGljVGV4dCwKKyAgICBTdHlsZUNoYW5nZSwKKyAgICBUYWJsZVNhbWVMZXZlbCwKKyAgICBUYWJs
ZSwKKyAgICBUZXh0RmllbGQsCisgICAgVW5kZXJsaW5lLAorICAgIFVudmlzaXRlZExpbmssCisg
ICAgVmlzaXRlZExpbmssCit9OworCitzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
IHsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogc3RhcnRPYmplY3Q7CisgICAgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247CisgICAgVmVjdG9yPEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk+IHNlYXJjaEtleXM7CisgICAgU3RyaW5nIHNlYXJjaFRleHQ7Cisg
ICAgdW5zaWduZWQgcmVzdWx0c0xpbWl0OworICAgIGJvb2wgdmlzaWJsZU9ubHk7CisgICAgYm9v
bCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHk7CisKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWEoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHN0YXJ0T2JqZWN0LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRleHQsIHVuc2ln
bmVkIHJlc3VsdHNMaW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5k
YW50c09ubHkpCisgICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCisgICAgICAgICwg
c2VhcmNoRGlyZWN0aW9uKHNlYXJjaERpcmVjdGlvbikKKyAgICAgICAgLCBzZWFyY2hUZXh0KHNl
YXJjaFRleHQpCisgICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkKKyAgICAgICAg
LCB2aXNpYmxlT25seSh2aXNpYmxlT25seSkKKyAgICAgICAgLCBpbW1lZGlhdGVEZXNjZW5kYW50
c09ubHkoaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorICAgIHsgfQorfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIHsKKyAgICBJbmNsdWRlT2JqZWN0LAorICAg
IElnbm9yZU9iamVjdCwKKyAgICBEZWZhdWx0QmVoYXZpb3IsCit9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRp
b24sIERhdGUsIFRpbWUgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUg
eworICAgIE9mZiA9IDAsCisgICAgT24sCisgICAgTWl4ZWQsCit9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKKyAgICBOb25lLAorICAgIEFzY2VuZGluZywKKyAg
ICBEZXNjZW5kaW5nLAorICAgIE90aGVyLAorICAgIEludmFsaWQsCit9OworCitlbnVtIGNsYXNz
IEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tIHsKKyAgICBCZWdpbiwgLy8gU2VhcmNo
IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZWxlbWVudC4KKyAgICBTZWxlY3Rpb24sIC8vIFNl
YXJjaCBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCisgICAgRW5k
IC8vIFNlYXJjaCBmcm9tIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCit9OworCitlbnVtIGNsYXNz
IEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIHsKKyAgICBGb3J3YXJkLCAvLyBPY2N1
cnJlbmNlIGFmdGVyIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBCYWNrd2FyZCwgLy8gT2NjdXJy
ZW5jZSBiZWZvcmUgdGhlIHN0YXJ0aW5nIHJhbmdlLgorICAgIENsb3Nlc3QsIC8vIENsb3Nlc3Qg
b2NjdXJyZW5jZSB0byB0aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIgb3IgYmVmb3Jl
LgorICAgIEFsbCAvLyBBbGwgb2NjdXJyZW5jZXMKK307CisKK3N0cnVjdCBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dENyaXRlcmlhIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hTdHJpbmdzOyAv
LyBUZXh0IHN0cmluZ3MgdG8gc2VhcmNoIGZvci4KKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dFN0YXJ0RnJvbSBzdGFydDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb247CisKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKCkKKyAgICAg
ICAgOiBzdGFydChBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2VsZWN0aW9uKQor
ICAgICAgICAsIGRpcmVjdGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6Rm9y
d2FyZCkKKyAgICB7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRp
b25UeXBlIHsKKyAgICBTZWxlY3QsCisgICAgUmVwbGFjZSwKKyAgICBDYXBpdGFsaXplLAorICAg
IExvd2VyY2FzZSwKKyAgICBVcHBlcmNhc2UKK307CisKK3N0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4
dE9wZXJhdGlvbiB7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZXM7IC8vIHRl
eHQgb24gd2hpY2ggcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgorICAgIEFjY2Vzc2liaWxpdHlUZXh0
T3BlcmF0aW9uVHlwZSB0eXBlOworICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7IC8vIEZvciB0
eXBlID0gcmVwbGFjZS4KKworICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uKCkKKyAgICAg
ICAgOiB0eXBlKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0KQorICAgIHsg
fQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24geworICAgIFZlcnRp
Y2FsLAorICAgIEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAorfTsKKworc3RydWN0IEFjY2Vz
c2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7CisgICAgZW51bSBDaGlsZHJlbkluY2x1c2lv
biB7CisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwKKyAg
ICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCisgICAgICAgIFRl
eHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgLy8gVGhp
cyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5hbWVGcm9tCisgICAgfTsKKworICAgIENo
aWxkcmVuSW5jbHVzaW9uIGNoaWxkcmVuSW5jbHVzaW9uOworICAgIGJvb2wgaW5jbHVkZUZvY3Vz
YWJsZUNvbnRlbnQ7CisgICAgTm9kZSogaWdub3JlZENoaWxkTm9kZTsKKworICAgIEFjY2Vzc2li
aWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZShDaGlsZHJlbkluY2x1c2lvbiBjID0gVGV4dFVuZGVy
RWxlbWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLCBib29sIGkgPSBmYWxzZSwgTm9kZSogaWdu
b3JlZCA9IG51bGxwdHIpCisgICAgICAgIDogY2hpbGRyZW5JbmNsdXNpb24oYykKKyAgICAgICAg
LCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudChpKQorICAgICAgICAsIGlnbm9yZWRDaGlsZE5vZGUo
aWdub3JlZCkKKyAgICB7IH0KK307CisKKyNpZiBQTEFURk9STShDT0NPQSkKK3R5cGVkZWYgc3Ry
dWN0IF9OU1JhbmdlIE5TUmFuZ2U7CisjZW5kaWYKKworc3RydWN0IFBsYWluVGV4dFJhbmdlIHsK
KyAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07CisK
KyAgICBQbGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIFBsYWluVGV4dFJhbmdlKHVu
c2lnbmVkIHMsIHVuc2lnbmVkIGwpCisgICAgICAgIDogc3RhcnQocykKKyAgICAgICAgLCBsZW5n
dGgobCkKKyAgICB7IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWluVGV4dFJhbmdl
KE5TUmFuZ2UpOworI2VuZGlmCisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFz
dGFydCAmJiAhbGVuZ3RoOyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlWaXNpYmxl
UG9zaXRpb25Gb3JCb3VuZHMgeworICAgIEZpcnN0LAorICAgIExhc3QsCit9OworCitzdHJ1Y3Qg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgeworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydDsKKyAgICBW
aXNpYmxlUG9zaXRpb24gZW5kOworCisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSA9IGRlZmF1
bHQ7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCisgICAgICAgIDogc3RhcnQocykKKyAgICAgICAgLCBl
bmQoZSkKKyAgICB7IH0KKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbikKKyAgICAgICAgOiBzdGFydChzZWxlY3Rpb24uc3RhcnQoKSkK
KyAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQorICAgIHsgfQorCisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCk7IH0KK307
CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2Ny
aXB0LCBTdXBlcnNjcmlwdCB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3Jp
cHQsIFBvc3RTdXBlcnNjcmlwdCB9OworCisvLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gc3RvcmUgdGhl
IGlzSWdub3JlZCBkYXRhIHRoYXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28gdGhhdCBpbiBh
ZGRDaGlsZHJlbigpCisvLyB3ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNoYWluIGZvciBl
YWNoIGVsZW1lbnQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1bCBpbmZvcm1h
dGlvbiBhbHJlYWR5Lgorc3RydWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YSB7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCB7IG51bGxwdHIgfTsKKyAg
ICBib29sIGlzQVhIaWRkZW4geyBmYWxzZSB9OworICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENo
aWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBh
cmVudCB7IGZhbHNlIH07CisKKyAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IG51bGxwdHIpCisgICAgICAgIDog
cGFyZW50KHBhcmVudCkKKyAgICB7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIXBhcmVudDsgfQorfTsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+IHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKCkgPSBkZWZhdWx0
OworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKCkgPSBkZWZhdWx0OwogCi0g
ICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICAvLyBBZnRlciBjb25zdHJ1Y3Rp
bmcgYW4gYWNjZXNzaWJsZSBvYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQorICAgIC8vIHVuaXF1
ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBpbml0KCkgbXVz
dAorICAgIC8vIGJlIGNhbGxlZCBsYXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRPYmplY3RJRChB
WElEKSA9IDA7CisgICAgdmlydHVhbCBBWElEIG9iamVjdElEKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpbml0KCkgPSAwOworCisgICAgLy8gV2hlbiB0aGUgY29ycmVzcG9uZGluZyBX
ZWJDb3JlIG9iamVjdCB0aGF0IHRoaXMgYWNjZXNzaWJsZSBvYmplY3QKKyAgICAvLyByZXByZXNl
bnRzIGlzIGRlbGV0ZWQsIGl0IG11c3QgYmUgZGV0YWNoZWQuCisgICAgdmlydHVhbCB2b2lkIGRl
dGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0Q2FjaGUqID0gbnVsbHB0
cikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgPSAwOworCisgICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlPj4gQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yOworCisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAq
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFw
TGluaygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXNzd29yZEZp
ZWxkT3JDb250YWluaW5nUGFzc3dvcmRGaWVsZCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNO
YXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hG
aWVsZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJBcmVhKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2
ZUxpc3RCb3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlzdEJveCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51UmVs
YXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWVudUJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51SXRlbSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzU2xpZGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlclRodW1i
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0U2xpZGVyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTGFiZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlzdCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFibGVS
b3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0dyb3Vw
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTWVudUxpc3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TWVudUxpc3RQb3B1cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdE9w
dGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRp
YUNvbnRyb2xMYWJlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYU9iamVj
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2goKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFU
ZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNOb25OYXRpdmVUZXh0
Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJMaXN0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYkl0ZW0oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb21i
b0JveCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc1RyZWVJdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGJhcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ2hl
Y2tib3hPclJhZGlvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXco
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ2FudmFzKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0Jsb2NrcXVvdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGFuZG1hcmso
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGxpdHRlcigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb29sYmFyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNL
ZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdW1tYXJ5
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc091dHB1dCgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzRW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5k
ZXRlcm1pbmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgPSAwOwor
ICAgIC8vIEZJWE1FIHNob3VsZCBuZWVkIGp1c3Qgb25lIHNpbmNlIG9uc2NyZWVuIHNob3VsZCBi
ZSAhb2Zmc2NyZWVuLgorICAgIHZpcnR1YWwgYm9vbCBpc09uU2NyZWVuKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNQcmVzc2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0xpbmtlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFeHBhbmRlZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNF
eHBhbmRlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIHBh
cmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgCisgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFj
ZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9
IDA7CisKKyAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBtYW55IGl0ZW1zIGNhbiBiZSBz
ZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGltZS4KKyAgICB2aXJ0dWFsIGJv
b2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9v
bCBoYXNCb2xkRm9udCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9u
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IGdldE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRy
PFJhbmdlPiBjb25zdCYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGhhc1VuZGVybGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSGlnaGxpZ2h0
aW5nKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0ZXRpbWVBdHRy
aWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGlt
ZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhblNldEZv
Y3VzQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFu
Z2VBdHRyaWJ1dGVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1
dGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBib29sIGlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCB1bnNpZ25lZCBibG9ja3F1b3RlTGV2ZWwoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHRh
YmxlTGV2ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9y
UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9
IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogc2VsZWN0ZWRUYWJJdGVt
KCkgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVjdGVkTGlz
dEl0ZW0oKSA9IDA7CisgICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2lu
Z0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzUG9wdXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcG9w
dXBWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YWxpc3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGFyaWFJc011bHRpbGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBp
bnZhbGlkU3RhdHVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ByZXNz
ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2hlY2tlZCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nIGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3QgPSAwOworCisgICAgLy8gVGhpcyBm
dW5jdGlvbiBjaGVja3MgaWYgdGhlIG9iamVjdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIHRoZXJl
J3MgYSBtb2RhbCBkaWFsb2cgZGlzcGxheWVkLgorICAgIHZpcnR1YWwgYm9vbCBpZ25vcmVkRnJv
bU1vZGFsUHJlc2VuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTW9kYWxEZXNj
ZW5kYW50KE5vZGUqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTW9kYWxOb2RlKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2V0U2l6ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGludCBzZXRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHBvc0luU2V0
KCkgY29uc3QgPSAwOworCisgICAgLy8gQVJJQSBkcmFnIGFuZCBkcm9wCisgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklB
R3JhYmJlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkg
PSAwOworCisgICAgLy8gQ2FsbGVkIG9uIHRoZSByb290IEFYIG9iamVjdCB0byByZXR1cm4gdGhl
IGRlZXBlc3QgYXZhaWxhYmxlIGVsZW1lbnQuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7
CisgICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRl
dGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGZpcnN0Q2hpbGQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbGFzdENoaWxkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHByZXZpb3VzU2libGluZygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBuZXh0U2li
bGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBu
ZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Uq
IHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0Rlc2NlbmRhbnRPZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0ID0gMDsKKworICAg
IC8vIFRleHQgc2VsZWN0aW9uCisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmlu
ZFRleHRSYW5nZXMoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFj
Y2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uIGNvbnN0JikgPSAwOworCisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogdGl0bGVV
SUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxl
bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBj
b3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVs
RWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSA9IDA7CisKKyAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29u
c3QgPSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0CisgICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCA9IDA7Cisg
ICAgLy8gQSBzaW5nbGUgbWV0aG9kIGZvciBnZXR0aW5nIGEgY29tcHV0ZWQgbGFiZWwgZm9yIGFu
IEFYT2JqZWN0LiBJdCBjb25kZW5zZXMgdGhlIG51YW5jZXMgb2YgYWNjZXNzaWJpbGl0eVRleHQu
IFVzZWQgYnkgSW5zcGVjdG9yLgorICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSA9
IDA7CisKKyAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFtZSBvbiBhbiBBY2Nl
c3NpYmxlT2JqZWN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBB
dG9tU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRG
b3JJbmNsdXNpb24oKSBjb25zdCA9IDA7CisKKyAgICAvLyBBY2Nlc3NpYmlsaXR5IFRleHQgLSAo
VG8gYmUgZGVwcmVjYXRlZCkuCisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gTWV0
aG9kcyBmb3IgZGV0ZXJtaW5pbmcgYWNjZXNzaWJpbGl0eSB0ZXh0LgorICAgIHZpcnR1YWwgYm9v
bCBpc0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z1ZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQo
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRl
ckVsZW1lbnRNb2RlKCkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBBYmJyZXZpYXRpb25zCisgICAgdmlydHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFs
dWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFs
dWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworCisg
ICAgLy8gT25seSBpZiBpc0NvbG9yV2VsbCgpCisgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUo
aW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYT2JqZWN0
Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQq
IGFuY2hvckVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUHJl
c3NBY3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVj
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCkgPSAwOworICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50
UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0b3JCZWhh
dmlvckZvclRleHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdl
IHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2Vs
ZWN0aW9uU3RhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBzZWxlY3Rpb25F
bmQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBB
dG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTdHJp
bmcmIGFjdGlvblZlcmIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXco
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYWdlKiBwYWdlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRnJhbWVW
aWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBm
cmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCA9IDA7CisgICAgLy8gMS1iYXNlZCwgdG8g
bWF0Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNo
aWNhbExldmVsKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwg
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGluc2VydFRleHQo
Y29uc3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdl
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybURlZmF1bHRBY3Rpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5j
cmVtZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0
Q2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUo
KSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNo
aWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGls
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSosIHVuc2lnbmVkKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
c0NoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRy
ZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRl
dGFjaEZyb21QYXJlbnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWRGcm9tUGFy
ZW50KCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGFi
Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RhZ05h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5z
aWduZWQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBv
c2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdo
dFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5jZUZvclBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxl
UmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0
cmluZyBzdHJpbmdGb3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JSYW5n
ZShjb25zdCBSZWZQdHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGVuZ3Ro
Rm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFj
Y2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzV29yZFN0YXJ0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZUVuZFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VFbmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3Jh
cGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICov
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gb3JJbmRleChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2li
bGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGxp
bmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBQbGFpblRleHRSYW5nZSBwbGFpblRleHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdl
KGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxh
aW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9pbnQm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRl
eCh1bnNpZ25lZCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0
eWxlUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJp
bmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVz
aW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCB1bnNpZ25lZCBkb0FYTGluZUZvckluZGV4KHVuc2lnbmVkKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb21wdXRlZFJvbGVTdHJpbmcoKSBjb25zdCA9IDA7CisKKyAgICAv
LyBNU0FBCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0
cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
VmFsdWVBdXRvZmlsbGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlQXV0
b2ZpbGxBdmFpbGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBdXRvRmlsbEJ1dHRvblR5
cGUgdmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBVc2VkIGJ5
IGFuIEFSSUEgdHJlZSB0byBnZXQgYWxsIGl0cyByb3dzLgorICAgIHZpcnR1YWwgdm9pZCBhcmlh
VHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIC8vIFVzZWQg
YnkgYW4gQVJJQSB0cmVlIGl0ZW0gdG8gZ2V0IGFsbCBvZiBpdHMgZGlyZWN0IHJvd3MgdGhhdCBp
dCBjYW4gZGlzY2xvc2UuCisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJv
d3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIC8vIFVzZWQgYnkgYW4g
QVJJQSB0cmVlIGl0ZW0gdG8gZ2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxk
IHRyZWUgaXRlbXMgYW5kIGdyb3Vwcy4KKyAgICB2aXJ0dWFsIHZvaWQgYXJpYVRyZWVJdGVtQ29u
dGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisKKyAgICAvLyBBUklBIGxp
dmUtcmVnaW9uIGZlYXR1cmVzLgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24o
Ym9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
SW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9v
bCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTdHJp
bmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGxpdmVS
ZWdpb25BdG9taWMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDU1Mz
IFNwZWVjaCBwcm9wZXJ0aWVzLgorICAgIHZpcnR1YWwgT3B0aW9uU2V0PFNwZWFrQXM+IHNwZWFr
QXNQcm9wZXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ha2UgdGhpcyBvYmplY3QgdmlzaWJs
ZSBieSBzY3JvbGxpbmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQu
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdCA9IDA7CisgICAg
Ly8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0
cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYpIGNvbnN0
ID0gMDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9i
YWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisKKyAgICBl
bnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9
OworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRv
VmlzaWJsZU9wdGlvbnMmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgbGFzdEtub3du
SXNJZ25vcmVkVmFsdWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExhc3RLbm93bklzSWdu
b3JlZFZhbHVlKGJvb2wpID0gMDsKKworICAgIC8vIEZpcmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBu
b3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVkIHZhbHVlIGNoYW5nZWQu
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpID0gMDsKKwor
ICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBpc01hdGhFbGVtZW50KCku
CisgICAgdmlydHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01h
dGhGZW5jZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGV4
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTnVtYmVyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFRh
YmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFNj
cmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0gMDsKKworICAgIC8vIFJvb3QgY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoUmFkaWNhbmRP
YmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFJv
b3RJbmRleE9iamVjdCgpID0gMDsKKworICAgIC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoVW5kZXJPYmplY3QoKSA9IDA7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aE92ZXJPYmplY3QoKSA9
IDA7CisKKyAgICAvLyBGcmFjdGlvbiBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgPSAwOworCisg
ICAgLy8gU3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aEJhc2VPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFN1YnNjcmlwdE9iamVjdCgpID0gMDsKKyAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSA9
IDA7CisKKyAgICAvLyBGZW5jZWQgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRo
RmVuY2VkT3BlblN0cmluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVu
Y2VkQ2xvc2VTdHJpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF0aExpbmVUaGlj
a25lc3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJh
dG9yKCkgY29uc3QgPSAwOworCisgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCisgICAg
dHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiwgQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOwor
ICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0UGFpcnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3Np
YmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSA9IDA7CisKKyAgICAvLyBWaXNpYmlsaXR5Lgor
ICAgIHZpcnR1YWwgYm9vbCBpc0FYSGlkZGVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0RPTUhpZGRlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNIaWRkZW4oKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFw
cGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG92ZXJyaWRlQXR0YWNo
bWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50KSA9IDA7CisKKyAgICAv
LyBhIHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgaWYgYW4gYXR0YWNo
bWVudCBpcyBpZ25vcmVkCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRh
Y2htZW50KCkgY29uc3QgPSAwOworICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUgb3Bwb3J0dW5p
dHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluY2x1ZGVkCisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgPSAwOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICB2aXJ0dWFsIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0aCgpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3QgPSAwOworI2Vu
ZGlmCisKKyAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgdG8gdXBkYXRl
IGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCisgICAgLy8gb3RoZXIgb3BlcmF0aW9ucyB1cGRh
dGUgdHlwZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
ID0gMDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgYm9vbCBwcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogI2VuZGlm
CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNjZXNz
aWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZpcnR1YWwgYm9vbCBjYXJldEJyb3dzaW5n
RW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0Vu
YWJsZWQoYm9vbCkgPSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlKiBmb2N1c2FibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBlZGl0YWJsZUFuY2VzdG9yKCkgPSAwOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKCkgPSAwOworCisgICAg
dmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZy
b21QYXJlbnREYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcklzSWdub3JlZEZyb21Q
YXJlbnREYXRhKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKikgPSAwOwogfTsKIAorbmFtZXNw
YWNlIGF4IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRj4KK1QqIG1hdGNoZWRB
bmNlc3Rvcihjb25zdCBUJiBvYmplY3QsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IEYmIG1hdGNo
ZXMpCit7CisgICAgVCogcGFyZW50OworICAgIGlmIChpbmNsdWRlU2VsZikKKyAgICAgICAgcGFy
ZW50ID0gY29uc3RfY2FzdDxUKj4oJm9iamVjdCk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8q
IHBhcmVudFB0ciA9IG9iamVjdC5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFpczxUPihw
YXJlbnRQdHIpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHBhcmVudCA9
IHBhcmVudFB0cjsKKyAgICB9CisKKyAgICBmb3IgKDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlmIChtYXRjaGVzKCpwYXJlbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIGF4CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDUzMzRkYzc2NmVjLi4wZTZiZWRiZTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC05NzYsNyArOTc2LDcgQEAgT3B0aW9uU2V0PFNwZWFrQXM+IEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyZXIt
PnN0eWxlKCkuc3BlYWtBcygpOwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50LCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0
Cit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50LCBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPnJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbikKQEAgLTEwMzMsNyArMTAz
Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzVGV4dEFsdGVybmF0aXZl
KCkgY29uc3QKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUG9wdXAoKSBjb25z
dAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgaGFzIHRoZSBhcmlhLWhhc3BvcHVwIGF0
dHJpYnV0ZSwgb3IgaWYgaXQgaGFzIGFuIGFuY2VzdG9yIG9mIHR5cGUgbGluayB3aXRoIHRoZSBh
cmlhLWhhc3BvcHVwIGF0dHJpYnV0ZS4KLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW3RoaXNdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmls
aXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW3RoaXNdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICh0aGlzID09ICZvYmplY3QpID8gIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG9iamVjdC5wb3B1cFZhbHVlKCksICJmYWxzZSIpCiAgICAg
ICAgICAgICA6IG9iamVjdC5pc0xpbmsoKSAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uob2JqZWN0LnBvcHVwVmFsdWUoKSwgImZhbHNlIik7CiAgICAgfSk7CkBAIC0xMjgxLDcgKzEy
ODEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKIAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJl
cikpIHsKICAgICAgICAgLy8gc3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVC
dXR0b25zIGFyZSBqdXN0IHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQn
cyBpZ25vcmVkIG9uIGFuIGluZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAg
ICAgaWYgKHBhcmVudCAmJiAocGFyZW50LT5pc01lbnVJdGVtKCkgfHwgcGFyZW50LT5hcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVu
ZGVyVGV4dD4oKm1fcmVuZGVyZXIpOwpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzTGlzdE1hcmtlcigpKSB7Ci0gICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwor
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNMaXN0SXRlbSgp
OwogICAgIH0KIApAQCAtMjM3MCw3ICsyMzcwLDcgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25zdAog
ICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFF
bGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdl
TWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKIHsKICAgICBpZiAoIWFyZWEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjM5
Myw3ICsyMzkzLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE0KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW1vdGUgPSByZW1vdGVTVkdSb290RWxlbWVudChD
cmVhdGUpOwogICAgIGlmICghcmVtb3RlKQpAQCAtMjQwMyw3ICsyNDAzLDcgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZH
RWxlbWVudEhpdFRlc3QKICAgICByZXR1cm4gcmVtb3RlLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJ
bnRQb2ludChvZmZzZXQpKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGlmIChpc1NWR0ltYWdlKCkpCiAgICAgICAgIHJl
dHVybiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChwb2ludCk7CkBAIC0yNDE3LDcgKzI0MTcsNyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRVc2VTaGFkb3dIb3N0Rm9ySGl0VGVzdGluZyhOb2RlKiBzaGFk
b3dIb3N0KQogICAgIHJldHVybiBzaGFkb3dIb3N0ICYmICFzaGFkb3dIb3N0LT5oYXNUYWdOYW1l
KHZpZGVvVGFnKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1MCw3ICsyNDUwLDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhp
dFRlc3QoY28KICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVzdWx0ID0gb2JqLT5kb2N1bWVudCgpLmF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSog
cmVzdWx0ID0gb2JqLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2Jq
KTsKICAgICByZXN1bHQtPnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKIAogICAgIC8vIEFs
bG93IHRoZSBlbGVtZW50IHRvIHBlcmZvcm0gYW55IGhpdC10ZXN0aW5nIGl0IG1pZ2h0IG5lZWQg
dG8gZG8gdG8gcmVhY2ggbm9uLXJlbmRlciBjaGlsZHJlbi4KQEAgLTI0NTgsNyArMjQ1OCw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvCiAgICAgCiAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQt
PmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQg
aXMgdGhlIGxhYmVsIG9mIGEgY29udHJvbCwgYSBoaXQgdGVzdCBzaG91bGQgcmV0dXJuIHRoZSBj
b250cm9sLgotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb250cm9sT2JqZWN0ID0gcmVz
dWx0LT5jb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpOworICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogY29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVzcG9uZGlu
Z0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRyb2xPYmplY3QgJiYg
IWNvbnRyb2xPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0
dXJuIGNvbnRyb2xPYmplY3Q7CiAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAgIGlmICghYXJl
YU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBtX2NoaWxkcmVu
LmFwcGVuZCgmYXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGF4T2JqZWN0
Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3QuYXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGF4
T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAgICAgfQogfQog
CkBAIC0zMzA4LDcgKzMzMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFk
ZEhpZGRlbkNoaWxkcmVuKCkKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
Y2hpbGQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdoZXJlIHRoZSBs
YXN0IHJlbmRlciBzaWJsaW5nIGlzIGxvY2F0ZWQgd2l0aGluIG1fY2hpbGRyZW4uCi0gICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KGNoaWxkLT5yZW5kZXJlcigp
KTsKICAgICAgICAgICAgIGlmIChjaGlsZE9iamVjdCAmJiBjaGlsZE9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgY2hpbGRyZW4gPSBjaGls
ZE9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgp
KQpAQCAtMzUyNSw3ICszNTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAg
YXJpYVNlbGVjdGVkUm93cyhyZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiTGlzdDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHNlbGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCisgICAgICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogc2VsZWN0ZWRUYWIgPSBzZWxlY3RlZFRhYkl0ZW0oKSkKICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoc2VsZWN0ZWRUYWIpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMGIxOWRhNTJh
YmUuLjE1NDM3YTRmZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1
YmxpYzoKICAgICBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHJvb3QgYWNj
ZXNzaWJpbGl0eSBvYmplY3QgdG8ga2ljayBvZmYgYSBoaXQgdGVzdC4KLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRWxlbWVu
dCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApAQCAtMTM1LDcgKzEzNSw3
IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0
cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBBdG9tU3RyaW5n
JiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYg
YWN0aW9uVmVyYigpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lk
Z2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBnZXREb2N1bWVudExpbmtzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpA
QCAtMjM1LDExICsyMzUsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVGFiSXRlbVNlbGVjdGVk
KCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CiAg
ICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0OwotICAgIHZvaWQgYWRkUmFkaW9CdXR0b25H
cm91cENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdDsKKyAgICB2b2lkIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhU
TUxBcmVhRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nl
c3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBjb25zdDsKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBhcmVudE9iamVjdCgpIGNvbnN0
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdS
b290KCk7CiAgICAgZW51bSBDcmVhdGlvbkNob2ljZSB7IENyZWF0ZSwgUmV0cmlldmUgfTsKICAg
ICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaG9p
Y2UgY3JlYXRlSWZOZWNlc3NhcnkpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0
IEludFBvaW50JikgY29uc3Q7CiAgICAgdm9pZCBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNW
R0VsZW1lbnQoTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudC5jcHAKaW5kZXggYjA2Njg4NjM1ZTYuLjQ1MjkwNzI1
NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdFbGVtZW50LmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAg
ICBpZiAobV9yZW5kZXJlci0+aXNTVkdTaGFwZSgpKSB7CiAgICAgICAgIGlmIChjYW5TZXRGb2N1
c0F0dHJpYnV0ZSgpIHx8IGVsZW1lbnQoKS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGF1dG8gc3ZnUGFyZW50ID0gQWNjZXNzaWJp
bGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgICAgICBpZiAoYXV0byogc3ZnUGFyZW50ID0gYXg6
Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC5oYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSB8fCBvYmplY3QuaXNBY2Nl
c3NpYmlsaXR5U1ZHUm9vdCgpOwogICAgICAgICB9KSkKICAgICAgICAgICAgIHJldHVybiAhc3Zn
UGFyZW50LT5oYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAKaW5kZXggNTE3OGI5ZmE1M2QuLmVhZjkzNWViZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAt
MTk5LDcgKzE5OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHdlYkFyZWEgPSB3ZWJBcmVhT2JqZWN0KCk7CiAgICAgaWYgKCF3ZWJBcmVhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oCmluZGV4IDY2ZmY1OTQ3ZDZhLi5hODhjOWJmYWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtNTks
NyArNTksNyBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkQ2hpbGRyZW4o
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBvdmVycmlkZTsKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVl
ZHNUb1VwZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9
CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBiM2ZmMGE5NzUxMC4u
MzcyMWFmN2JjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRo
ZSB2YWx1ZSBpbmRpY2F0b3IgdG8gdGhlIGhpZXJhcmNoeSwKICAgICAvLyBhbGxvdyB0aGUgcGxh
dGZvcm0gdG8gbWFrZSBhIGZpbmFsIGRlY2lzaW9uIGFib3V0IGl0LgogICAgIGlmICh0aHVtYi5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIuYXhP
YmplY3RJRCgpKTsKKyAgICAgICAgY2FjaGUtPnJlbW92ZSh0aHVtYi5vYmplY3RJRCgpKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0aHVtYik7CiB9CkBAIC0xMDAsNyAr
MTAwLDcgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gaW5wdXRFbGVtZW50
KCktPmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3Np
YmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAogewogICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSkgewogICAgICAgICBB
U1NFUlQobV9jaGlsZHJlbi5zaXplKCkgPT0gMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCmluZGV4IDQ2OWQyMTcwMWJlLi5mMzUx
OTcxZmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBlbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTUsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
YWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICAKICAgICBib29sIGNhblNldFZhbHVlQXR0cmli
dXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0Owot
ICAgIAorICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGUpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1
dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmNwcAppbmRleCBjM2NjMDgyNmE5My4uMjI3YWVjYjEwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbigpCiAKIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjp+QWNjZXNzaWJpbGl0
eVNwaW5CdXR0b24oKSA9IGRlZmF1bHQ7CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0dG9uKCkKK0FjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlKiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0dG9uKCkKIHsKICAg
ICBpZiAoIW1faGF2ZUNoaWxkcmVuKQogICAgICAgICBhZGRDaGlsZHJlbigpOwpAQCAtNTUsNyAr
NTUsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5j
cmVtZW50QnV0dG9uKCkKICAgICByZXR1cm4gbV9jaGlsZHJlblswXS5nZXQoKTsKIH0KICAgIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmRlY3JlbWVudEJ1
dHRvbigpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246
OmRlY3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAg
YWRkQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAppbmRleCA2M2Q1ZjM3ZWVlZi4uMzBiMTdlZTE3ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTcGluQnV0dG9uLmgKQEAgLTM2LDkgKzM2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uKCk7CiAgICAgCiAgICAgdm9pZCBzZXRTcGluQnV0dG9uRWxl
bWVudChTcGluQnV0dG9uRWxlbWVudCogc3BpbkJ1dHRvbikgeyBtX3NwaW5CdXR0b25FbGVtZW50
ID0gc3BpbkJ1dHRvbjsgfQotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGluY3JlbWVu
dEJ1dHRvbigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlY3JlbWVudEJ1dHRvbigpOwor
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGluY3JlbWVudEJ1dHRvbigpOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkZWNyZW1lbnRCdXR0b24oKTsKIAogICAgIHZvaWQgc3Rl
cChpbnQgYW1vdW50KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBmNWJmNWIyZjYwZi4uNWJmMzk2NjU4MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29s
dW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnNDb3B5ID0gbV9jb2x1bW5zOwogICAgIAog
ICAgIGZvciAoY29uc3QgYXV0byYgY29sdW1uIDogY29sdW1uc0NvcHkpIHsKLSAgICAgICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbj4oKmNvbHVtbikuaGVhZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
PigqY29sdW1uKS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhl
YWRlcik7CiAgICAgfQogfQpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRh
YmxlOjpyb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHkgPSBtX3Jvd3M7CiAgICAgCiAg
ICAgZm9yIChjb25zdCBhdXRvJiByb3cgOiByb3dzQ29weSkgewotICAgICAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigq
cm93KS5oZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBoZWFkZXIgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpyb3cpLmhlYWRlck9i
amVjdCgpKQogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoaGVhZGVyKTsKICAgICB9CiB9CkBA
IC02MjIsNyArNjIyLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwKICAgICAgICAgLy8gY2Vs
bCB0byBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KICAgICAgICAgZm9yICh1bnNp
Z25lZCBjb2xJbmRleENvdW50ZXIgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hp
bGRyZW4uc2l6ZSgpKSwgY29sdW1uICsgMSk7IGNvbEluZGV4Q291bnRlciA+IDA7IC0tY29sSW5k
ZXhDb3VudGVyKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb2xJbmRleCA9IGNvbEluZGV4Q291
bnRlciAtIDE7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCA9IGNoaWxk
cmVuW2NvbEluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsKICAgICAgICAgICAgIEFTU0VSVChp
czxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpKTsKICAgICAgICAgICAgIGlmICghaXM8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNoaWxkKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuY3BwCmluZGV4IDliYmFkMTEyOTZlLi4xOTA1ZGJmY2U2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpy
b3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKIAogQWNjZXNz
aWJpbGl0eVRhYmxlUm93KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3coKSBjb25z
dAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVu
dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+KHBhcmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggM2NiN2YxNWEy
MTcuLjM2Nzk4MTU5MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIExh
eW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjplbGVtZW50UmVjdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbHVtblJlY3Q7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiB7CiAgICAgaWYgKCFt
X3BhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAppbmRleCA5ZmNk
YjVjZjM2ZS4uNjdlNzVmNTVmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApAQCAtNDAsOSArNDAsOSBAQCBj
bGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4gZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4o
KTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKLSAgICAg
ICAgCisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogaGVhZGVyT2JqZWN0KCk7CisKICAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRl
eChpbnQgY29sdW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKaW5kZXggYmI5ZDllMDRjNGQuLjY3NGZjMjgxZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKK0Fj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVj
dCgpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlUm93KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIwLDcgKzEyMCw3IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gY2hlY2sgdGhlIGZpcnN0IGVsZW1lbnQgaW4g
dGhlIHJvdyB0byBzZWUgaWYgaXQgaXMgYSBUSCBlbGVtZW50Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY2VsbCA9IHJvd0NoaWxkcmVuWzBdLmdldCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlKiBjZWxsID0gcm93Q2hpbGRyZW5bMF0uZ2V0KCk7CiAgICAgaWYgKCFpczxBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsPigqY2VsbCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApA
QCAtMTQ0LDcgKzE0NCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdzo6aGVhZGVyT2JqZWN0KCkKICAgICBpZiAoYWxsSGVhZGVyc0luUm93KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1cm4gY2VsbDsKKyAgICByZXR1cm4gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oY2VsbCk7CiB9CiAgICAgCiB2b2lkIEFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6YWRkQ2hpbGRyZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggOTg4ZTI0NTkyMTMuLmRj
YTIyMzhkM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkFjY2Vzc2liaWxpdHlUYWJsZVJvdygpOwogCiAgICAgLy8gcmV0cmlldmVzIHRoZSAicm93
IiBoZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1uKQotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSogaGVhZGVyT2JqZWN0KCk7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBzZXRSb3dJbmRl
eChpbnQgcm93SW5kZXgpIHsgbV9yb3dJbmRleCA9IHJvd0luZGV4OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCA2
ODdmMWFlZGY3OC4uN2NmMGIwNjlkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtMzYsMTkgKzM2LDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLXZvaWQgQVhPYmplY3RDYWNoZTo6ZGV0YWNoV3Jh
cHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZSkKK0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFw
cGVyKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QsIEFjY2Vzc2liaWxpdHlEZXRhY2ht
ZW50VHlwZSkKIHsKLSAgICBbb2JqLT53cmFwcGVyKCkgZGV0YWNoXTsKLSAgICBvYmotPnNldFdy
YXBwZXIobnVsbHB0cik7CisgICAgYXV0byB3cmFwcGVyID0gb2JqZWN0LndyYXBwZXIoKTsKKyAg
ICBbd3JhcHBlciBkZXRhY2hdOworICAgIG9iamVjdC5zZXRXcmFwcGVyKG51bGxwdHIpOworICAg
IHJldHVybiB3cmFwcGVyOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIo
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQordm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFw
cGVyKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpCiB7Ci0gICAgUmV0YWluUHRyPEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiB3cmFwcGVyID0gYWRvcHROUyhbW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFsbG9jXSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6b2Jq
XSk7Ci0gICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOworICAgIFJldGFpblB0cjxX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4gd3JhcHBlciA9IGFkb3B0TlMoW1tXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhbGxvY10gaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0
OiZvYmplY3RdKTsKKyAgICBvYmplY3Quc2V0V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAot
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSog
b2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKCFvYmopCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmluZGV4IDRkZTM5MjQwMmM5Li43NWQ5YmU0
NzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNz
aWJpbGl0eU9iamVjdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVy
cmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCopCit2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSopCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaApp
bmRleCBiNjY3MTdkMTZkMC4uOTc4MjhhMjVmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZ
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCi0j
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UuaCIKICNpbXBvcnQgIldBS1ZpZXcuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBiY2NmMzdlNGY0Yi4uMDJlMGUzNzZlY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMjMsMTQgKzEy
MywxNCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29u
dGV4dFNvdXJjZUNvZGUgPSBAIlVJQWNjZXNzaWJpbAogc3RhdGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgKndyYXBwZXIpCiB7CiAgICAgd2hpbGUgKHdyYXBwZXIgJiYgIVt3cmFwcGVy
IGlzQWNjZXNzaWJpbGl0eUVsZW1lbnRdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCA9IFt3cmFwcGVyIGFjY2Vzc2liaWxpdHlPYmplY3RdOworICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSogb2JqZWN0ID0gW3dyYXBwZXIgYWNjZXNzaWJpbGl0eU9iamVjdF07
CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAg
ICAgICBpZiAoW3dyYXBwZXIgaXNBdHRhY2htZW50XSAmJiAhW1t3cmFwcGVyIGF0dGFjaG1lbnRW
aWV3XSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IG9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAg
ICAgICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTE3OSw3
ICsxNzksNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxp
dHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogLy8gVGhpcyBpcyBuZWVkZWQgZm9y
IGV4dGVybmFsIGNsaWVudHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgYSB0ZXh0IG1hcmtlciB3aXRo
b3V0IGhhdmluZyBhIHBvaW50ZXIgdG8gdGhlIGNhY2hlLgogLSAoaWQpaW5pdFdpdGhEYXRhOihO
U0RhdGEgKilkYXRhIGFjY2Vzc2liaWxpdHlPYmplY3Q6KEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyICopd3JhcHBlcgogewotICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0ID0gW3dyYXBwZXIgYWNjZXNzaWJpbGl0eU9iamVjdF07IAorICAgIFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3RCYXNlKiBheE9iamVjdCA9IFt3cmFwcGVyIGFjY2Vzc2liaWxpdHlPYmpl
Y3RdOwogICAgIGlmICghYXhPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCkBAIC0y
NTcsNyArMjU3LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3Np
YmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJpbGl0eU8KIAogQGltcGxlbWVudGF0aW9u
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyCiAKLS0gKGlkKWluaXRXaXRoQWNjZXNzaWJp
bGl0eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmplY3QKKy0gKGlkKWluaXRXaXRo
QWNjZXNzaWJpbGl0eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqKWF4T2JqZWN0CiB7
CiAgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6YXhPYmplY3Rd
OwogICAgIGlmICghc2VsZikKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmls
aXR5TwogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIC8vIFRyeSBhIGZ1enp5IGhpdCB0
ZXN0IGZpcnN0IHRvIGZpbmQgYW4gYWNjZXNzaWJsZSBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UgKmF4T2JqZWN0ID0gbnVsbHB0cjsKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSAqYXhPYmplY3QgPSBudWxscHRyOwogICAgIHsKICAgICAgICAgQVhBdHRyaWJ1
dGVDYWNoZUVuYWJsZXIgZW5hYmxlQ2FjaGUobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSk7CiAg
ICAgICAgIGF4T2JqZWN0ID0gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50
KHBvaW50KSk7CkBAIC01NTAsMzEgKzU1MCwzMSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5Twog
CiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlUcmVlQW5jZXN0
b3IKIHsKLSAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpIHsKKyAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSYgb2JqZWN0KSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBv
YmplY3Qucm9sZVZhbHVlKCk7CiAgICAgICAgIHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlOwogICAgIH07Ci0gICAgCi0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0
LCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKKworICAgIGlmIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogcGFyZW50ID0gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZT4oKm1fb2JqZWN0LCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKICAgICAg
ICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwogICAgIHJldHVybiBuaWw7CiB9CiAKIC0gKEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilfYWNjZXNzaWJpbGl0eUxpc3RBbmNlc3Rvcgogewot
ICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgeworICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlJiBvYmplY3QpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG9iamVjdC5y
b2xlVmFsdWUoKTsKICAgICAgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3QgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsKICAgICB9OwotICAgIAot
ICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5j
KSkpCisKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4
OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCptX29iamVjdCwgZmFs
c2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIo
KTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciop
X2FjY2Vzc2liaWxpdHlBcnRpY2xlQW5jZXN0b3IKIHsKLSAgICBpZiAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgq
bV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7
CisgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBheDo6bWF0
Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlPigqbV9vYmplY3QsIGZhbHNlLCBb
XSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmIG9iamVjdCkgewogICAgICAgICByZXR1
cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGlj
bGU7CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKQEAgLTU4Myw3
ICs1ODMsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxp
dHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogCiAtIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlMYW5kbWFya0FuY2VzdG9yCiB7Ci0gICAgaWYgKGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgW3NlbGZdIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Uq
IHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCpt
X29iamVjdCwgZmFsc2UsIFtzZWxmXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmIG9i
amVjdCkgewogICAgICAgICByZXR1cm4gW3NlbGYgX2FjY2Vzc2liaWxpdHlJc0xhbmRtYXJrUm9s
ZTpvYmplY3Qucm9sZVZhbHVlKCldOwogICAgIH0pKQogICAgICAgICByZXR1cm4gcGFyZW50LT53
cmFwcGVyKCk7CkBAIC01OTIsNyArNTkyLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJpbGl0eU8KIAog
LSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYmlsaXR5VGFibGVBbmNlc3Rv
cgogewotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9i
amVjdEJhc2U+KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYmxlOwogICAgIH0pKQogICAgICAgICByZXR1cm4gcGFyZW50LT53
cmFwcGVyKCk7CkBAIC02MDEsMTQgKzYwMSwxNCBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5Twog
CiAtIChCT09MKV9hY2Nlc3NpYmlsaXR5SXNJblRhYmxlQ2VsbAogewotICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gYXg6Om1hdGNoZWRB
bmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZT4oKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9i
amVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDsKICAgICB9KSAhPSBu
dWxscHRyOwogfQogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxp
dHlGaWVsZHNldEFuY2VzdG9yCiB7Ci0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBm
YWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIGlmIChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gYXg6Om1hdGNoZWRBbmNlc3Rv
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZT4oKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5p
c0ZpZWxkc2V0KCk7CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsK
QEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFj
Y2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogCiAtIChBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlGcmFtZUFuY2VzdG9yCiB7Ci0gICAg
YXV0byogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmpl
Y3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAg
YXV0byogcGFyZW50ID0gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZT4oKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBv
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5pc1dlYkFyZWEoKTsKICAgICB9KTsKICAg
ICBpZiAoIXBhcmVudCkKQEAgLTYzMiw3ICs2MzIsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5
TwogICAgIAogICAgIC8vIFRyYWl0IGluZm9ybWF0aW9uIGFsc28gbmVlZHMgdG8gYmUgZ2F0aGVy
ZWQgZnJvbSB0aGUgcGFyZW50cyBhYm92ZSB0aGUgb2JqZWN0LgogICAgIC8vIFRoZSBwYXJlbnRP
YmplY3QgaXMgbmVlZGVkIGluc3RlYWQgb2YgdGhlIHVuaWdub3JlZFBhcmVudE9iamVjdCwgYmVj
YXVzZSBhIHRhYmxlIG1pZ2h0IGJlIGlnbm9yZWQsIGJ1dCBpbmZvcm1hdGlvbiBzdGlsbCBuZWVk
cyB0byBiZSBnYXRoZXJlZCBmcm9tIGl0LiAgICAKLSAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50ICE9IG5pbDsgcGFy
ZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgIGZvciAoYXV0byogcGFyZW50ID0g
bV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQgIT0gbmlsOyBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudFJvbGUg
PSBwYXJlbnQtPnJvbGVWYWx1ZSgpOwogICAgICAgICBpZiAocGFyZW50Um9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6V2ViQXJlYSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE4Miw5ICsxMTgy
LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpy
ZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAtIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKil0YWJs
ZUNlbGxQYXJlbnQKIHsKICAgICAvLyBGaW5kIGlmIHRoaXMgZWxlbWVudCBpcyBpbiBhIHRhYmxl
IGNlbGwuCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IGNvbnN0X2Nhc3Q8
QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQo
Km1fb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7
CisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBheDo6bWF0Y2hlZEFu
Y2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlPigqbV9vYmplY3QsIHRydWUsIFtdIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmpl
Y3QuaXNUYWJsZUNlbGwoKTsKLSAgICB9KSkpCisgICAgfSkpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4ocGFyZW50KTsKICAgICByZXR1cm4gbmls
OwogfQpAQCAtMTE5Miw5ICsxMTkyLDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1
bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAtIChBY2Nlc3Np
YmlsaXR5VGFibGUqKXRhYmxlUGFyZW50CiB7CiAgICAgLy8gRmluZCBpZiB0aGUgcGFyZW50IHRh
YmxlIGZvciB0aGUgdGFibGUgY2VsbC4KLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50ID0gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVj
dDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVu
dCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCptX29iamVj
dCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4ob2JqZWN0KSAmJiBkb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGU+KG9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0
eSgpOwotICAgIH0pKSkKKyAgICB9KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZSo+KHBhcmVudCk7CiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTEyMDQsNyAr
MTIwNCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmlu
ZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nl
c3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiB0aXRsZUVsZW1lbnQgPSBtX29iamVjdC0+dGl0bGVVSUVsZW1lbnQoKTsKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogdGl0bGVFbGVtZW50ID0gbV9vYmplY3QtPnRpdGxlVUlF
bGVtZW50KCk7CiAgICAgaWYgKHRpdGxlRWxlbWVudCkKICAgICAgICAgcmV0dXJuIHRpdGxlRWxl
bWVudC0+d3JhcHBlcigpOwogCkBAIC0xMjQwLDcgKzEyNDAsNyBAQCBzdGF0aWMgdm9pZCBhcHBl
bmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmlu
ZykKICAgICAKICAgICB1bnNpZ25lZCBjb2x1bW5SYW5nZUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNvbHVtblJhbmdlLmZpcnN0KTsKICAgICBpZiAoY29sdW1uUmFuZ2VJbmRleCA8IGNv
bHVtbkhlYWRlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBjb2x1bW5IZWFkZXIgPSBjb2x1bW5IZWFkZXJzW2NvbHVtblJhbmdlLmZpcnN0XTsKKyAgICAg
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlPiBjb2x1bW5IZWFkZXIgPSBjb2x1bW5I
ZWFkZXJzW2NvbHVtblJhbmdlLmZpcnN0XTsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIqIHdyYXBwZXIgPSBjb2x1bW5IZWFkZXItPndyYXBwZXIoKTsKICAgICAgICAgaWYgKHdy
YXBwZXIpCiAgICAgICAgICAgICBbaGVhZGVycyBhZGRPYmplY3Q6d3JhcHBlcl07CkBAIC0xMzk3
LDggKzEzOTcsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVT
dHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykKIHsKICAgICBpZiAoIVtzZWxmIF9wcmVw
YXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlm
IChhdXRvIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2Jq
ZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVy
biBvYmplY3Quc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpOyB9KSkKKworICAgIGlmIChhdXRv
KiBwYXJlbnQgPSBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlPigq
bV9vYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0
KSB7IHJldHVybiBvYmplY3Quc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpOyB9KSkKICAgICAg
ICAgcmV0dXJuIHBhcmVudC0+ZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpOwogCiAgICAgcmV0dXJu
IG5pbDsKQEAgLTE2NjQsNyArMTY2NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVz
dWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIEFYQXR0
cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkp
OwogICAgIAogICAgIC8vIEFzIGxvbmcgYXMgdGhlcmUncyBhIHBhcmVudCB3cmFwcGVyLCB0aGF0
J3MgdGhlIGNvcnJlY3QgY2hhaW4gdG8gY2xpbWIuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOyAKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOwogICAgIGlmIChwYXJlbnQpCiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsK
IApAQCAtMTgwMCw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQo
TlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICAvLyBJZiB0aGlzIHN0YXRpYyB0ZXh0IGluc2lkZSBvZiBhIGxpbmssIGl0
IHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIGxpbmtlZCBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGVsZW1lbnQgPSBtX29iamVjdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogZWxlbWVudCA9IG1fb2JqZWN0OwogICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgbV9vYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpLT5pc0xpbmsoKSkKICAgICAgICAgZWxlbWVudCA9IG1fb2JqZWN0LT5wYXJlbnRP
YmplY3RVbmlnbm9yZWQoKTsKIApAQCAtMTk2NywzNCArMTk2NywzNCBAQCBzdGF0aWMgUmVuZGVy
T2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykKICAgICByZXR1cm4gbV9vYmpl
Y3QtPnNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpOwogfQogCi0tIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KilkZXRhaWxQYXJlbnRGb3JTdW1tYXJ5T2JqZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0Kilv
YmplY3QKKy0gKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilkZXRhaWxQYXJlbnRGb3JTdW1tYXJ5
T2JqZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopb2JqZWN0CiB7CiAgICAgLy8gVXNlIHRo
aXMgdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIHRoZSBjaGlsZCBvZiBhIHN1bW1hcnkgb2JqZWN0
LgogICAgIC8vIEFuZCByZXR1cm4gdGhlIHN1bW1hcnkncyBwYXJlbnQsIHdoaWNoIGlzIHRoZSBl
eHBhbmRhYmxlIGRldGFpbHMgb2JqZWN0LgotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBzdW1tYXJ5ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqb2JqZWN0
LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgaWYg
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzdW1tYXJ5ID0gYXg6Om1hdGNoZWRBbmNl
c3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZT4oKm9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5o
YXNUYWdOYW1lKHN1bW1hcnlUYWcpOwogICAgIH0pKQogICAgICAgICByZXR1cm4gc3VtbWFyeS0+
cGFyZW50T2JqZWN0KCk7CiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAoQWNjZXNzaWJpbGl0eU9i
amVjdCopZGV0YWlsUGFyZW50Rm9yT2JqZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0KilvYmplY3QK
Ky0gKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilkZXRhaWxQYXJlbnRGb3JPYmplY3Q6KEFjY2Vz
c2liaWxpdHlPYmplY3QqKW9iamVjdAogewogICAgIC8vIFVzZSB0aGlzIHRvIGNoZWNrIGlmIGFu
IG9iamVjdCBpcyBpbnNpZGUgYSBkZXRhaWxzIG9iamVjdC4KLSAgICBpZiAoY29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCogZGV0YWlscyA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJl
bnQoKm9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkg
eworICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogZGV0YWlscyA9IGF4OjptYXRjaGVk
QW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCpvYmplY3QsIHRydWUsIFtdIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmpl
Y3QuaGFzVGFnTmFtZShkZXRhaWxzVGFnKTsKICAgICB9KSkKLSAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KGRldGFpbHMpOworICAgICAgICByZXR1cm4gZGV0
YWlsczsKICAgICByZXR1cm4gbmlsOwogfQogCi0tIChBY2Nlc3NpYmlsaXR5T2JqZWN0Kil0cmVl
SXRlbVBhcmVudEZvck9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCopb2JqZWN0CistIChBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSopdHJlZUl0ZW1QYXJlbnRGb3JPYmplY3Q6KEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKilvYmplY3QKIHsKICAgICAvLyBVc2UgdGhpcyB0byBjaGVjayBpZiBhbiBv
YmplY3QgaXMgaW5zaWRlIGEgdHJlZWl0ZW0gb2JqZWN0LgotICAgIGlmIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50
KCpvYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsK
KyAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4OjptYXRjaGVkQW5j
ZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCpvYmplY3QsIHRydWUsIFtdIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qu
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOwogICAgIH0pKQotICAg
ICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4ocGFyZW50KTsKKyAg
ICAgICAgcmV0dXJuIHBhcmVudDsKICAgICByZXR1cm4gbmlsOwogfQogCkBAIC0yMjA1LDExICsy
MjA1LDExIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAKICAgICAvLyBBZGQgY29kZSBjb250
ZXh0IGlmIHRoaXMgbm9kZSBpcyB3aXRoaW4gYSA8Y29kZT4gYmxvY2suCiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogYXhPYmplY3QgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKLSAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBhdXRvIG1hdGNoRnVuYyA9IFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVy
biBvYmplY3Qubm9kZSgpICYmIG9iamVjdC5ub2RlKCktPmhhc1RhZ05hbWUoY29kZVRhZyk7CiAg
ICAgfTsKLSAgICAKLSAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqYXhPYmplY3QsIHRydWUsIFdURk1v
dmUobWF0Y2hGdW5jKSkpCisKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Uq
IHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCph
eE9iamVjdCwgdHJ1ZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKICAgICAgICAgW2F0dHJTdHJpbmcg
YWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IHZhbHVlOlVJ
QWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSByYW5nZTpyYW5nZV07CiB9CiAK
QEAgLTIyODAsNyArMjI4MCw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVu
ZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKICAgICAgICAgICAg
ICAgICBpZiAoW3NlbGYgX2FkZEFjY2Vzc2liaWxpdHlPYmplY3Q6aGVhZGluZ09iamVjdCB0b1Rl
eHRNYXJrZXJBcnJheTphcnJheV0pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IG1f
b2JqZWN0LT5saXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwgVmlzaWJsZVBv
c2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKSkpOworICAgICAgICAgICAgICAgIFN0
cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0
Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+c3Rh
cnRQb3NpdGlvbigpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFs
aXN0TWFya2VyVGV4dC5pc0VtcHR5KCkpIAogICAgICAgICAgICAgICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0Omxpc3RNYXJrZXJUZXh0XTsKQEAgLTIyODksNyArMjI4OSw3IEBAIHN0YXRpYyB2b2lk
IEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyog
YXR0clN0cmluZywKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBtX29iamVjdC0+bGlz
dE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlvbihpdC5y
YW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1h
cmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQ
b3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24o
KSkpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFsaXN0TWFya2VyVGV4dC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmlu
ZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07CkBAIC0yOTM5LDEw
ICsyOTM5LDEwIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKICAgICAKICAgICAvLyBTaW5jZSBk
ZXRhaWxzIGVsZW1lbnQgaXMgaWdub3JlZCBvbiBpT1MsIHdlIHNob3VsZCBleHBvc2UgdGhlIGV4
cGFuZGVkIHN0YXR1cyBvbiBpdHMKICAgICAvLyBzdW1tYXJ5J3MgYWNjZXNzaWJsZSBjaGlsZHJl
bi4KLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogZGV0YWlsUGFyZW50ID0gW3NlbGYgZGV0
YWlsUGFyZW50Rm9yU3VtbWFyeU9iamVjdDptX29iamVjdF0pCisgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBkZXRhaWxQYXJlbnQgPSBbc2VsZiBkZXRhaWxQYXJlbnRGb3JTdW1tYXJ5
T2JqZWN0Om1fb2JqZWN0XSkKICAgICAgICAgcmV0dXJuIGRldGFpbFBhcmVudC0+c3VwcG9ydHNF
eHBhbmRlZCgpOwotICAgIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0cmVlSXRlbVBh
cmVudCA9IFtzZWxmIHRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0Om1fb2JqZWN0XSkKKworICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogdHJlZUl0ZW1QYXJlbnQgPSBbc2VsZiB0cmVlSXRl
bVBhcmVudEZvck9iamVjdDptX29iamVjdF0pCiAgICAgICAgIHJldHVybiB0cmVlSXRlbVBhcmVu
dC0+c3VwcG9ydHNFeHBhbmRlZCgpOwogICAgIAogICAgIHJldHVybiBtX29iamVjdC0+c3VwcG9y
dHNFeHBhbmRlZCgpOwpAQCAtMjk1NSwxMCArMjk1NSwxMCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJp
bmcsCiAKICAgICAvLyBTaW5jZSBkZXRhaWxzIGVsZW1lbnQgaXMgaWdub3JlZCBvbiBpT1MsIHdl
IHNob3VsZCBleHBvc2UgdGhlIGV4cGFuZGVkIHN0YXR1cyBvbiBpdHMKICAgICAvLyBzdW1tYXJ5
J3MgYWNjZXNzaWJsZSBjaGlsZHJlbi4KLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogZGV0
YWlsUGFyZW50ID0gW3NlbGYgZGV0YWlsUGFyZW50Rm9yU3VtbWFyeU9iamVjdDptX29iamVjdF0p
CisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkZXRhaWxQYXJlbnQgPSBbc2VsZiBk
ZXRhaWxQYXJlbnRGb3JTdW1tYXJ5T2JqZWN0Om1fb2JqZWN0XSkKICAgICAgICAgcmV0dXJuIGRl
dGFpbFBhcmVudC0+aXNFeHBhbmRlZCgpOwotICAgIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiB0cmVlSXRlbVBhcmVudCA9IFtzZWxmIHRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0Om1fb2Jq
ZWN0XSkKKworICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogdHJlZUl0ZW1QYXJlbnQg
PSBbc2VsZiB0cmVlSXRlbVBhcmVudEZvck9iamVjdDptX29iamVjdF0pCiAgICAgICAgIHJldHVy
biB0cmVlSXRlbVBhcmVudC0+aXNFeHBhbmRlZCgpOwogICAgIAogICAgIHJldHVybiBtX29iamVj
dC0+aXNFeHBhbmRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDU4NmFkZjA2NzJm
Li5jZmY5NzA3ZTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMTE0LDEwICsxMTQs
MTEgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlTm9kZT4gQVhJc29sYXRlZFRyZWU6OnJvb3ROb2Rl
KCkKICAgICByZXR1cm4gbm9kZUZvcklEKG1fcm9vdE5vZGVJRCk7CiB9CiAKLXZvaWQgQVhJc29s
YXRlZFRyZWU6OnNldFJvb3ROb2RlSUQoQVhJRCBheElEKQordm9pZCBBWElzb2xhdGVkVHJlZTo6
c2V0Um9vdChSZWY8QVhJc29sYXRlZFRyZWVOb2RlPiYgcm9vdCkKIHsKICAgICBMb2NrSG9sZGVy
IGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwotICAgIG1fcGVuZGluZ1Jvb3ROb2RlSUQgPSBh
eElEOworICAgIG1fcm9vdE5vZGVJRCA9IHJvb3QtPm9iamVjdElEKCk7CisgICAgbV9yZWFkZXJU
aHJlYWROb2RlTWFwLmFkZChyb290LT5vYmplY3RJRCgpLCBXVEZNb3ZlKHJvb3QpKTsKIH0KICAg
ICAKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWROb2RlSUQoQVhJRCBheElEKQpAQCAt
MTUwLDExICsxNTEsMTAgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdl
cygpCiAKICAgICAvLyBXZSBkb24ndCBjbGVhciB0aGUgcGVuZGluZyBJRHMgYmVhY2F1c2UgaWYg
dGhlIG5leHQgcm91bmQgb2YgdXBkYXRlcyBkb2VzIG5vdCBtb2RpZnkgdGhlbSwgdGhlbiB0aGV5
IHN0YXkgdGhlIHNhbWUKICAgICAvLyB2YWx1ZSB3aXRob3V0IGV4dHJhIGJvb2trZWVwaW5nLgot
ICAgIG1fcm9vdE5vZGVJRCA9IG1fcGVuZGluZ1Jvb3ROb2RlSUQ7CiAgICAgbV9mb2N1c2VkTm9k
ZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsKLSAgICAKKwogICAgIGZvciAoYXV0byYgaXRl
bSA6IGFwcGVuZENvcHkpCi0gICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoaXRlbS0+
aWRlbnRpZmllcigpLCBXVEZNb3ZlKGl0ZW0pKTsKKyAgICAgICAgbV9yZWFkZXJUaHJlYWROb2Rl
TWFwLmFkZChpdGVtLT5vYmplY3RJRCgpLCBXVEZNb3ZlKGl0ZW0pKTsKIAogICAgIGZvciAoYXV0
byBpdGVtIDogcmVtb3ZlQ29weSkKICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLnJlbW92
ZShpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDZhYmQ3ODNjMTEyLi5kYWYzM2ZjMGQ3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFwcGVuZE5vZGVDaGFuZ2VzKFZlY3RvcjxSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4mKTsK
ICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAKLSAgICB2b2lkIHNldFJvb3ROb2RlSUQoQVhJ
RCk7CisgICAgdm9pZCBzZXRSb290KFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+Jik7CiAgICAgdm9p
ZCBzZXRGb2N1c2VkTm9kZUlEKEFYSUQpOwogICAgIAogICAgIC8vIENhbGwgb24gQVggdGhyZWFk
CkBAIC03OCw3ICs3OCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxBWElzb2xhdGVkVHJl
ZU5vZGU+PiBtX3BlbmRpbmdBcHBlbmRzOwogICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdSZW1v
dmFsczsKICAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQ7Ci0gICAgQVhJRCBtX3BlbmRp
bmdSb290Tm9kZUlEOwogICAgIExvY2sgbV9jaGFuZ2VMb2dMb2NrOwogCiAgICAgQVhJc29sYXRl
ZFRyZWVJRCBtX3RyZWVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IGQ4
ZGJiOWYyYzk3Li4yNTU1ZmViMWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3Bw
CkBAIC0zMCwxMCArMzAsMTIgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIK
IAorZXh0ZXJuICJDIiBib29sIF9BWFVJRWxlbWVudFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5
QVhUaHJlYWQodm9pZCk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQVhJc29sYXRlZFRyZWVO
b2RlOjpBWElzb2xhdGVkVHJlZU5vZGUoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
KQotICAgIDogbV9pZGVudGlmaWVyKG9iamVjdC5heE9iamVjdElEKCkpCitBWElzb2xhdGVkVHJl
ZU5vZGU6OkFYSXNvbGF0ZWRUcmVlTm9kZShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYg
b2JqZWN0KQorICAgIDogbV9pZChvYmplY3Qub2JqZWN0SUQoKSkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKG9iamVjdCk7CkBAIC00
MiwxNCArNDQsMTQgQEAgQVhJc29sYXRlZFRyZWVOb2RlOjpBWElzb2xhdGVkVHJlZU5vZGUoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogI2VuZGlmCiB9CiAKLVJlZjxBWElzb2xh
dGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVlTm9kZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QmIG9iamVjdCkKK1JlZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVl
Tm9kZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWVOb2RlKG9iamVjdCkpOwogfQog
CiBBWElzb2xhdGVkVHJlZU5vZGU6On5BWElzb2xhdGVkVHJlZU5vZGUoKSA9IGRlZmF1bHQ7CiAK
LXZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjppbml0aWFsaXplQXR0cmlidXRlRGF0YShjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit2b2lkIEFYSXNvbGF0ZWRUcmVlTm9kZTo6aW5p
dGlhbGl6ZUF0dHJpYnV0ZURhdGEoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmIG9iamVj
dCkKIHsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um9sZVZhbHVlLCBzdGF0aWNf
Y2FzdDxpbnQ+KG9iamVjdC5yb2xlVmFsdWUoKSkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc0F0dGFjaG1lbnQsIG9iamVjdC5pc0F0dGFjaG1lbnQoKSk7CkBAIC04Miw3ICs4
NCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlCiB2b2lkIEFYSXNvbGF0ZWRUcmVlTm9kZTo6
YXBwZW5kQ2hpbGQoQVhJRCBheElEKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhJRCk7CisgICAgbV9jaGlsZHJlbklEcy5hcHBlbmQoYXhJ
RCk7CiB9CiAKIHZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjpzZXRQYXJlbnQoQVhJRCBwYXJlbnQp
CkBAIC05OCwyMyArMTAwLDM1IEBAIHZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRl
bnRpZmllcihBWElzb2xhdGVkVHJlZUlEIHRyZWVJZGVudGlmaWVyKQogICAgICAgICBtX2NhY2hl
ZFRyZWUgPSB0cmVlOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xh
dGVkVHJlZU5vZGU6OmZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdAorY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2U6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgQVhJc29sYXRlZFRyZWVO
b2RlOjpjaGlsZHJlbihib29sKQoreworICAgIGlmIChfQVhVSUVsZW1lbnRSZXF1ZXN0U2Vydmlj
ZWRCeVNlY29uZGFyeUFYVGhyZWFkKCkpIHsKKyAgICAgICAgbV9jaGlsZHJlbi5jbGVhcigpOwor
ICAgICAgICBtX2NoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jaGlsZHJlbklEcy5z
aXplKCkpOworICAgICAgICBhdXRvIHRyZWUgPSB0aGlzLT50cmVlKCk7CisgICAgICAgIGZvciAo
YXV0byBjaGlsZElEIDogbV9jaGlsZHJlbklEcykKKyAgICAgICAgICAgIG1fY2hpbGRyZW4udW5j
aGVja2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZElEKSk7CisgICAgfQorICAgIHJldHVy
biBtX2NoaWxkcmVuOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQVhJc29sYXRlZFRy
ZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2Vk
RWxlbWVudCA9IHRyZWUoKS0+Zm9jdXNlZFVJRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZm9j
dXNlZEVsZW1lbnQuZ2V0KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdElu
dGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0CitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQVhJc29s
YXRlZFRyZWVOb2RlOjpwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdAogewogICAgIHJldHVy
biB0cmVlKCktPm5vZGVGb3JJRChwYXJlbnQoKSkuZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFY
SXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAogewogICAgIGlmICghcmVsYXRpdmVGcmFtZSgpLmNvbnRhaW5zKHBvaW50KSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgZm9yIChhdXRvIGNoaWxkSUQgOiBjaGlsZHJl
bigpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZElEIDogbV9jaGlsZHJlbklEcykgewog
ICAgICAgICBhdXRvIGNoaWxkID0gdHJlZSgpLT5ub2RlRm9ySUQoY2hpbGRJRCk7CiAgICAgICAg
IEFTU0VSVChjaGlsZCk7CiAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC0+cmVsYXRpdmVGcmFt
ZSgpLmNvbnRhaW5zKHBvaW50KSkKQEAgLTE4Niw2ICsyMDAsMTUgQEAgaW50IEFYSXNvbGF0ZWRU
cmVlTm9kZTo6aW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBj
b25zdAogICAgICk7CiB9CiAKK3ZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjp1cGRhdGVCYWNraW5n
U3RvcmUoKQoreworICAgIGlmIChfQVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNlY29uZGFy
eUFYVGhyZWFkKCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgaWYgKGF1dG8gdHJlZSA9IHRoaXMtPnRyZWUoKSkKKyAgICAgICAgICAgIHRyZWUt
PmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRSgoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZU5vZGUuaAppbmRleCA5MzRkNjNmNGE5YS4uYzY5Y2FhZGMzYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC00MywxMSArNDQsNTk3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFY
SXNvbGF0ZWRUcmVlOwotY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKLQotY2xhc3MgQVhJc29s
YXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Us
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZU5vZGU+IHsKIAorY2xh
c3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlTm9kZT4gY3JlYXRl
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJik7CisgICAgfkFYSXNvbGF0ZWRUcmVlTm9k
ZSgpOworCisgICAgdm9pZCBzZXRPYmplY3RJRChBWElEIGlkKSBvdmVycmlkZSB7IG1faWQgPSBp
ZDsgfQorICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9
CisgICAgdm9pZCBpbml0KCkgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIGRldGFjaChBY2Nlc3Np
YmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0Q2FjaGUqID0gbnVsbHB0cikgb3ZlcnJpZGUg
eyB9CisgICAgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKworICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGNvbnRh
aW5zVGV4dChTdHJpbmcgKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMaW5rKTsgfQorICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNJ
bWFnZSk7IH0KKyAgICBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0ltYWdlQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBdHRhY2htZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc0F0dGFjaG1lbnQpOyB9CisgICAgYm9vbCBpc01lZGlhVGltZWxpbmUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51QmFyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGaWxl
VXBsb2FkQnV0dG9uKTsgfQorICAgIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0lucHV0U2xpZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xhYmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRGF0YVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGVSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW1hZ2VNYXBMaW5r
KTsgfQorICAgIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNb2NrT2JqZWN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVkaWFDb250cm9sTGFiZWwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzTWVkaWFDb250cm9sTGFiZWwpOyB9CisgICAgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3dpdGNoKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGV4dENvbnRyb2woKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBVGV4dENvbnRy
b2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNOb25OYXRp
dmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc1RhYkxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
UmFkaW9Hcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0NvbWJvQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
VHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNUcmVlKTsgfQorICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWVJdGVtKTsg
fQorICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2Nyb2xsYmFyKTsgfQorICAgIGJvb2wgaXNC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMaXN0
SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NoZWNr
Ym94T3JSYWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c1Njcm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQ
b3BVcEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0NvbG9yV2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c1JhbmdlQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
U3BsaXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNU
b29sYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3R5
bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
CisgICAgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFpc09uU2NyZWVu
KCk7IH0KKyAgICBib29sIGlzUHJlc3NlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc1VudmlzaXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlua2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzQ29sbGFwc2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAg
RmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpOyB9CisgICAgRmxvYXRS
ZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNv
bnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKwor
ICAgIGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICBib29sIGhhc0JvbGRGb250KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIFJlZlB0cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShS
ZWZQdHI8UmFuZ2U+IGNvbnN0JiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc1NhbWVGb250KFJlbmRl
ck9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNT
YW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3RhdGljVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgY29uc3QgQXRvbVN0
cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxBdG9tKCk7IH0KKworICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRWYWx1
ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBj
YW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBFbGVtZW50KiBl
bGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIE5vZGUqIG5v
ZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBY2Nlc3NpYmlsaXR5SWdub3JlZCk7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpE
ZWZhdWx0QmVoYXZpb3I7IH0KKyAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1
bHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBpc1Nob3dp
bmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKworICAgIHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQorICAgIGludCB0YWJsZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MDsgfQorICAgIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBjaGVja2JveE9yUmFkaW9WYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOyB9
CisgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CisgICAgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKyAgICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQorICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzZWxlY3RlZFJh
ZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVjdGVkTGlzdEl0ZW0oKSBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgaW50IGxheW91dENvdW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisKKyAgICBib29sIHN1cHBvcnRzQVJJQU93
bnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY3RpdmVE
ZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisKKyAg
ICBib29sIGhhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBT
dHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmls
aXR5U29ydERpcmVjdGlvbjo6Tm9uZTsgfQorICAgIGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRz
UmFuZ2VWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxBdG9tKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBsaW5rUmVsVmFsdWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAgdm9pZCBjbGFzc0xpc3QoVmVj
dG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBTdHJpbmcgcm9sZURlc2NyaXB0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBBY2Nlc3NpYmls
aXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlDdXJyZW50U3RhdGU6OkZhbHNlOyB9CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBzdXBwb3J0
c0N1cnJlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGNvbnN0IFN0
cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBi
ZSBpZ25vcmVkIHdoZW4gdGhlcmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCisgICAgYm9v
bCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01vZGFsTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIHN1cHBvcnRzU2V0U2l6ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBpbnQgc2V0U2l6ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgcG9zSW5TZXQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CisKKyAgICBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVJJQUdyYWJiZWQoKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkg
b3ZlcnJpZGUgeyB9CisgICAgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3Rz
KCkgb3ZlcnJpZGUgeyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQorCisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGVsZW1lbnRBY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBmb2N1c2VkVUlFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogZmlyc3RD
aGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwcmV2aW91c1NpYmxpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIG5leHRTaWJsaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogcHJldmlvdXNTaWJsaW5nVW5pZ25vcmVkKGludCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnRPYmplY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3Zl
cnJpZGUgeyB9CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZlJvbGUoQWNj
ZXNzaWJpbGl0eVJvbGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBW
ZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmluZFRleHRSYW5nZXMoQWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZlY3RvcjxSZWZQdHI8
UmFuZ2U+PigpOyB9CisgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNj
ZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3QmKSBvdmVycmlkZSB7IHJldHVybiBWZWN0b3I8
U3RyaW5nPigpOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JzZXJ2YWJsZU9i
amVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGxpbmtl
ZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUg
eyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Uq
IGNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzY3JvbGxCYXIo
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisK
KyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOyB9CisgICAgYm9vbCBpc1ByZXNl
bnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFs
Um9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIGFjY2Vz
c2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCBvdmVycmlkZSB7
IH0KKyAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9CisKKyAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVy
cmlkZSB7IH0KKyAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBTdHJpbmcgYWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBT
dHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0
cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisKKyAg
ICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRl
ckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHRleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgYXJpYURl
c2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBTdHJpbmcgZXhwYW5k
ZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGJv
b2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+
JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBj
b2xvclZhbHVlKGludCYsIGludCYsIGludCYpIGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpSb2xlVmFsdWUpKTsgfQorCisgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIEVsZW1lbnQqIGFuY2hvckVs
ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBzdXBw
b3J0c1ByZXNzQWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBF
bGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJl
Y3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBMYXlvdXRSZWN0
IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Cisg
ICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5b3V0U2l6ZSgp
OyB9CisgICAgSW50UG9pbnQgY2xpY2tQb2ludCgpIG92ZXJyaWRlIHsgcmV0dXJuIEludFBvaW50
KCk7IH0KKyAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGF0
aCgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JG
b3JUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3I7IH0KKyAgICBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICB1bnNpZ25lZCBzZWxl
Y3Rpb25TdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNpZ25lZCBz
ZWxlY3Rpb25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisKKyAgICBVUkwgdXJs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJMKCk7IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9u
IHNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsg
fQorICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAgV2lkZ2V0KiB3aWRnZXQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgV2lkZ2V0KiB3aWRnZXRG
b3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICBGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICB1bnNpZ25lZCBoaWVyYXJj
aGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAgIHZvaWQgc2V0
Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25z
dCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2b2lkIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRS
b3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorCisgICAgdm9p
ZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9Cisg
ICAgYm9vbCBwcmVzcygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBwZXJm
b3JtRGVmYXVsdEFjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlVuZGVmaW5lZDsgfQorICAgIHZvaWQgaW5jcmVt
ZW50KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkZWNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKwor
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB0ZXh0Q2hh
bmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBv
dmVycmlkZSB7IH0KKyAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFkZENoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBpbnNlcnRDaGlsZChBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSosIHVuc2lnbmVkKSBvdmVycmlkZSB7IH0KKworICAgIGJvb2wg
c2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQg
Y2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxk
cmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRldGFjaEZy
b21QYXJlbnQoKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hp
bGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2VsZWN0
ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIHRhYkNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSop
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FuY2VzdG9yT2ZP
YmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBmaXJzdEFub255bW91
c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBi
b29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAg
ICBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRp
b25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7
IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUo
dW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7
IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25S
YW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25S
YW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3Np
dGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRX
b3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsZWZ0TGluZVZp
c2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9
CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFu
Z2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9z
aXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9u
UmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBs
aW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisKKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVm
UHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBJbnRS
ZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJh
bmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgSW50UmVjdCBi
b3VuZHNGb3JSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+KSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBJbnRSZWN0KCk7IH0KKyAgICBpbnQgbGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Cisg
ICAgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9
CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAg
ICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAg
ICBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9z
aXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24g
bmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiBwcmV2
aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIG5l
eHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0
aW9uIG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0
SW5kZXhPSyAqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0K
KworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9y
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nlc3NpYmlsaXR5
T2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFBsYWluVGV4dFJh
bmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9
CisgICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKworICAgIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92
ZXJyaWRlIHsgfQorICAgIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRl
eHRSYW5nZSBkb0FYUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FY
UmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0
UmFuZ2UoKTsgfQorICAgIFBsYWluVGV4dFJhbmdlIGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5z
aWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKworICAg
IFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIEludFJlY3QgZG9BWEJvdW5kc0ZvclJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVj
dCgpOyB9CisgICAgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNl
dChjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3Qo
KTsgfQorCisgICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQorCisgICAgU3RyaW5nIGNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisKKyAgICAvLyBNU0FBCisgICAgU3RyaW5nIHN0
cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyAgICBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQorICAgIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1
ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsgfQorCisgICAgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxBdmFp
bGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEF1dG9GaWxsQnV0
dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZTsgfQorCisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBhcmlhVHJl
ZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBvdmVycmlkZSB7IH0KKworICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wg
PSB0cnVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbnNp
ZGVMaXZlUmVnaW9uKGJvb2wgPSB0cnVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCA9
IHRydWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBjb25zdCBTdHJp
bmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9
CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBsaXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQnVzeSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0
ZVNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIHN1cHBv
cnRzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIFN0cmlu
ZyByZWFkT25seVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKwor
ICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIFN0cmluZyBhdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9CisKKyAgICBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgT3B0aW9uU2V0PFNwZWFrQXM+
IHNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE9wdGlvblNldDxTcGVh
a0FzPigpOyB9CisKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdCBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50
UmVjdCYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChj
b25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgYm9vbCBzY3JvbGxCeVBh
Z2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
SW50UG9pbnQoKTsgfQorICAgIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gSW50U2l6ZSgpOyB9CisgICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29u
dGVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2b2lk
IHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBj
b25zdCBvdmVycmlkZSB7IH0KKworICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0TGFzdEtub3duSXNJZ25vcmVk
VmFsdWUoYm9vbCkgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVl
Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorCisgICAgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZlbmNlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhTdWJzY3JpcHRT
dXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01hdGhSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNN
YXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzTWF0aE51bWJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aE11bHRpc2NyaXB0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRva2Vu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFNjcmlw
dE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nl
c3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoUmFkaWNhbmRP
YmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqIG1hdGhSb290SW5kZXhPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFVuZGVyT2JqZWN0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBt
YXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RCYXNlKiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoRGVub21pbmF0
b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Uq
IG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKwor
ICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9CisgICAgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3Bl
cmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdm9pZCBtYXRo
UHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcnMmKSBvdmVycmlkZSB7IH0KKworICAgIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0RPTUhpZGRlbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3Jh
cHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQorICAgIHZv
aWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgb3ZlcnJp
ZGUgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9CisKKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVu
dFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopIG92ZXJyaWRlIHsgfQorCisgICAgYm9v
bCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5
UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsgfQorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmllbGRMZW5ndGgoKSBv
dmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbnB1dFR5cGVQb3B1
cEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKworICAg
IHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGU7CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBib29sIHByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGZpbGVVcGxvYWRCdXR0b25S
ZXR1cm5zVmFsdWVJblRpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNwZWVjaEhpbnQpOyB9Cisg
ICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9
CisgICAgU3RyaW5nIGhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGVscFRleHQpOyB9Cisg
ICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBz
dHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VGl0bGUpOyB9CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBib29sIGNh
cmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlIHsgfQorI2VuZGlm
CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogZm9jdXNhYmxlQW5jZXN0b3IoKSBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGVk
aXRhYmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorCisgICAgY29uc3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFu
Y2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9vbCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorCisgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSBvdmVycmlkZSB7IH07CisgICAgdm9p
ZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBz
ZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
Kikgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIHNldFRyZWVJZGVudGlmaWVyKEFYSXNvbGF0ZWRU
cmVlSUQpOworICAgIEFYSXNvbGF0ZWRUcmVlKiB0cmVlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQ
YXJlbnQoQVhJRCk7CisgICAgdm9pZCBhcHBlbmRDaGlsZChBWElEKTsKK3ByaXZhdGU6CiAgICAg
ZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lID0gMCwK
ICAgICAgICAgSGVscFRleHQsCkBAIC02OCw1NCArNjU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
VGl0bGUsCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWVOb2RlPiBjcmVh
dGUoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYpOwotICAgIHZpcnR1YWwgfkFYSXNvbGF0ZWRU
cmVlTm9kZSgpOwotCi0gICAgQVhJRCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9Ci0gICAgCi0gICAgdm9pZCBzZXRQYXJlbnQoQVhJRCk7CiAgICAgQVhJRCBwYXJl
bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogCi0gICAgdm9pZCBhcHBlbmRDaGlsZChB
WElEKTsKLSAgICBjb25zdCBWZWN0b3I8QVhJRD4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZHJlbjsgfTsKLQotICAgIEFYSXNvbGF0ZWRUcmVlKiB0cmVlKCkgY29uc3Q7CiAgICAg
QVhJc29sYXRlZFRyZWVJRCB0cmVlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZUlk
ZW50aWZpZXI7IH0KLSAgICB2b2lkIHNldFRyZWVJZGVudGlmaWVyKEFYSXNvbGF0ZWRUcmVlSUQp
OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
IHdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIHsg
bV93cmFwcGVyID0gd3JhcHBlcjsgfQotI2VuZGlmCi0KLXByb3RlY3RlZDoKICAgICBBWElzb2xh
dGVkVHJlZU5vZGUoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgQVhJc29sYXRlZFRyZWVO
b2RlKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKLSAgICB2b2lkIGluaXRpYWxpemVBdHRy
aWJ1dGVEYXRhKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKLQotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3Zl
cnJpZGUgeyB9Ci0KLSAgICBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFDb250
cm9sTGFiZWwpOyB9Ci0gICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQXR0YWNobWVudCk7IH0K
LSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5Um9sZT4oaW50QXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OlJvbGVWYWx1ZSkpOyB9Ci0gICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTGluayk7IH0K
LSAgICBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ltYWdlTWFwTGluayk7IH0KLSAgICBib29s
IGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzSW1hZ2UpOyB9Ci0gICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzQWNjZXNzaWJpbGl0eUlnbm9yZWQpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZSogcGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVHJlZSk7IH0KLSAgICBib29sIGlzVHJlZUl0ZW0oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzVHJlZUl0ZW0pOyB9Ci0gICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTY3JvbGxiYXIpOyB9
Ci0gICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
ZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpOyB9Ci0gICAg
U3RyaW5nIHNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTcGVlY2hIaW50KTsgfQotICAg
IFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRlc2NyaXB0aW9uKTsgfQot
ICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkhlbHBUZXh0KTsgfQotICAg
IFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRpdGxlKTsgfQotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBBWElzb2xhdGVkVHJlZU5vZGUoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmKTsK
KyAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlJik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgT3B0aW9u
YWw8RmxvYXRSZWN0Pj47CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQXR0
cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3ZlID0gZmFsc2UpOwpAQCAtMTI4
LDExICs2NzQsMTIgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgcmVjdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAgIEFYSUQgbV9wYXJlbnQ7Ci0gICAgQVhJRCBt
X2lkZW50aWZpZXI7CisgICAgQVhJRCBtX2lkOwogICAgIGJvb2wgbV9pbml0aWFsaXplZCB7IGZh
bHNlIH07CiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJZGVudGlmaWVyOwogICAgIFJlZlB0
cjxBWElzb2xhdGVkVHJlZT4gbV9jYWNoZWRUcmVlOwotICAgIFZlY3RvcjxBWElEPiBtX2NoaWxk
cmVuOworICAgIFZlY3RvcjxBWElEPiBtX2NoaWxkcmVuSURzOworICAgIFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+PiBtX2NoaWxkcmVuOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBw
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVj
dENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RD
YWNoZU1hYy5tbQppbmRleCAyZjc1Zjk2NTA4ZC4uZDJlZjExYTFjZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAt
MjMyLDI2ICsyMzIsMTggQEAgc3RhdGljIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5IHBsYXRm
b3JtR3JhbnVsYXJpdHlGb3JXZWJDb3JlR3JhbnVsYXJpdHkoV2ViQ28KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpCi17Ci0gICAgW29iai0+
d3JhcHBlcigpIGRldGFjaF07Ci0gICAgb2JqLT5zZXRXcmFwcGVyKG51bGxwdHIpOwotfQotCi0j
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLXZvaWQgQVhPYmplY3RDYWNo
ZTo6YXNzb2NpYXRlSXNvbGF0ZWRUcmVlTm9kZShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qs
IEFYSXNvbGF0ZWRUcmVlTm9kZSYgbm9kZSwgQVhJc29sYXRlZFRyZWVJRCB0cmVlSUQpCitBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQVhPYmplY3RDYWNoZTo6ZGV0YWNoV3JhcHBlcihBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0LCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUp
CiB7CiAgICAgYXV0byB3cmFwcGVyID0gb2JqZWN0LndyYXBwZXIoKTsKLSAgICBBU1NFUlQod3Jh
cHBlcik7Ci0gICAgd3JhcHBlci5pc29sYXRlZFRyZWVJZGVudGlmaWVyID0gdHJlZUlEOwotICAg
IG5vZGUuc2V0V3JhcHBlcih3cmFwcGVyKTsKKyAgICBbd3JhcHBlciBkZXRhY2hdOworICAgIG9i
amVjdC5zZXRXcmFwcGVyKG51bGxwdHIpOworICAgIHJldHVybiB3cmFwcGVyOwogfQotI2VuZGlm
CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmopCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UmIG9iamVjdCkKIHsKLSAgICBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+IHdyYXBwZXIgPSBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgYWxsb2NdIGluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDpvYmpdKTsKLSAgICBvYmotPnNl
dFdyYXBwZXIod3JhcHBlci5nZXQoKSk7CisgICAgUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyPiB3cmFwcGVyID0gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFsbG9jXSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6Jm9iamVjdF0pOworICAg
IG9iamVjdC5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQogCiBzdGF0aWMgQk9PTCBheFNo
b3VsZFJlcG9zdE5vdGlmaWNhdGlvbnNGb3JUZXN0cyA9IGZhbHNlOwpAQCAtMjc2LDcgKzI2OCw3
IEBAIHN0YXRpYyB2b2lkIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciAqb2JqZWN0LCBOCiAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zdE5vdGlm
aWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QsIG5vdGlmaWNhdGlvbiwgdXNlckluZm8pOwogfQog
Ci12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK3ZvaWQgQVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAoIW9iaikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggNmI5NTUwMjJlZDMuLjNlZWU4
MzAyZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nl
c3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KCkKICAgICAgICAgb3ZlcnJpZGVBdHRh
Y2htZW50UGFyZW50KG51bGxwdHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92
ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQpCit2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogcGFyZW50KQogewogICAgIGlmICghaXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKaW5kZXgg
ZmZlZDg1NWM4NGQuLjNlNmJmNjAxMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UuaApAQCAtMjksMTkgKzI5LDEzIEBACiAjaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZV9oCiAjZGVmaW5lIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZV9oCiAKLSNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgotI2luY2x1ZGUgIkFYSXNvbGF0
ZWRUcmVlTm9kZS5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NvcmVHcmFwaGljcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7Ci0jaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlf
SVNPTEFURURfVFJFRSkKLWNsYXNzIEFYSXNvbGF0ZWRUcmVlTm9kZTsKLSNlbmRpZgogc3RydWN0
IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBGbG9h
dFBvaW50OwpAQCAtNTEsMjkgKzQ1LDIyIEBAIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIH0KIAog
QGludGVyZmFjZSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgOiBOU09iamVjdCB7
Ci0gICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogbV9vYmplY3Q7CisgICAgV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1fb2JqZWN0OwogICAgIFdlYkNvcmU6OkFYSUQg
X2lkZW50aWZpZXI7Ci0jaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlPiBtX2lzb2xhdGVkVHJlZU5vZGU7
Ci0jZW5kaWYKIH0KICAKLS0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmplY3Q7Ci0KLSNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWV9JU09MQVRFRF9UUkVFKQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBSZWZQ
dHI8V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlPiBpc29sYXRlZFRyZWVOb2RlOwotQHByb3Bl
cnR5IChub25hdG9taWMsIGFzc2lnbikgV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVJRCBpc29sYXRl
ZFRyZWVJZGVudGlmaWVyOwotI2VuZGlmCistIChpZClpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilheE9iamVjdDsKIAorLSAodm9p
ZClhdHRhY2g6KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilheE9iamVjdDsKIC0g
KHZvaWQpZGV0YWNoOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBXZWJDb3JlOjpB
WElEIGlkZW50aWZpZXI7CiAKLS0gKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKWFjY2Vz
c2liaWxpdHlPYmplY3Q7CistIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopYWNj
ZXNzaWJpbGl0eU9iamVjdDsKIC0gKEJPT0wpdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOwogCiAv
LyBUaGlzIGNhbiBiZSBlaXRoZXIgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCBvciBhbiBBWElzb2xh
dGVkVHJlZU5vZGUKLS0gKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqKWF4
QmFja2luZ09iamVjdDsKKy0gKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilheEJh
Y2tpbmdPYmplY3Q7CiAKIC8vIFRoZXNlIGFyZSBwcmUtZml4ZWQgd2l0aCBiYXNlIHNvIHRoYXQg
QXBwS2l0IGRvZXMgbm90IGVuZCB1cCBjYWxsaW5nIGludG8gdGhlc2UgZGlyZWN0bHkgKGJ5cGFz
c2luZyBzYWZldHkgY2hlY2tzKS4KIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2liaWxpdHlUaXRs
ZTsKQEAgLTk5LDEwICs4Niw3IEBAIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZXh0ZXJuIFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGlj
dGlvbmFyeSAqKTsKIAotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi1l
eHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkFYSXNvbGF0ZWRUcmVlTm9kZT4+Jik7Ci0jZW5kaWYKLWV4dGVybiBOU0FycmF5ICpjb252
ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpOworZXh0ZXJuIE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXko
Y29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKGlkKV9hY2Nlc3Np
YmlsaXR5V2ViRG9jdW1lbnRWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLm1tCmluZGV4IGRhZjM0ZjE1MGY1Li42NThiNzM0NmIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtMzEsMTMgKzMxLDEwIEBACiAKICNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWSkKIAotI2ltcG9ydCAiQVhJc29sYXRlZFRyZWUuaCIKLSNpbXBvcnQg
IkFYSXNvbGF0ZWRUcmVlTm9kZS5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlz
dC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKLSNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgpAQCAtMjY0LDcgKzI2MSw3IEBAIHN0YXRpYyBOU0FycmF5
ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpCiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1zdGF0aWMgdm9pZCBhZGRDaGlsZFRv
QXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSYgY2hpbGQsIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gYXJyYXkpCitzdGF0aWMgdm9pZCBhZGRDaGlsZFRvQXJyYXkoQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5KQog
ewogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICp3cmFwcGVyID0gY2hpbGQud3Jh
cHBlcigpOwogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2htZW50IHZpZXcgaW5z
dGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVudCwKQEAgLTI3NSwx
NyArMjcyLDcgQEAgc3RhdGljIHZvaWQgYWRkQ2hpbGRUb0FycmF5KEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXQKICAgICAgICAgW2FycmF5LmdldCgp
IGFkZE9iamVjdDp3cmFwcGVyXTsKIH0KIAotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xB
VEVEX1RSRUUpCi1OU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlPj4mIGNoaWxkcmVuKQotewotICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNoaWxkcmVuLnNpemUoKV07Ci0gICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAg
ICAgICBhZGRDaGlsZFRvQXJyYXkoKmNoaWxkLCByZXN1bHQpOwotICAgIHJldHVybiBbcmVzdWx0
IGF1dG9yZWxlYXNlXTsKLX0KLSNlbmRpZgotCi1OU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNv
bnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgY2hpbGRyZW4pCitOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlOjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNo
aWxkcmVuKQogewogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNoaWxkcmVuLnNpemUoKV07CiAgICAgZm9yIChhdXRv
JiBjaGlsZCA6IGNoaWxkcmVuKQpAQCAtMjk2LDYxICsyODMsMzEgQEAgTlNBcnJheSAqY29udmVy
dFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGQKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UKIAogQHN5bnRoZXNpemUgaWRlbnRpZmllcj1faWRlbnRpZmllcjsKLSNpZiBFTkFCTEUoQUND
RVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotQHN5bnRoZXNpemUgaXNvbGF0ZWRUcmVlSWRlbnRp
Zmllcj1faXNvbGF0ZWRUcmVlSWRlbnRpZmllcjsKLSNlbmRpZgogCi0tIChpZClpbml0V2l0aEFj
Y2Vzc2liaWxpdHlPYmplY3Q6KEFjY2Vzc2liaWxpdHlPYmplY3QqKWF4T2JqZWN0CistIChpZClp
bml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6KEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilheE9i
amVjdAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgbV9vYmplY3QgPSBheE9iamVjdDsKLSAgICBfaWRlbnRpZmllciA9IG1fb2Jq
ZWN0LT5heE9iamVjdElEKCk7CisgICAgW3NlbGYgYXR0YWNoOmF4T2JqZWN0XTsKIAogICAgIHJl
dHVybiBzZWxmOwogfQogCi0jaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkK
LS0gKFJlZlB0cjxXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU+KWlzb2xhdGVkVHJlZU5vZGUK
Ky0gKHZvaWQpYXR0YWNoOihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopYXhPYmplY3QKIHsKLSAg
ICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKCFfaWRlbnRpZmll
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAobV9pc29sYXRlZFRyZWVOb2Rl
KQotICAgICAgICByZXR1cm4gbV9pc29sYXRlZFRyZWVOb2RlOwotCi0gICAgbV9pc29sYXRlZFRy
ZWVOb2RlID0gQVhJc29sYXRlZFRyZWU6Om5vZGVJblRyZWVGb3JJRChfaXNvbGF0ZWRUcmVlSWRl
bnRpZmllciwgX2lkZW50aWZpZXIpOwotICAgIHJldHVybiBtX2lzb2xhdGVkVHJlZU5vZGU7Cisg
ICAgbV9vYmplY3QgPSBheE9iamVjdDsKKyAgICBfaWRlbnRpZmllciA9IG1fb2JqZWN0LT5vYmpl
Y3RJRCgpOwogfQotI2VuZGlmCiAKIC0gKHZvaWQpZGV0YWNoCiB7CiAgICAgbV9vYmplY3QgPSBu
dWxscHRyOwogICAgIF9pZGVudGlmaWVyID0gMDsKLQotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZ
X0lTT0xBVEVEX1RSRUUpCi0gICAgbV9pc29sYXRlZFRyZWVOb2RlID0gbnVsbHB0cjsKLSAgICBf
aXNvbGF0ZWRUcmVlSWRlbnRpZmllciA9IDA7Ci0jZW5kaWYKIH0KIAogLSAoQk9PTCl1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmUKIHsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9U
UkVFKQotICAgIGlmIChfQVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNlY29uZGFyeUFYVGhy
ZWFkKCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICAg
ICAgaWYgKGF1dG8gdHJlZU5vZGUgPSBzZWxmLmlzb2xhdGVkVHJlZU5vZGUpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIHRyZWUgPSB0cmVlTm9kZS0+dHJlZSgpKQotICAgICAgICAgICAgICAgIHRy
ZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gX2lk
ZW50aWZpZXI7Ci0gICAgfQotI2VuZGlmCi0gICAgCiAgICAgLy8gQ2FsbGluZyB1cGRhdGVCYWNr
aW5nU3RvcmUoKSBjYW4gaW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBtdXN0IGJlIHJl
dGFpbmVkLgogICAgIC8vIElmIGl0IGRvZXMgYmVjb21lIGludmFsaWRhdGVkLCBtX29iamVjdCB3
aWxsIGJlIG5pbC4KICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwpAQCAt
MzcxLDExICszMjgsOCBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZAogICAgIHJldHVybiBuaWw7
CiB9CiAKLS0gKEFjY2Vzc2liaWxpdHlPYmplY3QqKWFjY2Vzc2liaWxpdHlPYmplY3QKKy0gKEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKilhY2Nlc3NpYmlsaXR5T2JqZWN0CiB7Ci0jaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBBU1NFUlQoIV9BWFVJRWxlbWVudFJl
cXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJlYWQoKSk7Ci0jZW5kaWYKICAgICByZXR1cm4g
bV9vYmplY3Q7CiB9CiAKQEAgLTM4NiwxMiArMzQwLDggQEAgTlNBcnJheSAqY29udmVydFRvTlNB
cnJheShjb25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGQKICAgICByZXR1cm4gX2F4QmFja2luZ09iamVjdC0+dGl0bGVBdHRyaWJ1dGVWYWx1ZSgpOwog
fQogCi0tIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKilheEJhY2tpbmdP
YmplY3QKKy0gKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilheEJhY2tpbmdPYmpl
Y3QKIHsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChf
QVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNlY29uZGFyeUFYVGhyZWFkKCkpCi0gICAgICAg
IHJldHVybiBzZWxmLmlzb2xhdGVkVHJlZU5vZGUuZ2V0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4g
bV9vYmplY3Q7CiB9CiAKQEAgLTc4NSw3ICs3MzUsNyBAQCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1l
dAogICAgIGlmIChbc2VhcmNoVGV4dFBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQogICAgICAgICBzZWFyY2hUZXh0ID0gc2VhcmNoVGV4dFBhcmFtZXRlcjsKICAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFydEVsZW1lbnQgPSBudWxscHRyOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzdGFydEVsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChb
c3RhcnRFbGVtZW50UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZSBjbGFzc11dKQogICAgICAgICBzdGFydEVsZW1lbnQgPSBbc3RhcnRFbGVt
ZW50UGFyYW1ldGVyIGFjY2Vzc2liaWxpdHlPYmplY3RdOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAwMTUwZmNhZTdhZi4uYjgwNGI4OWFjMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMjg3LDcgKzEyODcs
NyBAQCBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKE5vZGUqIHJlcGxh
Y2VkTm9kZSkKICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwg
emVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgp
CiAgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgIC8vIEFkZCB0
aGUgdGV4dCBvZiB0aGUgbGlzdCBtYXJrZXIgaXRlbSBpZiBuZWNlc3NhcnkuCi0gICAgICAgICAg
ICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBtX29iamVjdC0+bGlzdE1hcmtlclRleHRGb3JOb2Rl
QW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0
aW9uKCkpKTsKKyAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxp
dHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNpYmxl
UG9zaXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpKSk7CiAgICAgICAgICAgICBpZiAo
IWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRT
dHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsICZub2RlLCBsaXN0TWFya2VyVGV4dCwgc3BlbGxD
aGVjayk7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJp
bmcsICZub2RlLCBpdC50ZXh0KCksIHNwZWxsQ2hlY2spOwpAQCAtMTkyMiw3ICsxOTIyLDcgQEAg
c3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKICAgICB1bnNpZ25lZCBsZW5ndGggPSBbYXJyYXkgY291
bnRdOwogICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iaiA9IFtbYXJyYXkgb2JqZWN0QXRJbmRleDppXSBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0XTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iaiA9IFtbYXJyYXkgb2Jq
ZWN0QXRJbmRleDppXSBhY2Nlc3NpYmlsaXR5T2JqZWN0XTsKICAgICAgICAgaWYgKG9iaikKICAg
ICAgICAgICAgIHZlY3Rvci5hcHBlbmQob2JqKTsKICAgICB9CkBAIC0yMDA1LDI4ICsyMDA1LDEx
IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGlu
Zm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsCiAKIC0gKHNpemVfdCljaGlsZHJlblZlY3RvclNp
emUKIHsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChf
QVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNlY29uZGFyeUFYVGhyZWFkKCkpCi0gICAgICAg
IHJldHVybiBzZWxmLmlzb2xhdGVkVHJlZU5vZGUtPmNoaWxkcmVuKCkuc2l6ZSgpOwotI2VuZGlm
Ci0gICAgCiAgICAgcmV0dXJuIG1fb2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKIH0KIAogLSAo
TlNBcnJheTxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqPiAqKWNoaWxkcmVuVmVjdG9y
QXJyYXkKIHsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlm
IChfQVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNlY29uZGFyeUFYVGhyZWFkKCkpIHsKLSAg
ICAgICAgYXV0byB0cmVlTm9kZSA9IHNlbGYuaXNvbGF0ZWRUcmVlTm9kZTsKLSAgICAgICAgYXV0
byBub2RlQ2hpbGRyZW4gPSB0cmVlTm9kZS0+Y2hpbGRyZW4oKTsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxBWElzb2xhdGVkVHJlZU5vZGU+PiBjaGlsZHJlbjsKLSAgICAgICAgY2hpbGRyZW4ucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShub2RlQ2hpbGRyZW4uc2l6ZSgpKTsKLSAgICAgICAgYXV0byB0
cmVlID0gdHJlZU5vZGUtPnRyZWUoKTsKLSAgICAgICAgZm9yIChhdXRvIGNoaWxkSUQgOiBub2Rl
Q2hpbGRyZW4pCi0gICAgICAgICAgICBjaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQodHJlZS0+bm9k
ZUZvcklEKGNoaWxkSUQpKTsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY2hpbGRy
ZW4pOwotICAgIH0KLSNlbmRpZgogICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KG1fb2JqZWN0
LT5jaGlsZHJlbigpKTsKIH0KIApAQCAtMjY2NywxNSArMjY1MCwxNSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgCiAgICAgICAgIC8vIFRyZWUgaXRlbSAo
Y2hhbmdlZCB0byBBWFJvd3MpIGNhbiBvbmx5IHJlcG9ydCB0aGUgdHJlZSAoQVhPdXRsaW5lKSBh
cyBpdHMgcGFyZW50LgogICAgICAgICBpZiAoX2F4QmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgp
KSB7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudCA9IF9heEJhY2tpbmdPYmplY3QtPnBhcmVudE9i
amVjdEludGVyZmFjZVVuaWdub3JlZCgpOworICAgICAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhC
YWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgICAgIHdoaWxl
IChwYXJlbnQpIHsKICAgICAgICAgICAgICAgICBpZiAocGFyZW50LT5pc1RyZWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwotICAgICAgICAgICAgICAg
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCk7CisgICAg
ICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYXV0byBwYXJlbnQgPSBf
YXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKTsKKyAgICAg
ICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAg
ICAKQEAgLTI4NjEsMTQgKzI4NDQsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgIAogICAgICAgICAvLyByYWRpbyBncm91cHMgcmV0dXJuIHRoZSBzZWxl
Y3RlZCByYWRpbyBidXR0b24gYXMgdGhlIEFYVmFsdWUKICAgICAgICAgaWYgKG1fb2JqZWN0LT5p
c1JhZGlvR3JvdXAoKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmFkaW9C
dXR0b24gPSBtX29iamVjdC0+c2VsZWN0ZWRSYWRpb0J1dHRvbigpOworICAgICAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UqIHJhZGlvQnV0dG9uID0gbV9vYmplY3QtPnNlbGVjdGVkUmFk
aW9CdXR0b24oKTsKICAgICAgICAgICAgIGlmICghcmFkaW9CdXR0b24pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiByYWRpb0J1dHRvbi0+d3JhcHBlcigp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9vYmplY3QtPmlzVGFiTGlzdCgp
KSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJJdGVtID0gbV9vYmplY3Qt
PnNlbGVjdGVkVGFiSXRlbSgpOworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Uq
IHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CiAgICAgICAgICAgICBpZiAo
IXRhYkl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVy
biB0YWJJdGVtLT53cmFwcGVyKCk7CkBAIC0zMDYzLDcgKzMwNDYsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGNvbHVtbi5jaGlsZHJlbigpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsK
LSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGNvbHVtbi5oZWFkZXJP
YmplY3QoKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBoZWFkZXIgPSBj
b2x1bW4uaGVhZGVyT2JqZWN0KCk7CiAgICAgICAgICAgICBpZiAoIWhlYWRlcikKICAgICAgICAg
ICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJuIGhlYWRlci0+d3JhcHBlcigp
OwpAQCAtMzExOCw3ICszMTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJ
dGVtKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2Jq
ZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0KCk7CiAgICAgICAgICAgICBmb3IgKDsg
cGFyZW50ICYmICFwYXJlbnQtPmlzVHJlZSgpOyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVj
dCgpKQogICAgICAgICAgICAgeyB9CiAgICAgICAgICAgICAKQEAgLTMxNTcsNyArMzE0MCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIC8vIFRoZSByb3cgdGhh
dCBjb250YWlucyB0aGlzIHJvdy4gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBw
YXJlbnQgdGhhdCBpcyBhIHRyZWVpdGVtLgogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdKSB7CiAgICAg
ICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVj
dCgpOwogICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkgewogICAgICAgICAgICAgICAgIGlmIChw
YXJlbnQtPmlzVHJlZUl0ZW0oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+
d3JhcHBlcigpOwpAQCAtMzE2OCw3ICszMTUxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdz4oKm1fb2JqZWN0KSkg
ewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93ID0gZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eUFSSUFHcmlkUm93PigqbV9vYmplY3QpLmRpc2Nsb3NlZEJ5Um93KCk7CisgICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93PigqbV9vYmplY3QpLmRpc2Nsb3NlZEJ5Um93KCk7CiAgICAgICAgICAgICBp
ZiAoIXJvdykKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJu
IHJvdy0+d3JhcHBlcigpOwpAQCAtMzIyNSw3ICszMjA4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmICghbV9vYmplY3QtPmV4cG9zZXNUaXRsZVVJ
RWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCi0gICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG1fb2JqZWN0LT50aXRsZVVJRWxlbWVudCgpOworICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqID0gbV9vYmplY3QtPnRpdGxlVUlFbGVt
ZW50KCk7CiAgICAgICAgIGlmIChvYmopCiAgICAgICAgICAgICByZXR1cm4gb2JqLT53cmFwcGVy
KCk7CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0zMjQ5LDEzICszMjMyLDEzIEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxC
YXJBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9
IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFs
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNjcm9sbEJhciA9IG1fb2JqZWN0
LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKICAgICAg
ICAgaWYgKHNjcm9sbEJhcikKICAgICAgICAgICAgIHJldHVybiBzY3JvbGxCYXItPndyYXBwZXIo
KTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNj
cm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsKTsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgICAgIGlmIChzY3JvbGxCYXIp
CiAgICAgICAgICAgICByZXR1cm4gc2Nyb2xsQmFyLT53cmFwcGVyKCk7CiAgICAgICAgIHJldHVy
biBuaWw7CkBAIC0zNDY2LDE3ICszNDQ5LDE3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGVdKSB7Ci0gICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IG1fb2JqZWN0LT5mb2N1c2FibGVBbmNlc3Rv
cigpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqZWN0ID0gbV9vYmplY3Qt
PmZvY3VzYWJsZUFuY2VzdG9yKCk7CiAgICAgICAgIHJldHVybiBvYmplY3QgPyBvYmplY3QtPndy
YXBwZXIoKSA6IG5pbDsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUVkaXRhYmxlQW5jZXN0b3JBdHRyaWJ1dGVdKSB7Ci0gICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IG1fb2JqZWN0LT5lZGl0YWJsZUFuY2Vz
dG9yKCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBvYmplY3QgPSBtX29iamVj
dC0+ZWRpdGFibGVBbmNlc3RvcigpOwogICAgICAgICByZXR1cm4gb2JqZWN0ID8gb2JqZWN0LT53
cmFwcGVyKCkgOiBuaWw7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIaWdoZXN0RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gbV9vYmplY3QtPmhpZ2hl
c3RFZGl0YWJsZUFuY2VzdG9yKCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBv
YmplY3QgPSBtX29iamVjdC0+aGlnaGVzdEVkaXRhYmxlQW5jZXN0b3IoKTsKICAgICAgICAgcmV0
dXJuIG9iamVjdCA/IG9iamVjdC0+d3JhcHBlcigpIDogbmlsOwogICAgIH0KIApAQCAtMzUxMSw3
ICszNDk0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgCiAgICAgX2F4QmFja2luZ09iamVjdC0+dXBkYXRlQ2hpbGRyZW5J
Zk5lY2Vzc2FyeSgpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGF4T2JqZWN0
ID0gX2F4QmFja2luZ09iamVjdC0+YWNjZXNzaWJpbGl0eUhpdFRlc3QoSW50UG9pbnQocG9pbnQp
KTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogYXhPYmplY3QgPSBfYXhCYWNraW5nT2Jq
ZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwogICAgIGlmIChheE9i
amVjdCkgewogICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVj
dC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgIHJldHVybiBbYXhPYmpl
Y3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld107CkBAIC0zNzgxLDcgKzM3NjQsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAvLyBPbiBXSzEsIHdlIG5lZWQgdG8g
Y29udmVydCByZWN0IHRvIHdpbmRvdyBzcGFjZSB0byBtYXRjaCBtb3VzZSBjbGlja2luZy4KICAg
ICBpZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9s
bCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50cyB0byB0aGUgd2luZG93LgotICAg
ICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRP
YmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CisgICAg
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJl
bnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAg
ICAgICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+KCpwYXJlbnQpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gc2Nyb2xsVmlldyA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3PigqcGFyZW50KS5zY3JvbGxWaWV3KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFmcmFtZVZpZXctPnBsYXRmb3JtV2lkZ2V0KCkpCkBAIC00MTI2LDcgKzQxMDksNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBOU051bWJlciogbnVt
YmVyID0gbmlsOwogICAgIE5TQXJyYXkqIGFycmF5ID0gbmlsOwogICAgIE5TRGljdGlvbmFyeSog
ZGljdGlvbmFyeSA9IG5pbDsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gdWlFbGVt
ZW50ID0gbnVsbHB0cjsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+IHVpRWxl
bWVudDsKICAgICBOU1BvaW50IHBvaW50ID0gTlNaZXJvUG9pbnQ7CiAgICAgYm9vbCBwb2ludFNl
dCA9IGZhbHNlOwogICAgIE5TUmFuZ2UgcmFuZ2UgPSB7MCwgMH07CkBAIC00Mjc1LDcgKzQyNTgs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAgICAgCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JV
SUVsZW1lbnQiXSkgewotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gdWlFbGVtZW50Lmdl
dCgpLT5lbGVtZW50UmFuZ2UoKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHVpRWxl
bWVudC0+ZWxlbWVudFJhbmdlKCk7CiAgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2U6cmFuZ2VdOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKaW5kZXggMWNlNWM5YTgwMTQuLjdjYjYxYjg3YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCkBAIC05Miw5ICs5Miw5IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2Rl
Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRBY3RpdmVEZXNjZW5kYW50
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFjY2Vz
c2liaWxpdHlPYmplY3QmIHBhcmVudE9iamVjdCwgVmVjdG9yPFJlZlB0cjxOb2RlPj4mIGNoaWxk
Tm9kZXMpCitzdGF0aWMgdm9pZCBhZGRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYg
cGFyZW50T2JqZWN0LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgY2hpbGROb2RlcykKIHsKLSAgICBm
b3IgKGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgY2hpbGRPYmplY3QgOiBwYXJl
bnRPYmplY3QuY2hpbGRyZW4oKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRPYmplY3Qg
OiBwYXJlbnRPYmplY3QuY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoTm9kZSogY2hpbGROb2Rl
ID0gY2hpbGRPYmplY3QtPm5vZGUoKSkKICAgICAgICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNo
aWxkTm9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTMyNiw3ICszMjYsNyBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0UGFyZW50
Tm9kZShOb2RlJgogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCiAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShu
b2RlKSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0g
YXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQorICAgICAgICBpZiAoQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UqIHBhcmVudE9iamVjdCA9IGF4T2JqZWN0LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKSkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnRPYmplY3QtPm5vZGUoKTsKICAgICB9
CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRy
PE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3Rl
ZENoaWxkcmVuOwogICAgICAgICBheE9iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENo
aWxkcmVuKTsKLSAgICAgICAgZm9yIChSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4mIHNlbGVj
dGVkQ2hpbGRPYmplY3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4pIHsKICAgICAgICAg
ICAgIGlmIChOb2RlKiBzZWxlY3RlZENoaWxkTm9kZSA9IHNlbGVjdGVkQ2hpbGRPYmplY3QtPm5v
ZGUoKSkKICAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZXMuYXBwZW5kKHNlbGVjdGVk
Q2hpbGROb2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCmluZGV4IDg3NGI0NmJkOGExLi41ODA0NjdiYjlmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMzEsNyArMzEs
NyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5o
IgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKaW5kZXggNjA0ZGI1MmQ5NjguLjE1NjdhMTUwOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTc2MSw3
ICsxNzYxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXYKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4o
QWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QsIEpTT046OkFycmF5T2Y8aW50PiYgY2hpbGRO
b2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgYXhPYmplY3QsIEpTT046OkFycmF5T2Y8aW50
PiYgY2hpbGROb2RlSWRzKQogewogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYXhPYmplY3Qu
Y2hpbGRyZW4oKTsKICAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkKQEAgLTE5NzEsNyArMTk3MSw3
IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0
aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0
ID0gYXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQorICAgICAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCkpCiAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE9iamVj
dC0+bm9kZSgpOwogCiAgICAgICAgICAgICBzdXBwb3J0c1ByZXNzZWQgPSBheE9iamVjdC0+cHJl
c3NlZElzUHJlc2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGNiN2JlYWExM2FjLi5lMTQxMDEzNDdlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKU1ZhbHVlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CitjbGFzcyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZTsKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CiBjbGFzcyBE
b2N1bWVudDsKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1
ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZv
ckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRp
ZmllciwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlz
YWJsZWQsIGJvb2wgaGFzQnJlYWtwb2ludCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJp
bGl0eVByb3BlcnRpZXMoTm9kZSopOwotICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CisgICAgdm9p
ZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiwg
SlNPTjo6QXJyYXlPZjxpbnQ+Jik7CiAgICAgCiAgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKICAgICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBv
YmplY3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwMWI3NDEzMGNlLi45ZTVjNTJlNjU2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMC0yNSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18y
MkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJhc2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vz
c2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVlTm9kZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQwOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tBY2Nlc3NpYmlsaXR5Rm9jdXNl
ZE9iamVjdCk6IFVzZXMgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UKKwogMjAxOS0xMC0yNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0YW5kYXJkaXplICJQYWdl
SUQ9IiB2cyAicGFnZUlEID0iIGluIHJlbGVhc2UgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCAyNDRlNWI5NTQ4Zi4uZjM2OWE5ZDJlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9j
dXNlZE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIAogICAgIFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKIAotICAgIFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1
c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSogZm9jdXNlZE9iamVjdCA9IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRV
SUVsZW1lbnRGb3JQYWdlKHBhZ2UpOwogICAgIGlmICghZm9jdXNlZE9iamVjdCkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381969</attachid>
            <date>2019-10-25 15:08:30 -0700</date>
            <delta_ts>2019-10-28 18:03:02 -0700</delta_ts>
            <desc>Addresses comment in previous patch.</desc>
            <filename>AccessibilityObjectBase.diff</filename>
            <type>text/plain</type>
            <size>327109</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MzgyZDIyN2E4MS4uNTMyM2I0YmFkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NTEgQEAKKzIwMTktMTAtMjUgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBw
bGUuY29tPgorCisgICAgICAgIENyZWF0ZSBiYXNlIGNsYXNzIGNvbW1vbiB0byBBY2Nlc3NpYmls
aXR5T2JqZWN0IGFuZCBBWElzb2xhdGVkVHJlZU5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkIHNpbmNlIHRoaXMg
ZG9lc24ndCBjaGFuZ2UgYW55IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgRm9sbG93IHVwIHRv
IHRoZSBBWElzb2xhdGVkVHJlZSB3b3JrLgorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSBpcyBhIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBib3RoIEFjY2Vzc2liaWxpdHlPYmplY3QKKyAg
ICAgICAgYW5kIEFYSXNvbGF0ZWRUcmVlTm9kZS4gVGhlcmVmb3JlLCBhbGwgY2xpZW50IGNvZGUg
c2hvdWxkIHVzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZQorICAgICAgICBpbnN0ZWFkIG9mIGFu
eSBvZiB0aGUgZGVyaXZlZCBjbGFzc2VzLiBUaGlzIHdpbGwgYWxsb3cgdG8gc2VhbWxlc3NseQor
ICAgICAgICBzd2l0Y2ggYmV0d2VlbiB1c2luZyBBWElzb2xhdGVkVHJlZU5vZGUgaW4gdGhlIHNl
Y29uZGFyeSB0aHJlYWQgYW5kCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QgaW4gdGhlIG1h
aW4gdGhyZWFkIHdoZW4gbmVlZGVkLiBUaGlzIGNoYW5nZSBhbHNvCisgICAgICAgIGFsbG93cyBm
b3IgY2xlYW5lciBjbGllbnQgY29kZSwgZW5jYXBzdWxhdGluZyB0aGUgZGVjaXNpb24gd2hldGhl
cgorICAgICAgICBBWElzb2xhdGVkVHJlZU5vZGUgY2FuIHJlc3BvbmQgdG8gYSByZXF1ZXN0IG9y
IG5lZWQgdG8gcmVzb3J0IHRvIGl0cworICAgICAgICBjb3JyZXNwb25kaW5nIEFjY2Vzc2liaWxp
dHlPYmplY3QsIGFuZCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNvbXBpbGUKKyAgICAgICAgdGlt
ZSBmbGFnIGNoZWNrcyBmb3IgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpn
ZXRBWElEKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRh
V2l0aENoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0
ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKToK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvclBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvcklu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmluZGV4Rm9yQ2hhcmFjdGVy
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJl
ZENhY2hlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlz
b2xhdGVkQWNjZXNzaWJpbGl0eVRyZWVIaWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6Z2VuZXJhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6YWRkUm93RGVzY2VuZGFudCk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6
Y29sdW1uSW5kZXhSYW5nZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93OjpkaXNjbG9zZWRSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxhYmVsOjppbnNlcnRDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGFiZWwuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50
QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50Ojppc01hdGhTY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFk
aWNhbmRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhSb290SW5kZXhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFVuZGVyT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zl
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6Om1hdGhTdWJzY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhTdXBlcnNjcmlwdE9iamVjdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbik6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRU
YWJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxw
VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
dGV4dFVuZGVyRWxlbWVudCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5VGV4
dFNlYXJjaE1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNv
bnRhaW5zVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5U
b0FycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1h
dGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0Vs
ZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
RGVzY2VuZGFudE9mT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9uQW5jZXN0b3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzZWRV
SUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQVhIaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2FibGVBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplZGl0YWJsZUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhZGlvR3JvdXBBbmNlc3RvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZExpc3RJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJl
bnREYXRhRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dCBjb25zdCk6IFJlbmFtZWQgY29udGFpbnNU
ZXh0LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVu
dCk6IFJlbmFtZWQgYW5kIHJlLWltcGxlbWVudGVkIGFzIGF4OjptYXRjaGVkQW5jZXN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoK
KyAgICAgICAgTW9zdCBvZiB0aGUgZGVsZXRpb25zIGhlcmUgYXJlIG1vdmVkIHRvIHRoZSBiYXNl
IGNsYXNzLgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YTo6aXNOdWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjpWaXNpYmxlUG9zaXRpb25S
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb25SYW5nZTo6
aXNOdWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdl
OjpQbGFpblRleHRSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGFpblRleHRS
YW5nZTo6aXNOdWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246
OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldEFYT2JqZWN0SUQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5pdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTVkdSb290IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVNWR0VsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNBdHRhY2htZW50RWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hlYWRpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbWFnZU1hcCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05h
dGl2ZUltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzSW1hZ2VCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQYXNzd29yZEZpZWxkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhc3N3b3JkRmllbGRPckNv
bnRhaW5pbmdQYXNzd29yZEZpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlVGV4dENvbnRyb2wgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWFyY2hGaWVsZCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1dlYkFy
ZWEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNDaGVja2JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1JhZGlvQnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlTGlzdEJveCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3ggY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNM
aXN0Qm94T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzTWVkaWFUaW1lbGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVSZWxhdGVkIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVC
YXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51QnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudUl0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbnB1dEltYWdlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJvZ3Jlc3NJbmRpY2F0
b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNTbGlkZXJUaHVtYiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0lucHV0U2xpZGVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29udHJvbCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhYmVs
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc1RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzRGF0YVRhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVSb3cgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZUNvbHVtbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Rh
YmxlQ2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0ZpZWxkc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzR3JvdXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBVHJlZUdyaWRSb3cgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51TGlzdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c01lbnVMaXN0UG9wdXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNNZW51TGlzdE9wdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwaW5CdXR0b24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNOYXRpdmVTcGlu
QnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzU3BpbkJ1dHRvblBhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNb2NrT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVkaWFPYmplY3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTd2l0
Y2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNUb2dnbGVCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJMaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFiSXRlbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhZGlvR3JvdXAgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb21i
b0JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RyZWVHcmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTGlzdEl0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDaGVja2JveE9yUmFkaW8gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTY3JvbGxWaWV3
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzQ2FudmFzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzUG9wVXBCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb2xvcldlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGxpdHRlciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Rvb2xiYXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNTdW1tYXJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzQ2hlY2tlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWxlY3RlZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ZvY3VzZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNIb3Zl
cmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzSW5kZXRlcm1pbmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xvYWRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc011bHRpU2VsZWN0YWJsZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09mZlNjcmVl
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc1ByZXNzZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNVbnZpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNWaXNpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmVxdWlyZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNSZXF1
aXJlZEF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0xpbmtlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Zpc2libGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb2xsYXBzZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNFeHBhbmRl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Nl
bGVjdGVkT3B0aW9uQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omhhc0JvbGRGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0l0YWxpY0ZvbnQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzUGxhaW5UZXh0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Omhhc1NhbWVGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Omhhc1NhbWVGb250Q29sb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZVN0eWxlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3RhdGljVGV4dCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpo
YXNVbmRlcmxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpjYW5TZXRWYWx1ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXROdW1lcmljVmFsdWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0U2VsZWN0ZWRB
dHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRFeHBhbmRlZEF0
dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpub2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnJlbmRlcmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0YWJsZUxldmVsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZhbHVlRGVzY3Jp
cHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6dmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXhWYWx1ZUZvclJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Rl
cFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGF5b3V0Q291bnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQU93bnMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzUG9wdXAgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FudmFzSGFzRmFs
bGJhY2tDb250ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQURyb3BwaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQURyYWdnaW5nIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QVJJQUdyYWJiZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2V0QVJJQUdyYWJiZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0Q2hpbGQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdENoaWxkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBy
ZXZpb3VzU2libGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpuZXh0U2libGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlz
dHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b2JzZXJ2YWJsZU9iamVjdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5rZWRVSUVs
ZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OnRpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmV4cG9zZXNUaXRsZVVJRWxlbWVudCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb3JyZXNwb25kaW5n
TGFiZWxGb3JDb250cm9sRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzY3JvbGxCYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJv
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6YWNjZXNzaWJpbGl0eVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnRpdGxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmhlbHBUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQVJJQVN0YXRpY1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nVmFsdWUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4dFVuZGVyRWxl
bWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp0ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnRleHRMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVk
QnlBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6ZXhwYW5kZWRUZXh0VmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
b2xvclZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmF4T2JqZWN0SUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jaG9yRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25FbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5kaW5n
Qm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2l6ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50UGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBw
b3J0c1BhdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2VsZWN0ZWRUZXh0UmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uU3RhcnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uRW5kIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVy
bCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6c2VsZWN0ZWRUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc0tleSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6d2lkZ2V0Rm9yQXR0YWNo
bWVudFZpZXcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0
UmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c2V0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6c2V0U2VsZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0U2VsZWN0ZWRSb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om1ha2VSYW5nZVZpc2libGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGVyZm9ybURlZmF1bHRBY3Rpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5jcmVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlY3JlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGls
ZHJlbkNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6dGV4dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWRkQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkSWdub3JlQXR0cmlidXRl
Um9sZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpjYW5IYXZlQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVu
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldE5l
ZWRzVG9VcGRhdGVTdWJ0cmVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Om5lZWRzVG9VcGRhdGVDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGV0YWNoZWRG
cm9tUGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoaWxkcmVuKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYkNoaWxk
cmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNo
b3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3RpdmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJs
ZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5k
c0ZvclJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bmV4dFZpc2libGVQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmV2aW91c1Zpc2libGVQb3NpdGlvbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNp
YmxlUG9zaXRpb25Gb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjppbmRleEZvclZpc2libGVQb3NpdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmRleCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lQnJl
YWtzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmRvQVhSYW5nZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdlRm9ySW5kZXggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFN0cmluZ0ZvclJhbmdl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRvQVhCb3VuZHNGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNl
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzdHJpbmdWYWx1ZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nUm9sZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bmFtZUZvck1TQUEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVzY3Jp
cHRpb25Gb3JNU0FBIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnJvbGVWYWx1ZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZFZhbHVlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdp
b25TdGF0dXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bGl2ZVJlZ2lvblJlbGV2YW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25BdG9taWMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCdXN5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNwZWFr
QXNQcm9wZXJ0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01hdGhFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZyYWN0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNlZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01h
dGhTdWJzY3JpcHRTdXBlcnNjcmlwdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVW5kZXJPdmVyIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFJv
b3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNYXRoU3F1YXJlUm9vdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE51bWJlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhPcGVyYXRv
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01hdGhGZW5jZU9wZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aElkZW50
aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNNYXRoVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVDZWxsIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11
bHRpc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFRva2VuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhNdWx0aXNjcmlw
dE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUmFkaWNhbmRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFJvb3RJbmRleE9iamVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoVW5kZXJPYmplY3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aE92ZXJPYmpl
Y3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0
aE51bWVyYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXRoRGVub21pbmF0b3JPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aEJhc2VPYmplY3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vw
ZXJzY3JpcHRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aEZlbmNlZE9wZW5TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aEZlbmNlZENsb3NlU3RyaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhM
aW5lVGhpY2tuZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQW5vbnltb3VzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhQcmVzY3JpcHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhQb3N0c2Ny
aXB0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0hpZGRlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNo
bWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhcklzSWdub3JlZEZy
b21QYXJlbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWE6OkFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dENyaXRlcmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uOjpBY2Nlc3NpYmlsaXR5
VGV4dE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVy
RWxlbWVudE1vZGU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGFpblRleHRSYW5nZTo6UGxhaW5UZXh0UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhaW5UZXh0UmFuZ2U6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb25SYW5nZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGE6OkFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWRGcm9tUGFyZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGE6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpheDo6bWF0Y2hlZEFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9u
R3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4p
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xp
ZGVyOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVy
OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNwaW5CdXR0b246OmluY3JlbWVudEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbjo6ZGVjcmVtZW50QnV0dG9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6cm93SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNl
bGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
OjpwYXJlbnRSb3cgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbjo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVh
ZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgaW5pdFdpdGhEYXRhOmFjY2Vz
c2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5VHJlZUFuY2VzdG9y
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmls
aXR5TGlzdEFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIF9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGFuZG1hcmtBbmNlc3Rvcl0pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRh
YmxlQW5jZXN0b3JdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
X2FjY2Vzc2liaWxpdHlJc0luVGFibGVDZWxsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5RmllbGRzZXRBbmNlc3Rvcl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eUZyYW1lQW5j
ZXN0b3JdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vz
c2liaWxpdHlUcmFpdHNGcm9tQW5jZXN0b3JzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIHRhYmxlQ2VsbFBhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciB0YWJsZVBhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VGl0bGVFbGVtZW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVt
ZW50c10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5RGF0ZXRpbWVWYWx1ZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q29udGFpbmVyXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGFpbFBhcmVudEZvclN1bW1hcnlP
YmplY3Q6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGFp
bFBhcmVudEZvck9iamVjdDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgdHJlZUl0ZW1QYXJlbnRGb3JPYmplY3Q6XSk6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0
cmluZ1NldFN0eWxlKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczphdHRyaWJ1dGVkOl0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U3VwcG9ydHNBUklBRXhwYW5k
ZWRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eUlzRXhwYW5kZWRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6c2V0
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hh
bmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6c2V0Um9vdE5vZGVJRCk6
IFJlbmFtZWQgc2V0Um9vdC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5v
ZGU6OkFYSXNvbGF0ZWRUcmVlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZU5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6Omlu
aXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
Tm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2Rl
OjpjaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OmZvY3Vz
ZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2Rl
OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZFRyZWVOb2RlOjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3Jl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRldGFjaFdy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YXNzb2NpYXRlSXNvbGF0ZWRU
cmVlTm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAo
YWRkQ2hpbGRUb0FycmF5KToKKyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgaW5pdFdpdGhBY2Nlc3NpYmlsaXR5
T2JqZWN0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Ug
YXR0YWNoOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Ug
ZGV0YWNoXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSB1
cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlPYmplY3RdKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGF4QmFja2luZ09iamVjdF0pOgorICAgICAgICAo
YWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZSBpc29sYXRlZFRyZWVOb2RlXSk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlOnNwZWxsQ2hlY2s6XSk6CisgICAgICAgIChjb252ZXJ0VG9WZWN0b3IpOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGlsZHJlblZlY3RvclNpemVdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2hpbGRyZW5WZWN0b3JB
cnJheV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIaXRUZXN0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRNZW51XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmdldFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpnZXRTZWxlY3RlZENoaWxkTm9kZXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
cm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisKIDIwMTktMTAtMjUg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRhYmFzZUNvbnRl
eHQgc2hvdWxkIG5vdCBwcmV2ZW50IGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGFh
ZTRkODYzOGI1Li5lZDAwNDhhOGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0yMjcsOSArMjI3LDkgQEAgQVhPYmplY3RDYWNoZTo6
fkFYT2JqZWN0Q2FjaGUoKQogICAgIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuc3RvcCgpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmplY3QgOiBtX29iamVjdHMudmFsdWVzKCkpIHsKLSAg
ICAgICAgZGV0YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOworICAgICAgICBkZXRhY2hXcmFwcGVyKCpvYmplY3QsIEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOwogICAgICAgICBvYmpl
Y3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsK
LSAgICAgICAgb2JqZWN0LT5zZXRBWE9iamVjdElEKDApOworICAgICAgICBvYmplY3QtPnNldE9i
amVjdElEKDApOwogICAgIH0KIH0KIApAQCAtMzM2LDE1ICszMzYsMTUgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KEhUTUxBcmVh
RWxlbWVudCogYXIKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhSZW5kZXJJbWFnZS0+
Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+
KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgaWYg
KGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpjaGlsZCkuYXJlYUVsZW1lbnQo
KSA9PSBhcmVhRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICB9
ICAgIAotICAgIAorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbms+KGNoaWxkLmdldCgpKTsKKyAgICB9CisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1l
bnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQVhP
YmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKIHsK
ICAgICBpZiAoIWdBY2Nlc3NpYmlsaXR5RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0zNTUsMTIgKzM1NSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hl
Ojpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogICAgIGlmIChpczxI
VE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJ
bWFnZU1hcFVJRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50
KSk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxO
b2RlKj4oZm9jdXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogb2JqID0gZm9jdXNlZERvY3VtZW50LT5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKGZvY3VzZWRFbGVtZW50ID8gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZvY3VzZWRFbGVt
ZW50KSA6IGZvY3VzZWREb2N1bWVudCk7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKG9iai0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpIHsK
LSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2
ZURlc2NlbmRhbnQoKSkKKyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkZXNj
ZW5kYW50ID0gb2JqLT5hY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICBvYmogPSBkZXNj
ZW5kYW50OwogICAgIH0KIApAQCAtNTYwLDEwICs1NjAsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBnZXRB
WElEKG5ld09iai5nZXQoKSk7CiAgICAgCi0gICAgbV93aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3
aWRnZXQsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
YXhPYmplY3RJRCgpLCBuZXdPYmopOyAgICAKKyAgICBtX3dpZGdldE9iamVjdE1hcHBpbmcuc2V0
KHdpZGdldCwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFw
cGVyKG5ld09iai5nZXQoKSk7CisgICAgYXR0YWNoV3JhcHBlcigqbmV3T2JqKTsKICAgICByZXR1
cm4gbmV3T2JqLmdldCgpOwogfQogCkBAIC02MDgsMTAgKzYwOCwxMCBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgZ2V0
QVhJRChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwg
bmV3T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVj
dElEKCksIG5ld09iaik7CisgICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2Jq
LT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3
T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQo
KSk7CisgICAgYXR0YWNoV3JhcHBlcigqbmV3T2JqKTsKICAgICBuZXdPYmotPnNldExhc3RLbm93
bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKTsKICAgICAv
LyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSB3aWxsIGNhdXNlIHRo
ZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAgICAgLy8gaXQgd2lsbCBk
aXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBsZWFkaW5nIHRvIGEgdXNl
LWFmdGVyLWZyZWUuCkBAIC02MzYsMTAgKzYzNiwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
WE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAgICAg
Z2V0QVhJRChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgbmV3T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2Jq
LT5heE9iamVjdElEKCksIG5ld09iaik7CisgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFw
cGVyKG5ld09iai5nZXQoKSk7CisgICAgYXR0YWNoV3JhcHBlcigqbmV3T2JqKTsKICAgICBuZXdP
YmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKTsKICAgICAvLyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSB3aWxsIGNhdXNlIHRoZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAg
ICAgLy8gaXQgd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBs
ZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCkBAIC03MDksOSArNzA5LDkgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9vYmplY3Rz
LnNldChvYmotPmF4T2JqZWN0SUQoKSwgb2JqKTsgICAgCisgICAgbV9vYmplY3RzLnNldChvYmot
Pm9iamVjdElEKCksIG9iaik7CiAgICAgb2JqLT5pbml0KCk7Ci0gICAgYXR0YWNoV3JhcHBlcihv
YmouZ2V0KCkpOworICAgIGF0dGFjaFdyYXBwZXIoKm9iaik7CiAgICAgcmV0dXJuIG9iai5nZXQo
KTsKIH0KIApAQCAtNzI0LDkgKzcyNCw5IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFY
SUQgYXhJRCkKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGV0YWNo
V3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVu
dERlc3Ryb3llZCk7CisgICAgZGV0YWNoV3JhcHBlcigqb2JqZWN0LCBBY2Nlc3NpYmlsaXR5RGV0
YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQpOwogICAgIG9iamVjdC0+ZGV0YWNoKEFjY2Vz
c2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCwgdGhpcyk7Ci0gICAgb2Jq
ZWN0LT5zZXRBWE9iamVjdElEKDApOworICAgIG9iamVjdC0+c2V0T2JqZWN0SUQoMCk7CiAKICAg
ICBtX2lkc0luVXNlLnJlbW92ZShheElEKTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09M
QVRFRF9UUkVFKQpAQCAtNzk5LDcgKzc5OSw3IEBAIEFYSUQgQVhPYmplY3RDYWNoZTo6cGxhdGZv
cm1HZW5lcmF0ZUFYSUQoKSBjb25zdAogQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iaikKIHsKICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeS1hc3NpZ25l
ZCBJRAotICAgIEFYSUQgb2JqSUQgPSBvYmotPmF4T2JqZWN0SUQoKTsKKyAgICBBWElEIG9iaklE
ID0gb2JqLT5vYmplY3RJRCgpOwogICAgIGlmIChvYmpJRCkgewogICAgICAgICBBU1NFUlQobV9p
ZHNJblVzZS5jb250YWlucyhvYmpJRCkpOwogICAgICAgICByZXR1cm4gb2JqSUQ7CkBAIC04MDgs
NyArODA4LDcgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iaikKICAgICBvYmpJRCA9IHBsYXRmb3JtR2VuZXJhdGVBWElEKCk7CiAKICAgICBtX2lk
c0luVXNlLmFkZChvYmpJRCk7Ci0gICAgb2JqLT5zZXRBWE9iamVjdElEKG9iaklEKTsKKyAgICBv
YmotPnNldE9iamVjdElEKG9iaklEKTsKICAgICAKICAgICByZXR1cm4gb2JqSUQ7CiB9CkBAIC04
ODEsMTIgKzg4MSwxMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJPYmplY3QqIG5ld0NoaQogICAgIGNoaWxkcmVuQ2hh
bmdlZChnZXQocmVuZGVyZXIpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNo
YW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQordm9pZCBBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iaikKIHsKICAgICBpZiAoIW9i
aikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3Qu
YWRkKG9iaik7CisgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3QuYWRkKG9iaik7CiB9
CiAgICAgCiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkK
QEAgLTg5OSw4ICs4OTksOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RU
aW1lckZpcmVkKCkKICAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG1fbm90aWZpY2F0
aW9uc1RvUG9zdCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0
aW9ucykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBub3RlLmZpcnN0Lmdl
dCgpOwotICAgICAgICBpZiAoIW9iai0+YXhPYmplY3RJRCgpKQorICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsKKyAgICAgICAgaWYgKCFvYmot
Pm9iamVjdElEKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoIW9iai0+
YXhPYmplY3RDYWNoZSgpKQpAQCAtOTg4LDcgKzk4OCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdE5vdGlmaWNhdGlvbihOb2RlKiBub2RlLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24s
IFBvCiAgICAgcG9zdE5vdGlmaWNhdGlvbihvYmplY3QuZ2V0KCksICZub2RlLT5kb2N1bWVudCgp
LCBub3RpZmljYXRpb24sIHBvc3RUYXJnZXQsIHBvc3RUeXBlKTsKIH0KIAotdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgRG9j
dW1lbnQqIGRvY3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQg
cG9zdFRhcmdldCwgUG9zdFR5cGUgcG9zdFR5cGUpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RO
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iamVjdCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9zdFRhcmdl
dCwgUG9zdFR5cGUgcG9zdFR5cGUpCiB7CiAgICAgc3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZXMoKTsKIApAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpz
ZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRN
YXIKICAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7
CiAgICAgfQogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2Jq
ZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgp
OwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRh
LmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4dE1hcmtl
ckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwpA
QCAtMjIzMCw3ICsyMjMwLDcgQEAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2Fj
aGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFYKICAgICBUZXh0TWFy
a2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0
ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwogICAgIAotICAgIHRl
eHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFy
a2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRh
Lm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9IHZp
c2libGVQb3MuYWZmaW5pdHkoKTsKQEAgLTIyNjIsNyArMjI2Miw3IEBAIE9wdGlvbmFsPFRleHRN
YXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25J
blRleHRDb250CiAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CiAgICAgbWVtc2V0
KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1hcmtl
ckRhdGEpKTsKICAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5heE9i
amVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+b2JqZWN0SUQo
KTsKICAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRleHRDb250cm9sOwogCiAgICAgY2FjaGUt
PnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwpAQCAtMjcwNyw3ICsyNzA3LDcgQEAgSW50UmVj
dCBBWE9iamVjdENhY2hlOjphYnNvbHV0ZUNhcmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KGNv
bnN0IENoYXJhY3Rlck9mZnMKICAgICByZXR1cm4gYWJzb2x1dGVCb3VuZHNGb3JMb2NhbENhcmV0
UmVjdChjYXJldFBhaW50ZXIsIGxvY2FsUmVjdCk7CiB9CiAKLUNoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JQb2ludChjb25zdCBJbnRQb2ludCAmcG9pbnQs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hl
OjpjaGFyYWN0ZXJPZmZzZXRGb3JQb2ludChjb25zdCBJbnRQb2ludCAmcG9pbnQsIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBvYmopCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBD
aGFyYWN0ZXJPZmZzZXQoKTsKQEAgLTI3NzMsNyArMjc3Myw3IEBAIENoYXJhY3Rlck9mZnNldCBB
WE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mTGluZShjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oc3Rh
cnRMaW5lKTsKIH0KIAotQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9m
ZnNldEZvckluZGV4KGludCBpbmRleCwgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQor
Q2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvckluZGV4KGlu
dCBpbmRleCwgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iaikKIHsKICAgICBpZiAo
IW9iaikKICAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOwpAQCAtMjgwNyw3ICsyODA3
LDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvcklu
ZGV4KGludCBpbmRleCwgY29uc3QgQWNjZXNzaWIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1p
bnQgQVhPYmplY3RDYWNoZTo6aW5kZXhGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK2ludCBB
WE9iamVjdENhY2hlOjppbmRleEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG9iaikKIHsKICAg
ICAvLyBDcmVhdGUgYSBjb2xsYXBzZWQgcmFuZ2Ugc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBWaXNp
YmxlUG9zaXRpb24gZnJvbSBpdC4KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gcmFuZ2VGb3JV
bm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyT2Zmc2V0
KTsKQEAgLTI5MDcsOSArMjkwNyw5IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUoKQogICAgIH0KICAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTm9k
ZUxpc3QuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2RlZmVycmVkQ2hpbGRy
ZWRDaGFuZ2VkTGlzdCkKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9kZWZlcnJlZENoaWxkcmVu
Q2hhbmdlZExpc3QpCiAgICAgICAgIGNoaWxkLT5jaGlsZHJlbkNoYW5nZWQoKTsKLSAgICBtX2Rl
ZmVycmVkQ2hpbGRyZWRDaGFuZ2VkTGlzdC5jbGVhcigpOworICAgIG1fZGVmZXJyZWRDaGlsZHJl
bkNoYW5nZWRMaXN0LmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBtX2RlZmVycmVk
VGV4dENoYW5nZWRMaXN0KQogICAgICAgICB0ZXh0Q2hhbmdlZChub2RlKTsKQEAgLTI5NDEsMjUg
KzI5NDEsMjUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0
ZSgpCiAKICAgICBwbGF0Zm9ybVBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CiB9Ci0gICAg
CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotUmVmPEFYSXNvbGF0
ZWRUcmVlTm9kZT4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJl
ZUhpZXJhcmNoeShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIEFYSUQgcGFyZW50SUQsIEFY
SXNvbGF0ZWRUcmVlJiB0cmVlLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRUcmVlTm9kZT4+JiBub2Rl
Q2hhbmdlcykKK1JlZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlz
b2xhdGVkQWNjZXNzaWJpbGl0eVRyZWVIaWVyYXJjaHkoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Um
IG9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQVhJc29sYXRlZFRyZWUmIHRyZWUsIFZlY3RvcjxSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4mIG5vZGVDaGFuZ2VzKQogewogICAgIGF1dG8gaXNvbGF0ZWRU
cmVlTm9kZSA9IEFYSXNvbGF0ZWRUcmVlTm9kZTo6Y3JlYXRlKG9iamVjdCk7CiAgICAgbm9kZUNo
YW5nZXMuYXBwZW5kKGlzb2xhdGVkVHJlZU5vZGUuY29weVJlZigpKTsKIAogICAgIGlzb2xhdGVk
VHJlZU5vZGUtPnNldFRyZWVJZGVudGlmaWVyKHRyZWUudHJlZUlkZW50aWZpZXIoKSk7CiAgICAg
aXNvbGF0ZWRUcmVlTm9kZS0+c2V0UGFyZW50KHBhcmVudElEKTsKLSAgICBhc3NvY2lhdGVJc29s
YXRlZFRyZWVOb2RlKG9iamVjdCwgaXNvbGF0ZWRUcmVlTm9kZSwgdHJlZS50cmVlSWRlbnRpZmll
cigpKTsKKyAgICBhdHRhY2hXcmFwcGVyKGlzb2xhdGVkVHJlZU5vZGUpOwogCiAgICAgZm9yIChh
dXRvIGNoaWxkIDogb2JqZWN0LmNoaWxkcmVuKCkpIHsKLSAgICAgICAgYXV0byBzdGF0aWNDaGls
ZCA9IGNyZWF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0eVRyZWVIaWVyYXJjaHkoKmNoaWxkLCBpc29s
YXRlZFRyZWVOb2RlLT5pZGVudGlmaWVyKCksIHRyZWUsIG5vZGVDaGFuZ2VzKTsKLSAgICAgICAg
aXNvbGF0ZWRUcmVlTm9kZS0+YXBwZW5kQ2hpbGQoc3RhdGljQ2hpbGQtPmlkZW50aWZpZXIoKSk7
CisgICAgICAgIGF1dG8gc3RhdGljQ2hpbGQgPSBjcmVhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlU
cmVlSGllcmFyY2h5KCpjaGlsZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgdHJlZSwg
bm9kZUNoYW5nZXMpOworICAgICAgICBpc29sYXRlZFRyZWVOb2RlLT5hcHBlbmRDaGlsZChzdGF0
aWNDaGlsZC0+b2JqZWN0SUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGlzb2xhdGVkVHJlZU5v
ZGU7CiB9Ci0gICAgCisKIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhPYmplY3RDYWNoZTo6Z2VuZXJh
dGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC0yOTcwLDcgKzI5NzAsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFY
T2JqZWN0Q2FjaGU6OmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJlZSgpCiAgICAgCiAg
ICAgVmVjdG9yPFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+PiBub2RlQ2hhbmdlczsKICAgICBhdXRv
IHJvb3QgPSBjcmVhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlSGllcmFyY2h5KCpyb290T2Jq
ZWN0KCksIEludmFsaWRBWElELCAqdHJlZSwgbm9kZUNoYW5nZXMpOwotICAgIHRyZWUtPnNldFJv
b3ROb2RlSUQocm9vdC0+aWRlbnRpZmllcigpKTsKKyAgICB0cmVlLT5zZXRSb290KHJvb3QpOwog
ICAgIHRyZWUtPmFwcGVuZE5vZGVDaGFuZ2VzKG5vZGVDaGFuZ2VzKTsKIAogICAgIHJldHVybiBt
YWtlUmVmKCp0cmVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmgKaW5kZXggZTUyMjAzYmViMTQuLjQ2NTI1MzBkMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFYT2JqZWN0
Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFn
ZShjb25zdCBQYWdlKik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgdGhl
IGVudGlyZSBkb2N1bWVudC4KICAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiByb290T2JqZWN0KCk7CkBAIC0xNzMsMTEgKzE3MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmUoV2lkZ2V0Kik7CiAgICAgdm9pZCByZW1vdmUoQVhJRCk7CiAKLSAgICB2b2lkIGRldGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZSk7Ci0gICAgdm9pZCBhdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSYsIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSk7CisgICAgdm9pZCBhdHRhY2hX
cmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJik7CisKICAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChOb2RlKiwgTm9kZSogbmV3Q2hpbGQgPSBudWxscHRyKTsKICAgICB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqIG5ld0NoaWxkID0gbnVsbHB0cik7
Ci0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKik7CiAgICAgdm9pZCBj
aGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFz
IGp1c3QgYmVlbiBhdHRhY2hlZCwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdo
dCBzdWJjbGFzcyBvZiBBY2Nlc3NpYmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVB
ZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqKTsKQEAgLTE5NCw4ICsxOTUsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8QVhJc29sYXRlZFRyZWU+IGdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJlZSgp
OwogCi0gICAgdm9pZCBhc3NvY2lhdGVJc29sYXRlZFRyZWVOb2RlKEFjY2Vzc2liaWxpdHlPYmpl
Y3QmLCBBWElzb2xhdGVkVHJlZU5vZGUmLCBBWElzb2xhdGVkVHJlZUlEKTsKLSAgICBSZWY8QVhJ
c29sYXRlZFRyZWVOb2RlPiBjcmVhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlSGllcmFyY2h5
KEFjY2Vzc2liaWxpdHlPYmplY3QmLCBBWElELCBBWElzb2xhdGVkVHJlZSYsIFZlY3RvcjxSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4mKTsKKyAgICBSZWY8QVhJc29sYXRlZFRyZWVOb2RlPiBjcmVh
dGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlSGllcmFyY2h5KEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlJiwgQVhJRCwgQVhJc29sYXRlZFRyZWUmLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRUcmVlTm9k
ZT4+Jik7CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKQEAgLTI1Nyw3
ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzU2VudGVuY2VT
dGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAv
LyBCb3VuZHMKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmLCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgQ2hhcmFjdGVyT2Zmc2V0
IGNoYXJhY3Rlck9mZnNldEZvclBvaW50KGNvbnN0IEludFBvaW50JiwgQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqKTsKICAgICBJbnRSZWN0IGFic29sdXRlQ2FyZXRCb3VuZHNGb3JDaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldEZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgYm9vbCk7CiAgICAgCkBAIC0yNjYs
OCArMjY2LDggQEAgcHVibGljOgogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENoYXJhY3Rlck9m
ZnNldE9mTGluZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAvLyBJbmRleAot
ICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICBpbnQgaW5kZXhGb3JDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiwgQWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIENoYXJhY3Rl
ck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKik7CisgICAgaW50IGluZGV4Rm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKik7CiAKICAgICBlbnVtIEFYTm90
aWZpY2F0aW9uIHsKICAgICAgICAgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKQEAgLTMwNyw3
ICszMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oUmVuZGVyT2Jq
ZWN0KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlw
ZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKE5vZGUq
LCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0g
UG9zdEFzeW5jaHJvbm91c2x5KTsKLSAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJn
ZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CisgICAgdm9pZCBwb3N0
Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiwgRG9jdW1lbnQqLCBBWE5vdGlm
aWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5j
aHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dJbnRlbnQoY29uc3Qg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1Niw3ICszNTYsNyBAQCBwdWJsaWM6CiAg
ICAgCiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOworICAgIHZvaWQgcG9zdFBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiwgQVhOb3RpZmljYXRpb24pOwog
ICAgIHZvaWQgcGxhdGZvcm1IYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGRG
b2N1c2VkTm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVBl
cmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CkBAIC00NTgsNyArNDU4LDcgQEAgcHJpdmF0ZToK
ICAgICBIYXNoU2V0PEFYSUQ+IG1faWRzSW5Vc2U7CiAKICAgICBUaW1lciBtX25vdGlmaWNhdGlv
blBvc3RUaW1lcjsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiwgQVhOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7CisgICAgVmVjdG9y
PHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+LCBBWE5vdGlmaWNhdGlv
bj4+IG1fbm90aWZpY2F0aW9uc1RvUG9zdDsKIAogICAgIFRpbWVyIG1fcGFzc3dvcmROb3RpZmlj
YXRpb25Qb3N0VGltZXI7CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBwcml2YXRlOgogICAgIExpc3RI
YXNoU2V0PEVsZW1lbnQqPiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdDsKICAgICBM
aXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFz
aFNldDxFbGVtZW50Kj4gbV9kZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKLSAg
ICBMaXN0SGFzaFNldDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGls
ZHJlZENoYW5nZWRMaXN0OworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZT4+IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0
PE5vZGUqPiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTm9kZUxpc3Q7CiAgICAgSGFzaE1hcDxF
bGVtZW50KiwgU3RyaW5nPiBtX2RlZmVycmVkVGV4dEZvcm1Db250cm9sVmFsdWU7CiAgICAgSGFz
aE1hcDxFbGVtZW50KiwgUXVhbGlmaWVkTmFtZT4gbV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcAppbmRleCBkNzMwOTg4Zjg5Ny4uZDU5ZTU3NGM3YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gQWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVuZGVyZXIpKTsKIH0KIAotYm9vbCBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNoaWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1
bnNpZ25lZCYgY29sdW1uQ291bnQpCitib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFi
bGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGNoaWxkLCBIYXNoU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpCiB7
CiAgICAgaWYgKCFjaGlsZCB8fCAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKmNoaWxkKSAm
JiAhaXM8QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93PigqY2hpbGQpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODUsNyArODUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6aXNN
dWx0aVNlbGVjdGFibGUoKSBjb25zdAogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoYXJpYU11bHRpU2VsZWN0YWJsZSwgImZhbHNlIik7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHJv
d0NoaWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNp
Z25lZCYgY29sdW1uQ291bnQpCit2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkUm93RGVz
Y2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNz
aWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsK
ICAgICBpZiAoIXJvd0NoaWxkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAppbmRleCBiOGU3YmFm
NGE1Yi4uMDUxZjEyMjZkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQXJpYVRhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZvaWQgYWRkUm93RGVzY2Vu
ZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKLSAgICBib29sIGFkZFRhYmxl
Q2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmpl
Y3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOworICAgIHZvaWQgYWRk
Um93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSosIEhhc2hTZXQ8QWNjZXNzaWJp
bGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CisgICAg
Ym9vbCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSosIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5k
ZXggZDAyM2Y4Y2U1N2YuLmU5YzI5OTllODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gQVJJQSBncmlkY2VsbHMgbWF5IGhhdmUgbXVs
dGlwbGUgbGV2ZWxzIG9mIHVuaWdub3JlZCBhbmNlc3RvcnMgdGhhdCBhcmUgbm90IHRoZSBwYXJl
bnQgdGFibGUsCiAgICAgLy8gaW5jbHVkaW5nIHJvd3MgYW5kIGludGVyYWN0aXZlIHJvd2dyb3Vw
cy4gSW4gYWRkaXRpb24sIHBvb3JseS1mb3JtZWQgZ3JpZHMgbWF5IGNvbnRhaW4gZWxlbWVudHMK
ICAgICAvLyB3aGljaCBwYXNzIHRoZSB0ZXN0cyBmb3IgaW5jbHVzaW9uLgotICAgIGZvciAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHBhcmVu
dDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgeworICAgIGZvciAo
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKICAg
ICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJl
bnQpOwogICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgCiB2b2lkIEFjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4mIHJvd1JhbmdlKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4
KSBjb24KICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFuZ2Uuc2Vj
b25kKSwgMSk7CiAgICAgfQogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm4gMTsKICAgICAKQEAgLTEzNCw3ICsxMzQsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXgodW5zaWduZWQgcm93SW5kZXgpIGNv
bgogCiB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKSBjb25zdAogewotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAK
aW5kZXggZjI5NjQ2N2NhNGUuLjIxZDg1MjVlMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRSb3dz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAgYXV0byYgYWxsUm93cyA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkucm93cygpOwogICAgIGludCBy
b3dDb3VudCA9IGFsbFJvd3Muc2l6ZSgpOwogICAgIGZvciAoaW50IGsgPSBpbmRleCArIDE7IGsg
PCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IGFs
bFJvd3Nba10uZ2V0KCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiByb3cgPSBh
bGxSb3dzW2tdLmdldCgpOwogICAgICAgICAvLyBTdG9wIGF0IHRoZSBmaXJzdCByb3cgdGhhdCBk
b2Vzbid0IG1hdGNoIHRoZSBjb3JyZWN0IGxldmVsLgogICAgICAgICBpZiAocm93LT5oaWVyYXJj
aGljYWxMZXZlbCgpICE9IGxldmVsICsgMSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIsNyAr
ODIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIH0KIH0KICAgICAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBj
b25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6
ZGlzY2xvc2VkQnlSb3coKSBjb25zdAogewogICAgIC8vIFRoZSByb3cgdGhhdCBkaXNjbG9zZXMg
dGhpcyBvbmUgaXMgdGhlIHJvdyBpbiB0aGUgdGFibGUKICAgICAvLyB0aGF0IGlzIGFyaWEtbGV2
ZWwgc3VidHJhY3QgMSBmcm9tIHRoaXMgcm93LgpAQCAtMTAzLDcgKzEwMyw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBj
b25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBmb3IgKGludCBrID0gaW5k
ZXggLSAxOyBrID49IDA7IC0taykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cg
PSBhbGxSb3dzW2tdLmdldCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcm93
ID0gYWxsUm93c1trXS5nZXQoKTsKICAgICAgICAgaWYgKHJvdy0+aGllcmFyY2hpY2FsTGV2ZWwo
KSA9PSBsZXZlbCAtIDEpCiAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgIH0KQEAgLTEzMyw3
ICsxMzMsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6
cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVjdCgpCitBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmpl
Y3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
Um93SGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKaW5kZXggN2JhNzRmNGRkMjMuLmViMjg1MWM1NGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmgKQEAgLTQwLDkgKzQwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlBUklBR3JpZFJvdygpOwogICAgIAogICAgIHZvaWQgZGlzY2xvc2VkUm93cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBk
aXNjbG9zZWRCeVJvdygpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkaXNj
bG9zZWRCeVJvdygpIGNvbnN0OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBoZWFkZXJP
YmplY3QoKSBvdmVycmlkZTsKICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJp
bGl0eUFSSUFHcmlkUm93KFJlbmRlck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCmluZGV4IGI0NWZjNjAwMjRhLi4x
ZTQyZjBmYTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGFiZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxhYmVsLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eUxhYmVsOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0
eSA9IGZhbHNlOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlMYWJlbDo6aW5zZXJ0Q2hpbGQoQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJp
bGl0eUxhYmVsOjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqZWN0LCB1
bnNpZ25lZCBpbmRleCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnNlcnRD
aGlsZChvYmplY3QsIGluZGV4KTsKICAgICBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMYWJlbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGFiZWwuaAppbmRleCBiMTNhZjJkN2Q5Mi4uOWY5YzI2NjZhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJD
aGlsZHJlbigpIGZpbmFsOwotICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVj
dCosIHVuc2lnbmVkKSBmaW5hbDsKKyAgICB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiwgdW5zaWduZWQpIGZpbmFsOwogICAgIGJvb2wgbV9jb250YWluc09ubHlTdGF0
aWNUZXh0RGlydHkgOiAxOwogICAgIGJvb2wgbV9jb250YWluc09ubHlTdGF0aWNUZXh0IDogMTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3guY3BwCmluZGV4IDA3YWVkYzk3MTQ2Li4xODU2MDU0MGY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlz
dEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTAogICAgIHJldHVybiAm
bGlzdEJveE9iamVjdDsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlMaXN0Qm94
OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAogewogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxlbWVudCBtZXRob2RzIGZvciBy
ZXR1cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CiAgICAgLy8gaWdub3JlIG9wdGdy
b3VwIGVsZW1lbnRzLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
CiAgICAgCiAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CiAg
ICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbiA9IG51bGxwdHI7Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGxpc3RCb3hPcHRpb24gPSBudWxscHRyOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBkb3du
Y2FzdDxSZW5kZXJMaXN0Qm94PigqbV9yZW5kZXJlcikuaXRlbUJvdW5kaW5nQm94UmVjdChwYXJl
bnRSZWN0LmxvY2F0aW9uKCksIGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCmluZGV4IDQ3YTM5Y2U5NWE1Li44MmYwNjBhMWM1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3guaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5TZXRTZWxl
Y3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZWxl
Y3RlZENoaWxkcmVuKGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZWxlY3RlZENo
aWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwog
ICAgIApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc05hdGl2ZUxpc3RC
b3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQqKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmNwcAppbmRleCA3YWJmZmFlNGZhMS4uMWUzNTNkMzIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6aXNNYXRoVGFibGVDZWxsKCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlw
ZSB0eXBlKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWMK
IAogYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmpl
Y3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKIHsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNNYXRoTXVsdGlzY3JpcHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFkaWNhbmRPYmplY3QoKQorQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFk
aWNhbmRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoUm9vdCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTI1MCw3ICsyNTAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKICAgICByZXR1cm4gY2hp
bGRyZW5bMF0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoUm9vdEluZGV4T2JqZWN0KCkKK0FjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCgpCiB7
CiAgICAgaWYgKCFpc01hdGhSb290KCkgfHwgaXNNYXRoU3F1YXJlUm9vdCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI2Miw3ICsyNjIsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCgpCiAgICAgcmV0
dXJuIGNoaWxkcmVuWzFdLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCgpCitBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmpl
Y3QoKQogewogICAgIGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yNzQsNyArMjc0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJl
blswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCiB7
CiAgICAgaWYgKCFpc01hdGhGcmFjdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTI4Niw3ICsyODYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKICAgICByZXR1cm4gY2hpbGRyZW5bMV0u
Z2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QoKQorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoVW5kZXJPYmplY3QoKQogewogICAgIGlmICghaXNNYXRo
VW5kZXJPdmVyKCkgfHwgIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDEs
NyArMzAxLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhVbmRlck9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgp
CitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1h
dGhPdmVyT2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFVuZGVyT3ZlcigpIHx8ICFub2RlKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzE4LDcgKzMxOCw3IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCgpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhCYXNlT2JqZWN0KCkKIHsKICAgICBp
ZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgJiYgIWlzTWF0aFVuZGVyT3ZlcigpICYm
ICFpc01hdGhNdWx0aXNjcmlwdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMzMSw3
ICszMzEsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6bWF0aEJhc2VPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVj
dCgpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhTdWJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJz
Y3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Niw3ICsz
NDYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFN1YnNjcmlwdE9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3VwZXJzY3JpcHRP
YmplY3QoKQorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoU3VwZXJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQuaAppbmRleCA1ODBiODU5Y2JjMS4uNjQ3OTUwMTcyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmgKQEAgLTc3LDIzICs3NywyMyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNNYXRoTXVsdGlz
Y3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgLy8gR2VuZXJpYyBjb21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBSb290IGNvbXBv
bmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3Zl
cnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoUmFkaWNhbmRPYmplY3Qo
KSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFJvb3RJbmRleE9i
amVjdCgpIG92ZXJyaWRlOwogCiAgICAgLy8gRnJhY3Rpb24gY29tcG9uZW50cy4KLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdWJzY3JpcHQvc3Vw
ZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2Ny
aXB0T2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVy
c2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1h
dGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGZW5jZWQgY29t
cG9uZW50cy4KICAgICBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuaAppbmRleCBjOTg1ZmRkZDNkYi4uZjNhZDZkOTZlMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGhl
bHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBj
b25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApp
bmRleCBlZjEzNzdiZjQ2Yy4uYTJjYjUxN2FmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxkcmVuKCkKIAogICAgIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqbGlzdCkuc2V0UGFyZW50KHRoaXMpOwog
ICAgIGlmIChsaXN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKLSAgICAgICAgY2FjaGUt
PnJlbW92ZShsaXN0LT5heE9iamVjdElEKCkpOworICAgICAgICBjYWNoZS0+cmVtb3ZlKGxpc3Qt
Pm9iamVjdElEKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwCmluZGV4IGVlOTYxYjVjZjVjLi45ZmU1NDhiNTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAKQEAgLTExMiwxMCArMTEyLDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6
OmNoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVj
dENhY2hlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IG1fY2hpbGRyZW4uc2l6ZSgpOyBpID4gMCA7
IC0taSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCA9IG1fY2hpbGRyZW5b
aSAtIDFdLmdldCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogY2hpbGQgPSBt
X2NoaWxkcmVuW2kgLSAxXS5nZXQoKTsKICAgICAgICAgaWYgKGNoaWxkLT5hY3Rpb25FbGVtZW50
KCkgJiYgIWNoaWxkLT5hY3Rpb25FbGVtZW50KCktPmluUmVuZGVyZWREb2N1bWVudCgpKSB7CiAg
ICAgICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVBhcmVudCgpOwotICAgICAgICAgICAgY2FjaGUt
PnJlbW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZW1vdmUo
Y2hpbGQtPm9iamVjdElEKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMwLDcgKzEz
MCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9w
dGlvbihpbnQgb3B0aW9uSW5kZXgpCiAgICAgQVNTRVJUX0FSRyhvcHRpb25JbmRleCwgb3B0aW9u
SW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2hpbGRyZW4uc2l6ZSgpKSk7CiAKICAgICBBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gY2hpbGQgPSBtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKTsKKyAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+IGNoaWxkID0gbV9jaGlsZHJlbltvcHRpb25J
bmRleF0uZ2V0KCk7CiAKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQoKSwg
ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFy
Z2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwogICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0
aW9uKGNoaWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRl
bVNlbGVjdGVkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCmluZGV4IGEyZDMyN2Y4Y2YxLi43ZTM4NzAxMGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAg
LTkxMiw3ICs5MTIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwKCkg
Y29uc3QKICAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgfHwgcm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25UZXh0R3JvdXA7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKK0FjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCiB7CiAg
ICAgaWYgKCFpc1JhZGlvR3JvdXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MjUs
NyArOTI1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnNlbGVjdGVkUmFkaW9CdXR0b24oKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKCkK
K0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0
ZWRUYWJJdGVtKCkKIHsKICAgICBpZiAoIWlzVGFiTGlzdCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmhlbHBUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikgY29uCiAgICAg
ICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgewogICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0ZpZWxkc2V0KCkgJiYgIW9iamVjdC5h
cmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKS5pc0VtcHR5KCk7CiAgICAgICAgIH07Ci0gICAgICAg
IGlmIChjb25zdCBhdXRvKiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFy
ZW50KCp0aGlzLCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKKyAgICAgICAgaWYgKGNvbnN0
IGF1dG8qIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4o
KnRoaXMsIGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVuYykpKQogICAgICAgICAgICAgdGV4dE9yZGVy
LmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChwYXJlbnQtPmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0
ZSgpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogICAgIH0KIApAQCAtMTc3
MCw3ICsxNzcwLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJF
bGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW8KICAgICBpZiAoaXM8VGV4dD4o
bm9kZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxUZXh0Pigqbm9kZSkud2hvbGVUZXh0KCk7
CiAKLSAgICBib29sIGlzQXJpYVZpc2libGUgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
KSB7CisgICAgYm9vbCBpc0FyaWFWaXNpYmxlID0gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCkgewogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
b2JqZWN0LmdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAiZmFsc2UiKTsKICAgICB9KSAh
PSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKaW5kZXggYTg2N2MwY2YwYWMuLmYwYzU2YzYxOWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oCkBAIC0xMDEsOCArMTAxLDggQEAgcHVibGljOgogICAgIGZsb2F0IG1pblZh
bHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBzdGVwVmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRS
YWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVk
VGFiSXRlbSgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzZWxlY3Rl
ZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNl
bGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBj
aGVja2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgaGll
cmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGU4YWE2OWJlYzE3
Li43NjRlNDAxOGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0RldGFjaGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1ib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
KiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXpl
X3QgaW5kZXgpCiB7CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsK
ICAgICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBu
b24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0LgpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4
KEFjY2Vzc2liaWxpdHlPCiAgICAgfQogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQorYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogYXhPYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3Jp
dGVyaWEpCiB7CiAgICAgaWYgKCFheE9iamVjdCB8fCAhY3JpdGVyaWEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI3Niw3ICsyNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAg
c2l6ZV90IGxlbmd0aCA9IGNyaXRlcmlhLT5zZWFyY2hLZXlzLnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChpc0FjY2Vzc2liaWxp
dHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoYXhPYmplY3QsIGNyaXRlcmlhLCBpKSkgewotICAg
ICAgICAgICAgaWYgKGNyaXRlcmlhLT52aXNpYmxlT25seSAmJiAhYXhPYmplY3QtPmlzT25zY3Jl
ZW4oKSkKKyAgICAgICAgICAgIGlmIChjcml0ZXJpYS0+dmlzaWJsZU9ubHkgJiYgIWF4T2JqZWN0
LT5pc09uU2NyZWVuKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI4NCwxNSArMjg0LDE1IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNz
aWJpbGl0eU9iamVjdCoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQorYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqIGNyaXRlcmlhKQogewogICAgIGlmICghYXhPYmplY3QgfHwgIWNyaXRlcmlhKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIGF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5
T2JqZWN0Q29udGFpbnNUZXh0KCZjcml0ZXJpYS0+c2VhcmNoVGV4dCk7CisgICAgcmV0dXJuIGF4
T2JqZWN0LT5jb250YWluc1RleHQoJmNyaXRlcmlhLT5zZWFyY2hUZXh0KTsKIH0KIAotYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmlu
ZyogdGV4dCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29udGFpbnNUZXh0KFN0
cmluZyogdGV4dCkgY29uc3QKIHsKICAgICAvLyBJZiB0ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2Ug
cmV0dXJuIHRydWUuCiAgICAgcmV0dXJuICF0ZXh0CkBAIC01MjIsMTEgKzUyMiwxMSBAQCB1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2ZWwoKSBjb25zdAogICAgIHJl
dHVybiBsZXZlbDsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVj
dDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdAogewot
ICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vz
c2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gIW9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25z
dApAQCAtNjIwLDEyICs2MjAsMTIgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3Np
YmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgV1RGOjoKIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkgY29uc3QKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBh
cmVudCgqdGhpcywgZmFsc2UsIFsmcm9sZV0gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+KCp0aGlzLCBmYWxzZSwgWyZyb2xlXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gcm9sZTsKICAgICB9
KSAhPSBudWxscHRyOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHRzKQorc3RhdGljIHZvaWQgYXBwZW5kQWNjZXNz
aWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqZWN0LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAg
Ly8gRmluZCB0aGUgbmV4dCBkZXNjZW5kYW50IG9mIHRoaXMgYXR0YWNobWVudCBvYmplY3Qgc28g
c2VhcmNoIGNhbiBjb250aW51ZSB0aHJvdWdoIGZyYW1lcy4KICAgICBpZiAob2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkgewpAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEFjY2Vz
c2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5
CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNp
Z25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWNo
aWxkKQogICAgICAgICByZXR1cm47CkBAIC02ODQsMTIgKzY4NCwxMiBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNp
Z25lZCBpbmRleAogICAgIGNoaWxkLT5jbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCk7CiB9
CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSogY2hpbGQpCiB7CiAgICAgaW5zZXJ0Q2hpbGQoY2hpbGQsIG1fY2hp
bGRyZW4uc2l6ZSgpKTsKIH0KICAgICAKLXN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJh
eShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiByZXN1bHRzKQorc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0Fy
cmF5KEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogc3RhcnRPYmplY3QsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKIHsKICAgICAvLyBBIHRhYmxlJ3Mg
Y2hpbGRyZW4gaW5jbHVkZXMgZWxlbWVudHMgd2hvc2Ugb3duIGNoaWxkcmVuIGFyZSBhbHNvIHRo
ZSB0YWJsZSdzIGNoaWxkcmVuIChkdWUgdG8gdGhlIHdheSB0aGUgTWFjIGV4cG9zZXMgdGFibGVz
KS4KICAgICAvLyBUaGUgcm93cyBmcm9tIHRoZSB0YWJsZSBzaG91bGQgYmUgcXVlcmllZCwgc2lu
Y2UgdGhvc2UgYXJlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0aGUgdGFibGUsIGFuZCB0aGV5IGNv
bnRhaW4gY29udGVudC4KQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGls
ZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwg
QQogCiAgICAgLy8gSWYgdGhlIHN0YXJ0T2JqZWN0IGlzIGlnbm9yZWQsIHdlIHNob3VsZCB1c2Ug
YW4gYWNjZXNzaWJsZSBzaWJsaW5nIGFzIGEgc3RhcnQgZWxlbWVudCBpbnN0ZWFkLgogICAgIGlm
IChzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpICYm
IHN0YXJ0T2JqZWN0LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChvYmplY3QpKSB7Ci0gICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmpl
Y3QoKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudE9iamVjdCA9IHN0
YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKICAgICAgICAgLy8gR28gdXAgdGhlIHBhcmVudCBj
aGFpbiB0byBmaW5kIHRoZSBoaWdoZXN0IGFuY2VzdG9yIHRoYXQncyBhbHNvIGJlaW5nIGlnbm9y
ZWQuCiAgICAgICAgIHdoaWxlIChwYXJlbnRPYmplY3QgJiYgcGFyZW50T2JqZWN0LT5hY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAgICAgIGlmIChwYXJlbnRPYmplY3QgPT0gb2Jq
ZWN0KQpAQCAtNzM1LDcgKzczNSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJh
eShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBCiB9CiAKIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgaXMgbm93ID49IHRoZSBudW1i
ZXIgb2YgcmVzdWx0cyBkZXNpcmVkLgotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvYmplY3RN
YXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9i
amVjdE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAgaWYgKGlzQWNjZXNz
aWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpICYmIGlzQWNjZXNzaWJp
bGl0eVRleHRTZWFyY2hNYXRjaChvYmplY3QsIGNyaXRlcmlhKSkgewogICAgICAgICByZXN1bHRz
LmFwcGVuZChvYmplY3QpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNy
aXRlCiAgICAgLy8gSXQgZG9lcyB0aGlzIGJ5IHN0ZXBwaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4g
YW5kIGF0IGVhY2ggbGV2ZWwgZG9pbmcgYSBERlMuCiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBu
byBzdGFydCBvYmplY3QsIGl0IG1lYW5zIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcuCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSBjcml0ZXJpYS0+c3RhcnRPYmpl
Y3Q7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHN0YXJ0T2JqZWN0ID0gY3JpdGVyaWEt
PnN0YXJ0T2JqZWN0OwogICAgIGlmICghc3RhcnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0
ID0gdGhpczsKICAgICAKQEAgLTc3MSwxNCArNzcxLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNy
aXRlCiAgICAgLy8gVGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUgb3V0ZXIgbG9vcCB3aWxsIGV4
YW1pbmUgdGhlIGNoaWxkcmVuIG9mIHRoZSBzdGFydCBvYmplY3QgZm9yIG1hdGNoZXMuIEhvd2V2
ZXIsIHdoZW4KICAgICAvLyBpdGVyYXRpbmcgYmFja3dhcmRzLCB0aGUgc3RhcnQgb2JqZWN0IGNo
aWxkcmVuIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCwgc28gdGhlIGxvb3AgaXMgc2tpcHBlZCBh
aGVhZC4gV2UgbWFrZSBhbgogICAgIC8vIGV4Y2VwdGlvbiB3aGVuIG5vIHN0YXJ0IG9iamVjdCB3
YXMgc3BlY2lmaWVkIGJlY2F1c2Ugd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZyByZWdhcmRs
ZXNzIG9mIHNlYXJjaCBkaXJlY3Rpb24uCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlv
dXNPYmplY3QgPSBudWxscHRyOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwcmV2aW91
c09iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKCFpc0ZvcndhcmQgJiYgc3RhcnRPYmplY3QgIT0g
dGhpcykgewogICAgICAgICBwcmV2aW91c09iamVjdCA9IHN0YXJ0T2JqZWN0OwogICAgICAgICBz
dGFydE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICB9
CiAgICAgCiAgICAgLy8gVGhlIG91dGVyIGxvb3Agc3RlcHMgdXAgdGhlIHBhcmVudCBjaGFpbiBl
YWNoIHRpbWUgKHVuaWdub3JlZCBpcyBpbXBvcnRhbnQgaGVyZSBiZWNhdXNlIG90aGVyd2lzZSBl
bGVtZW50cyB3b3VsZCBiZSBzZWFyY2hlZCB0d2ljZSkKLSAgICBmb3IgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIHN0b3BTZWFyY2hFbGVtZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHN0YXJ0
T2JqZWN0ICYmIHN0YXJ0T2JqZWN0ICE9IHN0b3BTZWFyY2hFbGVtZW50OyBzdGFydE9iamVjdCA9
IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgeworICAgIGZvciAoQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIHN0b3BTZWFyY2hFbGVtZW50ID0gcGFyZW50T2JqZWN0VW5pZ25v
cmVkKCk7IHN0YXJ0T2JqZWN0ICYmIHN0YXJ0T2JqZWN0ICE9IHN0b3BTZWFyY2hFbGVtZW50OyBz
dGFydE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewogCiAg
ICAgICAgIC8vIE9ubHkgYXBwZW5kIHRoZSBjaGlsZHJlbiBhZnRlci9iZWZvcmUgdGhlIHByZXZp
b3VzIGVsZW1lbnQsIHNvIHRoYXQgdGhlIHNlYXJjaCBkb2VzIG5vdCBjaGVjayBlbGVtZW50cyB0
aGF0IGFyZSAKICAgICAgICAgLy8gYWxyZWFkeSBiZWhpbmQvYWhlYWQgb2Ygc3RhcnQgZWxlbWVu
dC4KQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRNYXRj
aGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZQogCiAgICAgICAg
IC8vIFRoaXMgbm93IGRvZXMgYSBERlMgYXQgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgdGhlIHBhcmVu
dC4KICAgICAgICAgd2hpbGUgKCFzZWFyY2hTdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlYXJjaE9iamVjdCA9IHNlYXJjaFN0YWNrLmxhc3QoKS5n
ZXQoKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzZWFyY2hPYmplY3Qg
PSBzZWFyY2hTdGFjay5sYXN0KCkuZ2V0KCk7CiAgICAgICAgICAgICBzZWFyY2hTdGFjay5yZW1v
dmVMYXN0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChvYmplY3RNYXRjaGVzU2Vh
cmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoc2VhcmNoT2JqZWN0LCBjcml0ZXJpYSwgcmVzdWx0
cykpCkBAIC0xOTM4LDcgKzE5MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0
ZUJhY2tpbmdTdG9yZSgpCiAKIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVk
ZVNlbGYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3PihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBpbmNsdWRlU2Vs
ZiwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldz4oYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqdGhpcywgaW5jbHVkZVNlbGYsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGlzPEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PihvYmplY3QpOwogICAgIH0pKTsKIH0K
QEAgLTIwMzEsMjYgKzIwMzEsMTYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9iamVjdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKHJlbmRlck9iamVjdCk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNj
ZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKmF4
T2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0g
ICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhl
YWRpbmc7Ci0gICAgfSkpOwotfQogCi1jb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmKT4mIG1hdGNoZXMpCi17Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50ID0gaW5jbHVkZVNlbGYgPyAmb2JqZWN0IDogb2JqZWN0LnBhcmVudE9i
amVjdCgpOwotICAgIGZvciAoOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0
KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoZXMoKnBhcmVudCkpCi0gICAgICAgICAgICByZXR1cm4g
cGFyZW50OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYXg6Om1hdGNo
ZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqYXhPYmplY3QsIHRydWUsIFtdIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5y
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsKKyAgICB9KTsKIH0KIAog
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiByZXN1bHQpCkBAIC0yMzYwLDE3ICsyMzUwLDE3IEBAIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwogfSAgICAKIAotYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGF4T2Jq
ZWN0KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5oYXNDaGlsZHJl
bigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbYXhPYmplY3RdIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKworICAgIHJldHVybiBheDo6bWF0Y2hlZEFu
Y2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW2F4T2JqZWN0XSAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAmb2JqZWN0
ID09IGF4T2JqZWN0OwogICAgIH0pICE9IG51bGxwdHI7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4
T2JqZWN0KSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmpl
Y3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGF4T2JqZWN0KSBjb25zdAogewogICAg
IGlmICghYXhPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3MzksOSArMjcyOSw5
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhj
bHVkZUlmT2ZmKSBjb25zdAogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAogewot
ICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCB0cnVlLCBbZXhjbHVkZUlmT2ZmXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgcmV0dXJuIGF4OjptYXRjaGVkQW5j
ZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIHRydWUsIFtleGNsdWRlSWZPZmZdIChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVj
dC5zdXBwb3J0c0xpdmVSZWdpb24oZXhjbHVkZUlmT2ZmKTsKLSAgICB9KSk7CisgICAgfSk7CiB9
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0CkBAIC0yNzc4LDcgKzI3NjgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBv
cnRzTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZikgY29uc3QKICAgICByZXR1cm4gZXhjbHVk
ZUlmT2ZmID8gbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChsaXZlUmVnaW9uU3RhdHVzVmFsdWUp
IDogIWxpdmVSZWdpb25TdGF0dXNWYWx1ZS5pc0VtcHR5KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsgCiAgICAgLy8gU2VuZCB0aGUgaGl0IHRlc3Qg
YmFjayBpbnRvIHRoZSBzdWItZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIGlmIChpc0F0dGFjaG1l
bnQoKSkgewpAQCAtMjgwNSw3ICsyNzk1LDcgQEAgQVhPYmplY3RDYWNoZSogQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2VkVUlFbGVtZW50KCkg
Y29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1
c2VkVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOwog
ICAgIHJldHVybiBwYWdlID8gQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2Uo
cGFnZSkgOiBudWxscHRyOwpAQCAtMjk1OCwxMiArMjk0OCwxMiBAQCBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzRXhwYW5kZWQoKSBjb25zdAogICAgIAogICAgIC8vIFN1bW1hcnkgZWxlbWVu
dCBzaG91bGQgdXNlIGl0cyBkZXRhaWxzIHBhcmVudCdzIGV4cGFuZGVkIHN0YXR1cy4KICAgICBp
ZiAoaXNTdW1tYXJ5KCkpIHsKLSAgICAgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNl
LCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgICAgIGlmIChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBheDo6bWF0Y2hlZEFuY2VzdG9yPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgewogICAgICAgICAgICAgcmV0dXJuIGlzPEhUTUxEZXRhaWxzRWxlbWVu
dD4ob2JqZWN0Lm5vZGUoKSk7CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+aXNFeHBhbmRlZCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsgIAogfQog
CkBAIC0zMTAzLDcgKzMwOTMsNyBAQCBzdGF0aWMgaW50IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0
KGludCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCBpbnQgc3ViZm9jdXNNaW4sIGludAogICAgIHJldHVy
biAob2JqZWN0TWluICsgb2JqZWN0TWF4IC0gdmlld3BvcnRNaW4gLSB2aWV3cG9ydE1heCkgLyAy
OwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAorYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuKCkgY29uc3QKIHsgICAKICAgICBib29s
IGlzT25zY3JlZW4gPSB0cnVlOwogCkBAIC0zNDI1LDcgKzM0MTUsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdAogLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvdGVybXMjZGVmX2hpZGRlbgogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FYSGlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9y
PEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShvYmplY3QuZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIik7CiAg
ICAgfSkgIT0gbnVsbHB0cjsKIH0KQEAgLTM0ODAsNyArMzQ3MCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgIGF0dHJp
YnV0ZUNhY2hlID0gY2FjaGUtPmNvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUoKTsKICAgICAK
ICAgICBpZiAoYXR0cmlidXRlQ2FjaGUpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbiBpZ25vcmVkID0gYXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQoYXhPYmplY3RJRCgp
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkID0gYXR0cmli
dXRlQ2FjaGUtPmdldElnbm9yZWQob2JqZWN0SUQoKSk7CiAgICAgICAgIHN3aXRjaCAoaWdub3Jl
ZCkgewogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9i
amVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzQ5NSw3ICszNDg1LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIAog
ICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJpYnV0ZSBj
YWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBleGlzdHMu
CiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChh
eE9iamVjdElEKCksIHJlc3VsdCA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9y
ZU9iamVjdCA6IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpOwor
ICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChvYmplY3RJRCgpLCByZXN1bHQgPyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0zNTM4LDE2ICszNTI4LDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0UHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sIG9uKQogCiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2FibGVBbmNlc3RvcigpCiB7Ci0gICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om1hdGNoZWRQYXJlbnQoKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpIHsKKyAgICByZXR1cm4gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LmNhblNldEZvY3VzQXR0cmlidXRlKCk7Ci0gICAg
fSkpOworICAgIH0pOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjplZGl0YWJsZUFuY2VzdG9yKCkKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywg
dHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVy
biBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBb
XSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBv
YmplY3QuaXNUZXh0Q29udHJvbCgpOwotICAgIH0pKTsKKyAgICB9KTsKIH0KIAogQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6aGlnaGVzdEVkaXRhYmxlQW5jZXN0b3Io
KQpAQCAtMzU3MCw5ICszNTYwLDkgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGlnaGVzdEVkaXRhYmxlQW5jZXN0b3IoKQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYWRpb0dyb3VwQW5jZXN0b3IoKSBjb25zdAogewotICAg
IHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2li
aWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LmlzUmFkaW9Hcm91cCgpOwotICAgIH0p
KTsKKyAgICB9KTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N0eWxlRm9ybWF0
R3JvdXAoKSBjb25zdApAQCAtMzYyMCw3ICszNjEwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpl
bGVtZW50KS5pc1Bhc3N3b3JkRmllbGQoKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQorQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQogewogICAg
IGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+aXNMaXN0SXRlbSgpICYmIChjaGlsZC0+aXNTZWxlY3RlZCgpIHx8IGNoaWxkLT5pc0FjdGl2
ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSkpCkBAIC0zNzUyLDcgKzM3NDIsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0bwogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShvd25lcnMsIGFyaWFfb3duc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVj
dCogY2hpbGQpCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJl
bnREYXRhRm9yQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGNoaWxkKQogewogICAgIGlm
ICghY2hpbGQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggM2ZmMGMzNjAxYjQuLjJiN2VkODI3
MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaApAQCAtMzEsMTMgKzMxLDkgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNs
dWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3JC
ZWhhdmlvci5oIgotI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgotI2luY2x1ZGUgIlZpc2li
bGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUzLDggKzQ5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogCi10eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOwot
CiBPQkpDX0NMQVNTIE5TQXJyYXk7CiBPQkpDX0NMQVNTIE5TQXR0cmlidXRlZFN0cmluZzsKIE9C
SkNfQ0xBU1MgTlNEYXRhOwpAQCAtNjgsMjAgKzYyLDkgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7Ci1jbGFzcyBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzsKLWNsYXNzIEFYT2JqZWN0Q2FjaGU7Ci1jbGFzcyBFbGVt
ZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBJbnRQb2ludDsKIGNs
YXNzIEludFNpemU7Ci1jbGFzcyBOb2RlOwotY2xhc3MgUGFnZTsKLWNsYXNzIFJlbmRlck9iamVj
dDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwotY2xhc3MgU2Nyb2xsVmlldzsKLWNsYXNzIFdpZGdl
dDsKLXN0cnVjdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9uczsKIAogZW51bSBjbGFzcyBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZSB7CiAgICAgQWx0ZXJuYXRpdmUsCkBAIC0xMjEsNDk2ICsxMDQs
MjcyIEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dCB7CiAgICAgfQogfTsKIAotc3RydWN0IEFj
Y2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7Ci0gICAgZW51bSBDaGlsZHJlbkluY2x1
c2lvbiB7Ci0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwK
LSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCi0gICAgICAg
IFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgLy8g
VGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5hbWVGcm9tCi0gICAgfTsKLSAgICAK
LSAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1c2lvbjsKLSAgICBib29sIGluY2x1
ZGVGb2N1c2FibGVDb250ZW50OwotICAgIE5vZGUqIGlnbm9yZWRDaGlsZE5vZGU7Ci0gICAgCi0g
ICAgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKENoaWxkcmVuSW5jbHVzaW9uIGMg
PSBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hpbGRyZW4sIGJvb2wgaSA9IGZhbHNl
LCBOb2RlKiBpZ25vcmVkID0gbnVsbHB0cikKLSAgICAgICAgOiBjaGlsZHJlbkluY2x1c2lvbihj
KQotICAgICAgICAsIGluY2x1ZGVGb2N1c2FibGVDb250ZW50KGkpCi0gICAgICAgICwgaWdub3Jl
ZENoaWxkTm9kZShpZ25vcmVkKQotICAgIHsgfQotfTsKLQotLy8gVXNlIHRoaXMgc3RydWN0IHRv
IHN0b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNv
IHRoYXQgaW4gYWRkQ2hpbGRyZW4oKQotLy8gd2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBj
aGFpbiBmb3IgZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2Vm
dWwgaW5mb3JtYXRpb24gYWxyZWFkeS4KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJv
bVBhcmVudERhdGEgewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCB7IG51bGxwdHIg
fTsKLSAgICBib29sIGlzQVhIaWRkZW4geyBmYWxzZSB9OwotICAgIGJvb2wgaXNQcmVzZW50YXRp
b25hbENoaWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJh
cnJlblBhcmVudCB7IGZhbHNlIH07Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZy
b21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG51bGxwdHIpCi0gICAg
ICAgIDogcGFyZW50KHBhcmVudCkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gIXBhcmVudDsgfQotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uIHsKLSAgICBWZXJ0aWNhbCwKLSAgICBIb3Jpem9udGFsLAotICAgIFVuZGVmaW5l
ZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gewot
ICAgIEluY2x1ZGVPYmplY3QsCi0gICAgSWdub3JlT2JqZWN0LAotICAgIERlZmF1bHRCZWhhdmlv
ciwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7Ci0gICAg
T2ZmID0gMCwKLSAgICBPbiwKLSAgICBNaXhlZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vz
c2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKLSAgICBOb25lLAotICAgIEFzY2VuZGluZywKLSAgICBE
ZXNjZW5kaW5nLAotICAgIE90aGVyLAotICAgIEludmFsaWQsCi19OwotCi1lbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewotICAgIE5leHQgPSAxLAotICAgIFByZXZpb3Vz
LAotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHsKLSAgICBBbnlUeXBl
ID0gMSwKLSAgICBBcnRpY2xlLAotICAgIEJsb2NrcXVvdGVTYW1lTGV2ZWwsCi0gICAgQmxvY2tx
dW90ZSwKLSAgICBCb2xkRm9udCwKLSAgICBCdXR0b24sCi0gICAgQ2hlY2tCb3gsCi0gICAgQ29u
dHJvbCwKLSAgICBEaWZmZXJlbnRUeXBlLAotICAgIEZvbnRDaGFuZ2UsCi0gICAgRm9udENvbG9y
Q2hhbmdlLAotICAgIEZyYW1lLAotICAgIEdyYXBoaWMsCi0gICAgSGVhZGluZ0xldmVsMSwKLSAg
ICBIZWFkaW5nTGV2ZWwyLAotICAgIEhlYWRpbmdMZXZlbDMsCi0gICAgSGVhZGluZ0xldmVsNCwK
LSAgICBIZWFkaW5nTGV2ZWw1LAotICAgIEhlYWRpbmdMZXZlbDYsCi0gICAgSGVhZGluZ1NhbWVM
ZXZlbCwKLSAgICBIZWFkaW5nLAotICAgIEhpZ2hsaWdodGVkLAotICAgIEl0YWxpY0ZvbnQsCi0g
ICAgS2V5Ym9hcmRGb2N1c2FibGUsCi0gICAgTGFuZG1hcmssCi0gICAgTGluaywKLSAgICBMaXN0
LAotICAgIExpdmVSZWdpb24sCi0gICAgTWlzc3BlbGxlZFdvcmQsCi0gICAgT3V0bGluZSwKLSAg
ICBQbGFpblRleHQsCi0gICAgUmFkaW9Hcm91cCwKLSAgICBTYW1lVHlwZSwKLSAgICBTdGF0aWNU
ZXh0LAotICAgIFN0eWxlQ2hhbmdlLAotICAgIFRhYmxlU2FtZUxldmVsLAotICAgIFRhYmxlLAot
ICAgIFRleHRGaWVsZCwKLSAgICBVbmRlcmxpbmUsCi0gICAgVW52aXNpdGVkTGluaywKLSAgICBW
aXNpdGVkTGluaywKLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlv
bkZvckJvdW5kcyB7Ci0gICAgRmlyc3QsCi0gICAgTGFzdCwKLX07Ci0KLXN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2Jq
ZWN0OwotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gc2VhcmNoRGlyZWN0aW9uOwot
ICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBzZWFyY2hLZXlzOwotICAgIFN0cmlu
ZyBzZWFyY2hUZXh0OwotICAgIHVuc2lnbmVkIHJlc3VsdHNMaW1pdDsKLSAgICBib29sIHZpc2li
bGVPbmx5OwotICAgIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5OwotICAgIAotICAgIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFydE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBz
ZWFyY2hUZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wg
aW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQotICAgICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2Jq
ZWN0KQotICAgICAgICAsIHNlYXJjaERpcmVjdGlvbihzZWFyY2hEaXJlY3Rpb24pCi0gICAgICAg
ICwgc2VhcmNoVGV4dChzZWFyY2hUZXh0KQotICAgICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRz
TGltaXQpCi0gICAgICAgICwgdmlzaWJsZU9ubHkodmlzaWJsZU9ubHkpCi0gICAgICAgICwgaW1t
ZWRpYXRlRGVzY2VuZGFudHNPbmx5KGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKLSAgICB7IH0K
LX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSB7IENhY2hl
RGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkIH07Ci0KLXN0cnVjdCBWaXNpYmxlUG9zaXRpb25S
YW5nZSB7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQ7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IGVuZDsKLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKCkge30KLQotICAgIFZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcywgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBlKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAgICAgICwgZW5kKGUpCi0gICAgeyB9Ci0KLSAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24p
Ci0gICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCkpCi0gICAgICAgICwgZW5kKHNlbGVj
dGlvbi5lbmQoKSkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
c3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpOyB9Ci19OwotCi1zdHJ1Y3QgUGxhaW5UZXh0
UmFuZ2UgewotICAgICAgICAKLSAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggeyAwIH07Ci0gICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7Ci0g
ICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UodW5zaWduZWQgcywgdW5zaWduZWQgbCkKLSAgICAgICAg
OiBzdGFydChzKQotICAgICAgICAsIGxlbmd0aChsKQotICAgIHsgfQotICAgIAotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFBsYWluVGV4dFJhbmdlKE5TUmFuZ2UpOwotI2VuZGlmCi0gICAgCi0g
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQotfTsK
LQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSB7Ci0gICAgQmVn
aW4sIC8vIFNlYXJjaCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVsZW1lbnQuCi0gICAgU2Vs
ZWN0aW9uLCAvLyBTZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0
aW9uLgotICAgIEVuZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgotfTsK
LQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiB7Ci0gICAgRm9y
d2FyZCwgLy8gT2NjdXJyZW5jZSBhZnRlciB0aGUgc3RhcnRpbmcgcmFuZ2UuCi0gICAgQmFja3dh
cmQsIC8vIE9jY3VycmVuY2UgYmVmb3JlIHRoZSBzdGFydGluZyByYW5nZS4KLSAgICBDbG9zZXN0
LCAvLyBDbG9zZXN0IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFm
dGVyIG9yIGJlZm9yZS4KLSAgICBBbGwgLy8gQWxsIG9jY3VycmVuY2VzCi19OwotCi1zdHJ1Y3Qg
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSB7Ci0gICAgVmVjdG9yPFN0cmluZz4gc2Vh
cmNoU3RyaW5nczsgLy8gVGV4dCBzdHJpbmdzIHRvIHNlYXJjaCBmb3IuCi0gICAgQWNjZXNzaWJp
bGl0eVNlYXJjaFRleHRTdGFydEZyb20gc3RhcnQ7Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uOwotCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0
ZXJpYSgpCi0gICAgICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206
OlNlbGVjdGlvbikKLSAgICAgICAgLCBkaXJlY3Rpb24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRE
aXJlY3Rpb246OkZvcndhcmQpCi0gICAgeyB9Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlUZXh0T3BlcmF0aW9uVHlwZSB7Ci0gICAgU2VsZWN0LAotICAgIFJlcGxhY2UsCi0gICAgQ2Fw
aXRhbGl6ZSwKLSAgICBMb3dlcmNhc2UsCi0gICAgVXBwZXJjYXNlCi19OwotCi1zdHJ1Y3QgQWNj
ZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gewotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2VzOyAvLyB0ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4KLSAgICBBY2Nl
c3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGUgdHlwZTsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRU
ZXh0OyAvLyBGb3IgdHlwZSA9IHJlcGxhY2UuCi0KLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJh
dGlvbigpCi0gICAgICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNl
bGVjdCkKLSAgICB7IH0KLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRP
YmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OwotZW51bSBjbGFzcyBBY2Nlc3Np
YmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJz
Y3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9OwotCi1lbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRp
b24sIERhdGUsIFRpbWUgfTsKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFj
ZSB7IFNjcmVlbiwgUGFnZSB9OwotCiBib29sIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUq
KTsKLSAgICAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiwgcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Ug
eworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0IDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlIHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgPSBkZWZhdWx0
OwotICAgIAorCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU9iamVjdCgpOwog
CiAgICAgLy8gQWZ0ZXIgY29uc3RydWN0aW5nIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QsIGl0IG11
c3QgYmUgZ2l2ZW4gYQogICAgIC8vIHVuaXF1ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENh
Y2hlLCBhbmQgZmluYWxseSBpbml0KCkgbXVzdAogICAgIC8vIGJlIGNhbGxlZCBsYXN0LgotICAg
IHZvaWQgc2V0QVhPYmplY3RJRChBWElEIGF4T2JqZWN0SUQpIHsgbV9pZCA9IGF4T2JqZWN0SUQ7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIHsgfQorICAgIHZvaWQgc2V0T2JqZWN0SUQoQVhJ
RCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KKyAgICB2b2lkIGluaXQoKSBvdmVycmlkZSB7
IH0KIAogICAgIC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBvYmplY3QgdGhhdCB0
aGlzIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICAvLyB3cmFwcyBpcyBkZWxldGVkLCBpdCBtdXN0
IGJlIGRldGFjaGVkLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURldGFj
aG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG51bGxwdHIpOwotICAgIHZpcnR1YWwg
Ym9vbCBpc0RldGFjaGVkKCkgY29uc3Q7CisgICAgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3I7Ci0g
ICAgCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nICopIGNvbnN0Owor
ICAgIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUGFzc3dv
cmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NvbnRhaW5lZEJ5
UGFzc3dvcmRGaWVsZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
Q2hlY2tib3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q2hlY2tCb3g7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94T3B0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW1hZ2VNYXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1h
Z2VNYXA7IH0KKyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXNzd29yZEZpZWxkT3JD
b250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsgfQorICAgIGJvb2wgaXNDaGVj
a2JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpDaGVja0JveDsgfQorICAgIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRv
bjsgfQorICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9CisgICAgYm9vbCBpc0xp
c3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWVudUJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTWVudUl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZWRp
YVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWVudVJlbGF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNZW51KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVu
dUJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51
SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ZpbGVV
cGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTGFiZWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0xpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEYXRh
VGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxl
Um93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNv
bHVtbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVD
ZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNl
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFUcmVlR3JpZFJv
dygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQcm9ncmVzc0luZGljYXRv
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1NsaWRlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1NsaWRlclRodW1i
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5wdXRTbGlk
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDb250cm9s
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGFiZWwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMaXN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRmllbGRzZXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUxpc3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0
T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGlu
QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlNwaW5CdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTW9ja09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVMaXN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3BpbkJ1dHRvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTcGluQnV0dG9uOyB9CisgICAgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJl
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWVkaWFPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTd2l0Y2go
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNo
OyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0KLSAgICBib29sIGlzVGV4dENv
bnRyb2woKSBjb25zdDsKLSAgICBib29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1RhYkxpc3Qo
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlz
dDsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0K
LSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KKyAgICBib29sIGlzTWVkaWFPYmplY3QoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNo
OyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0KKyAgICBib29s
IGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDsgfQorICAgIGJv
b2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQorICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3Jv
dXA7IH0KKyAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KICAgICBib29sIGlzVHJl
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlOyB9Ci0gICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9CisgICAgYm9vbCBpc1RyZWVH
cmlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAg
ICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KLSAgICBib29sIGlzQnV0dG9uKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9Ci0gICAgYm9vbCBpc0NoZWNrYm94T3JS
YWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hlY2tib3goKSB8fCBpc1JhZGlvQnV0dG9uKCk7IH0K
LSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAgYm9vbCBpc0NhbnZhcygpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDYW52YXM7IH0KLSAg
ICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KLSAgICBib29sIGlzQmxvY2txdW90ZSgpIGNv
bnN0OwotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0OwotICAgIGJvb2wgaXNDb2xvcldlbGwo
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JX
ZWxsOyB9Ci0gICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0OwotICAgIGJvb2wgaXNNZXRl
cigpIGNvbnN0OwotICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQotICAgIGJvb2wgaXNUb29sYmFy
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xi
YXI7IH0KLSAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0OwotICAgIGJvb2wgaXNG
aWd1cmVFbGVtZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkgY29u
c3Q7Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQotICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdDsK
LSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzSG92ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXNp
YmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbGxhcHNl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5k
ZWQoYm9vbCkgeyB9CisgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQorICAgIGJvb2wgaXNDaGVja2JveE9yUmFkaW8o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1dHRvbigp
OyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsgfQorICAgIGJvb2wgaXND
YW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2FudmFzOyB9CisgICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
OyB9CisgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
TGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9y
V2VsbDsgfQorICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bs
aXR0ZXI7IH0KKyAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOyB9CisgICAgYm9vbCBpc1N0
eWxlRm9ybWF0R3JvdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRmlndXJlRWxlbWVu
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7IH0KKyAgICBib29sIGlz
T3V0cHV0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNWaXNpdGVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpbmtlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0V4cGFuZGVkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRlIHsgfQogICAg
IEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRmxvYXRSZWN0
IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZl
cnNpb25TcGFjZSkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29u
c3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBtYW55IGl0ZW1zIGNhbiBiZSBz
ZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGltZS4KLSAgICB2aXJ0dWFsIGJv
b2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFJhbmdlPiBnZXRNaXNz
cGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoRGlyZWN0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVy
T2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2Ft
ZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIGlzU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0gICAgdmlydHVhbCBib29sIGhh
c1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNIaWdobGln
aHRpbmcoKSBjb25zdDsKLQotICAgIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNv
bnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25z
dDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1
dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFs
dWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgdmlydHVhbCBFbGVtZW50KiBl
bGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBoYXNCb2xkRm9udCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNJdGFsaWNGb250KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc01pc3NwZWxsaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1Jhbmdl
KFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZUZvbnRDb2xv
cihSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQorICAgIGJvb2wg
aGFzVW5kZXJsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGhhc0hpZ2hsaWdodGluZygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c0Rh
dGV0aW1lQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
ZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5T
ZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRTZWxl
Y3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNp
b24oKSBjb25zdDsKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBj
b25zdDsKLSAgICAKLSAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7Ci0gICAgCi0gICAgdW5zaWdu
ZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgaGVhZGluZ0xldmVs
KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwoKSBjb25z
dCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hl
Y2tib3hPclJhZGlvVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZURlc2Ny
aXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHZh
bHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9Ci0gICAgdmlydHVhbCBmbG9hdCBt
YXhWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAgIHZpcnR1YWwgZmxv
YXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KLSAgICB2aXJ0dWFs
IGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkVGFi
SXRlbSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxl
Y3RlZExpc3RJdGVtKCk7Ci0gICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVm
YXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYWNjZXNzaWJp
bGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc1No
b3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB2YWxp
ZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdW5zaWduZWQgYmxvY2txdW90
ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJh
ZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgZmxvYXQgdmFsdWVGb3JS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0KKyAgICBmbG9hdCBtYXhWYWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4wZjsgfQorICAgIGZsb2F0IG1p
blZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9CisgICAgZmxv
YXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVj
dGVkVGFiSXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogc2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOworICAgIGludCBsYXlv
dXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUNvbnRyb2woQWNjZXNzaWJpbGl0eVJvbGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUlucHV0KEFjY2Vzc2liaWxp
dHlSb2xlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRh
aW5lcigpIGNvbnN0OwotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0g
ICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVk
QnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3Nh
Z2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lk
IGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBh
cmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFPd25zUmVmZXJl
bmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLQotICAg
IHZpcnR1YWwgYm9vbCBoYXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3Ry
aW5nIHBvcHVwVmFsdWUoKSBjb25zdDsKLSAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Q7Ci0g
ICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3Q7Ci0gICAgYm9vbCBwcmVzc2VkSXNQcmVz
ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdDsKLSAgICBTdHJp
bmcgaW52YWxpZFN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29u
c3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0
c0NoZWNrZWQoKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGly
ZWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUo
KSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29u
c3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Q7Ci0gICAgdm9p
ZCBjbGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBy
b2xlRGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1
cnJlbnRTdGF0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdDsKLSAg
ICBib29sIHN1cHBvcnRzQ3VycmVudCgpIGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyBrZXlTaG9y
dGN1dHNWYWx1ZSgpIGNvbnN0OwotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRh
bnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFBY3Rp
dmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURlc2Ny
aWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGV0YWlsc1Jl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdl
UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2lu
Z0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1Bv
cHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgcG9wdXBW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzRGF0YWxpc3QoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFyaWFJc011
bHRpbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBpbnZhbGlkU3RhdHVzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHN1cHBvcnRzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1
cHBvcnRzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbnZhc0hh
c0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGFz
c0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcm9sZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0
ZSBjdXJyZW50U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgY3VycmVudFZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCBvdmVycmlk
ZTsKKwogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJl
IGlnbm9yZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KLSAgICBib29s
IGlnbm9yZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0OwotICAgIGJvb2wgaXNNb2RhbERlc2Nl
bmRhbnQoTm9kZSopIGNvbnN0OwotICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25zdDsKLSAgICAK
LSAgICBib29sIHN1cHBvcnRzU2V0U2l6ZSgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQb3NJ
blNldCgpIGNvbnN0OwotICAgIGludCBzZXRTaXplKCkgY29uc3Q7Ci0gICAgaW50IHBvc0luU2V0
KCkgY29uc3Q7Ci0gICAgCisgICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29s
IHN1cHBvcnRzU2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQb3NJ
blNldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgaW50IHBvc0luU2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGRyYWcg
YW5kIGRyb3AKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQVJJQUdyYWJiZWQo
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJlZChib29s
KSB7IH0KLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0
cygpIHsgcmV0dXJuIHsgfTsgfQotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNBUklB
RHJhZ2dpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNB
UklBR3JhYmJlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRBUklB
R3JhYmJlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVB
UklBRHJvcEVmZmVjdHMoKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKwogICAgIC8vIENhbGxl
ZCBvbiB0aGUgcm9vdCBBWCBvYmplY3QgdG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBl
bGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAvLyBD
YWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUgcmVuZGVyIHRyZWUgZGV0ZXJtaW5lcyB3
aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlv
dXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQg
bGltaXQpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNT
aWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBwYXJlbnRPYmplY3RJbnRlcmZh
Y2VVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYXJlbnRPYmplY3RVbmlnbm9y
ZWQoKTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGZvY3VzZWRVSUVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3JlZChpbnQgbGlt
aXQpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZp
cnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqKTsKLSAgICB2b2lkIGZpbmRN
YXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFudE9mQmFycmVu
UGFyZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGZpbmRNYXRjaGluZ09i
amVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGlzRGVzY2VuZGFu
dE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Q7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVGV4dCBz
ZWxlY3Rpb24KIHByaXZhdGU6CkBAIC02MTgsMzk3ICszNzcsMzk0IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0OwogICAgIFJlZlB0cjxSYW5nZT4g
ZmluZFRleHRSYW5nZShWZWN0b3I8U3RyaW5nPiBjb25zdCYgc2VhcmNoU3RyaW5ncywgUmVmUHRy
PFJhbmdlPiBjb25zdCYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uKSBj
b25zdDsKIHB1YmxpYzoKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmluZFRleHRSYW5nZXMo
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0OwotICAgIFZlY3Rv
cjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
IGNvbnN0Jik7Ci0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVP
YmplY3QoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxpbmtl
ZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgeyB9Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b24pIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlS
b2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlVua25vd247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlh
Um9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGFyaWFSb2xl
SGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmluZFRleHRSYW5nZXMoQWNjZXNz
aWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZl
Y3RvcjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0
aW9uIGNvbnN0Jikgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZh
YmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZvaWQg
bGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZSB7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGV4cG9zZXNUaXRsZVVJRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNw
b25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOyB9CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hp
bGRPZkFyaWFSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBBY2Nlc3NpYmlsaXR5IFRleHQK
LSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlU
ZXh0PiYpIGNvbnN0IHsgfTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4mKSBjb25zdCBvdmVycmlkZSB7IH07CiAgICAgLy8gQSBzaW5nbGUgbWV0
aG9kIGZvciBnZXR0aW5nIGEgY29tcHV0ZWQgbGFiZWwgZm9yIGFuIEFYT2JqZWN0LiBJdCBjb25k
ZW5zZXMgdGhlIG51YW5jZXMgb2YgYWNjZXNzaWJpbGl0eVRleHQuIFVzZWQgYnkgSW5zcGVjdG9y
LgotICAgIFN0cmluZyBjb21wdXRlZExhYmVsKCk7Ci0gICAgCisgICAgU3RyaW5nIGNvbXB1dGVk
TGFiZWwoKSBvdmVycmlkZTsKKwogICAgIC8vIEEgcHJvZ3JhbW1hdGljIHdheSB0byBzZXQgYSBu
YW1lIG9uIGFuIEFjY2Vzc2libGVPYmplY3QuCi0gICAgdmlydHVhbCB2b2lkIHNldEFjY2Vzc2li
bGVOYW1lKGNvbnN0IEF0b21TdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmli
dXRlc1JlcXVpcmVkRm9ySW5jbHVzaW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBY2Nlc3NpYmxl
TmFtZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBoYXNBdHRyaWJ1
dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEFjY2Vz
c2liaWxpdHkgVGV4dCAtIChUbyBiZSBkZXByZWNhdGVkKS4KLSAgICB2aXJ0dWFsIFN0cmluZyBh
Y2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAg
U3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9CisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQogCiAgICAgLy8gTWV0aG9kcyBmb3IgZGV0ZXJtaW5pbmcgYWNjZXNzaWJp
bGl0eSB0ZXh0LgotICAgIGJvb2wgaXNBUklBU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9
Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVu
ZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoKSkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUo
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNj
cmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgY29uc3Qg
U3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdDsKLSAgICBib29sIGFjY2Vzc2libGVOYW1l
RGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3Q7Ci0gICAgCisgICAgYm9vbCBpc0FSSUFTdGF0aWNU
ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQorICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHRleHRVbmRlckVs
ZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRl
eHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9
CisgICAgU3RyaW5nIHRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFN0
cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyAgICBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJv
bUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIEFiYnJldmlhdGlvbnMKLSAgICB2
aXJ0dWFsIFN0cmluZyBleHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgU3RyaW5n
IGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVs
ZW1lbnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8v
IE9ubHkgaWYgaXNDb2xvcldlbGwoKQotICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGludCYg
ciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0IHsgciA9IDA7IGcgPSAwOyBiID0gMDsgfQorICAgIHZv
aWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25zdCBvdmVycmlkZSB7IHIg
PSAwOyBnID0gMDsgYiA9IDA7IH0KIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcm9sZTsgfQogCi0gICAgdmlydHVhbCBBWE9iamVj
dENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7Ci0gICAgQVhJRCBheE9iamVjdElEKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQotICAgIAorICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWElEIG9iamVjdElEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pZDsgfQorCiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFuY2hv
ckVsZW1lbnRGb3JOb2RlKE5vZGUqKTsKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCog
aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqKTsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGFuY2hv
ckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1By
ZXNzQWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGlu
Z0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICBJbnRSZWN0IHBp
eGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0
KGJvdW5kaW5nQm94UmVjdCgpKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVj
dCgpIGNvbnN0ID0gMDsKLSAgICBMYXlvdXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBlbGVt
ZW50UmVjdCgpLnNpemUoKTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgY2xpY2tQb2ludCgpOwor
ICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgYm9vbCBzdXBwb3J0c1ByZXNzQWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91bmRpbmdC
b3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc25hcHBlZEludFJlY3QoYm91bmRpbmdC
b3hSZWN0KCkpOyB9CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRl
ID0gMDsKKyAgICBMYXlvdXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbGVt
ZW50UmVjdCgpLnNpemUoKTsgfQorICAgIEludFBvaW50IGNsaWNrUG9pbnQoKSBvdmVycmlkZTsK
ICAgICBzdGF0aWMgSW50UmVjdCBib3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVjdCosIGNv
bnN0IFZlY3RvcjxGbG9hdFF1YWQ+Jik7Ci0gICAgdmlydHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkg
Y29uc3QgeyByZXR1cm4gUGF0aCgpOyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBs
YWluVGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0
UmFuZ2UoKTsgfQotICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
c2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsgfQotICAgIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCgp
IGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkubGVuZ3RoOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gVVJMKCk7IH0KLSAgICB2aXJ0dWFsIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVNlbGVjdGlv
bigpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNv
bnN0IHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBQYWdlKiBwYWdlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZyYW1lVmlldyog
ZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsKLSAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKLSAg
ICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Q7Ci0gICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkg
Y29uc3Q7Ci0gICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7CisgICAgUGF0aCBlbGVtZW50UGF0aCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFBhdGgoKTsgfQorICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRl
eHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxh
aW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
bGFpblRleHRSYW5nZSgpOyB9CisgICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgpLnN0YXJ0OyB9CisgICAgdW5zaWdu
ZWQgc2VsZWN0aW9uRW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFu
Z2UoKS5sZW5ndGg7IH0KKworICAgIFVSTCB1cmwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBV
UkwoKTsgfQorICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOyB9CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgQXRvbVN0cmlu
ZyYgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAg
IGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdpZGdldCog
d2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFdpZGdldCog
d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXco
KSBjb25zdCBvdmVycmlkZTsKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIHRvcERv
Y3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2Vz
dG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgLy8gMS1iYXNlZCwgdG8gbWF0Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQot
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIHsgfQotICAgIGJvb2wgcmVwbGFjZVRl
eHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJik7Ci0gICAgYm9v
bCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
KGZsb2F0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpOwotICAgIGJvb2wgcGVy
Zm9ybURlZmF1bHRBY3Rpb24oKSB7IHJldHVybiBwcmVzcygpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgaW5jcmVtZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpIHsg
fQotCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB0ZXh0Q2hhbmdlZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3NpYmls
aXR5Um9sZSgpIHsgfQotICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hp
bGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkcmVuKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0
eU9iamVjdCosIHVuc2lnbmVkKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRy
aWJ1dGVSb2xlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1faGF2ZUNoaWxkcmVuOyB9CisgICAg
dW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CisKKyAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRT
ZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxl
Y3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCByZXBsYWNl
VGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlk
ZTsKKyAgICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkKGJv
b2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBtYWtlUmFuZ2VWaXNpYmxl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBwcmVzcygpIG92
ZXJyaWRlOworICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBvdmVycmlkZSB7IHJldHVy
biBwcmVzcygpOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGluY3JlbWVudCgpIG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgZGVjcmVtZW50KCkgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdGV4dENoYW5nZWQoKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGUgeyB9CisgICAgY29uc3Qg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29sIHVwZGF0ZUNoaWxkcmVu
SWZOZWVkZWQgPSB0cnVlKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopIG92ZXJy
aWRlOworICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqLCB1bnNp
Z25lZCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGF2ZUNoaWxkcmVuOyB9CiAgICAgdm9pZCB1
cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Rv
VXBkYXRlU3VidHJlZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0g
ICAgdmlydHVhbCBib29sIG5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCk7CisgICAgdm9pZCBkZXRhY2hG
cm9tUGFyZW50KCkgb3ZlcnJpZGU7CiAjZWxzZQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9t
UGFyZW50KCkgeyB9CisgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyB9CiAj
ZW5kaWYKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSB7IHJldHVybiBm
YWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaWJs
ZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRh
bnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFj
dGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFF
eHBhbmRlZENoYW5nZWQoKSB7IH0KLSAgICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QqKSBjb25zdDsKLSAgICBib29sIGlzQW5jZXN0b3JPZk9iamVj
dChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KikgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Q7CisgICAgYm9vbCBpc0RldGFj
aGVkRnJvbVBhcmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGNh
bkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHNob3VsZEZvY3VzQWN0
aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJp
ZGUgeyB9CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBbmNlc3Rvck9mT2JqZWN0
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJv
bGVUb1dlYkNvcmVSb2xlKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgaGFzQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGJvb2wgaGFzVGFnTmFtZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBWaXNpYmxlUG9z
aXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvblJhbmdlKCk7IH0KLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoKTsgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdlKCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlv
blJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoKTsgfQorCisgICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2UoKSBjb25z
dCBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihO
b2RlKiByZXBsYWNlZE5vZGUpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxlZnRMaW5lVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJs
ZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OwotICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OworCisgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBv
c2l0aW9uT2ZSaWdodFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5jZUZv
clBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFu
Z2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBTdHJpbmcgc3Ry
aW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsK
LSAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Q7Ci0gICAgdmly
dHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJ
bnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IHsgcmV0dXJu
IEludFJlY3QoKTsgfQotICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxl
Y3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29u
c3QgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKGNv
bnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChj
b25zdCBJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zKSBjb25zdCB7IHJldHVybiB2aXNpYmxlUG9zLm5leHQoKTsgfQotICAgIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MucHJldmlvdXMoKTsgfQot
ICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEVuZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lRW5kUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNlU3Rh
cnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9z
aXRpb24gbmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAq
LykgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNpYmxl
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gMDsgfQotCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0
UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8
aW50PiYpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9y
TGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBs
YWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkg
Y29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBsYWluVGV4dFJhbmdlIGRv
QVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBTdHJp
bmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmly
dHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgU3RyaW5n
IHN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJl
Y3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IGJv
dW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNv
bnN0IG92ZXJyaWRlIHsgfQorCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZv
ckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJv
dW5kcykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHZpc2libGVQb3MubmV4dCgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2aW91cygpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9u
IG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9z
aXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5k
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKworICAgIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGluZUZvclBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4dFJh
bmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXgoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KKworICAgIHZvaWQgbGlu
ZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIFBsYWluVGV4dFJh
bmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBs
YWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JQb3NpdGlv
bihjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4dFJhbmdlIGRv
QVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRl
eHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRleCh1
bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KKyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIEludFJlY3QgZG9BWEJv
dW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGxp
c3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mKTsKIAotICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpOworICAgIHVu
c2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpIG92ZXJyaWRlOwogCi0gICAgU3RyaW5n
IGNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBjb21wdXRlZFJvbGVTdHJp
bmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlRm9y
TVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nUm9sZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwg
U3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHN0cmluZ1Jv
bGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKTsgfQorCisgICAgU3RyaW5nIHBhc3N3b3JkRmll
bGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBp
c1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWYWx1ZUF1dG9m
aWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZh
bHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdDsKLSAgICBib29sIGlzVmFsdWVBdXRvZmls
bEF2YWlsYWJsZSgpIGNvbnN0OwotICAgIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxs
QnV0dG9uVHlwZSgpIGNvbnN0OwotICAgIAogICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRv
IGdldCBhbGwgaXRzIHJvd3MuCi0gICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJik7CisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0
byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KLSAgICB2
b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jik7Ci0gICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25seSBpdHMgY29u
dGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLiAKLSAgICB2b2lk
IGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAg
CisgICAgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIG92ZXJyaWRlOworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIGl0ZW0gdG8g
Z2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxkIHRyZWUgaXRlbXMgYW5kIGdy
b3Vwcy4KKyAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGxpdmUtcmVnaW9uIGZlYXR1cmVzLgot
ICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29u
c3Q7Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVl
KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9v
bCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBs
aXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCB7IHJldHVybiBudWxsQXRv
bSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1
ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNs
dWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBib29sIGxpdmVS
ZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5Um9s
ZSk7CiAgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9t
U3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY29udGVudEVkaXRhYmxlQXR0cmlidXRlSXNFbmFi
bGVkKEVsZW1lbnQqKTsKLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgp
IGNvbnN0OworICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c1JlYWRP
bmx5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKKworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgYm9v
bCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBhdXRvQ29tcGxldGVW
YWx1ZSgpIGNvbnN0OwotICAgIAotICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0OwotICAgIAogICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCi0gICAgdmlydHVhbCBP
cHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gT3B0aW9u
U2V0PFNwZWFrQXM+IHsgfTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJvcGVy
dHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcHRpb25TZXQ8U3BlYWtBcz4geyB9OyB9CiAK
ICAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xsaW5nIGFzIG1hbnkgbmVz
dGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxU
b01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3Qg
YmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0
ZXMuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29u
c3QgSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJG
b2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2Nyb2xsIHRoaXMg
b2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0b3At
bGV2ZWwgd2luZG93LgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0
IEludFBvaW50JikgY29uc3Q7Ci0gICAgCi0gICAgZW51bSBjbGFzcyBTY3JvbGxCeVBhZ2VEaXJl
Y3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsKLSAgICBib29sIHNjcm9sbEJ5UGFnZShT
Y3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0OwotICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
KCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdDsgICAgCi0g
ICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKLSAgICB2b2lkIHNj
cm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25z
dDsKLSAgICAKLSAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCk7Ci0gICAgdm9pZCBz
ZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKTsKKyAgICB2b2lkIHNjcm9sbFRvR2xvYmFs
UG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgc2Nyb2xs
QnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIHNjcm9sbENv
bnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZUNv
bnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxl
KGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRM
YXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKIAogICAgIC8vIEZpcmVzIGEg
Y2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25v
cmVkIHZhbHVlIGNoYW5nZWQuCi0gICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQo
KTsKKyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0aEVsZW1lbnQoKS4K
LSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlT3BlcmF0b3Io
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBhcmF0
b3JPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWF0aElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVj
dFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE11
bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNN
YXRoUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0
aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNYXRoVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhUb2tlbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhTY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNz
aWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRo
UmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIG1hdGhSb290SW5kZXhPYmplY3QoKSBvdmVycmlkZSB7IHJldHVy
biBudWxscHRyOyB9CisKICAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCi0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFVuZGVy
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBtYXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogICAgIC8vIEZyYWN0aW9uIGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoTnVtZXJhdG9y
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9i
amVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1hdGhTdWJzY3Jp
cHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKwogICAgIC8vIEZlbmNlZCBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgU3RyaW5n
IG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfQotICAgIHZpcnR1YWwgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCisgICAgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgbWF0aEZl
bmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAg
ICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Cisg
ICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KLSAgICB0eXBlZGVm
IFZlY3RvcjxzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOwotICAgIHZpcnR1YWwgdm9p
ZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlz
Y3JpcHRQYWlycyYpIHsgfQotICAgIAorICAgIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBtYXRoUG9z
dHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9
CisKICAgICAvLyBWaXNpYmlsaXR5LgotICAgIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0OwotICAg
IGJvb2wgaXNET01IaWRkZW4oKSBjb25zdDsKLSAgICBib29sIGlzSGlkZGVuKCkgY29uc3QgeyBy
ZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVuKCk7IH0KKyAgICBib29sIGlzQVhIaWRk
ZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRE9NSGlkZGVuKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQVhIaWRk
ZW4oKSB8fCBpc0RPTUhpZGRlbigpOyB9CiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9CisgICAg
dm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKSBvdmVy
cmlkZSB7IG1fd3JhcHBlciA9IHdyYXBwZXI7IH0KICNlbHNlCiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2ht
ZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCk7CisgICAgdm9pZCBvdmVycmlk
ZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCkgb3ZlcnJp
ZGU7CiAjZWxzZQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxp
dHlPYmplY3QqKSB7IH0KKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSopIG92ZXJyaWRlIHsgfQogI2VuZGlmCi0gICAgCisKICNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWSkKICAgICAvLyBhIHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3Ig
ZGV0ZXJtaW5pbmcgaWYgYW4gYXR0YWNobWVudCBpcyBpZ25vcmVkCi0gICAgYm9vbCBhY2Nlc3Np
YmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0OworICAgIGJvb2wgYWNjZXNzaWJpbGl0eUln
bm9yZUF0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBnaXZlcyBwbGF0Zm9ybXMg
dGhlIG9wcG9ydHVuaXR5IHRvIGluZGljYXRlIGlmIGFuZCBob3cgYW4gb2JqZWN0IHNob3VsZCBi
ZSBpbmNsdWRlZAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAjZWxzZQotICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBh
Y2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsgfQorICAgIGJvb2wgYWNj
ZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZv
cm1JbmNsdWRlc09iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0aCgp
OwotICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0lu
cHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3Q7CisgICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29y
ZEZpZWxkTGVuZ3RoKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgotICAgIAorCiAgICAgLy8gYWxsb3dzIGZvciBhbiBBY2Nlc3Np
YmlsaXR5T2JqZWN0IHRvIHVwZGF0ZSBpdHMgcmVuZGVyIHRyZWUgb3IgcGVyZm9ybQogICAgIC8v
IG90aGVyIG9wZXJhdGlvbnMgdXBkYXRlIHR5cGUgb3BlcmF0aW9ucwotICAgIHZvaWQgdXBkYXRl
QmFja2luZ1N0b3JlKCk7Ci0gICAgCisgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVy
cmlkZTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcHJldmVudEtleWJvYXJkRE9N
RXZlbnREaXNwYXRjaCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sKTsKLSAgICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJ
blRpdGxlKCkgY29uc3Q7CisgICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNo
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNW
YWx1ZUluVGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc3BlZWNoSGludEF0dHJp
YnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBib29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKKyAgICBib29sIGNh
cmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDYXJldEJy
b3dzaW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogZm9jdXNhYmxlQW5jZXN0b3IoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBl
ZGl0YWJsZUFuY2VzdG9yKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGlnaGVzdEVkaXRh
YmxlQW5jZXN0b3IoKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2FibGVBbmNlc3Rv
cigpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVkaXRhYmxlQW5jZXN0b3Io
KSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoaWdoZXN0RWRpdGFibGVBbmNl
c3RvcigpIG92ZXJyaWRlOworCisgICAgY29uc3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFu
Y2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9vbCBpbmNsdWRlU2VsZikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlk
ZSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJv
bVBhcmVudERhdGEoKTsgfQorICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JD
aGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopIG92ZXJyaWRlOwogCi0gICAgY29uc3QgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9v
bCBpbmNsdWRlU2VsZikgY29uc3Q7Ci0gICAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGNoZWRQYXJlbnQoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYsIGJvb2wgaW5jbHVk
ZVNlbGYsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Jik+Jik7Ci0gICAgCi0gICAgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgeyBt
X2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJl
bnREYXRhKCk7IH0KLSAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQo
QWNjZXNzaWJpbGl0eU9iamVjdCopOwotICAgIAogcHJvdGVjdGVkOgogICAgIEFYSUQgbV9pZCB7
IDAgfTsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKQEAgLTEw
MjEsMjQgKzc3NywyNCBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKICAgICBib29sIG1faXNvbGF0ZWRUcmVlTm9kZUluaXRpYWxpemVkIHsgZmFs
c2UgfTsKICNlbmRpZgotICAgIAotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEo
QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSB7IG1faXNJZ25vcmVk
RnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CisKKyAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJl
bnREYXRhKEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSYgZGF0YSkgb3ZlcnJp
ZGUgeyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCiAgICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIAorCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMs
IHJldHVybiBpdHMgU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgeyB9CiAg
ICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhQW5jZXN0b3IoKSBjb25zdDsKICAgICB2
b2lkIHNjcm9sbEFyZWFBbmRBbmNlc3RvcihzdGQ6OnBhaXI8U2Nyb2xsYWJsZUFyZWEqLCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4mKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7Ci0gICAgc3RhdGljIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKik7Ci0gICAgc3RhdGljIGJvb2wgb2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlh
V2l0aFJlc3VsdExpbWl0KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKworICAgIHN0YXRpYyBi
b29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7CisgICAg
c3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAgICBzdGF0aWMg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAgICBzdGF0aWMgYm9vbCBvYmpl
Y3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGJ1dHRvblJvbGVUeXBl
KCkgY29uc3Q7Ci0gICAgYm9vbCBpc09uc2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBpc09uU2Ny
ZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXNwYXRjaFRvdWNoRXZlbnQoKTsKIAog
ICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xMDY0LDEwICs4MjAsMTAg
QEAgcHJvdGVjdGVkOgogfTsKIAogI2lmICFFTkFCTEUoQUNDRVNTSUJJTElUWSkKLWlubGluZSBj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0K
K2lubGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fY2hpbGRyZW47IH0KIGlubGluZSBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFjdGlvblZlcmIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiBpbmxpbmUg
aW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCB7IHJldHVybiAtMTsgfQotaW5saW5lIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgeyB9CitpbmxpbmUgdm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVycmlkZSB7IH0KICNlbmRpZgogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2Rl
KiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKT4m
IGlzQWNjZXNzaWJsZSk7CkBAIC0xMDc2LDkgKzgzMiw5IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqLCBjb25zdCBXVEY6OkZ1
bmN0CiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKFRvVmFs
dWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5wcmVk
aWNhdGU7IH0gXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7IHJldHVybiBvYmplY3QucHJlZGljYXRlOyB9IFwK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KQotc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UmIGNvbnRleHQpIHsgcmV0
dXJuIGNvbnRleHQuaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7IH0KK3N0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgY29udGV4dCkgeyByZXR1
cm4gY29udGV4dC5pc0FjY2Vzc2liaWxpdHlPYmplY3QoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA5OGZmYjMxNWUyMS4uOThkMDE2
OTZkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0yNSw3ICsyNSwxMiBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yQmVoYXZpb3IuaCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lm
IFBMQVRGT1JNKFdJTikKQEAgLTQ1LDYgKzUwLDIzIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE5vZGU7CitjbGFzcyBF
bGVtZW50OworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNz
IFBhdGg7CitjbGFzcyBXaWRnZXQ7CitjbGFzcyBQYWdlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFz
cyBGcmFtZTsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIFNjcm9sbFZpZXc7CitjbGFzcyBBWE9i
amVjdENhY2hlOworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2U7CitjbGFzcyBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzsKK3N0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dDsKK3N0cnVjdCBTY3Jv
bGxSZWN0VG9WaXNpYmxlT3B0aW9uczsKKwogdHlwZWRlZiB1bnNpZ25lZCBBWElEOwogZXh0ZXJu
IGNvbnN0IEFYSUQgSW52YWxpZEFYSUQ7CiB0eXBlZGVmIHVuc2lnbmVkIEFYSXNvbGF0ZWRUcmVl
SUQ7ICAgIApAQCAtMjAzLDM2ICsyMjUsODgwIEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJv
bGUgewogICAgIFdpbmRvdywKIH07CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UgeworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgeyBDYWNoZURlc3Ry
b3llZCwgRWxlbWVudERlc3Ryb3llZCwgRWxlbWVudENoYW5nZSB9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UgeyBTY3JlZW4sIFBhZ2UgfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHsKKyAgICBOZXh0ID0gMSwKKyAgICBQcmV2
aW91cywKK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSB7CisgICAgQW55
VHlwZSA9IDEsCisgICAgQXJ0aWNsZSwKKyAgICBCbG9ja3F1b3RlU2FtZUxldmVsLAorICAgIEJs
b2NrcXVvdGUsCisgICAgQm9sZEZvbnQsCisgICAgQnV0dG9uLAorICAgIENoZWNrQm94LAorICAg
IENvbnRyb2wsCisgICAgRGlmZmVyZW50VHlwZSwKKyAgICBGb250Q2hhbmdlLAorICAgIEZvbnRD
b2xvckNoYW5nZSwKKyAgICBGcmFtZSwKKyAgICBHcmFwaGljLAorICAgIEhlYWRpbmdMZXZlbDEs
CisgICAgSGVhZGluZ0xldmVsMiwKKyAgICBIZWFkaW5nTGV2ZWwzLAorICAgIEhlYWRpbmdMZXZl
bDQsCisgICAgSGVhZGluZ0xldmVsNSwKKyAgICBIZWFkaW5nTGV2ZWw2LAorICAgIEhlYWRpbmdT
YW1lTGV2ZWwsCisgICAgSGVhZGluZywKKyAgICBIaWdobGlnaHRlZCwKKyAgICBJdGFsaWNGb250
LAorICAgIEtleWJvYXJkRm9jdXNhYmxlLAorICAgIExhbmRtYXJrLAorICAgIExpbmssCisgICAg
TGlzdCwKKyAgICBMaXZlUmVnaW9uLAorICAgIE1pc3NwZWxsZWRXb3JkLAorICAgIE91dGxpbmUs
CisgICAgUGxhaW5UZXh0LAorICAgIFJhZGlvR3JvdXAsCisgICAgU2FtZVR5cGUsCisgICAgU3Rh
dGljVGV4dCwKKyAgICBTdHlsZUNoYW5nZSwKKyAgICBUYWJsZVNhbWVMZXZlbCwKKyAgICBUYWJs
ZSwKKyAgICBUZXh0RmllbGQsCisgICAgVW5kZXJsaW5lLAorICAgIFVudmlzaXRlZExpbmssCisg
ICAgVmlzaXRlZExpbmssCit9OworCitzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
IHsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogc3RhcnRPYmplY3Q7CisgICAgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247CisgICAgVmVjdG9yPEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk+IHNlYXJjaEtleXM7CisgICAgU3RyaW5nIHNlYXJjaFRleHQ7Cisg
ICAgdW5zaWduZWQgcmVzdWx0c0xpbWl0OworICAgIGJvb2wgdmlzaWJsZU9ubHk7CisgICAgYm9v
bCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHk7CisKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWEoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHN0YXJ0T2JqZWN0LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRleHQsIHVuc2ln
bmVkIHJlc3VsdHNMaW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5k
YW50c09ubHkpCisgICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCisgICAgICAgICwg
c2VhcmNoRGlyZWN0aW9uKHNlYXJjaERpcmVjdGlvbikKKyAgICAgICAgLCBzZWFyY2hUZXh0KHNl
YXJjaFRleHQpCisgICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkKKyAgICAgICAg
LCB2aXNpYmxlT25seSh2aXNpYmxlT25seSkKKyAgICAgICAgLCBpbW1lZGlhdGVEZXNjZW5kYW50
c09ubHkoaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorICAgIHsgfQorfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIHsKKyAgICBJbmNsdWRlT2JqZWN0LAorICAg
IElnbm9yZU9iamVjdCwKKyAgICBEZWZhdWx0QmVoYXZpb3IsCit9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRp
b24sIERhdGUsIFRpbWUgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUg
eworICAgIE9mZiA9IDAsCisgICAgT24sCisgICAgTWl4ZWQsCit9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKKyAgICBOb25lLAorICAgIEFzY2VuZGluZywKKyAg
ICBEZXNjZW5kaW5nLAorICAgIE90aGVyLAorICAgIEludmFsaWQsCit9OworCitlbnVtIGNsYXNz
IEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tIHsKKyAgICBCZWdpbiwgLy8gU2VhcmNo
IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZWxlbWVudC4KKyAgICBTZWxlY3Rpb24sIC8vIFNl
YXJjaCBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCisgICAgRW5k
IC8vIFNlYXJjaCBmcm9tIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCit9OworCitlbnVtIGNsYXNz
IEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIHsKKyAgICBGb3J3YXJkLCAvLyBPY2N1
cnJlbmNlIGFmdGVyIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBCYWNrd2FyZCwgLy8gT2NjdXJy
ZW5jZSBiZWZvcmUgdGhlIHN0YXJ0aW5nIHJhbmdlLgorICAgIENsb3Nlc3QsIC8vIENsb3Nlc3Qg
b2NjdXJyZW5jZSB0byB0aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIgb3IgYmVmb3Jl
LgorICAgIEFsbCAvLyBBbGwgb2NjdXJyZW5jZXMKK307CisKK3N0cnVjdCBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dENyaXRlcmlhIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hTdHJpbmdzOyAv
LyBUZXh0IHN0cmluZ3MgdG8gc2VhcmNoIGZvci4KKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dFN0YXJ0RnJvbSBzdGFydDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb247CisKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKCkKKyAgICAg
ICAgOiBzdGFydChBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2VsZWN0aW9uKQor
ICAgICAgICAsIGRpcmVjdGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6Rm9y
d2FyZCkKKyAgICB7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRp
b25UeXBlIHsKKyAgICBTZWxlY3QsCisgICAgUmVwbGFjZSwKKyAgICBDYXBpdGFsaXplLAorICAg
IExvd2VyY2FzZSwKKyAgICBVcHBlcmNhc2UKK307CisKK3N0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4
dE9wZXJhdGlvbiB7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZXM7IC8vIHRl
eHQgb24gd2hpY2ggcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgorICAgIEFjY2Vzc2liaWxpdHlUZXh0
T3BlcmF0aW9uVHlwZSB0eXBlOworICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7IC8vIEZvciB0
eXBlID0gcmVwbGFjZS4KKworICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uKCkKKyAgICAg
ICAgOiB0eXBlKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0KQorICAgIHsg
fQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24geworICAgIFZlcnRp
Y2FsLAorICAgIEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAorfTsKKworc3RydWN0IEFjY2Vz
c2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7CisgICAgZW51bSBDaGlsZHJlbkluY2x1c2lv
biB7CisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwKKyAg
ICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCisgICAgICAgIFRl
eHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgLy8gVGhp
cyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5hbWVGcm9tCisgICAgfTsKKworICAgIENo
aWxkcmVuSW5jbHVzaW9uIGNoaWxkcmVuSW5jbHVzaW9uOworICAgIGJvb2wgaW5jbHVkZUZvY3Vz
YWJsZUNvbnRlbnQ7CisgICAgTm9kZSogaWdub3JlZENoaWxkTm9kZTsKKworICAgIEFjY2Vzc2li
aWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZShDaGlsZHJlbkluY2x1c2lvbiBjID0gVGV4dFVuZGVy
RWxlbWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLCBib29sIGkgPSBmYWxzZSwgTm9kZSogaWdu
b3JlZCA9IG51bGxwdHIpCisgICAgICAgIDogY2hpbGRyZW5JbmNsdXNpb24oYykKKyAgICAgICAg
LCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudChpKQorICAgICAgICAsIGlnbm9yZWRDaGlsZE5vZGUo
aWdub3JlZCkKKyAgICB7IH0KK307CisKKyNpZiBQTEFURk9STShDT0NPQSkKK3R5cGVkZWYgc3Ry
dWN0IF9OU1JhbmdlIE5TUmFuZ2U7CisjZW5kaWYKKworc3RydWN0IFBsYWluVGV4dFJhbmdlIHsK
KyAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07CisK
KyAgICBQbGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIFBsYWluVGV4dFJhbmdlKHVu
c2lnbmVkIHMsIHVuc2lnbmVkIGwpCisgICAgICAgIDogc3RhcnQocykKKyAgICAgICAgLCBsZW5n
dGgobCkKKyAgICB7IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWluVGV4dFJhbmdl
KE5TUmFuZ2UpOworI2VuZGlmCisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFz
dGFydCAmJiAhbGVuZ3RoOyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlWaXNpYmxl
UG9zaXRpb25Gb3JCb3VuZHMgeworICAgIEZpcnN0LAorICAgIExhc3QsCit9OworCitzdHJ1Y3Qg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgeworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydDsKKyAgICBW
aXNpYmxlUG9zaXRpb24gZW5kOworCisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSA9IGRlZmF1
bHQ7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCisgICAgICAgIDogc3RhcnQocykKKyAgICAgICAgLCBl
bmQoZSkKKyAgICB7IH0KKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbikKKyAgICAgICAgOiBzdGFydChzZWxlY3Rpb24uc3RhcnQoKSkK
KyAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQorICAgIHsgfQorCisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCk7IH0KK307
CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2Ny
aXB0LCBTdXBlcnNjcmlwdCB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3Jp
cHQsIFBvc3RTdXBlcnNjcmlwdCB9OworCisvLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gc3RvcmUgdGhl
IGlzSWdub3JlZCBkYXRhIHRoYXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28gdGhhdCBpbiBh
ZGRDaGlsZHJlbigpCisvLyB3ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNoYWluIGZvciBl
YWNoIGVsZW1lbnQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1bCBpbmZvcm1h
dGlvbiBhbHJlYWR5Lgorc3RydWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YSB7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCB7IG51bGxwdHIgfTsKKyAg
ICBib29sIGlzQVhIaWRkZW4geyBmYWxzZSB9OworICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENo
aWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBh
cmVudCB7IGZhbHNlIH07CisKKyAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IG51bGxwdHIpCisgICAgICAgIDog
cGFyZW50KHBhcmVudCkKKyAgICB7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIXBhcmVudDsgfQorfTsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+IHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKCkgPSBkZWZhdWx0
OworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKCkgPSBkZWZhdWx0OwogCi0g
ICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICAvLyBBZnRlciBjb25zdHJ1Y3Rp
bmcgYW4gYWNjZXNzaWJsZSBvYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQorICAgIC8vIHVuaXF1
ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBpbml0KCkgbXVz
dAorICAgIC8vIGJlIGNhbGxlZCBsYXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRPYmplY3RJRChB
WElEKSA9IDA7CisgICAgdmlydHVhbCBBWElEIG9iamVjdElEKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpbml0KCkgPSAwOworCisgICAgLy8gV2hlbiB0aGUgY29ycmVzcG9uZGluZyBX
ZWJDb3JlIG9iamVjdCB0aGF0IHRoaXMgYWNjZXNzaWJsZSBvYmplY3QKKyAgICAvLyByZXByZXNl
bnRzIGlzIGRlbGV0ZWQsIGl0IG11c3QgYmUgZGV0YWNoZWQuCisgICAgdmlydHVhbCB2b2lkIGRl
dGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0Q2FjaGUqID0gbnVsbHB0
cikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgPSAwOworCisgICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlPj4gQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yOworCisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAq
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFw
TGluaygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXNzd29yZEZp
ZWxkT3JDb250YWluaW5nUGFzc3dvcmRGaWVsZCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNO
YXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hG
aWVsZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJBcmVhKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2
ZUxpc3RCb3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlzdEJveCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51UmVs
YXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWVudUJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51SXRlbSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzU2xpZGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlclRodW1i
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0U2xpZGVyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTGFiZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlzdCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFibGVS
b3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0dyb3Vw
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTWVudUxpc3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TWVudUxpc3RQb3B1cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdE9w
dGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRp
YUNvbnRyb2xMYWJlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYU9iamVj
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2goKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFU
ZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNOb25OYXRpdmVUZXh0
Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJMaXN0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYkl0ZW0oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb21i
b0JveCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc1RyZWVJdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGJhcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ2hl
Y2tib3hPclJhZGlvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXco
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ2FudmFzKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0Jsb2NrcXVvdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGFuZG1hcmso
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGxpdHRlcigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb29sYmFyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNL
ZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdW1tYXJ5
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc091dHB1dCgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzRW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5k
ZXRlcm1pbmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgPSAwOwor
ICAgIC8vIEZJWE1FIHNob3VsZCBuZWVkIGp1c3Qgb25lIHNpbmNlIG9uc2NyZWVuIHNob3VsZCBi
ZSAhb2Zmc2NyZWVuLgorICAgIHZpcnR1YWwgYm9vbCBpc09uU2NyZWVuKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNQcmVzc2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0xpbmtlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFeHBhbmRlZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNF
eHBhbmRlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIHBh
cmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgCisgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFj
ZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9
IDA7CisKKyAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBtYW55IGl0ZW1zIGNhbiBiZSBz
ZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGltZS4KKyAgICB2aXJ0dWFsIGJv
b2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9v
bCBoYXNCb2xkRm9udCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9u
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IGdldE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRy
PFJhbmdlPiBjb25zdCYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGhhc1VuZGVybGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSGlnaGxpZ2h0
aW5nKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0ZXRpbWVBdHRy
aWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGlt
ZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhblNldEZv
Y3VzQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFu
Z2VBdHRyaWJ1dGVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1
dGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBib29sIGlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCB1bnNpZ25lZCBibG9ja3F1b3RlTGV2ZWwoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHRh
YmxlTGV2ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9y
UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9
IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogc2VsZWN0ZWRUYWJJdGVt
KCkgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNlbGVjdGVkTGlz
dEl0ZW0oKSA9IDA7CisgICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2lu
Z0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzUG9wdXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcG9w
dXBWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YWxpc3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGFyaWFJc011bHRpbGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBp
bnZhbGlkU3RhdHVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ByZXNz
ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2hlY2tlZCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nIGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3QgPSAwOworCisgICAgLy8gVGhpcyBm
dW5jdGlvbiBjaGVja3MgaWYgdGhlIG9iamVjdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIHRoZXJl
J3MgYSBtb2RhbCBkaWFsb2cgZGlzcGxheWVkLgorICAgIHZpcnR1YWwgYm9vbCBpZ25vcmVkRnJv
bU1vZGFsUHJlc2VuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTW9kYWxEZXNj
ZW5kYW50KE5vZGUqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTW9kYWxOb2RlKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2V0U2l6ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGludCBzZXRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHBvc0luU2V0
KCkgY29uc3QgPSAwOworCisgICAgLy8gQVJJQSBkcmFnIGFuZCBkcm9wCisgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklB
R3JhYmJlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkg
PSAwOworCisgICAgLy8gQ2FsbGVkIG9uIHRoZSByb290IEFYIG9iamVjdCB0byByZXR1cm4gdGhl
IGRlZXBlc3QgYXZhaWxhYmxlIGVsZW1lbnQuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7
CisgICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRl
dGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0QmFzZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGZpcnN0Q2hpbGQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbGFzdENoaWxkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHByZXZpb3VzU2libGluZygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBuZXh0U2li
bGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBu
ZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2Uq
IHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0Rlc2NlbmRhbnRPZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0ID0gMDsKKworICAg
IC8vIFRleHQgc2VsZWN0aW9uCisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmlu
ZFRleHRSYW5nZXMoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFj
Y2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uIGNvbnN0JikgPSAwOworCisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogdGl0bGVV
SUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxl
bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBj
b3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVs
RWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSA9IDA7CisKKyAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29u
c3QgPSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0CisgICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCA9IDA7Cisg
ICAgLy8gQSBzaW5nbGUgbWV0aG9kIGZvciBnZXR0aW5nIGEgY29tcHV0ZWQgbGFiZWwgZm9yIGFu
IEFYT2JqZWN0LiBJdCBjb25kZW5zZXMgdGhlIG51YW5jZXMgb2YgYWNjZXNzaWJpbGl0eVRleHQu
IFVzZWQgYnkgSW5zcGVjdG9yLgorICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSA9
IDA7CisKKyAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFtZSBvbiBhbiBBY2Nl
c3NpYmxlT2JqZWN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBB
dG9tU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRG
b3JJbmNsdXNpb24oKSBjb25zdCA9IDA7CisKKyAgICAvLyBBY2Nlc3NpYmlsaXR5IFRleHQgLSAo
VG8gYmUgZGVwcmVjYXRlZCkuCisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gTWV0
aG9kcyBmb3IgZGV0ZXJtaW5pbmcgYWNjZXNzaWJpbGl0eSB0ZXh0LgorICAgIHZpcnR1YWwgYm9v
bCBpc0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z1ZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQo
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRl
ckVsZW1lbnRNb2RlKCkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBBYmJyZXZpYXRpb25zCisgICAgdmlydHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFs
dWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFs
dWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworCisg
ICAgLy8gT25seSBpZiBpc0NvbG9yV2VsbCgpCisgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUo
aW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYT2JqZWN0
Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQq
IGFuY2hvckVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUHJl
c3NBY3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVj
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCkgPSAwOworICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50
UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0b3JCZWhh
dmlvckZvclRleHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdl
IHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2Vs
ZWN0aW9uU3RhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBzZWxlY3Rpb25F
bmQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBB
dG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTdHJp
bmcmIGFjdGlvblZlcmIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXco
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYWdlKiBwYWdlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRnJhbWVW
aWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBm
cmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCA9IDA7CisgICAgLy8gMS1iYXNlZCwgdG8g
bWF0Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNo
aWNhbExldmVsKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwg
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGluc2VydFRleHQo
Y29uc3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdl
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybURlZmF1bHRBY3Rpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5j
cmVtZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0
Q2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUo
KSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNo
aWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGls
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSosIHVuc2lnbmVkKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
c0NoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRy
ZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRl
dGFjaEZyb21QYXJlbnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWRGcm9tUGFy
ZW50KCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGFi
Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RhZ05h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5z
aWduZWQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBv
c2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdo
dFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5jZUZvclBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxl
UmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0
cmluZyBzdHJpbmdGb3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JSYW5n
ZShjb25zdCBSZWZQdHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGVuZ3Ro
Rm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFj
Y2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzV29yZFN0YXJ0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZUVuZFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VFbmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3Jh
cGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICov
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gb3JJbmRleChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2li
bGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGxp
bmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBQbGFpblRleHRSYW5nZSBwbGFpblRleHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdl
KGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxh
aW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9pbnQm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRl
eCh1bnNpZ25lZCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0
eWxlUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJp
bmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVz
aW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCB1bnNpZ25lZCBkb0FYTGluZUZvckluZGV4KHVuc2lnbmVkKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb21wdXRlZFJvbGVTdHJpbmcoKSBjb25zdCA9IDA7CisKKyAgICAv
LyBNU0FBCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0
cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
VmFsdWVBdXRvZmlsbGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlQXV0
b2ZpbGxBdmFpbGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBdXRvRmlsbEJ1dHRvblR5
cGUgdmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBVc2VkIGJ5
IGFuIEFSSUEgdHJlZSB0byBnZXQgYWxsIGl0cyByb3dzLgorICAgIHZpcnR1YWwgdm9pZCBhcmlh
VHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIC8vIFVzZWQg
YnkgYW4gQVJJQSB0cmVlIGl0ZW0gdG8gZ2V0IGFsbCBvZiBpdHMgZGlyZWN0IHJvd3MgdGhhdCBp
dCBjYW4gZGlzY2xvc2UuCisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJv
d3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIC8vIFVzZWQgYnkgYW4g
QVJJQSB0cmVlIGl0ZW0gdG8gZ2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxk
IHRyZWUgaXRlbXMgYW5kIGdyb3Vwcy4KKyAgICB2aXJ0dWFsIHZvaWQgYXJpYVRyZWVJdGVtQ29u
dGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisKKyAgICAvLyBBUklBIGxp
dmUtcmVnaW9uIGZlYXR1cmVzLgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24o
Ym9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
SW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9v
bCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTdHJp
bmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGxpdmVS
ZWdpb25BdG9taWMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDU1Mz
IFNwZWVjaCBwcm9wZXJ0aWVzLgorICAgIHZpcnR1YWwgT3B0aW9uU2V0PFNwZWFrQXM+IHNwZWFr
QXNQcm9wZXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ha2UgdGhpcyBvYmplY3QgdmlzaWJs
ZSBieSBzY3JvbGxpbmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQu
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdCA9IDA7CisgICAg
Ly8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0
cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYpIGNvbnN0
ID0gMDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9i
YWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisKKyAgICBl
bnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9
OworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRv
VmlzaWJsZU9wdGlvbnMmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgbGFzdEtub3du
SXNJZ25vcmVkVmFsdWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExhc3RLbm93bklzSWdu
b3JlZFZhbHVlKGJvb2wpID0gMDsKKworICAgIC8vIEZpcmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBu
b3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVkIHZhbHVlIGNoYW5nZWQu
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpID0gMDsKKwor
ICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBpc01hdGhFbGVtZW50KCku
CisgICAgdmlydHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01h
dGhGZW5jZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGV4
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTnVtYmVyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFRh
YmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFNj
cmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0gMDsKKworICAgIC8vIFJvb3QgY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoUmFkaWNhbmRP
YmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFJv
b3RJbmRleE9iamVjdCgpID0gMDsKKworICAgIC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoVW5kZXJPYmplY3QoKSA9IDA7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aE92ZXJPYmplY3QoKSA9
IDA7CisKKyAgICAvLyBGcmFjdGlvbiBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgPSAwOworCisg
ICAgLy8gU3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aEJhc2VPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aFN1YnNjcmlwdE9iamVjdCgpID0gMDsKKyAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSA9
IDA7CisKKyAgICAvLyBGZW5jZWQgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRo
RmVuY2VkT3BlblN0cmluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVu
Y2VkQ2xvc2VTdHJpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF0aExpbmVUaGlj
a25lc3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJh
dG9yKCkgY29uc3QgPSAwOworCisgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCisgICAg
dHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiwgQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOwor
ICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0UGFpcnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3Np
YmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSA9IDA7CisKKyAgICAvLyBWaXNpYmlsaXR5Lgor
ICAgIHZpcnR1YWwgYm9vbCBpc0FYSGlkZGVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0RPTUhpZGRlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNIaWRkZW4oKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFw
cGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG92ZXJyaWRlQXR0YWNo
bWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50KSA9IDA7CisKKyAgICAv
LyBhIHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgaWYgYW4gYXR0YWNo
bWVudCBpcyBpZ25vcmVkCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRh
Y2htZW50KCkgY29uc3QgPSAwOworICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUgb3Bwb3J0dW5p
dHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluY2x1ZGVkCisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgPSAwOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICB2aXJ0dWFsIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0aCgpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3QgPSAwOworI2Vu
ZGlmCisKKyAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgdG8gdXBkYXRl
IGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCisgICAgLy8gb3RoZXIgb3BlcmF0aW9ucyB1cGRh
dGUgdHlwZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
ID0gMDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgYm9vbCBwcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogI2VuZGlm
CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNjZXNz
aWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZpcnR1YWwgYm9vbCBjYXJldEJyb3dzaW5n
RW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0Vu
YWJsZWQoYm9vbCkgPSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlKiBmb2N1c2FibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBlZGl0YWJsZUFuY2VzdG9yKCkgPSAwOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdEJhc2UqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKCkgPSAwOworCisgICAg
dmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZy
b21QYXJlbnREYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcklzSWdub3JlZEZyb21Q
YXJlbnREYXRhKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKikgPSAwOwogfTsKIAorbmFtZXNw
YWNlIGF4IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRj4KK1QqIG1hdGNoZWRB
bmNlc3Rvcihjb25zdCBUJiBvYmplY3QsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IEYmIG1hdGNo
ZXMpCit7CisgICAgVCogcGFyZW50OworICAgIGlmIChpbmNsdWRlU2VsZikKKyAgICAgICAgcGFy
ZW50ID0gY29uc3RfY2FzdDxUKj4oJm9iamVjdCk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8q
IHBhcmVudFB0ciA9IG9iamVjdC5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFpczxUPihw
YXJlbnRQdHIpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHBhcmVudCA9
IHBhcmVudFB0cjsKKyAgICB9CisKKyAgICBmb3IgKDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlmIChtYXRjaGVzKCpwYXJlbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIGF4CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDUzMzRkYzc2NmVjLi4wZTZiZWRiZTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC05NzYsNyArOTc2LDcgQEAgT3B0aW9uU2V0PFNwZWFrQXM+IEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyZXIt
PnN0eWxlKCkuc3BlYWtBcygpOwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50LCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0
Cit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50LCBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPnJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbikKQEAgLTEwMzMsNyArMTAz
Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzVGV4dEFsdGVybmF0aXZl
KCkgY29uc3QKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUG9wdXAoKSBjb25z
dAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgaGFzIHRoZSBhcmlhLWhhc3BvcHVwIGF0
dHJpYnV0ZSwgb3IgaWYgaXQgaGFzIGFuIGFuY2VzdG9yIG9mIHR5cGUgbGluayB3aXRoIHRoZSBh
cmlhLWhhc3BvcHVwIGF0dHJpYnV0ZS4KLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW3RoaXNdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmls
aXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW3RoaXNdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICh0aGlzID09ICZvYmplY3QpID8gIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG9iamVjdC5wb3B1cFZhbHVlKCksICJmYWxzZSIpCiAgICAg
ICAgICAgICA6IG9iamVjdC5pc0xpbmsoKSAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uob2JqZWN0LnBvcHVwVmFsdWUoKSwgImZhbHNlIik7CiAgICAgfSk7CkBAIC0xMjgxLDcgKzEy
ODEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKIAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJl
cikpIHsKICAgICAgICAgLy8gc3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVC
dXR0b25zIGFyZSBqdXN0IHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQn
cyBpZ25vcmVkIG9uIGFuIGluZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAg
ICAgaWYgKHBhcmVudCAmJiAocGFyZW50LT5pc01lbnVJdGVtKCkgfHwgcGFyZW50LT5hcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVu
ZGVyVGV4dD4oKm1fcmVuZGVyZXIpOwpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzTGlzdE1hcmtlcigpKSB7Ci0gICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwor
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNMaXN0SXRlbSgp
OwogICAgIH0KIApAQCAtMjM3MCw3ICsyMzcwLDcgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25zdAog
ICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFF
bGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdl
TWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKIHsKICAgICBpZiAoIWFyZWEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjM5
Myw3ICsyMzkzLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE0KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW1vdGUgPSByZW1vdGVTVkdSb290RWxlbWVudChD
cmVhdGUpOwogICAgIGlmICghcmVtb3RlKQpAQCAtMjQwMyw3ICsyNDAzLDcgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZH
RWxlbWVudEhpdFRlc3QKICAgICByZXR1cm4gcmVtb3RlLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJ
bnRQb2ludChvZmZzZXQpKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGlmIChpc1NWR0ltYWdlKCkpCiAgICAgICAgIHJl
dHVybiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChwb2ludCk7CkBAIC0yNDE3LDcgKzI0MTcsNyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRVc2VTaGFkb3dIb3N0Rm9ySGl0VGVzdGluZyhOb2RlKiBzaGFk
b3dIb3N0KQogICAgIHJldHVybiBzaGFkb3dIb3N0ICYmICFzaGFkb3dIb3N0LT5oYXNUYWdOYW1l
KHZpZGVvVGFnKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1MCw3ICsyNDUwLDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhp
dFRlc3QoY28KICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVzdWx0ID0gb2JqLT5kb2N1bWVudCgpLmF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSog
cmVzdWx0ID0gb2JqLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2Jq
KTsKICAgICByZXN1bHQtPnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKIAogICAgIC8vIEFs
bG93IHRoZSBlbGVtZW50IHRvIHBlcmZvcm0gYW55IGhpdC10ZXN0aW5nIGl0IG1pZ2h0IG5lZWQg
dG8gZG8gdG8gcmVhY2ggbm9uLXJlbmRlciBjaGlsZHJlbi4KQEAgLTI0NTgsNyArMjQ1OCw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvCiAgICAgCiAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQt
PmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQg
aXMgdGhlIGxhYmVsIG9mIGEgY29udHJvbCwgYSBoaXQgdGVzdCBzaG91bGQgcmV0dXJuIHRoZSBj
b250cm9sLgotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb250cm9sT2JqZWN0ID0gcmVz
dWx0LT5jb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpOworICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogY29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVzcG9uZGlu
Z0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRyb2xPYmplY3QgJiYg
IWNvbnRyb2xPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0
dXJuIGNvbnRyb2xPYmplY3Q7CiAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAgIGlmICghYXJl
YU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBtX2NoaWxkcmVu
LmFwcGVuZCgmYXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGF4T2JqZWN0
Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3QuYXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGF4
T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAgICAgfQogfQog
CkBAIC0zMzA4LDcgKzMzMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFk
ZEhpZGRlbkNoaWxkcmVuKCkKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
Y2hpbGQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdoZXJlIHRoZSBs
YXN0IHJlbmRlciBzaWJsaW5nIGlzIGxvY2F0ZWQgd2l0aGluIG1fY2hpbGRyZW4uCi0gICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KGNoaWxkLT5yZW5kZXJlcigp
KTsKICAgICAgICAgICAgIGlmIChjaGlsZE9iamVjdCAmJiBjaGlsZE9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgY2hpbGRyZW4gPSBjaGls
ZE9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgp
KQpAQCAtMzUyNSw3ICszNTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAg
YXJpYVNlbGVjdGVkUm93cyhyZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiTGlzdDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHNlbGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCisgICAgICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogc2VsZWN0ZWRUYWIgPSBzZWxlY3RlZFRhYkl0ZW0oKSkKICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoc2VsZWN0ZWRUYWIpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMGIxOWRhNTJh
YmUuLjE1NDM3YTRmZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1
YmxpYzoKICAgICBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHJvb3QgYWNj
ZXNzaWJpbGl0eSBvYmplY3QgdG8ga2ljayBvZmYgYSBoaXQgdGVzdC4KLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRWxlbWVu
dCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApAQCAtMTM1LDcgKzEzNSw3
IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0
cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBBdG9tU3RyaW5n
JiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYg
YWN0aW9uVmVyYigpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lk
Z2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBnZXREb2N1bWVudExpbmtzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpA
QCAtMjM1LDExICsyMzUsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVGFiSXRlbVNlbGVjdGVk
KCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CiAg
ICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0OwotICAgIHZvaWQgYWRkUmFkaW9CdXR0b25H
cm91cENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdDsKKyAgICB2b2lkIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhU
TUxBcmVhRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nl
c3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBjb25zdDsKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBhcmVudE9iamVjdCgpIGNvbnN0
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdS
b290KCk7CiAgICAgZW51bSBDcmVhdGlvbkNob2ljZSB7IENyZWF0ZSwgUmV0cmlldmUgfTsKICAg
ICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaG9p
Y2UgY3JlYXRlSWZOZWNlc3NhcnkpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0
IEludFBvaW50JikgY29uc3Q7CiAgICAgdm9pZCBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNW
R0VsZW1lbnQoTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudC5jcHAKaW5kZXggYjA2Njg4NjM1ZTYuLjQ1MjkwNzI1
NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdFbGVtZW50LmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAg
ICBpZiAobV9yZW5kZXJlci0+aXNTVkdTaGFwZSgpKSB7CiAgICAgICAgIGlmIChjYW5TZXRGb2N1
c0F0dHJpYnV0ZSgpIHx8IGVsZW1lbnQoKS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGF1dG8gc3ZnUGFyZW50ID0gQWNjZXNzaWJp
bGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgICAgICBpZiAoYXV0byogc3ZnUGFyZW50ID0gYXg6
Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC5oYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSB8fCBvYmplY3QuaXNBY2Nl
c3NpYmlsaXR5U1ZHUm9vdCgpOwogICAgICAgICB9KSkKICAgICAgICAgICAgIHJldHVybiAhc3Zn
UGFyZW50LT5oYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAKaW5kZXggNTE3OGI5ZmE1M2QuLmVhZjkzNWViZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAt
MTk5LDcgKzE5OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHdlYkFyZWEgPSB3ZWJBcmVhT2JqZWN0KCk7CiAgICAgaWYgKCF3ZWJBcmVhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oCmluZGV4IDY2ZmY1OTQ3ZDZhLi5hODhjOWJmYWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtNTks
NyArNTksNyBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkQ2hpbGRyZW4o
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBvdmVycmlkZTsKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBhY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVl
ZHNUb1VwZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9
CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBiM2ZmMGE5NzUxMC4u
MzcyMWFmN2JjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRo
ZSB2YWx1ZSBpbmRpY2F0b3IgdG8gdGhlIGhpZXJhcmNoeSwKICAgICAvLyBhbGxvdyB0aGUgcGxh
dGZvcm0gdG8gbWFrZSBhIGZpbmFsIGRlY2lzaW9uIGFib3V0IGl0LgogICAgIGlmICh0aHVtYi5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIuYXhP
YmplY3RJRCgpKTsKKyAgICAgICAgY2FjaGUtPnJlbW92ZSh0aHVtYi5vYmplY3RJRCgpKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0aHVtYik7CiB9CkBAIC0xMDAsNyAr
MTAwLDcgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gaW5wdXRFbGVtZW50
KCktPmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3Np
YmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAogewogICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSkgewogICAgICAgICBB
U1NFUlQobV9jaGlsZHJlbi5zaXplKCkgPT0gMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCmluZGV4IDQ2OWQyMTcwMWJlLi5mMzUx
OTcxZmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBlbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTUsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
YWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICAKICAgICBib29sIGNhblNldFZhbHVlQXR0cmli
dXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0Owot
ICAgIAorICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGUpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1
dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmNwcAppbmRleCBjM2NjMDgyNmE5My4uMjI3YWVjYjEwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbigpCiAKIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjp+QWNjZXNzaWJpbGl0
eVNwaW5CdXR0b24oKSA9IGRlZmF1bHQ7CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0dG9uKCkKK0FjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlKiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0dG9uKCkKIHsKICAg
ICBpZiAoIW1faGF2ZUNoaWxkcmVuKQogICAgICAgICBhZGRDaGlsZHJlbigpOwpAQCAtNTUsNyAr
NTUsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5j
cmVtZW50QnV0dG9uKCkKICAgICByZXR1cm4gbV9jaGlsZHJlblswXS5nZXQoKTsKIH0KICAgIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmRlY3JlbWVudEJ1
dHRvbigpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246
OmRlY3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAg
YWRkQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAppbmRleCA2M2Q1ZjM3ZWVlZi4uMzBiMTdlZTE3ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTcGluQnV0dG9uLmgKQEAgLTM2LDkgKzM2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uKCk7CiAgICAgCiAgICAgdm9pZCBzZXRTcGluQnV0dG9uRWxl
bWVudChTcGluQnV0dG9uRWxlbWVudCogc3BpbkJ1dHRvbikgeyBtX3NwaW5CdXR0b25FbGVtZW50
ID0gc3BpbkJ1dHRvbjsgfQotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGluY3JlbWVu
dEJ1dHRvbigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlY3JlbWVudEJ1dHRvbigpOwor
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGluY3JlbWVudEJ1dHRvbigpOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkZWNyZW1lbnRCdXR0b24oKTsKIAogICAgIHZvaWQgc3Rl
cChpbnQgYW1vdW50KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBmNWJmNWIyZjYwZi4uNWJmMzk2NjU4MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29s
dW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnNDb3B5ID0gbV9jb2x1bW5zOwogICAgIAog
ICAgIGZvciAoY29uc3QgYXV0byYgY29sdW1uIDogY29sdW1uc0NvcHkpIHsKLSAgICAgICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbj4oKmNvbHVtbikuaGVhZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
PigqY29sdW1uKS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhl
YWRlcik7CiAgICAgfQogfQpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRh
YmxlOjpyb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHkgPSBtX3Jvd3M7CiAgICAgCiAg
ICAgZm9yIChjb25zdCBhdXRvJiByb3cgOiByb3dzQ29weSkgewotICAgICAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigq
cm93KS5oZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBoZWFkZXIgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpyb3cpLmhlYWRlck9i
amVjdCgpKQogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoaGVhZGVyKTsKICAgICB9CiB9CkBA
IC02MjIsNyArNjIyLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwKICAgICAgICAgLy8gY2Vs
bCB0byBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KICAgICAgICAgZm9yICh1bnNp
Z25lZCBjb2xJbmRleENvdW50ZXIgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hp
bGRyZW4uc2l6ZSgpKSwgY29sdW1uICsgMSk7IGNvbEluZGV4Q291bnRlciA+IDA7IC0tY29sSW5k
ZXhDb3VudGVyKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb2xJbmRleCA9IGNvbEluZGV4Q291
bnRlciAtIDE7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCA9IGNoaWxk
cmVuW2NvbEluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsKICAgICAgICAgICAgIEFTU0VSVChp
czxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpKTsKICAgICAgICAgICAgIGlmICghaXM8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNoaWxkKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuY3BwCmluZGV4IDliYmFkMTEyOTZlLi4xOTA1ZGJmY2U2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpy
b3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKIAogQWNjZXNz
aWJpbGl0eVRhYmxlUm93KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3coKSBjb25z
dAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVu
dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+KHBhcmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggM2NiN2YxNWEy
MTcuLjM2Nzk4MTU5MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIExh
eW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjplbGVtZW50UmVjdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbHVtblJlY3Q7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKK0FjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiB7CiAgICAgaWYgKCFt
X3BhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAppbmRleCA5ZmNk
YjVjZjM2ZS4uNjdlNzVmNTVmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApAQCAtNDAsOSArNDAsOSBAQCBj
bGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4gZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4o
KTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKLSAgICAg
ICAgCisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogaGVhZGVyT2JqZWN0KCk7CisKICAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRl
eChpbnQgY29sdW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKaW5kZXggYmI5ZDllMDRjNGQuLjY3NGZjMjgxZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKK0Fj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVj
dCgpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlUm93KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIwLDcgKzEyMCw3IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gY2hlY2sgdGhlIGZpcnN0IGVsZW1lbnQgaW4g
dGhlIHJvdyB0byBzZWUgaWYgaXQgaXMgYSBUSCBlbGVtZW50Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY2VsbCA9IHJvd0NoaWxkcmVuWzBdLmdldCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlKiBjZWxsID0gcm93Q2hpbGRyZW5bMF0uZ2V0KCk7CiAgICAgaWYgKCFpczxBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsPigqY2VsbCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmgKaW5kZXggOTg4ZTI0NTkyMTMuLmRjYTIyMzhkM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZVJvdygpOwog
CiAgICAgLy8gcmV0cmlldmVzIHRoZSAicm93IiBoZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdo
dG1vc3QgY29sdW1uKQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2Jq
ZWN0KCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogaGVhZGVyT2JqZWN0
KCk7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29uc3Q7
CiAgICAgCiAgICAgdm9pZCBzZXRSb3dJbmRleChpbnQgcm93SW5kZXgpIHsgbV9yb3dJbmRleCA9
IHJvd0luZGV4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCA2ODdmMWFlZGY3OC4uN2NmMGIwNjlkYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlP
Uy5tbQpAQCAtMzYsMTkgKzM2LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLXZv
aWQgQVhPYmplY3RDYWNoZTo6ZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmos
IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkKK0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBv
YmplY3QsIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkKIHsKLSAgICBbb2JqLT53cmFwcGVy
KCkgZGV0YWNoXTsKLSAgICBvYmotPnNldFdyYXBwZXIobnVsbHB0cik7CisgICAgYXV0byB3cmFw
cGVyID0gb2JqZWN0LndyYXBwZXIoKTsKKyAgICBbd3JhcHBlciBkZXRhY2hdOworICAgIG9iamVj
dC5zZXRXcmFwcGVyKG51bGxwdHIpOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCi12b2lkIEFY
T2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQordm9p
ZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBv
YmplY3QpCiB7Ci0gICAgUmV0YWluUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiB3cmFw
cGVyID0gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFsbG9jXSBpbml0
V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6b2JqXSk7Ci0gICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBw
ZXIuZ2V0KCkpOworICAgIFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4g
d3JhcHBlciA9IGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhbGxvY10g
aW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0OiZvYmplY3RdKTsKKyAgICBvYmplY3Quc2V0V3Jh
cHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBu
b3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b24pCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1t
CmluZGV4IDRkZTM5MjQwMmM5Li43NWQ5YmU0NzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCkBA
IC00Nyw3ICs0Nyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmlsZVVwbG9hZEJ1dHRv
blJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJp
bGl0eU9iamVjdCopCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVu
dFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopCiB7CiB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAppbmRleCBiNjY3MTdkMTZkMC4uOTc4MjhhMjVmMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaApAQCAtMjgsNyArMjgsNiBA
QAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmgi
CiAjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCIKICNpbXBvcnQg
IldBS1ZpZXcuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRl
eCBiY2NmMzdlNGY0Yi4uMDJlMGUzNzZlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCkBAIC0xMjMsMTQgKzEyMywxNCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUgPSBAIlVJQWNjZXNzaWJp
bAogc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25v
cmVkQW5jZXN0b3IoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKndyYXBwZXIpCiB7CiAgICAg
d2hpbGUgKHdyYXBwZXIgJiYgIVt3cmFwcGVyIGlzQWNjZXNzaWJpbGl0eUVsZW1lbnRdKSB7Ci0g
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IFt3cmFwcGVyIGFjY2Vzc2liaWxp
dHlPYmplY3RdOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogb2JqZWN0ID0gW3dy
YXBwZXIgYWNjZXNzaWJpbGl0eU9iamVjdF07CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBpZiAoW3dyYXBwZXIgaXNBdHRhY2htZW50
XSAmJiAhW1t3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXSkK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisK
KyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmICghcGFyZW50T2JqZWN0KQogICAg
ICAgICAgICAgYnJlYWs7CiAKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmls
aXR5TwogLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGV4dGVybmFsIGNsaWVudHMgdG8gYmUgYWJsZSB0
byBjcmVhdGUgYSB0ZXh0IG1hcmtlciB3aXRob3V0IGhhdmluZyBhIHBvaW50ZXIgdG8gdGhlIGNh
Y2hlLgogLSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIGFjY2Vzc2liaWxpdHlPYmpl
Y3Q6KEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICopd3JhcHBlcgogewotICAgIFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gW3dyYXBwZXIgYWNjZXNzaWJpbGl0eU9i
amVjdF07IAorICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBheE9iamVjdCA9
IFt3cmFwcGVyIGFjY2Vzc2liaWxpdHlPYmplY3RdOwogICAgIGlmICghYXhPYmplY3QpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgCkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNz
aWJpbGl0eU8KIAogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
CiAKLS0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVj
dCopYXhPYmplY3QKKy0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDooQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UqKWF4T2JqZWN0CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEFj
Y2Vzc2liaWxpdHlPYmplY3Q6YXhPYmplY3RdOwogICAgIGlmICghc2VsZikKQEAgLTM4OCw3ICsz
ODgsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlV
bmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAgICAgICByZXR1cm4gbmlsOwogICAg
IAogICAgIC8vIFRyeSBhIGZ1enp5IGhpdCB0ZXN0IGZpcnN0IHRvIGZpbmQgYW4gYWNjZXNzaWJs
ZSBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UgKmF4T2JqZWN0ID0g
bnVsbHB0cjsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSAqYXhPYmplY3QgPSBudWxscHRy
OwogICAgIHsKICAgICAgICAgQVhBdHRyaWJ1dGVDYWNoZUVuYWJsZXIgZW5hYmxlQ2FjaGUobV9v
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKSk7CiAgICAgICAgIGF4T2JqZWN0ID0gbV9vYmplY3QtPmFj
Y2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7CkBAIC01NTAsMzEgKzU1MCwzMSBA
QCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9y
ZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciopX2FjY2Vzc2liaWxpdHlUcmVlQW5jZXN0b3IKIHsKLSAgICBhdXRvIG1hdGNoRnVuYyA9IFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBhdXRvIG1hdGNoRnVu
YyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBvYmplY3Qucm9sZVZhbHVlKCk7CiAgICAgICAgIHJl
dHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOwogICAgIH07Ci0gICAgCi0gICAg
aWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkK
KworICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gYXg6Om1h
dGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZT4oKm1fb2JqZWN0LCBmYWxzZSwg
V1RGTW92ZShtYXRjaEZ1bmMpKSkKICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwog
ICAgIHJldHVybiBuaWw7CiB9CiAKIC0gKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilfYWNj
ZXNzaWJpbGl0eUxpc3RBbmNlc3RvcgogewotICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIGF1dG8gbWF0Y2hGdW5jID0gW10g
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpIHsKICAgICAgICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZSA9IG9iamVjdC5yb2xlVmFsdWUoKTsKICAgICAgICAgcmV0dXJuIHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEJveDsKICAgICB9OwotICAgIAotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVj
dCwgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCisKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0
eU9iamVjdEJhc2U+KCptX29iamVjdCwgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCiAgICAg
ICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtIChB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlBcnRpY2xlQW5jZXN0b3IK
IHsKLSAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJp
bGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBwYXJlbnQgPSBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlPigqbV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU7CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBw
YXJlbnQtPndyYXBwZXIoKTsKQEAgLTU4Myw3ICs1ODMsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmls
aXR5TwogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlMYW5k
bWFya0FuY2VzdG9yCiB7Ci0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwg
W3NlbGZdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCptX29iamVjdCwgZmFsc2UsIFtzZWxmXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gW3NlbGYg
X2FjY2Vzc2liaWxpdHlJc0xhbmRtYXJrUm9sZTpvYmplY3Qucm9sZVZhbHVlKCldOwogICAgIH0p
KQogICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CkBAIC01OTIsNyArNTkyLDcgQEAg
c3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVk
QW5jZXN0b3IoQWNjZXNzaWJpbGl0eU8KIAogLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
KV9hY2Nlc3NpYmlsaXR5VGFibGVBbmNlc3RvcgogewotICAgIGlmIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpt
X29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsK
KyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4OjptYXRj
aGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCptX29iamVjdCwgZmFsc2UsIFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVy
biBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlOwogICAgIH0p
KQogICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CkBAIC02MDEsMTQgKzYwMSwxNCBA
QCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9y
ZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogCiAtIChCT09MKV9hY2Nlc3NpYmlsaXR5SXNJblRh
YmxlQ2VsbAogewotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50
KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qp
IHsKKyAgICByZXR1cm4gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZT4oKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBv
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2VsbDsKICAgICB9KSAhPSBudWxscHRyOwogfQogCiAtIChBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlGaWVsZHNldEFuY2VzdG9yCiB7Ci0gICAgaWYg
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgeworICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSog
cGFyZW50ID0gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZT4oKm1f
b2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0ZpZWxkc2V0KCk7CiAgICAgfSkpCiAgICAgICAg
IHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihB
Y2Nlc3NpYmlsaXR5TwogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2li
aWxpdHlGcmFtZUFuY2VzdG9yCiB7Ci0gICAgYXV0byogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9i
amVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgYXV0byogcGFyZW50ID0gYXg6Om1hdGNoZWRBbmNl
c3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZT4oKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVj
dC5pc1dlYkFyZWEoKTsKICAgICB9KTsKICAgICBpZiAoIXBhcmVudCkKQEAgLTYzMiw3ICs2MzIs
NyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmln
bm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAgIAogICAgIC8vIFRyYWl0IGluZm9ybWF0
aW9uIGFsc28gbmVlZHMgdG8gYmUgZ2F0aGVyZWQgZnJvbSB0aGUgcGFyZW50cyBhYm92ZSB0aGUg
b2JqZWN0LgogICAgIC8vIFRoZSBwYXJlbnRPYmplY3QgaXMgbmVlZGVkIGluc3RlYWQgb2YgdGhl
IHVuaWdub3JlZFBhcmVudE9iamVjdCwgYmVjYXVzZSBhIHRhYmxlIG1pZ2h0IGJlIGlnbm9yZWQs
IGJ1dCBpbmZvcm1hdGlvbiBzdGlsbCBuZWVkcyB0byBiZSBnYXRoZXJlZCBmcm9tIGl0LiAgICAK
LSAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRP
YmplY3QoKTsgcGFyZW50ICE9IG5pbDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkg
eworICAgIGZvciAoYXV0byogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJl
bnQgIT0gbmlsOyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHBhcmVudFJvbGUgPSBwYXJlbnQtPnJvbGVWYWx1ZSgpOwogICAgICAg
ICBpZiAocGFyZW50Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYSkKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTE4Miw5ICsxMTgyLDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5n
VG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAtIChB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKil0YWJsZUNlbGxQYXJlbnQKIHsKICAgICAvLyBGaW5kIGlm
IHRoaXMgZWxlbWVudCBpcyBpbiBhIHRhYmxlIGNlbGwuCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudCA9IGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2li
aWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBwYXJlbnQgPSBheDo6bWF0Y2hlZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
PigqbV9vYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuaXNUYWJsZUNlbGwoKTsKLSAgICB9KSkpCisg
ICAgfSkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
Kj4ocGFyZW50KTsKICAgICByZXR1cm4gbmlsOwogfQpAQCAtMTE5Miw5ICsxMTkyLDkgQEAgc3Rh
dGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5T
U3RyaW5nICpzdHJpbmcpCiAtIChBY2Nlc3NpYmlsaXR5VGFibGUqKXRhYmxlUGFyZW50CiB7CiAg
ICAgLy8gRmluZCBpZiB0aGUgcGFyZW50IHRhYmxlIGZvciB0aGUgdGFibGUgY2VsbC4KLSAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIHRy
dWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNz
aWJpbGl0eU9iamVjdEJhc2U+KCptX29iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlJiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4ob2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KG9iamVjdCkuaXNF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwotICAgIH0pKSkKKyAgICB9KSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KHBhcmVudCk7CiAgICAg
cmV0dXJuIG5pbDsKIH0KQEAgLTEyMDQsNyArMTIwNCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0
cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQog
ICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZUVsZW1lbnQgPSBtX29iamVj
dC0+dGl0bGVVSUVsZW1lbnQoKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogdGl0bGVF
bGVtZW50ID0gbV9vYmplY3QtPnRpdGxlVUlFbGVtZW50KCk7CiAgICAgaWYgKHRpdGxlRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuIHRpdGxlRWxlbWVudC0+d3JhcHBlcigpOwogCkBAIC0xMjQwLDcg
KzEyNDAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJp
bmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykKICAgICAKICAgICB1bnNpZ25lZCBjb2x1bW5S
YW5nZUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbHVtblJhbmdlLmZpcnN0KTsKICAg
ICBpZiAoY29sdW1uUmFuZ2VJbmRleCA8IGNvbHVtbkhlYWRlcnMuc2l6ZSgpKSB7Ci0gICAgICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjb2x1bW5IZWFkZXIgPSBjb2x1bW5IZWFkZXJz
W2NvbHVtblJhbmdlLmZpcnN0XTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlPiBjb2x1bW5IZWFkZXIgPSBjb2x1bW5IZWFkZXJzW2NvbHVtblJhbmdlLmZpcnN0XTsKICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIgPSBjb2x1bW5IZWFkZXIt
PndyYXBwZXIoKTsKICAgICAgICAgaWYgKHdyYXBwZXIpCiAgICAgICAgICAgICBbaGVhZGVycyBh
ZGRPYmplY3Q6d3JhcHBlcl07CkBAIC0xMzk3LDggKzEzOTcsOCBAQCBzdGF0aWMgdm9pZCBhcHBl
bmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmlu
ZykKIHsKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChhdXRvIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVybiBvYmplY3Quc3VwcG9ydHNEYXRldGltZUF0dHJp
YnV0ZSgpOyB9KSkKKworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBheDo6bWF0Y2hlZEFuY2VzdG9y
PEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlPigqbV9vYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KSB7IHJldHVybiBvYmplY3Quc3VwcG9ydHNEYXRl
dGltZUF0dHJpYnV0ZSgpOyB9KSkKICAgICAgICAgcmV0dXJuIHBhcmVudC0+ZGF0ZXRpbWVBdHRy
aWJ1dGVWYWx1ZSgpOwogCiAgICAgcmV0dXJuIG5pbDsKQEAgLTE2NjQsNyArMTY2NCw3IEBAIHN0
YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBO
U1N0cmluZyAqc3RyaW5nKQogICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hl
KG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwogICAgIAogICAgIC8vIEFzIGxvbmcgYXMgdGhl
cmUncyBhIHBhcmVudCB3cmFwcGVyLCB0aGF0J3MgdGhlIGNvcnJlY3QgY2hhaW4gdG8gY2xpbWIu
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOyAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50ID0gbV9v
YmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmIChwYXJlbnQpCiAgICAgICAg
IHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKIApAQCAtMTgwMCw3ICsxODAwLDcgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3Ry
aW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBJZiB0aGlzIHN0YXRp
YyB0ZXh0IGluc2lkZSBvZiBhIGxpbmssIGl0IHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIGxpbmtl
ZCBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnQgPSBtX29iamVjdDsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogZWxlbWVudCA9IG1fb2JqZWN0OwogICAgIGlm
IChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQg
JiYgbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5pc0xpbmsoKSkKICAgICAgICAg
ZWxlbWVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKIApAQCAtMTk2Nywz
NCArMTk2NywzNCBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmll
dyogdmlldykKICAgICByZXR1cm4gbV9vYmplY3QtPnNjcm9sbFZpc2libGVDb250ZW50UmVjdCgp
OwogfQogCi0tIChBY2Nlc3NpYmlsaXR5T2JqZWN0KilkZXRhaWxQYXJlbnRGb3JTdW1tYXJ5T2Jq
ZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0KilvYmplY3QKKy0gKEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKilkZXRhaWxQYXJlbnRGb3JTdW1tYXJ5T2JqZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSopb2JqZWN0CiB7CiAgICAgLy8gVXNlIHRoaXMgdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIHRo
ZSBjaGlsZCBvZiBhIHN1bW1hcnkgb2JqZWN0LgogICAgIC8vIEFuZCByZXR1cm4gdGhlIHN1bW1h
cnkncyBwYXJlbnQsIHdoaWNoIGlzIHRoZSBleHBhbmRhYmxlIGRldGFpbHMgb2JqZWN0LgotICAg
IGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdW1tYXJ5ID0gQWNjZXNzaWJpbGl0eU9i
amVjdDo6bWF0Y2hlZFBhcmVudCgqb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0KSB7CisgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBzdW1tYXJ5ID0gYXg6Om1hdGNoZWRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZT4o
Km9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiBvYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5oYXNUYWdOYW1lKHN1bW1hcnlUYWcpOwogICAgIH0p
KQogICAgICAgICByZXR1cm4gc3VtbWFyeS0+cGFyZW50T2JqZWN0KCk7CiAgICAgcmV0dXJuIG5p
bDsKIH0KIAotLSAoQWNjZXNzaWJpbGl0eU9iamVjdCopZGV0YWlsUGFyZW50Rm9yT2JqZWN0OihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KilvYmplY3QKKy0gKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilk
ZXRhaWxQYXJlbnRGb3JPYmplY3Q6KEFjY2Vzc2liaWxpdHlPYmplY3QqKW9iamVjdAogewogICAg
IC8vIFVzZSB0aGlzIHRvIGNoZWNrIGlmIGFuIG9iamVjdCBpcyBpbnNpZGUgYSBkZXRhaWxzIG9i
amVjdC4KLSAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogZGV0YWlscyA9IEFjY2Vz
c2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogZGV0YWlscyA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJh
c2U+KCpvYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuaGFzVGFnTmFtZShkZXRhaWxzVGFnKTsKICAg
ICB9KSkKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KGRl
dGFpbHMpOworICAgICAgICByZXR1cm4gZGV0YWlsczsKICAgICByZXR1cm4gbmlsOwogfQogCi0t
IChBY2Nlc3NpYmlsaXR5T2JqZWN0Kil0cmVlSXRlbVBhcmVudEZvck9iamVjdDooQWNjZXNzaWJp
bGl0eU9iamVjdCopb2JqZWN0CistIChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopdHJlZUl0ZW1Q
YXJlbnRGb3JPYmplY3Q6KEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilvYmplY3QKIHsKICAgICAv
LyBVc2UgdGhpcyB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgaW5zaWRlIGEgdHJlZWl0ZW0gb2Jq
ZWN0LgotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpvYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+
KCpvYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtOwogICAgIH0pKQotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4ocGFyZW50KTsKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKICAgICByZXR1
cm4gbmlsOwogfQogCkBAIC0yMjA1LDExICsyMjA1LDExIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmli
dXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywg
UmVuCiAKICAgICAvLyBBZGQgY29kZSBjb250ZXh0IGlmIHRoaXMgbm9kZSBpcyB3aXRoaW4gYSA8
Y29kZT4gYmxvY2suCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSByZW5kZXJl
ci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKLSAg
ICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qp
IHsKKyAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qubm9kZSgpICYmIG9iamVjdC5ub2Rl
KCktPmhhc1RhZ05hbWUoY29kZVRhZyk7CiAgICAgfTsKLSAgICAKLSAgICBpZiAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBh
cmVudCgqYXhPYmplY3QsIHRydWUsIFdURk1vdmUobWF0Y2hGdW5jKSkpCisKKyAgICBpZiAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudCA9IGF4OjptYXRjaGVkQW5jZXN0b3I8
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+KCpheE9iamVjdCwgdHJ1ZSwgV1RGTW92ZShtYXRjaEZ1
bmMpKSkKICAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRl
eHRBdHRyaWJ1dGVDb250ZXh0IHZhbHVlOlVJQWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0U291
cmNlQ29kZSByYW5nZTpyYW5nZV07CiB9CiAKQEAgLTIyODAsNyArMjI4MCw3IEBAIHN0YXRpYyB2
b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywKICAgICAgICAgICAgICAgICBpZiAoW3NlbGYgX2FkZEFjY2Vzc2liaWxp
dHlPYmplY3Q6aGVhZGluZ09iamVjdCB0b1RleHRNYXJrZXJBcnJheTphcnJheV0pCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IG1fb2JqZWN0LT5saXN0TWFya2VyVGV4dEZvck5vZGVB
bmRQb3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRp
b24oKSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNp
YmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKCFsaXN0TWFya2VyVGV4dC5pc0VtcHR5KCkpIAogICAg
ICAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Omxpc3RNYXJrZXJUZXh0XTsKQEAgLTIy
ODksNyArMjI4OSw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQo
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlz
dE1hcmtlclRleHQgPSBtX29iamVjdC0+bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24o
Jm5vZGUsIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9u
KGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKSkpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFs
aXN0TWFya2VyVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdF07CkBAIC0yOTM5LDEwICsyOTM5LDEwIEBAIHN0YXRpYyB2b2lkIEFYQXR0
cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0
cmluZywKICAgICAKICAgICAvLyBTaW5jZSBkZXRhaWxzIGVsZW1lbnQgaXMgaWdub3JlZCBvbiBp
T1MsIHdlIHNob3VsZCBleHBvc2UgdGhlIGV4cGFuZGVkIHN0YXR1cyBvbiBpdHMKICAgICAvLyBz
dW1tYXJ5J3MgYWNjZXNzaWJsZSBjaGlsZHJlbi4KLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVj
dCogZGV0YWlsUGFyZW50ID0gW3NlbGYgZGV0YWlsUGFyZW50Rm9yU3VtbWFyeU9iamVjdDptX29i
amVjdF0pCisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBkZXRhaWxQYXJlbnQgPSBb
c2VsZiBkZXRhaWxQYXJlbnRGb3JTdW1tYXJ5T2JqZWN0Om1fb2JqZWN0XSkKICAgICAgICAgcmV0
dXJuIGRldGFpbFBhcmVudC0+c3VwcG9ydHNFeHBhbmRlZCgpOwotICAgIAotICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiB0cmVlSXRlbVBhcmVudCA9IFtzZWxmIHRyZWVJdGVtUGFyZW50Rm9y
T2JqZWN0Om1fb2JqZWN0XSkKKworICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogdHJl
ZUl0ZW1QYXJlbnQgPSBbc2VsZiB0cmVlSXRlbVBhcmVudEZvck9iamVjdDptX29iamVjdF0pCiAg
ICAgICAgIHJldHVybiB0cmVlSXRlbVBhcmVudC0+c3VwcG9ydHNFeHBhbmRlZCgpOwogICAgIAog
ICAgIHJldHVybiBtX29iamVjdC0+c3VwcG9ydHNFeHBhbmRlZCgpOwpAQCAtMjk1NSwxMCArMjk1
NSwxMCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAKICAgICAvLyBTaW5jZSBkZXRhaWxzIGVs
ZW1lbnQgaXMgaWdub3JlZCBvbiBpT1MsIHdlIHNob3VsZCBleHBvc2UgdGhlIGV4cGFuZGVkIHN0
YXR1cyBvbiBpdHMKICAgICAvLyBzdW1tYXJ5J3MgYWNjZXNzaWJsZSBjaGlsZHJlbi4KLSAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogZGV0YWlsUGFyZW50ID0gW3NlbGYgZGV0YWlsUGFyZW50
Rm9yU3VtbWFyeU9iamVjdDptX29iamVjdF0pCisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBkZXRhaWxQYXJlbnQgPSBbc2VsZiBkZXRhaWxQYXJlbnRGb3JTdW1tYXJ5T2JqZWN0Om1f
b2JqZWN0XSkKICAgICAgICAgcmV0dXJuIGRldGFpbFBhcmVudC0+aXNFeHBhbmRlZCgpOwotICAg
IAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0cmVlSXRlbVBhcmVudCA9IFtzZWxmIHRy
ZWVJdGVtUGFyZW50Rm9yT2JqZWN0Om1fb2JqZWN0XSkKKworICAgIGlmIChBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSogdHJlZUl0ZW1QYXJlbnQgPSBbc2VsZiB0cmVlSXRlbVBhcmVudEZvck9iamVj
dDptX29iamVjdF0pCiAgICAgICAgIHJldHVybiB0cmVlSXRlbVBhcmVudC0+aXNFeHBhbmRlZCgp
OwogICAgIAogICAgIHJldHVybiBtX29iamVjdC0+aXNFeHBhbmRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCmluZGV4IDU4NmFkZjA2NzJmLi5jZmY5NzA3ZTA1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcApAQCAtMTE0LDEwICsxMTQsMTEgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlTm9k
ZT4gQVhJc29sYXRlZFRyZWU6OnJvb3ROb2RlKCkKICAgICByZXR1cm4gbm9kZUZvcklEKG1fcm9v
dE5vZGVJRCk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnNldFJvb3ROb2RlSUQoQVhJRCBh
eElEKQordm9pZCBBWElzb2xhdGVkVHJlZTo6c2V0Um9vdChSZWY8QVhJc29sYXRlZFRyZWVOb2Rl
PiYgcm9vdCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9Owot
ICAgIG1fcGVuZGluZ1Jvb3ROb2RlSUQgPSBheElEOworICAgIG1fcm9vdE5vZGVJRCA9IHJvb3Qt
Pm9iamVjdElEKCk7CisgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFkZChyb290LT5vYmplY3RJ
RCgpLCBXVEZNb3ZlKHJvb3QpKTsKIH0KICAgICAKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZv
Y3VzZWROb2RlSUQoQVhJRCBheElEKQpAQCAtMTUwLDExICsxNTEsMTAgQEAgdm9pZCBBWElzb2xh
dGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygpCiAKICAgICAvLyBXZSBkb24ndCBjbGVhciB0
aGUgcGVuZGluZyBJRHMgYmVhY2F1c2UgaWYgdGhlIG5leHQgcm91bmQgb2YgdXBkYXRlcyBkb2Vz
IG5vdCBtb2RpZnkgdGhlbSwgdGhlbiB0aGV5IHN0YXkgdGhlIHNhbWUKICAgICAvLyB2YWx1ZSB3
aXRob3V0IGV4dHJhIGJvb2trZWVwaW5nLgotICAgIG1fcm9vdE5vZGVJRCA9IG1fcGVuZGluZ1Jv
b3ROb2RlSUQ7CiAgICAgbV9mb2N1c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsK
LSAgICAKKwogICAgIGZvciAoYXV0byYgaXRlbSA6IGFwcGVuZENvcHkpCi0gICAgICAgIG1fcmVh
ZGVyVGhyZWFkTm9kZU1hcC5hZGQoaXRlbS0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGl0ZW0pKTsK
KyAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFkZChpdGVtLT5vYmplY3RJRCgpLCBXVEZN
b3ZlKGl0ZW0pKTsKIAogICAgIGZvciAoYXV0byBpdGVtIDogcmVtb3ZlQ29weSkKICAgICAgICAg
bV9yZWFkZXJUaHJlYWROb2RlTWFwLnJlbW92ZShpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmlu
ZGV4IDZhYmQ3ODNjMTEyLi5kYWYzM2ZjMGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZE5vZGVDaGFuZ2VzKFZlY3RvcjxS
ZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4mKTsKICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAK
LSAgICB2b2lkIHNldFJvb3ROb2RlSUQoQVhJRCk7CisgICAgdm9pZCBzZXRSb290KFJlZjxBWElz
b2xhdGVkVHJlZU5vZGU+Jik7CiAgICAgdm9pZCBzZXRGb2N1c2VkTm9kZUlEKEFYSUQpOwogICAg
IAogICAgIC8vIENhbGwgb24gQVggdGhyZWFkCkBAIC03OCw3ICs3OCw2IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+PiBtX3BlbmRpbmdBcHBlbmRzOwogICAg
IFZlY3RvcjxBWElEPiBtX3BlbmRpbmdSZW1vdmFsczsKICAgICBBWElEIG1fcGVuZGluZ0ZvY3Vz
ZWROb2RlSUQ7Ci0gICAgQVhJRCBtX3BlbmRpbmdSb290Tm9kZUlEOwogICAgIExvY2sgbV9jaGFu
Z2VMb2dMb2NrOwogCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IGQ4ZGJiOWYyYzk3Li4yNTU1ZmViMWZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCkBAIC0zMCwxMCArMzAsMTIgQEAKIAogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAorZXh0ZXJuICJDIiBib29sIF9BWFVJRWxlbWVu
dFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJlYWQodm9pZCk7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQVhJc29sYXRlZFRyZWVOb2RlOjpBWElzb2xhdGVkVHJlZU5vZGUoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQotICAgIDogbV9pZGVudGlmaWVyKG9iamVjdC5h
eE9iamVjdElEKCkpCitBWElzb2xhdGVkVHJlZU5vZGU6OkFYSXNvbGF0ZWRUcmVlTm9kZShjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0KQorICAgIDogbV9pZChvYmplY3Qub2Jq
ZWN0SUQoKSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGluaXRpYWxpemVB
dHRyaWJ1dGVEYXRhKG9iamVjdCk7CkBAIC00MiwxNCArNDQsMTQgQEAgQVhJc29sYXRlZFRyZWVO
b2RlOjpBWElzb2xhdGVkVHJlZU5vZGUoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
KQogI2VuZGlmCiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVlTm9k
ZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKK1JlZjxBWElzb2xh
dGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVlTm9kZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlJiBvYmplY3QpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29s
YXRlZFRyZWVOb2RlKG9iamVjdCkpOwogfQogCiBBWElzb2xhdGVkVHJlZU5vZGU6On5BWElzb2xh
dGVkVHJlZU5vZGUoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjppbml0
aWFsaXplQXR0cmlidXRlRGF0YShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit2
b2lkIEFYSXNvbGF0ZWRUcmVlTm9kZTo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2UmIG9iamVjdCkKIHsKICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6Um9sZVZhbHVlLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5yb2xlVmFsdWUoKSkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0F0dGFjaG1lbnQsIG9iamVjdC5p
c0F0dGFjaG1lbnQoKSk7CkBAIC04Miw3ICs4NCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWVOb2Rl
OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVl
CiB2b2lkIEFYSXNvbGF0ZWRUcmVlTm9kZTo6YXBwZW5kQ2hpbGQoQVhJRCBheElEKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhJRCk7Cisg
ICAgbV9jaGlsZHJlbklEcy5hcHBlbmQoYXhJRCk7CiB9CiAKIHZvaWQgQVhJc29sYXRlZFRyZWVO
b2RlOjpzZXRQYXJlbnQoQVhJRCBwYXJlbnQpCkBAIC05OCwyMyArMTAwLDM1IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRlbnRpZmllcihBWElzb2xhdGVkVHJlZUlEIHRyZWVJ
ZGVudGlmaWVyKQogICAgICAgICBtX2NhY2hlZFRyZWUgPSB0cmVlOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5vZGU6OmZvY3VzZWRVSUVsZW1lbnQo
KSBjb25zdAorY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2U6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgQVhJc29sYXRlZFRyZWVOb2RlOjpjaGlsZHJlbihib29sKQoreworICAgIGlm
IChfQVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNlY29uZGFyeUFYVGhyZWFkKCkpIHsKKyAg
ICAgICAgbV9jaGlsZHJlbi5jbGVhcigpOworICAgICAgICBtX2NoaWxkcmVuLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9jaGlsZHJlbklEcy5zaXplKCkpOworICAgICAgICBhdXRvIHRyZWUgPSB0
aGlzLT50cmVlKCk7CisgICAgICAgIGZvciAoYXV0byBjaGlsZElEIDogbV9jaGlsZHJlbklEcykK
KyAgICAgICAgICAgIG1fY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChj
aGlsZElEKSk7CisgICAgfQorICAgIHJldHVybiBtX2NoaWxkcmVuOworfQorCitBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkgY29u
c3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2VkRWxlbWVudCA9IHRyZWUoKS0+Zm9jdXNlZFVJRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gZm9jdXNlZEVsZW1lbnQuZ2V0KCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xh
dGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0CitBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogQVhJc29sYXRlZFRyZWVOb2RlOjpwYXJlbnRPYmplY3RVbmln
bm9yZWQoKSBjb25zdAogewogICAgIHJldHVybiB0cmVlKCktPm5vZGVGb3JJRChwYXJlbnQoKSku
Z2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0ZWRUcmVl
Tm9kZTo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAor
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGlmICghcmVsYXRp
dmVGcmFtZSgpLmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Zm9yIChhdXRvIGNoaWxkSUQgOiBjaGlsZHJlbigpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBj
aGlsZElEIDogbV9jaGlsZHJlbklEcykgewogICAgICAgICBhdXRvIGNoaWxkID0gdHJlZSgpLT5u
b2RlRm9ySUQoY2hpbGRJRCk7CiAgICAgICAgIEFTU0VSVChjaGlsZCk7CiAgICAgICAgIGlmIChj
aGlsZCAmJiBjaGlsZC0+cmVsYXRpdmVGcmFtZSgpLmNvbnRhaW5zKHBvaW50KSkKQEAgLTE4Niw2
ICsyMDAsMTUgQEAgaW50IEFYSXNvbGF0ZWRUcmVlTm9kZTo6aW50QXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICk7CiB9CiAKK3ZvaWQgQVhJc29s
YXRlZFRyZWVOb2RlOjp1cGRhdGVCYWNraW5nU3RvcmUoKQoreworICAgIGlmIChfQVhVSUVsZW1l
bnRSZXF1ZXN0U2VydmljZWRCeVNlY29uZGFyeUFYVGhyZWFkKCkpIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9IHRoaXMt
PnRyZWUoKSkKKyAgICAgICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRSgoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaAppbmRleCA5
MzRkNjNmNGE5YS4uYzY5Y2FhZGMzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVk
ZSAiUGF0aC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MywxMSArNDQsNTk3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOwotY2xhc3MgQWNjZXNzaWJp
bGl0eU9iamVjdDsKLQotY2xhc3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxB
WElzb2xhdGVkVHJlZU5vZGU+IHsKIAorY2xhc3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDog
cHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEFYSXNvbGF0ZWRUcmVlTm9kZT4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
Jik7CisgICAgfkFYSXNvbGF0ZWRUcmVlTm9kZSgpOworCisgICAgdm9pZCBzZXRPYmplY3RJRChB
WElEIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQorICAgIEFYSUQgb2JqZWN0SUQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBpbml0KCkgb3ZlcnJpZGUgeyB9
CisKKyAgICB2b2lkIGRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0
Q2FjaGUqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0RldGFjaGVkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMaW5rKTsg
fQorICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNJbWFnZSk7IH0KKyAgICBib29sIGlzSW1hZ2VNYXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNOYXRpdmVJbWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ltYWdlQnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUGFzc3dv
cmRGaWVsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Nv
bnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQ
YXNzd29yZEZpZWxkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgaXNO
YXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0NoZWNrYm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0F0dGFjaG1lbnQpOyB9CisgICAgYm9vbCBp
c01lZGlhVGltZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc01lbnUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNZW51QmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWVudUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01lbnVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
RmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQorICAgIGJvb2wgaXNJ
bnB1dEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
UHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0lucHV0U2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0xhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Rh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRGF0YVRh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGVS
b3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJsZUNv
bHVtbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxl
Q2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZpZWxk
c2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzR3JvdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBVHJlZUdy
aWRSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbWFn
ZU1hcExpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzSW1hZ2VNYXBMaW5rKTsgfQorICAgIGJvb2wgaXNNZW51TGlzdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVMaXN0UG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdE9w
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1NwaW5C
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNOYXRp
dmVTcGluQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNb2NrT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFDb250cm9sTGFiZWwpOyB9Cisg
ICAgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzU3dpdGNoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNBUklBVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUcmVlKTsgfQorICAgIGJvb2wg
aXNUcmVlR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc1RyZWVJdGVtKTsgfQorICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
U2Nyb2xsYmFyKTsgfQorICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUb29sYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1N1bW1hcnkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICFpc09uU2NyZWVuKCk7IH0KKyAgICBib29sIGlzUHJlc3NlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1VudmlzaXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Zpc2l0ZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0
cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlu
a2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRXhwYW5k
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNWaXNpYmxl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29sbGFwc2Vk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldElzRXhwYW5k
ZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJl
bGF0aXZlRnJhbWUpOyB9CisgICAgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3Qg
RmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKworICAgIGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGhhc0JvbGRG
b250KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc0l0YWxp
Y0ZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzTWlz
c3BlbGxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIFJlZlB0cjxS
YW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiwgQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGhhc1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTYW1lU3R5bGUoUmVu
ZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
U3RhdGljVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBo
YXNVbmRlcmxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAg
IGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKworICAgIGJvb2wgY2FuU2V0
Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0U2VsZWN0
ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIE5vZGUqIG5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KKworICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNBY2Nlc3NpYmlsaXR5SWdub3JlZCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KKyAgICBib29sIGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKworICAgIHVuc2lnbmVkIGJsb2Nr
cXVvdGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgaGVhZGlu
Z0xldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGludCB0YWJsZUxldmVs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2liaWxpdHlCdXR0b25T
dGF0ZSBjaGVja2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOyB9CisgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGZsb2F0IHZhbHVlRm9y
UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZmxvYXQgbWF4VmFsdWVG
b3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBmbG9hdCBtaW5WYWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGZsb2F0IHN0ZXBW
YWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzZWxlY3RlZFRhYkl0ZW0o
KSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIHNlbGVjdGVkTGlzdEl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAg
aW50IGxheW91dENvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJs
ZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CisKKyAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGFyaWFBY3RpdmVEZXNj
ZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXJp
YURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBh
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFyaWFGbG93VG9FbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisKKyAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHByZXNzZWRJc1ByZXNlbnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgYXJpYUlzTXVsdGls
aW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgaW52YWxp
ZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBz
dXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgc3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9uZTsgfQorICAg
IGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBsaW5rUmVsVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgp
OyB9CisgICAgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZSB7
IH0KKyAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU6OkZhbHNl
OyB9CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0
cmluZygpOyB9CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGNvbnN0IFN0cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGNo
ZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gdGhlcmUncyBhIG1vZGFs
IGRpYWxvZyBkaXNwbGF5ZWQuCisgICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNb2RhbERlc2NlbmRh
bnQoTm9kZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01v
ZGFsTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIHN1
cHBvcnRzU2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBpbnQgc2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgcG9z
SW5TZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisKKyAgICBib29sIHN1cHBvcnRz
QVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzQVJJQUdyYWJiZWQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgVmVjdG9yPFN0cmlu
Zz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkgb3ZlcnJpZGUgeyByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsgfQorCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEJhc2UqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0QmFzZSogZmlyc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbGFzdENoaWxkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RC
YXNlKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG5leHRTaWJsaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBuZXh0
U2libGluZ1VuaWdub3JlZChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcHJldmlvdXNTaWJsaW5nVW5pZ25vcmVkKGlu
dCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudE9iamVjdFVuaWdub3JlZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnRPYmpl
Y3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lk
IGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmluZFRleHRS
YW5nZXMoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PigpOyB9CisgICAgVmVjdG9yPFN0cmlu
Zz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3Qm
KSBvdmVycmlkZSB7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9CisKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0QmFzZSogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogY29ycmVzcG9uZGluZ0xhYmVs
Rm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxF
bGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9s
ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duOyB9CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGFyaWFSb2xlSGFzUHJlc2Vu
dGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmls
aXR5VGV4dD4mKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgp
IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisKKyAgICB2b2lkIHNldEFjY2Vzc2libGVO
YW1lKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGhhc0F0dHJpYnV0
ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisKKyAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFN0cmluZygpOyB9CisKKyAgICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHRleHRVbmRlckVs
ZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRl
eHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9
CisgICAgU3RyaW5nIHRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFN0
cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyAgICBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBhY2Nl
c3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIGVsZW1lbnRzRnJv
bUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
IG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBjb2xvclZhbHVlKGludCYsIGludCYsIGludCYpIGNv
bnN0IG92ZXJyaWRlIHsgfQorCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpSb2xlVmFsdWUpKTsgfQorCisgICAgQVhPYmpl
Y3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKworICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgYm9vbCBzdXBwb3J0c1ByZXNzQWN0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIExheW91dFJlY3QgYm91bmRpbmdCb3hS
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgSW50UmVj
dCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gTGF5b3V0U2l6ZSgpOyB9CisgICAgSW50UG9pbnQgY2xpY2tQb2ludCgp
IG92ZXJyaWRlIHsgcmV0dXJuIEludFBvaW50KCk7IH0KKyAgICBQYXRoIGVsZW1lbnRQYXRoKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGF0aCgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1BhdGgo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3I7IH0KKyAgICBQbGFpblRleHRSYW5n
ZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJh
bmdlKCk7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CisKKyAgICBVUkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJM
KCk7IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQorICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcm
IGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRv
bSgpOyB9CisgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEZyYW1lKiBmcmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBGcmFtZSogbWFpbkZyYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIERvY3VtZW50KiB0b3BE
b2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBTY3JvbGxW
aWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5n
KCk7IH0KKyAgICB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKworICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBi
b29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5n
ZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIHNldFZhbHVl
KGZsb2F0KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBwcmVzcygpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBwZXJmb3JtRGVmYXVsdEFjdGlvbigpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlVu
ZGVmaW5lZDsgfQorICAgIHZvaWQgaW5jcmVtZW50KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBk
ZWNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZSB7IH0KKyAgICBjb25zdCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRl
ZCA9IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIGFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBpbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSosIHVuc2lnbmVk
KSBvdmVycmlkZSB7IH0KKworICAgIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGNhbkhhdmVDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB1cGRhdGVDaGls
ZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRl
Q2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVl
KCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlIHsgfQor
ICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IH0KKyAgICBi
b29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwor
ICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHRhYkNoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc2hv
dWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRD
aGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CisKKyAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2
aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb25SYW5nZSBsZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdl
KCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25S
YW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VG
b3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFy
YWdyYXBoRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHN0eWxlUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRS
YW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0K
KyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5n
ZSgpOyB9CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAg
ICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
SW50UmVjdCgpOyB9CisgICAgSW50UmVjdCBib3VuZHNGb3JSYW5nZShjb25zdCBSZWZQdHI8UmFu
Z2U+KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBpbnQgbGVuZ3Ro
Rm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyB9
CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IElu
dFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNp
YmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNWaXNp
YmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsg
fQorICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGludCBs
aW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQorICAgIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAgIHZvaWQgbGluZUJy
ZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIFBsYWluVGV4dFJhbmdl
IGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWlu
VGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7
IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQorICAgIFBsYWluVGV4dFJhbmdl
IGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBsYWluVGV4dFJhbmdlKCk7IH0KKworICAgIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgSW50UmVjdCBkb0FYQm91bmRz
Rm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorCisgICAgdW5zaWduZWQgZG9BWExpbmVG
b3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorCisgICAgU3RyaW5nIGNv
bXB1dGVkUm9sZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisK
KyAgICAvLyBNU0FBCisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgbmFtZUZvck1T
QUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0cmluZyBkZXNj
cmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsgfQorCisgICAgU3RyaW5nIHBhc3N3b3Jk
RmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9v
bCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9uVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZTsgfQor
CisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29u
dGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKworICAgIGJv
b2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgPSB0cnVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgPSB0cnVlKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNl
KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCA9IHRydWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25S
ZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9vbCBs
aXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzQnVzeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29s
IGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIFN0cmluZyBhdXRvQ29tcGxl
dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisKKyAgICBib29s
IHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorCisgICAgT3B0aW9uU2V0PFNwZWFrQXM+IHNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIE9wdGlvblNldDxTcGVha0FzPigpOyB9CisKKyAgICB2b2lkIHNjcm9sbFRv
TWFrZVZpc2libGUoKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZp
c2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
IHsgfQorCisgICAgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UG9pbnQoKTsgfQorICAgIEludFNpemUgc2Ny
b2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZSgpOyB9Cisg
ICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBJbnRSZWN0KCk7IH0KKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Ny
b2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCBvdmVycmlkZSB7IH0KKworICAgIGJvb2wg
bGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZvaWQgc2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUoYm9vbCkgb3ZlcnJpZGUgeyB9CisKKyAg
ICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorCisgICAg
Ym9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhSb3coKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aE51bWJlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFNlcGFyYXRv
ck9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aElkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNYXRoVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNYXRoVGFibGVSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTWF0aFRva2VuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlw
dE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0
VHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1hdGhSb290SW5kZXhPYmplY3Qo
KSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZSogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBtYXRoTnVtZXJh
dG9yT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogbWF0aEJhc2VPYmplY3Qo
KSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIG1hdGhG
ZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQor
ICAgIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11
bHRpc2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIG1hdGhQb3N0c2NyaXB0cyhB
Y2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7IH0KKworICAgIGJv
b2wgaXNBWEhpZGRlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0RPTUhpZGRlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0hpZGRlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fd3JhcHBlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciogd3JhcHBlcikgb3ZlcnJpZGUgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9CisK
KyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSopIG92ZXJyaWRlIHsgfQorCisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRC
ZWhhdmlvcjsgfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpbnQgYWNjZXNzaWJp
bGl0eVBhc3N3b3JkRmllbGRMZW5ndGgoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgYm9v
bCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKKworICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCkgb3Zl
cnJpZGU7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBib29sIHByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZv
aWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sKSBvdmVycmlkZSB7IH0K
KyAgICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OlNwZWVjaEhpbnQpOyB9CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRl
VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9CisgICAgU3RyaW5nIGhlbHBUZXh0QXR0cmlidXRl
VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SGVscFRleHQpOyB9CisgICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6VGl0bGUpOyB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBib29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGJvb2wpIG92ZXJyaWRlIHsgfQorI2VuZGlmCisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogZm9jdXNhYmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGVkaXRhYmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIGhpZ2hlc3RFZGl0
YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgY29uc3Qg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXco
Ym9vbCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdm9pZCBzZXRJ
c0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEmKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRh
KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNo
aWxkKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKikgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIHNl
dFRyZWVJZGVudGlmaWVyKEFYSXNvbGF0ZWRUcmVlSUQpOworICAgIEFYSXNvbGF0ZWRUcmVlKiB0
cmVlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXJlbnQoQVhJRCk7CisgICAgdm9pZCBhcHBlbmRD
aGlsZChBWElEKTsKK3ByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVp
bnQ4X3QgewogICAgICAgICBOb25lID0gMCwKICAgICAgICAgSGVscFRleHQsCkBAIC02OCw1NCAr
NjU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgVGl0bGUsCiAgICAgfTsKIAotICAgIHN0YXRpYyBS
ZWY8QVhJc29sYXRlZFRyZWVOb2RlPiBjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYp
OwotICAgIHZpcnR1YWwgfkFYSXNvbGF0ZWRUcmVlTm9kZSgpOwotCi0gICAgQVhJRCBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgCi0gICAgdm9pZCBzZXRQ
YXJlbnQoQVhJRCk7CiAgICAgQVhJRCBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsg
fQogCi0gICAgdm9pZCBhcHBlbmRDaGlsZChBWElEKTsKLSAgICBjb25zdCBWZWN0b3I8QVhJRD4m
IGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfTsKLQotICAgIEFYSXNvbGF0
ZWRUcmVlKiB0cmVlKCkgY29uc3Q7CiAgICAgQVhJc29sYXRlZFRyZWVJRCB0cmVlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZUlkZW50aWZpZXI7IH0KLSAgICB2b2lkIHNldFRyZWVJ
ZGVudGlmaWVyKEFYSXNvbGF0ZWRUcmVlSUQpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIHsgbV93cmFwcGVyID0gd3JhcHBlcjsgfQotI2VuZGlm
Ci0KLXByb3RlY3RlZDoKICAgICBBWElzb2xhdGVkVHJlZU5vZGUoKSA9IGRlZmF1bHQ7Ci0KLXBy
aXZhdGU6Ci0gICAgQVhJc29sYXRlZFRyZWVOb2RlKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
KTsKLSAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmKTsKLQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRh
dGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICBib29sIGlzTWVkaWFD
b250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFDb250cm9sTGFiZWwpOyB9Ci0gICAgYm9vbCBpc0F0dGFj
aG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzQXR0YWNobWVudCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5Um9s
ZT4oaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVWYWx1ZSkpOyB9Ci0gICAg
Ym9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTGluayk7IH0KLSAgICBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c0ltYWdlTWFwTGluayk7IH0KLSAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW1hZ2UpOyB9Ci0gICAg
Ym9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KLSAgICBi
b29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQWNjZXNzaWJpbGl0eUlnbm9yZWQpOyB9
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogcGFyZW50T2JqZWN0SW50ZXJmYWNl
VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1RyZWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVHJlZSk7
IH0KLSAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVHJlZUl0ZW0pOyB9Ci0gICAgYm9vbCBpc1Nj
cm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNTY3JvbGxiYXIpOyB9Ci0gICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OlJlbGF0aXZlRnJhbWUpOyB9Ci0gICAgU3RyaW5nIHNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpTcGVlY2hIaW50KTsgfQotICAgIFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkRlc2NyaXB0aW9uKTsgfQotICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkhlbHBUZXh0KTsgfQotICAgIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OlRpdGxlKTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGZvY3VzZWRV
SUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWElzb2xhdGVkVHJlZU5vZGUoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmKTsKKyAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVE
YXRhKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJik7CiAKICAgICB1c2luZyBBdHRyaWJ1
dGVWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGlu
dCwgdW5zaWduZWQsIGRvdWJsZSwgT3B0aW9uYWw8RmxvYXRSZWN0Pj47CiAgICAgdm9pZCBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hv
dWxkUmVtb3ZlID0gZmFsc2UpOwpAQCAtMTI4LDExICs2NzQsMTIgQEAgcHJpdmF0ZToKICAgICBG
bG9hdFJlY3QgcmVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKIAogICAg
IEFYSUQgbV9wYXJlbnQ7Ci0gICAgQVhJRCBtX2lkZW50aWZpZXI7CisgICAgQVhJRCBtX2lkOwog
ICAgIGJvb2wgbV9pbml0aWFsaXplZCB7IGZhbHNlIH07CiAgICAgQVhJc29sYXRlZFRyZWVJRCBt
X3RyZWVJZGVudGlmaWVyOwogICAgIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gbV9jYWNoZWRUcmVl
OwotICAgIFZlY3RvcjxBWElEPiBtX2NoaWxkcmVuOworICAgIFZlY3RvcjxBWElEPiBtX2NoaWxk
cmVuSURzOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEJhc2U+PiBtX2No
aWxkcmVuOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCAyZjc1Zjk2NTA4ZC4u
ZDJlZjExYTFjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtMjMyLDI2ICsyMzIsMTggQEAgc3RhdGljIEFYVGV4
dFNlbGVjdGlvbkdyYW51bGFyaXR5IHBsYXRmb3JtR3JhbnVsYXJpdHlGb3JXZWJDb3JlR3JhbnVs
YXJpdHkoV2ViQ28KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEFYT2JqZWN0Q2FjaGU6
OmRldGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBY2Nlc3NpYmlsaXR5RGV0
YWNobWVudFR5cGUpCi17Ci0gICAgW29iai0+d3JhcHBlcigpIGRldGFjaF07Ci0gICAgb2JqLT5z
ZXRXcmFwcGVyKG51bGxwdHIpOwotfQotCi0jaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFU
RURfVFJFRSkKLXZvaWQgQVhPYmplY3RDYWNoZTo6YXNzb2NpYXRlSXNvbGF0ZWRUcmVlTm9kZShB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIEFYSXNvbGF0ZWRUcmVlTm9kZSYgbm9kZSwgQVhJ
c29sYXRlZFRyZWVJRCB0cmVlSUQpCitBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQVhPYmpl
Y3RDYWNoZTo6ZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgb2JqZWN0LCBB
Y2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpCiB7CiAgICAgYXV0byB3cmFwcGVyID0gb2JqZWN0
LndyYXBwZXIoKTsKLSAgICBBU1NFUlQod3JhcHBlcik7Ci0gICAgd3JhcHBlci5pc29sYXRlZFRy
ZWVJZGVudGlmaWVyID0gdHJlZUlEOwotICAgIG5vZGUuc2V0V3JhcHBlcih3cmFwcGVyKTsKKyAg
ICBbd3JhcHBlciBkZXRhY2hdOworICAgIG9iamVjdC5zZXRXcmFwcGVyKG51bGxwdHIpOworICAg
IHJldHVybiB3cmFwcGVyOwogfQotI2VuZGlmCiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNo
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0
dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmIG9iamVjdCkKIHsKLSAgICBSZXRh
aW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IHdyYXBwZXIgPSBhZG9wdE5TKFtb
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWxsb2NdIGluaXRXaXRoQWNjZXNzaWJpbGl0
eU9iamVjdDpvYmpdKTsKLSAgICBvYmotPnNldFdyYXBwZXIod3JhcHBlci5nZXQoKSk7CisgICAg
UmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiB3cmFwcGVyID0gYWRvcHRO
UyhbW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFsbG9jXSBpbml0V2l0aEFjY2Vzc2li
aWxpdHlPYmplY3Q6Jm9iamVjdF0pOworICAgIG9iamVjdC5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0
KCkpOwogfQogCiBzdGF0aWMgQk9PTCBheFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnNGb3JUZXN0
cyA9IGZhbHNlOwpAQCAtMjc2LDcgKzI2OCw3IEBAIHN0YXRpYyB2b2lkIEFYUG9zdE5vdGlmaWNh
dGlvbldpdGhVc2VySW5mbyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqb2JqZWN0LCBOCiAg
ICAgTlNBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QsIG5v
dGlmaWNhdGlvbiwgdXNlckluZm8pOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9u
IG5vdGlmaWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0
aW9uKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbikKIHsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMu
bW0KaW5kZXggNmI5NTUwMjJlZDMuLjNlZWU4MzAyZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0K
QEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hGcm9tUGFy
ZW50KCkKICAgICAgICAgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KG51bGxwdHIpOwogfQogCi12
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQpCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRl
QXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFyZW50KQogewogICAg
IGlmICghaXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgKaW5kZXggZmZlZDg1NWM4NGQuLjNlNmJmNjAxMGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaApAQCAtMjksMTkgKzI5LDEzIEBA
CiAjaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZV9oCiAjZGVmaW5lIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZV9oCiAKLSNpbmNsdWRlICJBWElzb2xhdGVk
VHJlZS5oIgotI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlTm9kZS5oIgotI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7
Ci0jaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLWNsYXNzIEFYSXNvbGF0
ZWRUcmVlTm9kZTsKLSNlbmRpZgogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtNTEsMjkgKzQ1LDIyIEBAIGNs
YXNzIFZpc2libGVQb3NpdGlvbjsKIH0KIAogQGludGVyZmFjZSBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UgOiBOU09iamVjdCB7Ci0gICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdCogbV9vYmplY3Q7CisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIG1f
b2JqZWN0OwogICAgIFdlYkNvcmU6OkFYSUQgX2lkZW50aWZpZXI7Ci0jaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6QVhJc29sYXRlZFRy
ZWVOb2RlPiBtX2lzb2xhdGVkVHJlZU5vZGU7Ci0jZW5kaWYKIH0KICAKLS0gKGlkKWluaXRXaXRo
QWNjZXNzaWJpbGl0eU9iamVjdDooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmpl
Y3Q7Ci0KLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBSZWZQdHI8V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2Rl
PiBpc29sYXRlZFRyZWVOb2RlOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWVJRCBpc29sYXRlZFRyZWVJZGVudGlmaWVyOwotI2VuZGlmCistIChp
ZClpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlKilheE9iamVjdDsKIAorLSAodm9pZClhdHRhY2g6KFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKilheE9iamVjdDsKIC0gKHZvaWQpZGV0YWNoOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBXZWJDb3JlOjpBWElEIGlkZW50aWZpZXI7CiAKLS0gKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3QqKWFjY2Vzc2liaWxpdHlPYmplY3Q7CistIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSopYWNjZXNzaWJpbGl0eU9iamVjdDsKIC0gKEJPT0wpdXBk
YXRlT2JqZWN0QmFja2luZ1N0b3JlOwogCiAvLyBUaGlzIGNhbiBiZSBlaXRoZXIgYW4gQWNjZXNz
aWJpbGl0eU9iamVjdCBvciBhbiBBWElzb2xhdGVkVHJlZU5vZGUKLS0gKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UqKWF4QmFja2luZ09iamVjdDsKKy0gKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKilheEJhY2tpbmdPYmplY3Q7CiAKIC8vIFRoZXNlIGFyZSBw
cmUtZml4ZWQgd2l0aCBiYXNlIHNvIHRoYXQgQXBwS2l0IGRvZXMgbm90IGVuZCB1cCBjYWxsaW5n
IGludG8gdGhlc2UgZGlyZWN0bHkgKGJ5cGFzc2luZyBzYWZldHkgY2hlY2tzKS4KIC0gKE5TU3Ry
aW5nICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZTsKQEAgLTk5LDEwICs4Niw3IEBAIGNsYXNzIFZp
c2libGVQb3NpdGlvbjsKIAogZXh0ZXJuIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0
ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0
ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlvbmFyeSAqKTsKIAotI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi1leHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJh
eShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZT4+Jik7Ci0j
ZW5kaWYKLWV4dGVybiBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOworZXh0ZXJu
IE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdEJhc2U6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9jdW1lbnRWaWV3OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IGRhZjM0ZjE1MGY1Li42NThi
NzM0NmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAt
MzEsMTMgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKIAotI2ltcG9ydCAi
QVhJc29sYXRlZFRyZWUuaCIKLSNpbXBvcnQgIkFYSXNvbGF0ZWRUcmVlTm9kZS5oIgogI2ltcG9y
dCAiQVhPYmplY3RDYWNoZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Lmgi
CiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxp
c3RCb3guaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgpAQCAtMjY0
LDcgKzI2MSw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpCiAgICAgcmV0dXJuIGFycmF5Owog
fQogCi1zdGF0aWMgdm9pZCBhZGRDaGlsZFRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZSYgY2hpbGQsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYXJyYXkpCitzdGF0aWMgdm9p
ZCBhZGRDaGlsZFRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UmIGNoaWxkLCBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5KQogewogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyICp3cmFwcGVyID0gY2hpbGQud3JhcHBlcigpOwogICAgIC8vIFdlIHdhbnQgdG8gcmV0
dXJuIHRoZSBhdHRhY2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGlu
ZyB0aGUgYXR0YWNobWVudCwKQEAgLTI3NSwxNyArMjcyLDcgQEAgc3RhdGljIHZvaWQgYWRkQ2hp
bGRUb0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UmIGNoaWxkLCBSZXRhaW5QdHI8
TlNNdXQKICAgICAgICAgW2FycmF5LmdldCgpIGFkZE9iamVjdDp3cmFwcGVyXTsKIH0KIAotI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi1OU0FycmF5ICpjb252ZXJ0VG9O
U0FycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlPj4m
IGNoaWxkcmVuKQotewotICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNoaWxkcmVuLnNpemUoKV07Ci0gICAgZm9yIChh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAgICAgICBhZGRDaGlsZFRvQXJyYXkoKmNoaWxkLCBy
ZXN1bHQpOwotICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxlYXNlXTsKLX0KLSNlbmRpZgotCi1O
U0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pCitOU0FycmF5ICpjb252
ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RCYXNlOjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQogewogICAgIE5TTXV0YWJsZUFycmF5
ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNoaWxk
cmVuLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQpAQCAtMjk2LDYx
ICsyODMsMzEgQEAgTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGQKIEBpbXBsZW1lbnRhdGlvbiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UKIAogQHN5bnRoZXNpemUgaWRlbnRpZmllcj1f
aWRlbnRpZmllcjsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotQHN5
bnRoZXNpemUgaXNvbGF0ZWRUcmVlSWRlbnRpZmllcj1faXNvbGF0ZWRUcmVlSWRlbnRpZmllcjsK
LSNlbmRpZgogCi0tIChpZClpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6KEFjY2Vzc2liaWxp
dHlPYmplY3QqKWF4T2JqZWN0CistIChpZClpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6KEFj
Y2Vzc2liaWxpdHlPYmplY3RCYXNlKilheE9iamVjdAogewogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgbV9vYmplY3QgPSBheE9iamVj
dDsKLSAgICBfaWRlbnRpZmllciA9IG1fb2JqZWN0LT5heE9iamVjdElEKCk7CisgICAgW3NlbGYg
YXR0YWNoOmF4T2JqZWN0XTsKIAogICAgIHJldHVybiBzZWxmOwogfQogCi0jaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLS0gKFJlZlB0cjxXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZU5vZGU+KWlzb2xhdGVkVHJlZU5vZGUKKy0gKHZvaWQpYXR0YWNoOihBY2Nlc3NpYmlsaXR5
T2JqZWN0QmFzZSopYXhPYmplY3QKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwotCi0gICAgaWYgKCFfaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBpZiAobV9pc29sYXRlZFRyZWVOb2RlKQotICAgICAgICByZXR1cm4gbV9pc29sYXRlZFRy
ZWVOb2RlOwotCi0gICAgbV9pc29sYXRlZFRyZWVOb2RlID0gQVhJc29sYXRlZFRyZWU6Om5vZGVJ
blRyZWVGb3JJRChfaXNvbGF0ZWRUcmVlSWRlbnRpZmllciwgX2lkZW50aWZpZXIpOwotICAgIHJl
dHVybiBtX2lzb2xhdGVkVHJlZU5vZGU7CisgICAgbV9vYmplY3QgPSBheE9iamVjdDsKKyAgICBf
aWRlbnRpZmllciA9IG1fb2JqZWN0LT5vYmplY3RJRCgpOwogfQotI2VuZGlmCiAKIC0gKHZvaWQp
ZGV0YWNoCiB7CiAgICAgbV9vYmplY3QgPSBudWxscHRyOwogICAgIF9pZGVudGlmaWVyID0gMDsK
LQotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgbV9pc29sYXRl
ZFRyZWVOb2RlID0gbnVsbHB0cjsKLSAgICBfaXNvbGF0ZWRUcmVlSWRlbnRpZmllciA9IDA7Ci0j
ZW5kaWYKIH0KIAogLSAoQk9PTCl1cGRhdGVPYmplY3RCYWNraW5nU3RvcmUKIHsKLSNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChfQVhVSUVsZW1lbnRSZXF1
ZXN0U2VydmljZWRCeVNlY29uZGFyeUFYVGhyZWFkKCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgaWYgKGF1dG8gdHJlZU5vZGUgPSBzZWxmLmlz
b2xhdGVkVHJlZU5vZGUpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHRyZWUgPSB0cmVlTm9kZS0+
dHJlZSgpKQotICAgICAgICAgICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gX2lkZW50aWZpZXI7Ci0gICAgfQotI2VuZGlmCi0gICAg
CiAgICAgLy8gQ2FsbGluZyB1cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4gaW52YWxpZGF0ZSB0aGlz
IGVsZW1lbnQgc28gc2VsZiBtdXN0IGJlIHJldGFpbmVkLgogICAgIC8vIElmIGl0IGRvZXMgYmVj
b21lIGludmFsaWRhdGVkLCBtX29iamVjdCB3aWxsIGJlIG5pbC4KICAgICBDRlJldGFpbigoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwpAQCAtMzcxLDExICszMjgsOCBAQCBOU0FycmF5ICpjb252
ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZAogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKEFjY2Vzc2liaWxpdHlPYmplY3Qq
KWFjY2Vzc2liaWxpdHlPYmplY3QKKy0gKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKilhY2Nlc3Np
YmlsaXR5T2JqZWN0CiB7Ci0jaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkK
LSAgICBBU1NFUlQoIV9BWFVJRWxlbWVudFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJl
YWQoKSk7Ci0jZW5kaWYKICAgICByZXR1cm4gbV9vYmplY3Q7CiB9CiAKQEAgLTM4NiwxMiArMzQw
LDggQEAgTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGQKICAgICByZXR1cm4gX2F4QmFja2luZ09iamVj
dC0+dGl0bGVBdHRyaWJ1dGVWYWx1ZSgpOwogfQogCi0tIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKilheEJhY2tpbmdPYmplY3QKKy0gKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RCYXNlKilheEJhY2tpbmdPYmplY3QKIHsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChfQVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNl
Y29uZGFyeUFYVGhyZWFkKCkpCi0gICAgICAgIHJldHVybiBzZWxmLmlzb2xhdGVkVHJlZU5vZGUu
Z2V0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gbV9vYmplY3Q7CiB9CiAKQEAgLTc4NSw3ICs3MzUs
NyBAQCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldAogICAgIGlmIChbc2VhcmNoVGV4dFBhcmFtZXRl
ciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICBzZWFyY2hUZXh0ID0g
c2VhcmNoVGV4dFBhcmFtZXRlcjsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFy
dEVsZW1lbnQgPSBudWxscHRyOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBzdGFydEVs
ZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChbc3RhcnRFbGVtZW50UGFyYW1ldGVyIGlzS2luZE9m
Q2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBjbGFzc11dKQogICAgICAg
ICBzdGFydEVsZW1lbnQgPSBbc3RhcnRFbGVtZW50UGFyYW1ldGVyIGFjY2Vzc2liaWxpdHlPYmpl
Y3RdOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAw
MTUwZmNhZTdhZi4uYjgwNGI4OWFjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5n
Rm9yUmVwbGFjZWROb2RlKE5vZGUqIHJlcGxhY2VkTm9kZSkKICAgICAgICAgLy8gbm9uLXplcm8g
bGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9k
ZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCiAgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3Ro
KCkpIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgdGV4dCBvZiB0aGUgbGlzdCBtYXJrZXIgaXRl
bSBpZiBuZWNlc3NhcnkuCi0gICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBtX29i
amVjdC0+bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3Np
dGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIFN0cmluZyBs
aXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9k
ZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQb3Np
dGlvbigpKSk7CiAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsICZu
b2RlLCBsaXN0TWFya2VyVGV4dCwgc3BlbGxDaGVjayk7CiAgICAgICAgICAgICBBWEF0dHJpYnV0
ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsICZub2RlLCBpdC50ZXh0KCksIHNwZWxsQ2hl
Y2spOwpAQCAtMTkyMiw3ICsxOTIyLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5T
QXJyYXkqIGFycmF5LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBbYXJyYXkgY291bnRdOwogICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IFtbYXJyYXkgb2JqZWN0
QXRJbmRleDppXSBhY2Nlc3NpYmlsaXR5T2JqZWN0XTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UqIG9iaiA9IFtbYXJyYXkgb2JqZWN0QXRJbmRleDppXSBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0XTsKICAgICAgICAgaWYgKG9iaikKICAgICAgICAgICAgIHZlY3Rvci5hcHBlbmQob2JqKTsK
ICAgICB9CkBAIC0yMDA1LDI4ICsyMDA1LDExIEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNH
UGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsCiAK
IC0gKHNpemVfdCljaGlsZHJlblZlY3RvclNpemUKIHsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChfQVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRCeVNl
Y29uZGFyeUFYVGhyZWFkKCkpCi0gICAgICAgIHJldHVybiBzZWxmLmlzb2xhdGVkVHJlZU5vZGUt
PmNoaWxkcmVuKCkuc2l6ZSgpOwotI2VuZGlmCi0gICAgCiAgICAgcmV0dXJuIG1fb2JqZWN0LT5j
aGlsZHJlbigpLnNpemUoKTsKIH0KIAogLSAoTlNBcnJheTxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciAqPiAqKWNoaWxkcmVuVmVjdG9yQXJyYXkKIHsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChfQVhVSUVsZW1lbnRSZXF1ZXN0U2VydmljZWRC
eVNlY29uZGFyeUFYVGhyZWFkKCkpIHsKLSAgICAgICAgYXV0byB0cmVlTm9kZSA9IHNlbGYuaXNv
bGF0ZWRUcmVlTm9kZTsKLSAgICAgICAgYXV0byBub2RlQ2hpbGRyZW4gPSB0cmVlTm9kZS0+Y2hp
bGRyZW4oKTsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBWElzb2xhdGVkVHJlZU5vZGU+PiBjaGls
ZHJlbjsKLSAgICAgICAgY2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShub2RlQ2hpbGRy
ZW4uc2l6ZSgpKTsKLSAgICAgICAgYXV0byB0cmVlID0gdHJlZU5vZGUtPnRyZWUoKTsKLSAgICAg
ICAgZm9yIChhdXRvIGNoaWxkSUQgOiBub2RlQ2hpbGRyZW4pCi0gICAgICAgICAgICBjaGlsZHJl
bi51bmNoZWNrZWRBcHBlbmQodHJlZS0+bm9kZUZvcklEKGNoaWxkSUQpKTsKLSAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkoY2hpbGRyZW4pOwotICAgIH0KLSNlbmRpZgogICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KG1fb2JqZWN0LT5jaGlsZHJlbigpKTsKIH0KIApAQCAtMjY2Nywx
NSArMjY1MCwxNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgCiAgICAgICAgIC8vIFRyZWUgaXRlbSAoY2hhbmdlZCB0byBBWFJvd3MpIGNhbiBvbmx5IHJl
cG9ydCB0aGUgdHJlZSAoQVhPdXRsaW5lKSBhcyBpdHMgcGFyZW50LgogICAgICAgICBpZiAoX2F4
QmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudCA9
IF9heEJhY2tpbmdPYmplY3QtPnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpOworICAg
ICAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsKICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQpIHsKICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50LT5pc1RyZWUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+
d3JhcHBlcigpOwotICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0
SW50ZXJmYWNlVW5pZ25vcmVkKCk7CisgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5w
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJ
bnRlcmZhY2VVbmlnbm9yZWQoKTsKKyAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2Jq
ZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAg
ICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAKQEAgLTI4NjEsMTQgKzI4NDQsMTQgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIAogICAgICAgICAvLyBy
YWRpbyBncm91cHMgcmV0dXJuIHRoZSBzZWxlY3RlZCByYWRpbyBidXR0b24gYXMgdGhlIEFYVmFs
dWUKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1JhZGlvR3JvdXAoKSkgewotICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcmFkaW9CdXR0b24gPSBtX29iamVjdC0+c2VsZWN0ZWRSYWRp
b0J1dHRvbigpOworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHJhZGlvQnV0
dG9uID0gbV9vYmplY3QtPnNlbGVjdGVkUmFkaW9CdXR0b24oKTsKICAgICAgICAgICAgIGlmICgh
cmFkaW9CdXR0b24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJl
dHVybiByYWRpb0J1dHRvbi0+d3JhcHBlcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBpZiAobV9vYmplY3QtPmlzVGFiTGlzdCgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiB0YWJJdGVtID0gbV9vYmplY3QtPnNlbGVjdGVkVGFiSXRlbSgpOworICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRU
YWJJdGVtKCk7CiAgICAgICAgICAgICBpZiAoIXRhYkl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiB0YWJJdGVtLT53cmFwcGVyKCk7CkBAIC0zMDYz
LDcgKzMwNDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbHVtbi5jaGlsZHJlbigpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGhlYWRlciA9IGNvbHVtbi5oZWFkZXJPYmplY3QoKTsKKyAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RCYXNlKiBoZWFkZXIgPSBjb2x1bW4uaGVhZGVyT2JqZWN0KCk7CiAgICAgICAg
ICAgICBpZiAoIWhlYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAg
ICAgcmV0dXJuIGhlYWRlci0+d3JhcHBlcigpOwpAQCAtMzExOCw3ICszMTAxLDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pIHsKICAg
ICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2Jq
ZWN0KCk7CiAgICAgICAgICAgICBmb3IgKDsgcGFyZW50ICYmICFwYXJlbnQtPmlzVHJlZSgpOyBw
YXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKQogICAgICAgICAgICAgeyB9CiAgICAgICAg
ICAgICAKQEAgLTMxNTcsNyArMzE0MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgIC8vIFRoZSByb3cgdGhhdCBjb250YWlucyB0aGlzIHJvdy4gSXQgc2hvdWxk
IGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBwYXJlbnQgdGhhdCBpcyBhIHRyZWVpdGVtLgogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xv
c2VkQnlSb3dBdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgp
KSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+
cGFyZW50T2JqZWN0KCk7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogcGFy
ZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOwogICAgICAgICAgICAgd2hpbGUgKHBhcmVu
dCkgewogICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZUl0ZW0oKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwpAQCAtMzE2OCw3ICszMTUxLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdz4oKm1fb2JqZWN0KSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93PigqbV9vYmplY3Qp
LmRpc2Nsb3NlZEJ5Um93KCk7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSog
cm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93PigqbV9vYmplY3QpLmRpc2Ns
b3NlZEJ5Um93KCk7CiAgICAgICAgICAgICBpZiAoIXJvdykKICAgICAgICAgICAgICAgICByZXR1
cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJuIHJvdy0+d3JhcHBlcigpOwpAQCAtMzIyNSw3ICsz
MjA4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlm
ICghbV9vYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG1fb2Jq
ZWN0LT50aXRsZVVJRWxlbWVudCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSog
b2JqID0gbV9vYmplY3QtPnRpdGxlVUlFbGVtZW50KCk7CiAgICAgICAgIGlmIChvYmopCiAgICAg
ICAgICAgICByZXR1cm4gb2JqLT53cmFwcGVyKCk7CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0z
MjQ5LDEzICszMjMyLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEJhc2UqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uOjpIb3Jpem9udGFsKTsKICAgICAgICAgaWYgKHNjcm9sbEJhcikKICAgICAgICAgICAg
IHJldHVybiBzY3JvbGxCYXItPndyYXBwZXIoKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
ZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b246OlZlcnRpY2FsKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHNjcm9sbEJh
ciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNh
bCk7CiAgICAgICAgIGlmIChzY3JvbGxCYXIpCiAgICAgICAgICAgICByZXR1cm4gc2Nyb2xsQmFy
LT53cmFwcGVyKCk7CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0zNDY2LDE3ICszNDQ5LDE3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5j
ZXN0b3JBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9
IG1fb2JqZWN0LT5mb2N1c2FibGVBbmNlc3RvcigpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QmFzZSogb2JqZWN0ID0gbV9vYmplY3QtPmZvY3VzYWJsZUFuY2VzdG9yKCk7CiAgICAgICAg
IHJldHVybiBvYmplY3QgPyBvYmplY3QtPndyYXBwZXIoKSA6IG5pbDsKICAgICB9CiAKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUVkaXRhYmxl
QW5jZXN0b3JBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVj
dCA9IG1fb2JqZWN0LT5lZGl0YWJsZUFuY2VzdG9yKCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RCYXNlKiBvYmplY3QgPSBtX29iamVjdC0+ZWRpdGFibGVBbmNlc3RvcigpOwogICAgICAg
ICByZXR1cm4gb2JqZWN0ID8gb2JqZWN0LT53cmFwcGVyKCkgOiBuaWw7CiAgICAgfQogCiAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIaWdoZXN0
RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0ID0gbV9vYmplY3QtPmhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKCk7CisgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBvYmplY3QgPSBtX29iamVjdC0+aGlnaGVzdEVkaXRh
YmxlQW5jZXN0b3IoKTsKICAgICAgICAgcmV0dXJuIG9iamVjdCA/IG9iamVjdC0+d3JhcHBlcigp
IDogbmlsOwogICAgIH0KIApAQCAtMzUxMSw3ICszNDk0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2F4QmFj
a2luZ09iamVjdC0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UqIGF4T2JqZWN0ID0gX2F4QmFja2luZ09iamVjdC0+YWNjZXNzaWJp
bGl0eUhpdFRlc3QoSW50UG9pbnQocG9pbnQpKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFz
ZSogYXhPYmplY3QgPSBfYXhCYWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQ
b2ludChwb2ludCkpOwogICAgIGlmIChheE9iamVjdCkgewogICAgICAgICBpZiAoYXhPYmplY3Qt
PmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkK
ICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld107
CkBAIC0zNzgxLDcgKzM3NjQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAvLyBPbiBXSzEsIHdlIG5lZWQgdG8gY29udmVydCByZWN0IHRvIHdpbmRvdyBzcGFjZSB0
byBtYXRjaCBtb3VzZSBjbGlja2luZy4KICAgICBpZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgIC8v
IEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBj
b250ZW50cyB0byB0aGUgd2luZG93LgotICAgICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJl
bnQtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdEJh
c2UqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc+KCpwYXJlbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2Nyb2xs
VmlldyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PigqcGFyZW50KS5zY3JvbGxW
aWV3KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZVZpZXctPnBsYXRmb3JtV2lk
Z2V0KCkpCkBAIC00MTI2LDcgKzQxMDksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICBOU051bWJlciogbnVtYmVyID0gbmlsOwogICAgIE5TQXJyYXkqIGFycmF5
ID0gbmlsOwogICAgIE5TRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IG5pbDsKLSAgICBSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gdWlFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdEJhc2U+IHVpRWxlbWVudDsKICAgICBOU1BvaW50IHBvaW50ID0gTlNa
ZXJvUG9pbnQ7CiAgICAgYm9vbCBwb2ludFNldCA9IGZhbHNlOwogICAgIE5TUmFuZ2UgcmFuZ2Ug
PSB7MCwgMH07CkBAIC00Mjc1LDcgKzQyNTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewotICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gdWlFbGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKTsKKyAgICAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IHVpRWxlbWVudC0+ZWxlbWVudFJhbmdlKCk7CiAgICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWNlNWM5YTgwMTQuLjdjYjYxYjg3
YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjksNyArMjksNyBAQAogCiAj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC05Miw5ICs5Miw5
IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpnZXRBY3RpdmVEZXNjZW5kYW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0
YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QmIHBhcmVudE9iamVjdCwg
VmVjdG9yPFJlZlB0cjxOb2RlPj4mIGNoaWxkTm9kZXMpCitzdGF0aWMgdm9pZCBhZGRDaGlsZHJl
bihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYgcGFyZW50T2JqZWN0LCBWZWN0b3I8UmVmUHRyPE5v
ZGU+PiYgY2hpbGROb2RlcykKIHsKLSAgICBmb3IgKGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiYgY2hpbGRPYmplY3QgOiBwYXJlbnRPYmplY3QuY2hpbGRyZW4oKSkgeworICAgIGZv
ciAoY29uc3QgYXV0byYgY2hpbGRPYmplY3QgOiBwYXJlbnRPYmplY3QuY2hpbGRyZW4oKSkgewog
ICAgICAgICBpZiAoTm9kZSogY2hpbGROb2RlID0gY2hpbGRPYmplY3QtPm5vZGUoKSkKICAgICAg
ICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTMy
Niw3ICszMjYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Z2V0UGFyZW50Tm9kZShOb2RlJgogICAgIEVSUk9SX0lGX05PX0FD
VElWRV9BVURJVCgpOwogCiAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0g
YWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewotICAgICAgICBpZiAoQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpKQorICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UqIHBhcmVudE9iamVjdCA9
IGF4T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkKICAgICAgICAgICAgIHJldHVybiBw
YXJlbnRPYmplY3QtPm5vZGUoKTsKICAgICB9CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRp
b25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdDo6ZwogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICBheE9iamVjdC0+
c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuKTsKLSAgICAgICAgZm9yIChSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4mIHNlbGVjdGVkQ2hpbGRPYmplY3QgOiBzZWxlY3RlZENoaWxk
cmVuKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNl
bGVjdGVkQ2hpbGRyZW4pIHsKICAgICAgICAgICAgIGlmIChOb2RlKiBzZWxlY3RlZENoaWxkTm9k
ZSA9IHNlbGVjdGVkQ2hpbGRPYmplY3QtPm5vZGUoKSkKICAgICAgICAgICAgICAgICBzZWxlY3Rl
ZENoaWxkTm9kZXMuYXBwZW5kKHNlbGVjdGVkQ2hpbGROb2RlKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDg3NGI0NmJk
OGExLi41ODA0NjdiYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJs
YXkuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNjA0ZGI1MmQ5NjguLjE1NjdhMTUw
OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yRXYKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBy
b2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3Qs
IEpTT046OkFycmF5T2Y8aW50PiYgY2hpbGROb2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSYg
YXhPYmplY3QsIEpTT046OkFycmF5T2Y8aW50PiYgY2hpbGROb2RlSWRzKQogewogICAgIGNvbnN0
IGF1dG8mIGNoaWxkcmVuID0gYXhPYmplY3QuY2hpbGRyZW4oKTsKICAgICBpZiAoIWNoaWxkcmVu
LnNpemUoKSkKQEAgLTE5NzEsNyArMTk3MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpKQorICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlKiBwYXJlbnRP
YmplY3QgPSBheE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpCiAgICAgICAgICAgICAg
ICAgcGFyZW50Tm9kZSA9IHBhcmVudE9iamVjdC0+bm9kZSgpOwogCiAgICAgICAgICAgICBzdXBw
b3J0c1ByZXNzZWQgPSBheE9iamVjdC0+cHJlc3NlZElzUHJlc2VudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGNi
N2JlYWExM2FjLi5lMTQxMDEzNDdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBK
U1ZhbHVlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q7CitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZTsKIGNsYXNzIENoYXJhY3RlckRhdGE7
CiBjbGFzcyBET01FZGl0b3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTIyNSw3ICsyMjUsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiwgTm9k
ZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpF
dmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGJvb2wgaGFzQnJlYWtwb2ludCk7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoTm9kZSopOwotICAgIHZv
aWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgSlNP
Tjo6QXJyYXlPZjxpbnQ+Jik7CisgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVu
KEFjY2Vzc2liaWxpdHlPYmplY3RCYXNlJiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CiAgICAgCiAg
ICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICBOb2RlKiBub2Rl
Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwMWI3NDEz
MGNlLi45ZTVjNTJlNjU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMC0yNSAg
QW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRl
IGJhc2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRU
cmVlTm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAg
ICAgICAoV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdCk6IFVzZXMgQWNjZXNzaWJpbGl0eU9i
amVjdEJhc2UKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFN0YW5kYXJkaXplICJQYWdlSUQ9IiB2cyAicGFnZUlEID0iIGluIHJlbGVhc2Ug
bG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCAyNDRlNWI5NTQ4Zi4uZjM2
OWE5ZDJlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0yNzEsNyArMjcxLDcg
QEAgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZikKIAogICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHko
KTsKIAotICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAg
ICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZSogZm9jdXNlZE9iamVjdCA9IFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpOwogICAgIGlm
ICghZm9jdXNlZE9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382144</attachid>
            <date>2019-10-28 18:03:07 -0700</date>
            <delta_ts>2019-10-30 05:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203408-20191028210305.patch</filename>
            <type>text/plain</type>
            <size>243316</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkOWFkMjljMmQzMzJh
ODMwMTAyYjIxMGRlZTllZmFmNjg3MDE5NC4uODk0MjBiN2ZlNzUzZDNjOWQ5ZTIwZWI3ZGRmODdi
M2UyNGIxZDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OCBAQAorMjAxOS0xMC0yOCAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJh
c2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVl
Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBuZWVkZWQgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBBWENvcmVPYmplY3QgaXMgbm93IGEgY29tbW9uIGJhc2UgY2xhc3Mg
Zm9yIGJvdGggQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQKKyAgICAgICAgQVhJc29sYXRlZFRyZWVO
b2RlLiBBbGwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSBBWENvcmVPYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBhbnkgb2YgdGhlIGRlcml2ZWQgY2xhc3Nlcy4gVGhpcyB3aWxsIGFsbG93IHRvIHNl
YW1sZXNzbHkgc3dpdGNoCisgICAgICAgIGJldHdlZW4gdXNpbmcgQVhJc29sYXRlZFRyZWVOb2Rl
IGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkIGFuZAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGluIHRoZSBtYWluIHRocmVhZCB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbworICAgICAg
ICBhbGxvd3MgZm9yIGNsZWFuZXIgY2xpZW50IGNvZGUsIGVuY2Fwc3VsYXRpbmcgdGhlIGRlY2lz
aW9uIHdoZXRoZXIKKyAgICAgICAgQVhJc29sYXRlZFRyZWVOb2RlIGNhbiByZXNwb25kIHRvIGEg
cmVxdWVzdCBvciBuZWVkIHRvIHJlc29ydCB0byBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LCBhbmQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjb21waWxlCisg
ICAgICAgIHRpbWUgZmxhZyBjaGVja3MgZm9yIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0QVhJRCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0
TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJy
ZWRDYWNoZVVwZGF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmF4Um93U3BhbldpdGhSb3dJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9t
aW5hdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb250YWluc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQgY29uc3QpOiBSZW5hbWVkIGNvbnRhaW5z
VGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4g
Y29uc3QpOiBSZW5hbWVkIGlzT25TY3JlZW4uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIC0gQWxsIHN0cnVjdHMgYW5kIGVudW1zIGRlbGV0
aW9ucyBoZXJlIHdlcmUgbW92ZWQgdG8gQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oLgor
ICAgICAgICAtIEFsbCBwdWJsaWMgdmlydHVhbCBtZXRob2RzIGFyZSBub3cgb3ZlcnJpZGVzLgor
ICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0VW5k
ZXJFbGVtZW50TW9kZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YTo6aXNOdWxs
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjpWaXNpYmxlUG9zaXRpb25SYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb25SYW5nZTo6aXNOdWxsIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjpQbGFpblRl
eHRSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGFpblRleHRSYW5nZTo6aXNO
dWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFy
Y2hUZXh0Q3JpdGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246OkFjY2Vzc2li
aWxpdHlUZXh0T3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNldEFYT2JqZWN0SUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5pdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTVkdSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBdHRhY2htZW50RWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hlYWRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbWFnZU1hcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZUltYWdl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzSW1hZ2VCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNQYXNzd29yZEZpZWxkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQ
YXNzd29yZEZpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTmF0aXZlVGV4dENvbnRyb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWFyY2hGaWVsZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1dlYkFyZWEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDaGVj
a2JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1JhZGlvQnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlTGlzdEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3ggY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0Qm94T3B0
aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzTWVkaWFUaW1lbGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVSZWxhdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVCYXIgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51
QnV0dG9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWVudUl0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNJbnB1dEltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJvZ3Jlc3NJbmRpY2F0b3IgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTbGlk
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNTbGlkZXJUaHVtYiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0lucHV0U2xpZGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29udHJvbCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhYmVsIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzRGF0YVRhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUYWJsZUNvbHVtbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RhYmxlQ2VsbCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0ZpZWxkc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzR3JvdXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBVHJlZUdyaWRSb3cgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51TGlzdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVMaXN0
UG9wdXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNNZW51TGlzdE9wdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwaW5CdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNOYXRpdmVTcGluQnV0dG9uIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
U3BpbkJ1dHRvblBhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNNb2NrT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVkaWFPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTd2l0Y2ggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUb2dn
bGVCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUYWJMaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFiSXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhZGlvR3JvdXAgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb21ib0JveCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Ry
ZWVHcmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTGlzdEl0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNDaGVja2JveE9yUmFkaW8gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTY3JvbGxWaWV3IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ2FudmFz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzUG9wVXBCdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNDb2xvcldlbGwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGxpdHRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Rvb2xiYXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdW1tYXJ5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzQ2hlY2tlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWxlY3RlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ZvY3VzZWQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNIb3ZlcmVkIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5k
ZXRlcm1pbmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0xvYWRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc011bHRpU2VsZWN0YWJsZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09mZlNjcmVlbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1ByZXNz
ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNVbnZpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNWaXNpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNSZXF1aXJlZEF0dHJp
YnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0xpbmtlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1Zpc2libGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb2xsYXBzZWQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNFeHBhbmRlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NlbGVjdGVkT3B0
aW9uQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Omhhc0JvbGRGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0l0YWxpY0ZvbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzUGxhaW5UZXh0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1NhbWVG
b250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Omhhc1NhbWVGb250Q29sb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZVN0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3RhdGljVGV4dCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNVbmRlcmxp
bmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRW
YWx1ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpjYW5TZXROdW1lcmljVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpu
b2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnJlbmRlcmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmhlYWRpbmdMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0YWJsZUxldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZhbHVlRGVzY3JpcHRpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmFs
dWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXhWYWx1ZUZvclJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RlcFZhbHVlRm9y
UmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGF5b3V0Q291bnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZXN0aW1hdGVkTG9hZGlu
Z1Byb2dyZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnN1cHBvcnRzQVJJQU93bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzUG9wdXAgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FudmFzSGFzRmFsbGJhY2tDb250
ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnN1cHBvcnRzQVJJQURyb3BwaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQURyYWdnaW5nIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUdyYWJi
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
QVJJQUdyYWJiZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0Q2hpbGQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdENoaWxkIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXZpb3VzU2li
bGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpuZXh0U2libGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlzdHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNj
ZW5kYW50T2ZCYXJyZW5QYXJlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6b2JzZXJ2YWJsZU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5rZWRVSUVsZW1lbnRzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRp
dGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmV4cG9zZXNUaXRsZVVJRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxGb3JD
b250cm9sRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxC
YXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJp
YVJvbGVBdHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZUhh
c1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNz
aWJpbGl0eVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRpdGxlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhl
bHBUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQVJJQVN0YXRpY1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnRleHRMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlBdHRyaWJ1
dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZXhwYW5kZWRUZXh0VmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb2xvclZhbHVl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmF4T2JqZWN0SUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YW5jaG9yRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpw
aXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50UGF0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1BhdGgg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c2VsZWN0ZWRUZXh0UmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uRW5kIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVybCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6c2VsZWN0ZWRUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFjY2Vzc0tleSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGllcmFyY2hpY2FsTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0U2Vs
ZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c2V0U2VsZWN0ZWRSb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Om1ha2VSYW5nZVZpc2libGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6cGVyZm9ybURlZmF1bHRBY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5jcmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlY3JlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbkNoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4
dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWRkQ2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5I
YXZlQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aGFzQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldE5lZWRzVG9VcGRh
dGVTdWJ0cmVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Om5lZWRzVG9VcGRhdGVDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGV0YWNoZWRGcm9tUGFyZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhh
dmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoaWxkcmVuKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYkNoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNob3VsZEZvY3Vz
QWN0aXZlRGVzY2VuZGFudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY3RpdmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRD
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9u
UmFuZ2VGb3JMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5kc0ZvclJhbmdl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bmV4dFZpc2libGVQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmV2aW91c1Zpc2libGVQb3NpdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRp
b25Gb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjppbmRleEZvclZpc2libGVQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmRleCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lQnJlYWtzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvQVhS
YW5nZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6ZG9BWFJhbmdlRm9ySW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFN0cmluZ0ZvclJhbmdlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvQVhCb3Vu
ZHNGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdW
YWx1ZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6c3RyaW5nUm9sZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bmFtZUZvck1TQUEgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVzY3JpcHRpb25Gb3JN
U0FBIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnJvbGVWYWx1ZUZvck1TQUEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZFZhbHVlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bGl2ZVJlZ2lvblJlbGV2YW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25BdG9taWMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCdXN5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNwZWFrQXNQcm9wZXJ0
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01hdGhFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWF0aEZyYWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTdWJzY3Jp
cHRTdXBlcnNjcmlwdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc01hdGhSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVW5kZXJPdmVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFJvb3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRo
U3F1YXJlUm9vdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01hdGhUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE51bWJlciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhPcGVyYXRvciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhG
ZW5jZU9wZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aElkZW50aWZpZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNN
YXRoVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoVGFibGVSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVDZWxsIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTWF0aFRva2VuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpt
YXRoUmFkaWNhbmRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6bWF0aFJvb3RJbmRleE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoVW5kZXJPYmplY3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aE92ZXJPYmplY3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aE51bWVyYXRv
ck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRoRGVub21pbmF0b3JPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6bWF0aEJhc2VPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3VwZXJzY3JpcHRP
YmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bWF0aEZlbmNlZE9wZW5TdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aEZlbmNlZENsb3NlU3RyaW5nIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhMaW5lVGhpY2tu
ZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQW5vbnltb3VzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhQcmVzY3JpcHRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhQb3N0c2NyaXB0cyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hpZGRlbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nl
c3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhcklzSWdub3JlZEZyb21QYXJlbnRE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNl
dElzSWdub3JlZEZyb21QYXJlbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWE6OkFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dENyaXRlcmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uOjpBY2Nlc3NpYmlsaXR5VGV4dE9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1v
ZGU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFpblRleHRSYW5nZTo6UGxhaW5UZXh0UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
aW5UZXh0UmFuZ2U6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb25SYW5nZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlz
aWJsZVBvc2l0aW9uUmFuZ2U6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGE6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRG
cm9tUGFyZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
RnJvbVBhcmVudERhdGE6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlOjppc0FjY2Vzc2liaWxpdHlPYmplY3QgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSYWRp
b0J1dHRvbkdyb3VwQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0
eUltYWdlTWFwSGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRIaWRkZW5DaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZENoaWxkcmVu
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmluY3JlbWVu
dEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6ZGVj
cmVtZW50QnV0dG9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1bW5IZWFkZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6cm93SGVhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3cgY29uc3QpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJF
bGVtZW50c10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5Q29udGFpbmVyXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50XSk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6Zm9jdXNlZFVJRWxlbWVudCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdu
b3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OmFjY2Vz
c2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nl
c3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06CisgICAg
ICAgIChhZGRDaGlsZFRvQXJyYXkpOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UgaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0Ol0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYXhCYWNraW5nT2JqZWN0XSk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphY2Nl
c3NpYmxpdHlPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEFjdGl2ZURl
c2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDaGlsZE5vZGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0
Q29tcHV0ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q29udHJvbGxlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Rmxvd2VkTm9kZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRNb3Vz
ZUV2ZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmdldE93bmVkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRQYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0U2VsZWN0ZWRDaGlsZE5vZGVz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpwcm9jZXNzQWNjZXNzaWJpbGl0eUNo
aWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50Lmg6CisKIDIwMTktMTAtMjYgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBNYWluIGltcGxlbWVudGF0aW9uIGZvciBsYXp5IGltYWdlIGxv
YWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggODZlNjdjZDRlMDk4YzMxOTA5NjA1ZGIxNjQ5Yjc4MTY0YjA1MWFl
NC4uNzcwZmJlNTMzODhjZjU0ZmEwOTkxYzQ4OTVmMjgzOGE5ZThkZWI1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxOS0xMC0yOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBh
cHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJhc2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2li
aWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVlTm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVj
dCk6IFVzZXMgQVhDb3JlT2JqZWN0IGluc3RlYWQgb2YgQWNjZXNzaWJpbGl0eU9iamVjdC4KKyAg
ICAgICAgKFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QpOiBVc2VzIEFYQ29yZU9iamVjdCBp
bnN0ZWFkIG9mIEFjY2Vzc2liaWxpdHlPYmplY3QuCisKIDIwMTktMTAtMjYgIENocmlzIExvcmQg
IDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFB1dCBPZmZzY3JlZW5DYW52YXMgYmVoaW5k
IGEgYnVpbGQgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKaW5kZXggYWFlNGQ4NjM4YjUzMDFhMGUwMzE2MGEyODNlMWIyMjg2NTRjZTgwMS4u
OTdhZWY2YTRiODM2ZjYzODEzZTAwNWJlYzY3NDJmMWIwYjkxMWViNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0yMjksNyArMjI5LDcg
QEAgQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgIGZvciAoY29uc3QgYXV0byYg
b2JqZWN0IDogbV9vYmplY3RzLnZhbHVlcygpKSB7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2Jq
ZWN0LmdldCgpLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsK
ICAgICAgICAgb2JqZWN0LT5kZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNo
ZURlc3Ryb3llZCk7Ci0gICAgICAgIG9iamVjdC0+c2V0QVhPYmplY3RJRCgwKTsKKyAgICAgICAg
b2JqZWN0LT5zZXRPYmplY3RJRCgwKTsKICAgICB9CiB9CiAKQEAgLTMzNiwxNSArMzM2LDE1IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxl
bWVudChIVE1MQXJlYUVsZW1lbnQqIGFyCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGF4
UmVuZGVySW1hZ2UtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rPigqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqY2hpbGQp
LmFyZWFFbGVtZW50KCkgPT0gYXJlYUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQu
Z2V0KCk7Ci0gICAgfSAgICAKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rPihjaGlsZC5nZXQoKSk7CisgICAgfQogICAgIAogICAgIHJldHVybiBu
dWxscHRyOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9j
dXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKK0FYQ29yZU9iamVjdCogQVhP
YmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKIHsK
ICAgICBpZiAoIWdBY2Nlc3NpYmlsaXR5RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0zNTUsMTIgKzM1NSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hl
Ojpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogICAgIGlmIChpczxI
VE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJ
bWFnZU1hcFVJRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50
KSk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxO
b2RlKj4oZm9jdXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAgICBBWENvcmVPYmpl
Y3QqIG9iaiA9IGZvY3VzZWREb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShm
b2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1c2VkRWxlbWVudCkgOiBmb2N1
c2VkRG9jdW1lbnQpOwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChvYmotPnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpKSB7Ci0gICAgICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBkZXNjZW5kYW50ID0gb2JqLT5hY3RpdmVEZXNjZW5kYW50
KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2ZURl
c2NlbmRhbnQoKSkKICAgICAgICAgICAgIG9iaiA9IGRlc2NlbmRhbnQ7CiAgICAgfQogCkBAIC01
NjAsOCArNTYwLDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JD
cmVhdGUoV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBnZXRBWElEKG5ld09iai5nZXQoKSk7CiAgICAg
Ci0gICAgbV93aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3aWRnZXQsIG5ld09iai0+YXhPYmplY3RJ
RCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOyAg
ICAKKyAgICBtX3dpZGdldE9iamVjdE1hcHBpbmcuc2V0KHdpZGdldCwgbmV3T2JqLT5vYmplY3RJ
RCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAg
ICBuZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAg
cmV0dXJuIG5ld09iai5nZXQoKTsKQEAgLTYwOCw4ICs2MDgsOCBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgZ2V0QVhJ
RChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3
T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElE
KCksIG5ld09iaik7CisgICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2JqLT5v
YmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2Jq
KTsKICAgICBuZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7
CiAgICAgbmV3T2JqLT5zZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShuZXdPYmotPmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSk7CkBAIC02MzYsOCArNjM2LDggQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAog
ICAgIGdldEFYSUQobmV3T2JqLmdldCgpKTsKIAotICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5z
ZXQocmVuZGVyZXIsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5l
d09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOworICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5z
ZXQocmVuZGVyZXIsIG5ld09iai0+b2JqZWN0SUQoKSk7CisgICAgbV9vYmplY3RzLnNldChuZXdP
YmotPm9iamVjdElEKCksIG5ld09iaik7CiAgICAgbmV3T2JqLT5pbml0KCk7CiAgICAgYXR0YWNo
V3JhcHBlcihuZXdPYmouZ2V0KCkpOwogICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25vcmVk
VmFsdWUobmV3T2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpOwpAQCAtNzA5LDcgKzcwOSw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGUpCiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIG1fb2JqZWN0cy5zZXQob2JqLT5heE9iamVjdElEKCksIG9iaik7ICAgIAorICAgIG1fb2Jq
ZWN0cy5zZXQob2JqLT5vYmplY3RJRCgpLCBvYmopOwogICAgIG9iai0+aW5pdCgpOwogICAgIGF0
dGFjaFdyYXBwZXIob2JqLmdldCgpKTsKICAgICByZXR1cm4gb2JqLmdldCgpOwpAQCAtNzI2LDcg
KzcyNiw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFYSUQgYXhJRCkKIAogICAgIGRl
dGFjaFdyYXBwZXIob2JqZWN0LmdldCgpLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVs
ZW1lbnREZXN0cm95ZWQpOwogICAgIG9iamVjdC0+ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2ht
ZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCwgdGhpcyk7Ci0gICAgb2JqZWN0LT5zZXRBWE9iamVj
dElEKDApOworICAgIG9iamVjdC0+c2V0T2JqZWN0SUQoMCk7CiAKICAgICBtX2lkc0luVXNlLnJl
bW92ZShheElEKTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQpAQCAt
Nzk5LDcgKzc5OSw3IEBAIEFYSUQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1HZW5lcmF0ZUFYSUQo
KSBjb25zdAogQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iaikKIHsKICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeS1hc3NpZ25lZCBJRAotICAgIEFYSUQg
b2JqSUQgPSBvYmotPmF4T2JqZWN0SUQoKTsKKyAgICBBWElEIG9iaklEID0gb2JqLT5vYmplY3RJ
RCgpOwogICAgIGlmIChvYmpJRCkgewogICAgICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlu
cyhvYmpJRCkpOwogICAgICAgICByZXR1cm4gb2JqSUQ7CkBAIC04MDgsNyArODA4LDcgQEAgQVhJ
RCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKICAgICBv
YmpJRCA9IHBsYXRmb3JtR2VuZXJhdGVBWElEKCk7CiAKICAgICBtX2lkc0luVXNlLmFkZChvYmpJ
RCk7Ci0gICAgb2JqLT5zZXRBWE9iamVjdElEKG9iaklEKTsKKyAgICBvYmotPnNldE9iamVjdElE
KG9iaklEKTsKICAgICAKICAgICByZXR1cm4gb2JqSUQ7CiB9CkBAIC04ODEsMTIgKzg4MSwxMiBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBSZW5kZXJPYmplY3QqIG5ld0NoaQogICAgIGNoaWxkcmVuQ2hhbmdlZChnZXQocmVuZGVy
ZXIpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqKQordm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQVhD
b3JlT2JqZWN0KiBvYmopCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0LmFkZChvYmopOworICAgIG1fZGVmZXJyZWRD
aGlsZHJlbkNoYW5nZWRMaXN0LmFkZChvYmopOwogfQogICAgIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCkBAIC04OTksOCArODk5LDggQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgYXV0byBub3Rp
ZmljYXRpb25zID0gV1RGTW92ZShtX25vdGlmaWNhdGlvbnNUb1Bvc3QpOwogICAgIAogICAgIGZv
ciAoY29uc3QgYXV0byYgbm90ZSA6IG5vdGlmaWNhdGlvbnMpIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmotPmF4
T2JqZWN0SUQoKSkKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgp
OworICAgICAgICBpZiAoIW9iai0+b2JqZWN0SUQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGlmICghb2JqLT5heE9iamVjdENhY2hlKCkpCkBAIC05ODgsNyArOTg4LDcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKE5vZGUqIG5vZGUsIEFYTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbiwgUG8KICAgICBwb3N0Tm90aWZpY2F0aW9uKG9iamVjdC5nZXQo
KSwgJm5vZGUtPmRvY3VtZW50KCksIG5vdGlmaWNhdGlvbiwgcG9zdFRhcmdldCwgcG9zdFR5cGUp
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbiwgUG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKK3ZvaWQg
QVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgRG9j
dW1lbnQqIGRvY3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQg
cG9zdFRhcmdldCwgUG9zdFR5cGUgcG9zdFR5cGUpCiB7CiAgICAgc3RvcENhY2hpbmdDb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZXMoKTsKIApAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRh
dGEmIHRleHRNYXIKICAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCk7CiAgICAgfQogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0
KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5v
YmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRN
YXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAg
dGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFy
dEluZGV4OwpAQCAtMjIzMCw3ICsyMjMwLDcgQEAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFY
T2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFYKICAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8
dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwogICAg
IAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKKyAg
ICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgpOwogICAgIHRleHRN
YXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRl
ZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hZmZp
bml0eSA9IHZpc2libGVQb3MuYWZmaW5pdHkoKTsKQEAgLTIyNjIsNyArMjI2Miw3IEBAIE9wdGlv
bmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0
UG9zaXRpb25JblRleHRDb250CiAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CiAg
ICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2Yo
VGV4dE1hcmtlckRhdGEpKTsKICAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdl
dCgpLT5heE9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+
b2JqZWN0SUQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRleHRDb250cm9sOwogCiAg
ICAgY2FjaGUtPnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwpAQCAtMjkwNyw5ICsyOTA3LDkg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAg
fQogICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWROb2RlTGlzdC5jbGVhcigpOwogCi0gICAg
Zm9yIChhdXRvJiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0KQorICAgIGZv
ciAoYXV0byYgY2hpbGQgOiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdCkKICAgICAgICAg
Y2hpbGQtPmNoaWxkcmVuQ2hhbmdlZCgpOwotICAgIG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRM
aXN0LmNsZWFyKCk7CisgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3QuY2xlYXIoKTsK
IAogICAgIGZvciAoYXV0byogbm9kZSA6IG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3QpCiAgICAg
ICAgIHRleHRDaGFuZ2VkKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaAppbmRleCBlNTIyMDNiZWIxNDMwMTA0MDM3NTZjNDZjMzczZTllN2RhMzE5
OWJmLi44ODQ5OWZkMThjMjA3MzlkMmRhMzcwYTA0YmE3YmY0MWJmZTNjODRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAg
fkFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudEZvclBhZ2Uo
Y29uc3QgUGFnZSopOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcm9vdCBvYmplY3QgZm9yIHRoZSBl
bnRpcmUgZG9jdW1lbnQuCiAgICAgV0VCQ09SRV9FWFBPUlQgQWNjZXNzaWJpbGl0eU9iamVjdCog
cm9vdE9iamVjdCgpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KE5vZGUqLCBOb2RlKiBuZXdDaGlsZCA9IG51bGxwdHIpOwogICAgIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCogbmV3Q2hpbGQgPSBudWxscHRyKTsKLSAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFu
Z2VkKE5vZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRh
Y2hlZCwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFj
aGVkKE5vZGUqKTsKQEAgLTMwNyw3ICszMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvc3RO
b3RpZmljYXRpb24oUmVuZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBU
YXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBw
b3N0Tm90aWZpY2F0aW9uKE5vZGUqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdl
dEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKLSAgICB2b2lkIHBvc3RO
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhOb3RpZmljYXRp
b24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25v
dXNseSk7CisgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIERvY3VtZW50
KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9
IFBvc3RBc3luY2hyb25vdXNseSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzaG93SW50
ZW50KGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jik7CkBAIC0zNTYsNyArMzU2LDcgQEAg
cHVibGljOgogICAgIAogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHBv
c3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBBWE5vdGlmaWNhdGlvbik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZv
Y3VzZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7CiAKICAgICB2b2lkIHBsYXRmb3JtUGVy
Zm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hTZXQ8QVhJRD4gbV9pZHNJblVzZTsKIAogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9u
UG9zdFRpbWVyOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+LCBBWE5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uc1RvUG9zdDsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPFJlZlB0cjxBWENvcmVPYmplY3Q+LCBBWE5vdGlmaWNhdGlvbj4+IG1fbm90aWZp
Y2F0aW9uc1RvUG9zdDsKIAogICAgIFRpbWVyIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGlt
ZXI7CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBwcml2YXRlOgogICAgIExpc3RIYXNoU2V0PEVsZW1l
bnQqPiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdDsKICAgICBMaXN0SGFzaFNldDxO
b2RlKj4gbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxFbGVtZW50
Kj4gbV9kZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKLSAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRM
aXN0OworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBtX2RlZmVycmVkQ2hp
bGRyZW5DaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZENoaWxk
cmVuQ2hhbmdlZE5vZGVMaXN0OwogICAgIEhhc2hNYXA8RWxlbWVudCosIFN0cmluZz4gbV9kZWZl
cnJlZFRleHRGb3JtQ29udHJvbFZhbHVlOwogICAgIEhhc2hNYXA8RWxlbWVudCosIFF1YWxpZmll
ZE5hbWU+IG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2U7CkBAIC01MzIsNyArNTMyLDcgQEAgaW5s
aW5lIGNvbnN0IEVsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OnJvb3RBWEVkaXRhYmxlRWxlbWVudChj
b25zdCBOb2RlKikgeyByZXR1cm4KIGlubGluZSBOb2RlKiBBWE9iamVjdENhY2hlOjptb2RhbE5v
ZGUoKSB7IHJldHVybiBudWxscHRyOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjphdHRh
Y2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmNoZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopIHsgfQotaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KK2lubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBWENvcmVPYmplY3QqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2RlKiwgTm9kZSop
IHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9i
amVjdCosIFJlbmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVm
ZXJGb2N1c2VkVUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSosIE5vZGUqKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcAppbmRleCBkNzMwOTg4Zjg5N2VjZmE0OWFiYjkwZDMzZTcxMmQ2MGVkZTg1MjllLi4wMDBh
ZGQ0YzNhYTIyOGYyZTNmNjA1MTgwMTAyMDU5ZmFkMTEyMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIFJlZjxBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IEFjY2Vzc2liaWxpdHlBUklB
R3JpZDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzaWJpbGl0eUFSSUFHcmlkKHJlbmRlcmVyKSk7CiB9CiAKLWJvb2wgQWNjZXNz
aWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
aGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWdu
ZWQmIGNvbHVtbkNvdW50KQorYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2Vs
bENoaWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+
JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIWNoaWxk
IHx8ICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFpczxBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3c+KCpjaGlsZCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NSw3
ICs4NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjppc011bHRpU2VsZWN0YWJsZSgp
IGNvbnN0CiAgICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhTXVs
dGlTZWxlY3RhYmxlLCAiZmFsc2UiKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6
OmFkZFJvd0Rlc2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcm93Q2hpbGQsIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCkKK3ZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KEFYQ29yZU9i
amVjdCogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJv
d3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIXJvd0NoaWxkKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuaAppbmRleCBiOGU3YmFmNGE1YjJlNjQ1OWVmZWE5ZDhiMjYwYWE5Mjgx
MjAyMGI3Li5mNzJjOTA2YWEwY2UwZjRiNzgxODVhYjE1ZTVmOTEzYTliYzMzMjQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmgKQEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgYm9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICAKLSAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCos
IEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBj
b2x1bW5Db3VudCk7Ci0gICAgYm9vbCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWdu
ZWQmIGNvbHVtbkNvdW50KTsKKyAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0
KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQm
IGNvbHVtbkNvdW50KTsKKyAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCos
IEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBj
b2x1bW5Db3VudCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bC5jcHAKaW5kZXggZDAyM2Y4Y2U1N2YzNTU0N2JjYWUxNTU0ZDY0MDI0MmUzODlkMjg0Ny4uZjgx
OWU5YWVlOTQ2YzVkMzU1MGY3M2IyNDllMTM5Yzk5YjRhNDI3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIC8vIEFSSUEgZ3JpZGNlbGxzIG1h
eSBoYXZlIG11bHRpcGxlIGxldmVscyBvZiB1bmlnbm9yZWQgYW5jZXN0b3JzIHRoYXQgYXJlIG5v
dCB0aGUgcGFyZW50IHRhYmxlLAogICAgIC8vIGluY2x1ZGluZyByb3dzIGFuZCBpbnRlcmFjdGl2
ZSByb3dncm91cHMuIEluIGFkZGl0aW9uLCBwb29ybHktZm9ybWVkIGdyaWRzIG1heSBjb250YWlu
IGVsZW1lbnRzCiAgICAgLy8gd2hpY2ggcGFzcyB0aGUgdGVzdHMgZm9yIGluY2x1c2lvbi4KLSAg
ICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsK
KyAgICBmb3IgKGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBwYXJlbnQ7
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKICAgICAgICAgaWYg
KGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpOwogICAg
IH0KQEAgLTY1LDcgKzY1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4m
IHJvd1JhbmdlKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTAzLDcgKzEwMyw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4
Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAgICAgICAgIHJldHVy
biBzdGQ6Om1heChzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLnNlY29uZCksIDEpOwogICAgIH0KIAot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgp
OworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAg
ICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiAxOwogICAgIApAQCAtMTM0LDcgKzEzNCw3
IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJ
bmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAKIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Q2VsbDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29s
dW1uUmFuZ2UpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRP
YmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlB
UklBR3JpZFJvdy5jcHAKaW5kZXggZjI5NjQ2N2NhNGU4MTFiZWQyNjAxYzdjYTMyMzFkODgwOGFh
NTQzMC4uMzI4MzgwNzY1MjlkZDQ1YzEwZmM3ZDRhN2FjMDlhMGM3ZjVhM2RmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93LmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dzo6ZGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAg
IGF1dG8mIGFsbFJvd3MgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLnJv
d3MoKTsKICAgICBpbnQgcm93Q291bnQgPSBhbGxSb3dzLnNpemUoKTsKICAgICBmb3IgKGludCBr
ID0gaW5kZXggKyAxOyBrIDwgcm93Q291bnQ7ICsraykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiByb3cgPSBhbGxSb3dzW2tdLmdldCgpOworICAgICAgICBhdXRvKiByb3cgPSBhbGxS
b3dzW2tdLmdldCgpOwogICAgICAgICAvLyBTdG9wIGF0IHRoZSBmaXJzdCByb3cgdGhhdCBkb2Vz
bid0IG1hdGNoIHRoZSBjb3JyZWN0IGxldmVsLgogICAgICAgICBpZiAocm93LT5oaWVyYXJjaGlj
YWxMZXZlbCgpICE9IGxldmVsICsgMSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIsNyArODIs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIH0KIH0KICAgICAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25z
dAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93
KCkgY29uc3QKIHsKICAgICAvLyBUaGUgcm93IHRoYXQgZGlzY2xvc2VzIHRoaXMgb25lIGlzIHRo
ZSByb3cgaW4gdGhlIHRhYmxlCiAgICAgLy8gdGhhdCBpcyBhcmlhLWxldmVsIHN1YnRyYWN0IDEg
ZnJvbSB0aGlzIHJvdy4KQEAgLTEwMyw3ICsxMDMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkgY29uc3QKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgZm9yIChpbnQgayA9IGluZGV4IC0gMTsgayA+PSAw
OyAtLWspIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93ID0gYWxsUm93c1trXS5n
ZXQoKTsKKyAgICAgICAgYXV0byogcm93ID0gYWxsUm93c1trXS5nZXQoKTsKICAgICAgICAgaWYg
KHJvdy0+aGllcmFyY2hpY2FsTGV2ZWwoKSA9PSBsZXZlbCAtIDEpCiAgICAgICAgICAgICByZXR1
cm4gcm93OwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3c6OmhlYWRlck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRy
ZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlJvd0hlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCmluZGV4IDdiYTc0ZjRkZDIzMTcx
ZmU1YjQ4MmI2ZmU3ODBhMmZmNzg2OWQ4ODYuLjg1NDA2ODM1YWZlNzFlYzg0ZDU5YTU2MTA0NjA5
NTA1MTlkYjZlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaApAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93KCk7CiAgICAgCiAgICAgdm9pZCBk
aXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGRpc2Nsb3NlZEJ5Um93KCkgY29uc3Q7CisgICAgQVhDb3JlT2JqZWN0KiBk
aXNjbG9zZWRCeVJvdygpIGNvbnN0OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhl
YWRlck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCkg
b3ZlcnJpZGU7CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdyhSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcAppbmRleCBiNDVmYzYwMDI0YTRmMzBhYjAwNzU1
NmViNTZiMzQ5ZjIzNDIyZjU4Li42MzQ1ZjNjZDhmMzg1YTA1MGY5Y2FjOWI5Mzc4YTA4NTMyZTc1
MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMYWJlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGFiZWwuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6
OmNsZWFyQ2hpbGRyZW4oKQogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gZmFs
c2U7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eUxhYmVsOjppbnNlcnRDaGlsZChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3NpYmlsaXR5TGFi
ZWw6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKIHsK
ICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnNlcnRDaGlsZChvYmplY3QsIGluZGV4
KTsKICAgICBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaAppbmRleCBiMTNh
ZjJkN2Q5MmRiYjUyODBmNGRjY2Q4MjE0MDBkNDY2YzM5NGUwLi5iNmE0MWI5YWZmMGY4NTZlYjll
OTQ4NjNkYzdmNWJlNmRkODA1YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxk
cmVuSWZOZWNlc3NhcnkoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBmaW5hbDsK
LSAgICB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCB1bnNpZ25lZCkgZmlu
YWw7CisgICAgdm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgZmluYWw7
CiAgICAgYm9vbCBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA6IDE7CiAgICAgYm9vbCBt
X2NvbnRhaW5zT25seVN0YXRpY1RleHQgOiAxOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggMDdhZWRjOTcx
NDY4NDEwYjkwMWE3ODIyZGFiMDc5MjllZWEzMDRlMC4uOTVmOTcyODc3ZDE2NjhjMDFkNzRkYmVj
Y2I5NTU2MTdmNGVjNjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2li
aWxpdHlPYmplY3QoSFRNTAogICAgIHJldHVybiAmbGlzdEJveE9iamVjdDsKIH0KICAgICAKLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICAvLyB0aGUgaW50ZXJuYWwgSFRNTFNlbGVjdEVs
ZW1lbnQgbWV0aG9kcyBmb3IgcmV0dXJuaW5nIGEgbGlzdGJveCBvcHRpb24gYXQgYSBwb2ludAog
ICAgIC8vIGlnbm9yZSBvcHRncm91cCBlbGVtZW50cy4KQEAgLTE1NSw3ICsxNTUsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludAogICAgIAogICAgIExheW91dFJlY3QgcGFyZW50UmVjdCA9IGJv
dW5kaW5nQm94UmVjdCgpOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RCb3hP
cHRpb24gPSBudWxscHRyOworICAgIEFYQ29yZU9iamVjdCogbGlzdEJveE9wdGlvbiA9IG51bGxw
dHI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIExheW91dFJlY3QgcmVj
dCA9IGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KCptX3JlbmRlcmVyKS5pdGVtQm91bmRpbmdCb3hS
ZWN0KHBhcmVudFJlY3QubG9jYXRpb24oKSwgaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKaW5kZXggNDdhMzljZTk1YTVhNjBk
ZjhhOWM2YThjZDU2YzYxNTRiMzM0MTI1MC4uNzRlNTkwODJlM2M5N2UwNTMyMTAyMThhNjVlZjNh
YjZjMjY4MTg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRN
TEVsZW1lbnQqKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNz
aWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENv
cmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNv
bnN0IG92ZXJyaWRlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudC5jcHAKaW5kZXggN2FiZmZhZTRmYTE0OTEyM2IwNWVjMGQ1MDMzNGJiNWZlZDMyM2Iy
OC4uYWFlYWZlMDg0YzhlN2RiYmM5ZTZkNjBmNTZhNjMzN2I1MmQxZGRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50Ojppc01hdGhUYWJsZUNlbGwoKSBjb25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmpl
Y3RUeXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWMKIAogYm9v
bCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNj
ZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAg
ICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlm
ICghcGFyZW50IHx8ICFwYXJlbnQtPmlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
TWF0aE1MRWxlbWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCgpCiB7CiAgICAgaWYgKCFp
c01hdGhSb290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjUwLDcgKzI1MCw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFk
aWNhbmRPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJlblswXS5nZXQoKTsKIH0KIAotQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSb290SW5kZXhP
YmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJv
b3RJbmRleE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhSb290KCkgfHwgaXNNYXRoU3F1YXJl
Um9vdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2Miw3ICsyNjIsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRl
eE9iamVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgpOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVj
dCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJh
dG9yT2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0KCkKICAgICByZXR1cm4g
Y2hpbGRyZW5bMF0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKIHsKICAg
ICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg2
LDcgKzI4Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQo
KTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhVbmRlck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoVW5kZXJPdmVyKCkgfHwg
IW5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDEsNyArMzAxLDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhVbmRlck9i
amVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCitBWENvcmVPYmplY3Qq
IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiB7CiAgICAgaWYg
KCFpc01hdGhVbmRlck92ZXIoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMxOCw3ICszMTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0
aE1MRWxlbWVudDo6bWF0aE92ZXJPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1B
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJhc2VP
YmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJh
c2VPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSAmJiAh
aXNNYXRoVW5kZXJPdmVyKCkgJiYgIWlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMzMxLDcgKzMzMSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
OjptYXRoU3Vic2NyaXB0T2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6Om1hdGhTdWJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2Ny
aXB0U3VwZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM0Niw3ICszNDYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3Vw
ZXJzY3JpcHRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0KCkgfHwgIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmgKaW5kZXggNTgwYjg1OWNiYzFkMGM2NzMzNWUyYjUwNDk0Mjc2NjRiZWQxMTY3YS4u
ODc0N2IwNTRlZjQzOTBhZDkyM2Q2MDE3YzI1ZDA3NjRmNTA1MmE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuaApAQCAtNzcsMjMgKzc3LDIzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01hdGhNdWx0aXNj
cmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1h
dGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlOworICAg
IEFYQ29yZU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3Jl
T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGcmFjdGlv
biBjb21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmpl
Y3QoKSBvdmVycmlkZTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JP
YmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3Qo
KSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92
ZXJyaWRlOwogCiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBtYXRo
VW5kZXJPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4K
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7Cisg
ICAgQVhDb3JlT2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKIAogICAg
IC8vIEZlbmNlZCBjb21wb25lbnRzLgogICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCmluZGV4IGM5ODVmZGRkM2RiNzViOGE4
NGM3ZTI1ODMzZTAwOTk1NzY2ZDU5NDguLmYzYWQ2ZDk2ZTM2Zjg1YjM3OWU1Y2Y5NWNlNGI0NWNi
M2Q2ZjdjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVl
RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3Qq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0LmNwcAppbmRleCBlZjEzNzdiZjQ2YzNiMjI1MGQzY2Y2ZTZlOWQzNjNiMmU2MmJi
OTFmLi5hMmNiNTE3YWZiOGJlODY4ZWFlZWUxZDMyODEyNWM1ODY2MmI2ZTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3Qu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGls
ZHJlbigpCiAKICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TW9ja09iamVjdD4oKmxpc3QpLnNl
dFBhcmVudCh0aGlzKTsKICAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7
Ci0gICAgICAgIGNhY2hlLT5yZW1vdmUobGlzdC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgY2Fj
aGUtPnJlbW92ZShsaXN0LT5vYmplY3RJRCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmNwcAppbmRleCBlZTk2MWI1Y2Y1YzYxMzIzYzI5ZGJiY2JjYjMyOGY5
ODI4OGE0NDRkLi43YjAyYzIyNDljNmEzOTQ2MzE5ODM0M2EyZTQ3ODBlNDRiNTExMjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmNwcApAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5TWVudUxpc3RQb3B1cDo6Y2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBBWE9iamVjdENhY2hl
KiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gbV9jaGlsZHJl
bi5zaXplKCk7IGkgPiAwIDsgLS1pKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkID0gbV9jaGlsZHJlbltpIC0gMV0uZ2V0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY2hp
bGQgPSBtX2NoaWxkcmVuW2kgLSAxXS5nZXQoKTsKICAgICAgICAgaWYgKGNoaWxkLT5hY3Rpb25F
bGVtZW50KCkgJiYgIWNoaWxkLT5hY3Rpb25FbGVtZW50KCktPmluUmVuZGVyZWREb2N1bWVudCgp
KSB7CiAgICAgICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVBhcmVudCgpOwotICAgICAgICAgICAg
Y2FjaGUtPnJlbW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGNhY2hlLT5y
ZW1vdmUoY2hpbGQtPm9iamVjdElEKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMw
LDcgKzEzMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFj
dGl2ZU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpCiAgICAgQVNTRVJUX0FSRyhvcHRpb25JbmRleCwg
b3B0aW9uSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2hpbGRyZW4uc2l6ZSgpKSk7CiAKICAg
ICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gY2hpbGQgPSBtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKTsK
KyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhd
LmdldCgpOwogCiAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3Vt
ZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQsIFRhcmdldEVs
ZW1lbnQsIFBvc3RTeW5jaHJvbm91c2x5KTsKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihj
aGlsZC5nZXQoKSwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlzdEl0ZW1TZWxl
Y3RlZCwgVGFyZ2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApp
bmRleCBhMmQzMjdmOGNmMTc4MDhjYWYyNWE2ODA1YTQ4OGU4OGY4ZDRlNWJmLi4wMzA0ZWM3MjU1
MGYyYTliNDdlMGE5MWU5ZjEzZDRkZjAwNTZhNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtOTEy
LDcgKzkxMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR3JvdXAoKSBjb25z
dAogICAgIHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25Hcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvblRleHRHcm91cDsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCiB7CiAgICAgaWYgKCFpc1JhZGlv
R3JvdXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MjUsMTQgKzkyNSwxNCBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRp
b0J1dHRvbigpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0oKQorQVhDb3JlT2JqZWN0
KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKCkKIHsKICAgICBpZiAo
IWlzVGFiTGlzdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEZJWE1FOiBJ
cyB0aGlzIHZhbGlkPyBBUklBIHRhYiBpdGVtcyBzdXBwb3J0IGFyaWEtc2VsZWN0ZWQ7IG5vdCBh
cmlhLWNoZWNrZWQuCiAgICAgLy8gRmluZCB0aGUgY2hpbGQgdGFiIGl0ZW0gdGhhdCBpcyBzZWxl
Y3RlZCAoaWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKKyAgICBBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJzOwogICAgIHRhYkNoaWxkcmVuKHRhYnMpOwogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAppbmRl
eCBhODY3YzBjZjBhYzhjZDQwNjk0YjgzYzc0NTQ5NGNiYjZiODZhMTUzLi4zODBkOTk3YTU0MTQ3
ZWMyOTg2MmVjYzE0ZmYzMDRiYmU5YWUxYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xMDEsOCArMTAx
LDggQEAgcHVibGljOgogICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlOworICAgIEFY
Q29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOworICAgIEFYQ29yZU9i
amVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNp
Z25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZThh
YTY5YmVjMTc3MDI3MDYzODc5M2U3MzVjYTkyN2JkN2M4OTljNS4uYTM0YTVmMDk2MjUxZmZmMzc3
NjNhZDQxZmU0NjA3MzAzOGQ0NTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RldGFjaGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1i
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
QXRJbmRleChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQorYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQVhDb3JlT2JqZWN0
KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwgc2l6ZV90
IGluZGV4KQogewogICAgIHN3aXRjaCAoY3JpdGVyaWEtPnNlYXJjaEtleXNbaW5kZXhdKSB7CiAg
ICAgLy8gVGhlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGUgbWF0Y2hlcyBhbnkgbm9u
LW51bGwgQWNjZXNzaWJpbGl0eU9iamVjdC4KQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChB
Y2Nlc3NpYmlsaXR5TwogICAgIH0KIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKK2Jvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQVhDb3JlT2JqZWN0
KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKIHsKICAg
ICBpZiAoIWF4T2JqZWN0IHx8ICFjcml0ZXJpYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
Mjc2LDcgKzI3Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBzaXplX3QgbGVuZ3Ro
ID0gY3JpdGVyaWEtPnNlYXJjaEtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJj
aE1hdGNoQXRJbmRleChheE9iamVjdCwgY3JpdGVyaWEsIGkpKSB7Ci0gICAgICAgICAgICBpZiAo
Y3JpdGVyaWEtPnZpc2libGVPbmx5ICYmICFheE9iamVjdC0+aXNPbnNjcmVlbigpKQorICAgICAg
ICAgICAgaWYgKGNyaXRlcmlhLT52aXNpYmxlT25seSAmJiAhYXhPYmplY3QtPmlzT25TY3JlZW4o
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQpAQCAtMjg0LDE1ICsyODQsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0
KgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3Qs
IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEpCitib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBWENvcmVPYmplY3QqIGF4
T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQogewogICAgIGlm
ICghYXhPYmplY3QgfHwgIWNyaXRlcmlhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgcmV0dXJuIGF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KCZjcml0
ZXJpYS0+c2VhcmNoVGV4dCk7CisgICAgcmV0dXJuIGF4T2JqZWN0LT5jb250YWluc1RleHQoJmNy
aXRlcmlhLT5zZWFyY2hUZXh0KTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nl
c3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKK2Jvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6Y29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKIHsKICAg
ICAvLyBJZiB0ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2UgcmV0dXJuIHRydWUuCiAgICAgcmV0dXJu
ICF0ZXh0CkBAIC01MjIsNyArNTIyLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YmxvY2txdW90ZUxldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgp
IGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVu
aWdub3JlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9i
amVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBb
XSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAh
b2JqZWN0LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKQEAgLTYyNSw3ICs2MjUsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlKSBjb25zdAogICAgIH0pICE9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVu
ZEFjY2Vzc2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCitzdGF0
aWMgdm9pZCBhcHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0KEFYQ29yZU9iamVjdCogb2JqZWN0LCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMp
CiB7CiAgICAgLy8gRmluZCB0aGUgbmV4dCBkZXNjZW5kYW50IG9mIHRoaXMgYXR0YWNobWVudCBv
YmplY3Qgc28gc2VhcmNoIGNhbiBjb250aW51ZSB0aHJvdWdoIGZyYW1lcy4KICAgICBpZiAob2Jq
ZWN0LT5pc0F0dGFjaG1lbnQoKSkgewpAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nl
c3NpYmlsaXR5CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9CiAgICAgCi12b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCB1bnNpZ25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hp
bGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFjaGls
ZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjg0LDEyICs2ODQsMTIgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCwgdW5zaWdu
ZWQgaW5kZXgKICAgICBjaGlsZC0+Y2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOwogfQog
ICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjaGlsZCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWRkQ2hpbGQoQVhDb3JlT2Jq
ZWN0KiBjaGlsZCkKIHsKICAgICBpbnNlcnRDaGlsZChjaGlsZCwgbV9jaGlsZHJlbi5zaXplKCkp
OwogfQogICAgIAotc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0
YXJ0T2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIHJlc3VsdHMpCitzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQVhDb3JlT2Jq
ZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0LCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMp
CiB7CiAgICAgLy8gQSB0YWJsZSdzIGNoaWxkcmVuIGluY2x1ZGVzIGVsZW1lbnRzIHdob3NlIG93
biBjaGlsZHJlbiBhcmUgYWxzbyB0aGUgdGFibGUncyBjaGlsZHJlbiAoZHVlIHRvIHRoZSB3YXkg
dGhlIE1hYyBleHBvc2VzIHRhYmxlcykuCiAgICAgLy8gVGhlIHJvd3MgZnJvbSB0aGUgdGFibGUg
c2hvdWxkIGJlIHF1ZXJpZWQsIHNpbmNlIHRob3NlIGFyZSBkaXJlY3QgZGVzY2VuZGFudHMgb2Yg
dGhlIHRhYmxlLCBhbmQgdGhleSBjb250YWluIGNvbnRlbnQuCkBAIC03MDIsNyArNzAyLDcgQEAg
c3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCwgYm9vbCBpc0ZvcndhcmQsIEEKIAogICAgIC8vIElmIHRoZSBzdGFydE9iamVjdCBpcyBp
Z25vcmVkLCB3ZSBzaG91bGQgdXNlIGFuIGFjY2Vzc2libGUgc2libGluZyBhcyBhIHN0YXJ0IGVs
ZW1lbnQgaW5zdGVhZC4KICAgICBpZiAoc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSAmJiBzdGFydE9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3Qo
b2JqZWN0KSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBz
dGFydE9iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50
T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdCgpOwogICAgICAgICAvLyBHbyB1cCB0
aGUgcGFyZW50IGNoYWluIHRvIGZpbmQgdGhlIGhpZ2hlc3QgYW5jZXN0b3IgdGhhdCdzIGFsc28g
YmVpbmcgaWdub3JlZC4KICAgICAgICAgd2hpbGUgKHBhcmVudE9iamVjdCAmJiBwYXJlbnRPYmpl
Y3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICAgICAgaWYgKHBhcmVudE9i
amVjdCA9PSBvYmplY3QpCkBAIC03MzUsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQ2hp
bGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQs
IEEKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBpcyBub3cg
Pj0gdGhlIG51bWJlciBvZiByZXN1bHRzIGRlc2lyZWQuCi1ib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Om9iamVjdE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEs
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6b2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAgaWYgKGlzQWNjZXNz
aWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpICYmIGlzQWNjZXNzaWJp
bGl0eVRleHRTZWFyY2hNYXRjaChvYmplY3QsIGNyaXRlcmlhKSkgewogICAgICAgICByZXN1bHRz
LmFwcGVuZChvYmplY3QpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNy
aXRlCiAgICAgLy8gSXQgZG9lcyB0aGlzIGJ5IHN0ZXBwaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4g
YW5kIGF0IGVhY2ggbGV2ZWwgZG9pbmcgYSBERlMuCiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBu
byBzdGFydCBvYmplY3QsIGl0IG1lYW5zIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcuCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSBjcml0ZXJpYS0+c3RhcnRPYmpl
Y3Q7CisgICAgQVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCA9IGNyaXRlcmlhLT5zdGFydE9iamVj
dDsKICAgICBpZiAoIXN0YXJ0T2JqZWN0KQogICAgICAgICBzdGFydE9iamVjdCA9IHRoaXM7CiAg
ICAgCkBAIC03NzEsMTQgKzc3MSwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRN
YXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZQogICAgIC8v
IFRoZSBmaXJzdCBpdGVyYXRpb24gb2YgdGhlIG91dGVyIGxvb3Agd2lsbCBleGFtaW5lIHRoZSBj
aGlsZHJlbiBvZiB0aGUgc3RhcnQgb2JqZWN0IGZvciBtYXRjaGVzLiBIb3dldmVyLCB3aGVuCiAg
ICAgLy8gaXRlcmF0aW5nIGJhY2t3YXJkcywgdGhlIHN0YXJ0IG9iamVjdCBjaGlsZHJlbiBzaG91
bGQgbm90IGJlIGNvbnNpZGVyZWQsIHNvIHRoZSBsb29wIGlzIHNraXBwZWQgYWhlYWQuIFdlIG1h
a2UgYW4KICAgICAvLyBleGNlcHRpb24gd2hlbiBubyBzdGFydCBvYmplY3Qgd2FzIHNwZWNpZmll
ZCBiZWNhdXNlIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBzZWFy
Y2ggZGlyZWN0aW9uLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0g
bnVsbHB0cjsKKyAgICBBWENvcmVPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gbnVsbHB0cjsKICAg
ICBpZiAoIWlzRm9yd2FyZCAmJiBzdGFydE9iamVjdCAhPSB0aGlzKSB7CiAgICAgICAgIHByZXZp
b3VzT2JqZWN0ID0gc3RhcnRPYmplY3Q7CiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmpl
Y3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIH0KICAgICAKICAgICAvLyBUaGUgb3V0
ZXIgbG9vcCBzdGVwcyB1cCB0aGUgcGFyZW50IGNoYWluIGVhY2ggdGltZSAodW5pZ25vcmVkIGlz
IGltcG9ydGFudCBoZXJlIGJlY2F1c2Ugb3RoZXJ3aXNlIGVsZW1lbnRzIHdvdWxkIGJlIHNlYXJj
aGVkIHR3aWNlKQotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogc3RvcFNlYXJjaEVsZW1l
bnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsgc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3Qg
IT0gc3RvcFNlYXJjaEVsZW1lbnQ7IHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9i
amVjdFVuaWdub3JlZCgpKSB7CisgICAgZm9yIChhdXRvKiBzdG9wU2VhcmNoRWxlbWVudCA9IHBh
cmVudE9iamVjdFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdCAhPSBzdG9w
U2VhcmNoRWxlbWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCkpIHsKIAogICAgICAgICAvLyBPbmx5IGFwcGVuZCB0aGUgY2hpbGRyZW4gYWZ0ZXIv
YmVmb3JlIHRoZSBwcmV2aW91cyBlbGVtZW50LCBzbyB0aGF0IHRoZSBzZWFyY2ggZG9lcyBub3Qg
Y2hlY2sgZWxlbWVudHMgdGhhdCBhcmUgCiAgICAgICAgIC8vIGFscmVhZHkgYmVoaW5kL2FoZWFk
IG9mIHN0YXJ0IGVsZW1lbnQuCkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSog
Y3JpdGUKIAogICAgICAgICAvLyBUaGlzIG5vdyBkb2VzIGEgREZTIGF0IHRoZSBjdXJyZW50IGxl
dmVsIG9mIHRoZSBwYXJlbnQuCiAgICAgICAgIHdoaWxlICghc2VhcmNoU3RhY2suaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWFyY2hPYmplY3QgPSBzZWFy
Y2hTdGFjay5sYXN0KCkuZ2V0KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIHNlYXJjaE9i
amVjdCA9IHNlYXJjaFN0YWNrLmxhc3QoKS5nZXQoKTsKICAgICAgICAgICAgIHNlYXJjaFN0YWNr
LnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG9iamVjdE1hdGNo
ZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChzZWFyY2hPYmplY3QsIGNyaXRlcmlhLCBy
ZXN1bHRzKSkKQEAgLTIwMzEsMTMgKzIwMzEsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAg
ICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
ck9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS5heE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlck9iamVjdCk7Ci0gICAgCisKICAgICByZXR1cm4gY29u
c3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hl
ZFBhcmVudCgqYXhPYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBv
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6SGVhZGluZzsKICAgICB9KSk7CkBAIC0yMzYwLDE3ICsyMzYwLDE3IEBAIEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvcmllbnRhdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwogfSAg
ICAKIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KiBheE9iamVj
dCkgY29uc3QKIHsKICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aGFzQ2hpbGRyZW4o
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbYXhPYmplY3RdIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICZvYmplY3QgPT0g
YXhPYmplY3Q7CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmpl
Y3QpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdChj
b25zdCBBWENvcmVPYmplY3QqIGF4T2JqZWN0KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NzgsNyArMjc3OCw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25z
dAogICAgIHJldHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxp
dmVSZWdpb25TdGF0dXNWYWx1ZSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsK
IH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
K0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsgCiAgICAgLy8gU2VuZCB0aGUg
aGl0IHRlc3QgYmFjayBpbnRvIHRoZSBzdWItZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIGlmIChp
c0F0dGFjaG1lbnQoKSkgewpAQCAtMjgwNSw3ICsyODA1LDcgQEAgQVhPYmplY3RDYWNoZSogQWNj
ZXNzaWJpbGl0eU9iamVjdDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3Vt
ZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2VkVUlF
bGVtZW50KCkgY29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6Zm9jdXNl
ZFVJRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAg
ICByZXR1cm4gcGFnZSA/IEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBh
Z2UpIDogbnVsbHB0cjsKQEAgLTI5NjMsNyArMjk2Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNFeHBhbmRlZCgpIGNvbnN0CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJu
IHBhcmVudC0+aXNFeHBhbmRlZCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsg
IAogfQogCkBAIC0zMTAzLDcgKzMxMDMsNyBAQCBzdGF0aWMgaW50IGNvbXB1dGVCZXN0U2Nyb2xs
T2Zmc2V0KGludCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCBpbnQgc3ViZm9jdXNNaW4sIGludAogICAg
IHJldHVybiAob2JqZWN0TWluICsgb2JqZWN0TWF4IC0gdmlld3BvcnRNaW4gLSB2aWV3cG9ydE1h
eCkgLyAyOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25z
dAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuKCkgY29uc3QKIHsgICAKICAg
ICBib29sIGlzT25zY3JlZW4gPSB0cnVlOwogCkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgICAg
ICBhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCk7
CiAgICAgCiAgICAgaWYgKGF0dHJpYnV0ZUNhY2hlKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gaWdub3JlZCA9IGF0dHJpYnV0ZUNhY2hlLT5nZXRJZ25vcmVkKGF4T2Jq
ZWN0SUQoKSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gaWdub3JlZCA9
IGF0dHJpYnV0ZUNhY2hlLT5nZXRJZ25vcmVkKG9iamVjdElEKCkpOwogICAgICAgICBzd2l0Y2gg
KGlnbm9yZWQpIHsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM0OTUsNyArMzQ5NSw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0CiAKICAgICAvLyBJbiBjYXNlIGNvbXB1dGluZyBheElzSWdub3JlZCBkaXNhYmxlcyBhdHRy
aWJ1dGUgY2FjaGluZywgd2Ugc2hvdWxkIHJlZmV0Y2ggdGhlIG9iamVjdCB0byBzZWUgaWYgaXQg
ZXhpc3RzLgogICAgIGlmIChjYWNoZSAmJiAoYXR0cmlidXRlQ2FjaGUgPSBjYWNoZS0+Y29tcHV0
ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSgpKSkKLSAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldEln
bm9yZWQoYXhPYmplY3RJRCgpLCByZXN1bHQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
OjpJZ25vcmVPYmplY3QgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2Jq
ZWN0KTsKKyAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9yZWQob2JqZWN0SUQoKSwgcmVz
dWx0ID8gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0IDogQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMzYyMCw3ICszNjIwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50
KS5pc1Bhc3N3b3JkRmllbGQoKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZWxlY3RlZExpc3RJdGVtKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNoaWxkIDogY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdEl0ZW0oKSAm
JiAoY2hpbGQtPmlzU2VsZWN0ZWQoKSB8fCBjaGlsZC0+aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1
c2VkQ29udGFpbmVyKCkpKQpAQCAtMzc1Miw3ICszNzUyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG8KICAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUob3duZXJzLCBhcmlh
X293bnNBdHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRG
cm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkKQordm9pZCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFY
Q29yZU9iamVjdCogY2hpbGQpCiB7CiAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAppbmRleCAzZmYwYzM2MDFiNDEyYTI5ZTgyOGViYTYzODM2Y2ZkMTYyNDhkYzg1Li4zODNkZGVj
OGYzODcwMmRmZTQ4OWEwNTFhZDVkM2U4NWI3MDE1Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzEsMTMgKzMxLDkg
QEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgog
I2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmFu
Z2UuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgotI2luY2x1ZGUgIlZpc2li
bGVQb3NpdGlvbi5oIgotI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KQEAgLTUzLDggKzQ5LDYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCi10eXBl
ZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOwotCiBPQkpDX0NMQVNTIE5TQXJyYXk7CiBPQkpD
X0NMQVNTIE5TQXR0cmlidXRlZFN0cmluZzsKIE9CSkNfQ0xBU1MgTlNEYXRhOwpAQCAtNjgsMjAg
KzYyLDkgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEFjY2Vzc2liaWxpdHlPYmplY3Q7Ci1jbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzsKLWNs
YXNzIEFYT2JqZWN0Q2FjaGU7Ci1jbGFzcyBFbGVtZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFzcyBG
cmFtZVZpZXc7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBOb2RlOwot
Y2xhc3MgUGFnZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwot
Y2xhc3MgU2Nyb2xsVmlldzsKLWNsYXNzIFdpZGdldDsKLXN0cnVjdCBTY3JvbGxSZWN0VG9WaXNp
YmxlT3B0aW9uczsKIAogZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7CiAgICAg
QWx0ZXJuYXRpdmUsCkBAIC0xMjEsNDk2ICsxMDQsMjcyIEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5
VGV4dCB7CiAgICAgfQogfTsKIAotc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50
TW9kZSB7Ci0gICAgZW51bSBDaGlsZHJlbkluY2x1c2lvbiB7Ci0gICAgICAgIFRleHRVbmRlckVs
ZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwKLSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1v
ZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCi0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVk
ZU5hbWVGcm9tQ29udGVudHNDaGlsZHJlbiwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNv
bmNlcHQ6IG5hbWVGcm9tCi0gICAgfTsKLSAgICAKLSAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGls
ZHJlbkluY2x1c2lvbjsKLSAgICBib29sIGluY2x1ZGVGb2N1c2FibGVDb250ZW50OwotICAgIE5v
ZGUqIGlnbm9yZWRDaGlsZE5vZGU7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlKENoaWxkcmVuSW5jbHVzaW9uIGMgPSBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJ
Z25vcmVkQ2hpbGRyZW4sIGJvb2wgaSA9IGZhbHNlLCBOb2RlKiBpZ25vcmVkID0gbnVsbHB0cikK
LSAgICAgICAgOiBjaGlsZHJlbkluY2x1c2lvbihjKQotICAgICAgICAsIGluY2x1ZGVGb2N1c2Fi
bGVDb250ZW50KGkpCi0gICAgICAgICwgaWdub3JlZENoaWxkTm9kZShpZ25vcmVkKQotICAgIHsg
fQotfTsKLQotLy8gVXNlIHRoaXMgc3RydWN0IHRvIHN0b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0
aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNvIHRoYXQgaW4gYWRkQ2hpbGRyZW4oKQotLy8g
d2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBmb3IgZWFjaCBlbGVtZW50IHdoaWxl
IHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwgaW5mb3JtYXRpb24gYWxyZWFkeS4KLXN0
cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgewotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCB7IG51bGxwdHIgfTsKLSAgICBib29sIGlzQVhIaWRkZW4geyBm
YWxzZSB9OwotICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSB7IGZhbHNl
IH07Ci0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCB7IGZhbHNlIH07Ci0gICAg
Ci0gICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudCA9IG51bGxwdHIpCi0gICAgICAgIDogcGFyZW50KHBhcmVudCkKLSAgICB7
IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsgfQotfTsKLSAg
ICAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKLSAgICBWZXJ0aWNhbCwK
LSAgICBIb3Jpem9udGFsLAotICAgIFVuZGVmaW5lZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gewotICAgIEluY2x1ZGVPYmplY3QsCi0gICAgSWdu
b3JlT2JqZWN0LAotICAgIERlZmF1bHRCZWhhdmlvciwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7Ci0gICAgT2ZmID0gMCwKLSAgICBPbiwKLSAgICBNaXhl
ZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKLSAg
ICBOb25lLAotICAgIEFzY2VuZGluZywKLSAgICBEZXNjZW5kaW5nLAotICAgIE90aGVyLAotICAg
IEludmFsaWQsCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24g
ewotICAgIE5leHQgPSAxLAotICAgIFByZXZpb3VzLAotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5IHsKLSAgICBBbnlUeXBlID0gMSwKLSAgICBBcnRpY2xlLAotICAgIEJs
b2NrcXVvdGVTYW1lTGV2ZWwsCi0gICAgQmxvY2txdW90ZSwKLSAgICBCb2xkRm9udCwKLSAgICBC
dXR0b24sCi0gICAgQ2hlY2tCb3gsCi0gICAgQ29udHJvbCwKLSAgICBEaWZmZXJlbnRUeXBlLAot
ICAgIEZvbnRDaGFuZ2UsCi0gICAgRm9udENvbG9yQ2hhbmdlLAotICAgIEZyYW1lLAotICAgIEdy
YXBoaWMsCi0gICAgSGVhZGluZ0xldmVsMSwKLSAgICBIZWFkaW5nTGV2ZWwyLAotICAgIEhlYWRp
bmdMZXZlbDMsCi0gICAgSGVhZGluZ0xldmVsNCwKLSAgICBIZWFkaW5nTGV2ZWw1LAotICAgIEhl
YWRpbmdMZXZlbDYsCi0gICAgSGVhZGluZ1NhbWVMZXZlbCwKLSAgICBIZWFkaW5nLAotICAgIEhp
Z2hsaWdodGVkLAotICAgIEl0YWxpY0ZvbnQsCi0gICAgS2V5Ym9hcmRGb2N1c2FibGUsCi0gICAg
TGFuZG1hcmssCi0gICAgTGluaywKLSAgICBMaXN0LAotICAgIExpdmVSZWdpb24sCi0gICAgTWlz
c3BlbGxlZFdvcmQsCi0gICAgT3V0bGluZSwKLSAgICBQbGFpblRleHQsCi0gICAgUmFkaW9Hcm91
cCwKLSAgICBTYW1lVHlwZSwKLSAgICBTdGF0aWNUZXh0LAotICAgIFN0eWxlQ2hhbmdlLAotICAg
IFRhYmxlU2FtZUxldmVsLAotICAgIFRhYmxlLAotICAgIFRleHRGaWVsZCwKLSAgICBVbmRlcmxp
bmUsCi0gICAgVW52aXNpdGVkTGluaywKLSAgICBWaXNpdGVkTGluaywKLX07Ci0KLWVudW0gY2xh
c3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcyB7Ci0gICAgRmlyc3QsCi0g
ICAgTGFzdCwKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgewotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0OwotICAgIEFjY2Vzc2liaWxpdHlTZWFy
Y2hEaXJlY3Rpb24gc2VhcmNoRGlyZWN0aW9uOwotICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5PiBzZWFyY2hLZXlzOwotICAgIFN0cmluZyBzZWFyY2hUZXh0OwotICAgIHVuc2lnbmVk
IHJlc3VsdHNMaW1pdDsKLSAgICBib29sIHZpc2libGVPbmx5OwotICAgIGJvb2wgaW1tZWRpYXRl
RGVzY2VuZGFudHNPbmx5OwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVj
dGlvbiBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hUZXh0LCB1bnNpZ25lZCByZXN1bHRz
TGltaXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQot
ICAgICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQotICAgICAgICAsIHNlYXJjaERpcmVj
dGlvbihzZWFyY2hEaXJlY3Rpb24pCi0gICAgICAgICwgc2VhcmNoVGV4dChzZWFyY2hUZXh0KQot
ICAgICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQpCi0gICAgICAgICwgdmlzaWJsZU9u
bHkodmlzaWJsZU9ubHkpCi0gICAgICAgICwgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KGltbWVk
aWF0ZURlc2NlbmRhbnRzT25seSkKLSAgICB7IH0KLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vz
c2liaWxpdHlEZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVk
IH07Ci0KLXN0cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7Ci0KLSAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnQ7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZDsKLQotICAgIFZpc2libGVQb3NpdGlv
blJhbmdlKCkge30KLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcywgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQotICAgICAgICA6IHN0YXJ0KHMpCi0g
ICAgICAgICwgZW5kKGUpCi0gICAgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCi0gICAgICAgIDogc3RhcnQoc2VsZWN0aW9u
LnN0YXJ0KCkpCi0gICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKLSAgICB7IH0KLQotICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVs
bCgpOyB9Ci19OwotCi1zdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewotICAgICAgICAKLSAgICB1bnNp
Z25lZCBzdGFydCB7IDAgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07Ci0gICAgCi0gICAg
UGxhaW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7Ci0gICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UodW5z
aWduZWQgcywgdW5zaWduZWQgbCkKLSAgICAgICAgOiBzdGFydChzKQotICAgICAgICAsIGxlbmd0
aChsKQotICAgIHsgfQotICAgIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBsYWluVGV4dFJh
bmdlKE5TUmFuZ2UpOwotI2VuZGlmCi0gICAgCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dFN0YXJ0RnJvbSB7Ci0gICAgQmVnaW4sIC8vIFNlYXJjaCBmcm9tIHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGVsZW1lbnQuCi0gICAgU2VsZWN0aW9uLCAvLyBTZWFyY2ggZnJvbSB0aGUg
cG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgotICAgIEVuZCAvLyBTZWFyY2ggZnJv
bSB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dERpcmVjdGlvbiB7Ci0gICAgRm9yd2FyZCwgLy8gT2NjdXJyZW5jZSBhZnRlciB0
aGUgc3RhcnRpbmcgcmFuZ2UuCi0gICAgQmFja3dhcmQsIC8vIE9jY3VycmVuY2UgYmVmb3JlIHRo
ZSBzdGFydGluZyByYW5nZS4KLSAgICBDbG9zZXN0LCAvLyBDbG9zZXN0IG9jY3VycmVuY2UgdG8g
dGhlIHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVyIG9yIGJlZm9yZS4KLSAgICBBbGwgLy8g
QWxsIG9jY3VycmVuY2VzCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0
ZXJpYSB7Ci0gICAgVmVjdG9yPFN0cmluZz4gc2VhcmNoU3RyaW5nczsgLy8gVGV4dCBzdHJpbmdz
IHRvIHNlYXJjaCBmb3IuCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb20gc3Rh
cnQ7Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwotCi0g
ICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSgpCi0gICAgICAgIDogc3RhcnQoQWNj
ZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206OlNlbGVjdGlvbikKLSAgICAgICAgLCBkaXJl
Y3Rpb24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb246OkZvcndhcmQpCi0gICAgeyB9
Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB7Ci0gICAg
U2VsZWN0LAotICAgIFJlcGxhY2UsCi0gICAgQ2FwaXRhbGl6ZSwKLSAgICBMb3dlcmNhc2UsCi0g
ICAgVXBwZXJjYXNlCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gewot
ICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2VzOyAvLyB0ZXh0IG9uIHdoaWNoIHBl
cmZvcm0gdGhlIG9wZXJhdGlvbi4KLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGUg
dHlwZTsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0OyAvLyBGb3IgdHlwZSA9IHJlcGxhY2Uu
Ci0KLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbigpCi0gICAgICAgIDogdHlwZShBY2Nl
c3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVjdCkKLSAgICB7IH0KLX07Ci0KLWVudW0g
Y2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBl
cnNjcmlwdCB9OwotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0
VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RT
dXBlcnNjcmlwdCB9OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBG
YWxzZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKLWVudW0gY2xh
c3MgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSB7IFNjcmVlbiwgUGFnZSB9OwotCiBib29s
IG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKLSAgICAKLWNsYXNzIEFjY2Vzc2liaWxp
dHlPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgcHVibGlj
IEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0IDogcHVibGljIEFYQ29yZU9iamVjdCB7CiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCgpID0gZGVmYXVsdDsKLSAgICAKKwogcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vz
c2liaWxpdHlPYmplY3QoKTsKIAogICAgIC8vIEFmdGVyIGNvbnN0cnVjdGluZyBhbiBBY2Nlc3Np
YmlsaXR5T2JqZWN0LCBpdCBtdXN0IGJlIGdpdmVuIGEKICAgICAvLyB1bmlxdWUgSUQsIHRoZW4g
YWRkZWQgdG8gQVhPYmplY3RDYWNoZSwgYW5kIGZpbmFsbHkgaW5pdCgpIG11c3QKICAgICAvLyBi
ZSBjYWxsZWQgbGFzdC4KLSAgICB2b2lkIHNldEFYT2JqZWN0SUQoQVhJRCBheE9iamVjdElEKSB7
IG1faWQgPSBheE9iamVjdElEOyB9Ci0gICAgdmlydHVhbCB2b2lkIGluaXQoKSB7IH0KKyAgICB2
b2lkIHNldE9iamVjdElEKEFYSUQgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CisgICAgdm9p
ZCBpbml0KCkgb3ZlcnJpZGUgeyB9CiAKICAgICAvLyBXaGVuIHRoZSBjb3JyZXNwb25kaW5nIFdl
YkNvcmUgb2JqZWN0IHRoYXQgdGhpcyBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgLy8gd3JhcHMg
aXMgZGVsZXRlZCwgaXQgbXVzdCBiZSBkZXRhY2hlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
KEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBudWxs
cHRyKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0OworICAgIHZvaWQgZGV0
YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogPSBudWxscHRy
KSBvdmVycmlkZTsKKyAgICBib29sIGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgCi0gICAgdmlydHVhbCBib29s
IGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
VkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0
KFN0cmluZyAqKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxk
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250
cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hG
aWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1dlYkFyZWEoKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmFk
aW9CdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UmFkaW9CdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0ltYWdlTWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CisgICAgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW1hZ2VCdXR0b24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQYXNzd29yZEZpZWxk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29udGFpbmVk
QnlQYXNzd29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNXZWJBcmVhKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWE7
IH0KKyAgICBib29sIGlzQ2hlY2tib3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7IH0KKyAgICBib29sIGlzUmFkaW9C
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6UmFkaW9CdXR0b247IH0KKyAgICBib29sIGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJv
eDsgfQorICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCYXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVsKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRGF0YVRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzRmllbGRzZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0dyb3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNJbnB1dEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc0lucHV0U2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc0xhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c1RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRGF0
YVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFi
bGVSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJs
ZUNvbHVtbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Rh
YmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Zp
ZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzR3Jv
dXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBVHJl
ZUdyaWRSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJ
bWFnZU1hcExpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0
aXZlU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc01vY2tPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNN
ZW51TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01l
bnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjsgfQorICAgIGJvb2wgaXNOYXRpdmVTcGlu
QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3Bp
bkJ1dHRvblBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNb2NrT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBib29sIGlzU3dpdGNoKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaDsgfQotICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9
Ci0gICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0FSSUFUZXh0Q29u
dHJvbCgpIGNvbnN0OwotICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0Owot
ICAgIGJvb2wgaXNUYWJMaXN0KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYkxpc3Q7IH0KLSAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KLSAgICBib29sIGlz
UmFkaW9Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOyB9Ci0gICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OyB9CisgICAgYm9vbCBp
c01lZGlhT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzU3dpdGNoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaDsgfQorICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xl
QnV0dG9uOyB9CisgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOb25O
YXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUYWJMaXN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYkxpc3Q7IH0KKyAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KKyAgICBib29sIGlzUmFk
aW9Hcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpSYWRpb0dyb3VwOyB9CisgICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94
OyB9CiAgICAgYm9vbCBpc1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZTsgfQotICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNv
bnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsg
fQorICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRl
bSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOyB9Ci0g
ICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0OwotICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQotICAg
IGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJldHVybiBpc0NoZWNrYm94KCkgfHwg
aXNSYWRpb0J1dHRvbigpOyB9Ci0gICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsgfQotICAgIGJv
b2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2FudmFzOyB9Ci0gICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOyB9Ci0gICAgYm9v
bCBpc0Jsb2NrcXVvdGUoKSBjb25zdDsKLSAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdDsKLSAg
ICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQotICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25z
dDsKLSAgICBib29sIGlzTWV0ZXIoKSBjb25zdDsKLSAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0K
LSAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpUb29sYmFyOyB9Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBj
b25zdDsKLSAgICBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNLZXli
b2FyZEZvY3VzYWJsZSgpIGNvbnN0OwotICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7IH0KLSAgICBib29s
IGlzT3V0cHV0KCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQorICAgIGJvb2wgaXNCdXR0b24oKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW07IH0KKyAgICBib29s
IGlzQ2hlY2tib3hPclJhZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNDaGVja2JveCgp
IHx8IGlzUmFkaW9CdXR0b24oKTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFy
ZWE7IH0KKyAgICBib29sIGlzQ2FudmFzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhczsgfQorICAgIGJvb2wgaXNQb3BVcEJ1
dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpQb3BVcEJ1dHRvbjsgfQorICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0NvbG9yV2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpDb2xvcldlbGw7IH0KKyAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc1NwbGl0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOyB9CisgICAgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJh
cjsgfQorICAgIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9h
cmRGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1t
YXJ5OyB9CisgICAgYm9vbCBpc091dHB1dCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBp
c0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNF
bmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2Vs
ZWN0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNGb2N1
c2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSG92ZXJl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0luZGV0ZXJt
aW5hdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMb2Fk
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNdWx0aVNl
bGVjdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNP
ZmZTY3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQ
cmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVW52
aXNpdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVmlz
aXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1JlcXVp
cmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRz
UmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNMaW5rZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNFeHBhbmRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29s
KSBvdmVycmlkZSB7IH0KICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYs
IEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0OworICAgIEZsb2F0UmVjdCBjb252
ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9u
U3BhY2UpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwg
bWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRp
bWUuCi0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0OwotICAgIFJl
ZlB0cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFy
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGhhc1BsYWluVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGhhc1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCop
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQot
ICAgIHZpcnR1YWwgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Q7Ci0KLSAgICBib29sIHN1cHBvcnRzRGF0
ZXRpbWVBdHRyaWJ1dGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZUF0
dHJpYnV0ZVZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNhblNldEZvY3Vz
QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
U2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
U2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAg
IHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBpc1NlbGVjdGVk
T3B0aW9uQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJv
b2wgaGFzQm9sZEZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxSYW5nZT4g
Z2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFydCwgQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNQbGFpblRl
eHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZUZv
bnQoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRp
Y1RleHQ7IH0KKyAgICBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXROdW1l
cmljVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2Fu
U2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBk
ZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkQnlEZWZhdWx0KCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0
aW9uTWVzc2FnZSgpIGNvbnN0OwotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0
OwotICAgIAotICAgIHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGlu
dCB0YWJsZUxldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0g
ICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQot
ICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7
IH0KLSAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAw
LjBmOyB9Ci0gICAgdmlydHVhbCBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIDAuMGY7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkUmFk
aW9CdXR0b24oKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpOwotICAgIHZpcnR1YWwgaW50IGxheW91
dENvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRl
ZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIGJvb2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBoZWFk
aW5nTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgaW50IHRhYmxlTGV2
ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IHZhbHVlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9
CisgICAgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAu
MGY7IH0KKyAgICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMC4wZjsgfQorICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMC4wZjsgfQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVk
VGFiSXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3Qq
IHNlbGVjdGVkTGlzdEl0ZW0oKSBvdmVycmlkZTsKKyAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9n
cmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBpc0FSSUFDb250cm9sKEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdDsK
LSAgICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdDsKLSAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFy
aWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0g
ICAgdm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNz
YWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dDsKLSAgICB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFy
aWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzUG9wdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBwb3B1cFZhbHVl
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9y
dHNIYXNQb3B1cCgpIGNvbnN0OwotICAgIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0Owot
ICAgIGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGludmFsaWRTdGF0
dXMoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzUHJlc3NlZCgpIGNvbnN0OwotICAgIGJvb2wg
c3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29u
c3Q7Ci0gICAgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Q7Ci0gICAg
Y29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0
IEF0b21TdHJpbmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgY2xhc3NMaXN0KFZl
Y3RvcjxTdHJpbmc+JikgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9u
KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUoKSBj
b25zdDsKLSAgICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0
c0N1cnJlbnQoKSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBj
b25zdDsKLSAgICAKKyAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29u
dGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFM
YWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3du
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBoYXNQb3B1cCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwcmVzc2VkSXNQ
cmVzZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBw
b3J0c0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGly
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRl
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNS
YW5nZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRp
ZmllckF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxp
bmtSZWxWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxT
dHJpbmc+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNv
bnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgU3RyaW5nIGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4g
dGhlcmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCi0gICAgYm9vbCBpZ25vcmVkRnJvbU1v
ZGFsUHJlc2VuY2UoKSBjb25zdDsKLSAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBj
b25zdDsKLSAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBzdXBw
b3J0c1NldFNpemUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdDsK
LSAgICBpbnQgc2V0U2l6ZSgpIGNvbnN0OwotICAgIGludCBwb3NJblNldCgpIGNvbnN0OwotICAg
IAorICAgIGJvb2wgaWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc01vZGFsTm9kZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c1NldFNp
emUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBpbnQgc2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBwb3NJ
blNldCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gQVJJQSBkcmFnIGFuZCBkcm9wCi0gICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCkgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgeyB9Ci0gICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKSB7IHJldHVybiB7
IH07IH0KLSAgICAKKyAgICBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVJJQUdyYWJiZWQoKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkg
b3ZlcnJpZGUgeyB9CisgICAgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3Rz
KCkgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CisKICAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3Qg
QVggb2JqZWN0IHRvIHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVP
YmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIC8vIENhbGxlZCBvbiB0aGUgQVggb2JqZWN0IGFm
dGVyIHRoZSByZW5kZXIgdHJlZSBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSByaWdodCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZSogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7
Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVtZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0
Q2hpbGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG5leHRTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyB9Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChj
b25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgQVhDb3JlT2JqZWN0KiBmb2N1
c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBmaXJzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bmV4dFNpYmxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdCBv
dmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9y
ZWQoaW50IGxpbWl0KSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhD
b3JlT2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmly
c3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSopOwotICAgIHZvaWQgZmluZE1h
dGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5Q
YXJlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZmluZE1hdGNoaW5nT2Jq
ZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBvdmVycmlkZTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgaXNEZXNjZW5kYW50
T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9m
Um9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBUZXh0IHNl
bGVjdGlvbgogcHJpdmF0ZToKQEAgLTYxOCwzOTcgKzM3NywzOTUgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJhbmdlPiBm
aW5kVGV4dFJhbmdlKFZlY3RvcjxTdHJpbmc+IGNvbnN0JiBzZWFyY2hTdHJpbmdzLCBSZWZQdHI8
UmFuZ2U+IGNvbnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24pIGNv
bnN0OwogcHVibGljOgotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhB
Y2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Q7Ci0gICAgVmVjdG9y
PFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24g
Y29uc3QmKTsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGlua2Vk
VUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCB7IH0KLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlv
bikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJv
bGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFS
b2xlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgYXJpYVJvbGVI
YXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3Np
YmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRp
b24gY29uc3QmKSBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFi
bGVPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBs
aW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlIHsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3Bv
bmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb24pIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIEFjY2Vzc2li
aWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlVua25vd247IH0KKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGls
ZE9mQXJpYVJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
YXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAot
ICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRl
eHQ+JikgY29uc3QgeyB9OworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vz
c2liaWxpdHlUZXh0PiYpIGNvbnN0IG92ZXJyaWRlIHsgfTsKICAgICAvLyBBIHNpbmdsZSBtZXRo
b2QgZm9yIGdldHRpbmcgYSBjb21wdXRlZCBsYWJlbCBmb3IgYW4gQVhPYmplY3QuIEl0IGNvbmRl
bnNlcyB0aGUgbnVhbmNlcyBvZiBhY2Nlc3NpYmlsaXR5VGV4dC4gVXNlZCBieSBJbnNwZWN0b3Iu
Ci0gICAgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKTsKLSAgICAKKyAgICBTdHJpbmcgY29tcHV0ZWRM
YWJlbCgpIG92ZXJyaWRlOworCiAgICAgLy8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5h
bWUgb24gYW4gQWNjZXNzaWJsZU9iamVjdC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJs
ZU5hbWUoY29uc3QgQXRvbVN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1
dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEFjY2Vzc2libGVO
YW1lKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGhhc0F0dHJpYnV0
ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNz
aWJpbGl0eSBUZXh0IC0gKFRvIGJlIGRlcHJlY2F0ZWQpLgotICAgIHZpcnR1YWwgU3RyaW5nIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZp
cnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBT
dHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9CiAKICAgICAvLyBNZXRob2RzIGZvciBkZXRlcm1pbmluZyBhY2Nlc3NpYmls
aXR5IHRleHQuCi0gICAgYm9vbCBpc0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgeyByZXR1cm4gYXJp
YVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LSAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5k
ZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2Ny
aWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBT
dHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0OwotICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVE
ZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdDsKLSAgICAKKyAgICBib29sIGlzQVJJQVN0YXRpY1Rl
eHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgdGV4dFVuZGVyRWxl
bWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4
dFVuZGVyRWxlbWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBTdHJpbmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgU3Ry
aW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9t
Q29udGVudCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gQWJicmV2aWF0aW9ucwotICAgIHZp
cnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVj
dG9yPEVsZW1lbnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBTdHJpbmcg
ZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxl
bWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8g
T25seSBpZiBpc0NvbG9yV2VsbCgpCi0gICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiBy
LCBpbnQmIGcsIGludCYgYikgY29uc3QgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CisgICAgdm9p
ZCBjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0IG92ZXJyaWRlIHsgciA9
IDA7IGcgPSAwOyBiID0gMDsgfQogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yb2xlOyB9CiAKLSAgICB2aXJ0dWFsIEFYT2JqZWN0
Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKLSAgICBBWElEIGF4T2JqZWN0SUQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9Ci0gICAgCisgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNo
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2lkOyB9CisKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogYW5jaG9y
RWxlbWVudEZvck5vZGUoTm9kZSopOwogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBo
ZWFkaW5nRWxlbWVudEZvck5vZGUoTm9kZSopOwotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9y
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBib29sIHN1cHBvcnRzUHJl
c3NBY3Rpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5n
Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIEludFJlY3QgcGl4
ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3Qo
Ym91bmRpbmdCb3hSZWN0KCkpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0
KCkgY29uc3QgPSAwOwotICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1l
bnRSZWN0KCkuc2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCk7Cisg
ICAgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBib29sIHN1cHBvcnRzUHJlc3NBY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0Jv
eFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzbmFwcGVkSW50UmVjdChib3VuZGluZ0Jv
eFJlY3QoKSk7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
PSAwOworICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVsZW1l
bnRSZWN0KCkuc2l6ZSgpOyB9CisgICAgSW50UG9pbnQgY2xpY2tQb2ludCgpIG92ZXJyaWRlOwog
ICAgIHN0YXRpYyBJbnRSZWN0IGJvdW5kaW5nQm94Rm9yUXVhZHMoUmVuZGVyT2JqZWN0KiwgY29u
c3QgVmVjdG9yPEZsb2F0UXVhZD4mKTsKLSAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBhdGgoKSBj
b25zdCB7IHJldHVybiBQYXRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0
ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGxh
aW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRS
YW5nZSgpOyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJldHVybiBz
ZWxlY3RlZFRleHRSYW5nZSgpLnN0YXJ0OyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkg
Y29uc3QgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5sZW5ndGg7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBVUkwoKTsgfQotICAgIHZpcnR1YWwgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBWaXNpYmxlU2VsZWN0aW9u
KCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29u
c3QgeyByZXR1cm4gbnVsbEF0b20oKTsgfQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigp
IGNvbnN0OwotICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBk
b2N1bWVudEZyYW1lVmlldygpIGNvbnN0OwotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAg
IEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdDsKLSAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBj
b25zdDsKLSAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdDsKLSAgICBT
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdDsKKyAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUGF0aCgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4
dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGFp
blRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBs
YWluVGV4dFJhbmdlKCk7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KKyAgICB1bnNpZ25l
ZCBzZWxlY3Rpb25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5n
ZSgpLmxlbmd0aDsgfQorCisgICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFVS
TCgpOyB9CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAg
Y29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3
aWRnZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgV2lkZ2V0KiB3
aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygp
IGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogdG9wRG9j
dW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0
b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAvLyAxLWJhc2VkLCB0byBtYXRjaCB0aGUgYXJpYS1sZXZlbCBzcGVjLgotICAgIHZp
cnR1YWwgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgYm9vbCByZXBsYWNlVGV4
dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKTsKLSAgICBib29s
IGluc2VydFRleHQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUo
ZmxvYXQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IHsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHByZXNzKCk7Ci0gICAgYm9vbCBwZXJm
b3JtRGVmYXVsdEFjdGlvbigpIHsgcmV0dXJuIHByZXNzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBpbmNyZW1lbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgeyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHRleHRDaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxp
dHlSb2xlKCkgeyB9Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGls
ZHJlbihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2hpbGRyZW4oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoQWNjZXNzaWJp
bGl0eU9iamVjdCopOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgdW5zaWduZWQpOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUF0dHJp
YnV0ZVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhc0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlQ2hpbGRyZW47IH0KKyAgICB1
bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
KworICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNl
bGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVj
dGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHJlcGxhY2VU
ZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRl
OworICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIG1ha2VSYW5nZVZpc2libGUo
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHByZXNzKCkgb3Zl
cnJpZGU7CisgICAgYm9vbCBwZXJmb3JtRGVmYXVsdEFjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJu
IHByZXNzKCk7IH0KKworICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5jcmVtZW50KCkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBkZWNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZSB7IH0KKyAgICBjb25zdCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5J
Zk5lZWRlZCA9IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJyaWRlOworICAgIHZv
aWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQpIG92ZXJyaWRlOworCisgICAg
Ym9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2hhdmVDaGlsZHJlbjsgfQogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2Fy
eSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4o
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgYm9vbCBuZWVkc1Rv
VXBkYXRlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0TmVl
ZHNUb1VwZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBk
YXRlU3VidHJlZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJy
aWRlOworICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoRnJvbVBhcmVudCgpOworICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlOwog
I2Vsc2UKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIHsgfQorICAgIHZvaWQg
ZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCBib29s
IGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEZvY3Vz
QWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgeyB9Ci0g
ICAgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kikg
Y29uc3Q7Ci0gICAgYm9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCopIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxv
Y2tDaGlsZCgpIGNvbnN0OworICAgIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZWxlY3RlZENoaWxk
cmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsg
fQorICAgIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3Zl
cnJpZGUgeyB9CisgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2
ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9p
ZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaXNEZXNj
ZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNzaWJpbGl0
eVJvbGUgYXJpYVJvbGVUb1dlYkNvcmVSb2xlKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgaGFz
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3Ry
aW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGJvb2wg
aGFzVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
blJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gZWxl
bWVudFJhbmdlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUYWdO
YW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZpc2libGVQ
b3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZp
c2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQorCisgICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50
UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVk
c0NoYXJhY3RlcihOb2RlKiByZXBsYWNlZE5vZGUpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2li
bGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxl
ZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
c2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBW
aXNpYmxlUG9zaXRpb25SYW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYp
IGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5nZUZvclBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OworCisgICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3Np
dGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3Jk
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9z
aXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBW
aXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSBzZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHN0eWxlUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZv
clJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRp
YyBTdHJpbmcgc3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKTsKLSAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29u
c3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNv
bnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRp
b25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJikgY29uc3QgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
Rm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9y
Qm91bmRzKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKSBjb25zdCB7IHJldHVybiB2aXNpYmxlUG9zLm5leHQo
KTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MucHJl
dmlvdXMoKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEVuZChjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRM
aW5lRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uIHByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91
c1NlbnRlbmNlU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAg
ICBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0
YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLyps
YXN0SW5kZXhPSyAqLykgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQp
IGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgdmlydHVhbCBpbnQgaW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1
cm4gMDsgfQotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZv
clBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIGludCBsaW5lRm9y
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgUGxhaW5UZXh0UmFu
Z2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9z
aXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGluZGV4KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGluZUJy
ZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2Ug
ZG9BWFJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2Uo
KTsgfQotICAgIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBv
aW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRl
eCh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBsYWlu
VGV4dFJhbmdlIGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0OwotCi0gICAg
dmlydHVhbCBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5k
c0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgp
OyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVy
T2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9
CisgICAgU3RyaW5nIHN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRl
OworICAgIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAg
ICBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRp
b25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgQWNjZXNzaWJpbGl0eVZpc2libGVQ
b3NpdGlvbkZvckJvdW5kcykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2li
bGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHZpc2libGVQb3MubmV4dCgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2aW91cygpOyB9CisgICAgVmlz
aWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRl
bmNlRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0
UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAq
LykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKworICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGlu
ZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXgo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KKwor
ICAgIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAg
IFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFu
Z2VGb3JQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWlu
VGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFu
Z2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgZG9BWFN0
cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU3RyaW5nKCk7IH0KKyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIElu
dFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KICAgICBzdGF0
aWMgU3RyaW5nIGxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBW
aXNpYmxlUG9zaXRpb24mKTsKIAotICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWdu
ZWQpOworICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpIG92ZXJyaWRlOwog
Ci0gICAgU3RyaW5nIGNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBjb21w
dXRlZFJvbGVTdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVh
bCBTdHJpbmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCB7IHJldHVy
biBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9y
TVNBQSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisgICAgU3RyaW5nIHN0cmluZ1Zh
bHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3Ry
aW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KKyAgICBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBTdHJpbmcoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1T
QUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKTsgfQorCisgICAgU3RyaW5n
IHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9
CisgICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXV0b0ZpbGxC
dXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfQotICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdDsKLSAgICBib29sIGlz
VmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0OwotICAgIEF1dG9GaWxsQnV0dG9uVHlwZSB2
YWx1ZUF1dG9maWxsQnV0dG9uVHlwZSgpIGNvbnN0OwotICAgIAogICAgIC8vIFVzZWQgYnkgYW4g
QVJJQSB0cmVlIHRvIGdldCBhbGwgaXRzIHJvd3MuCi0gICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgLy8gVXNlZCBieSBhbiBBUklB
IHRyZWUgaXRlbSB0byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNj
bG9zZS4KLSAgICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJik7Ci0gICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQg
b25seSBpdHMgY29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBz
LiAKLSAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJik7Ci0gICAgCisgICAgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0
cmVlIGl0ZW0gdG8gZ2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxkIHRyZWUg
aXRlbXMgYW5kIGdyb3Vwcy4KKyAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGxpdmUtcmVnaW9u
IGZlYXR1cmVzLgotICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2Zm
ID0gdHJ1ZSkgY29uc3Q7Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRl
SWZPZmYgPSB0cnVlKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9u
QW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNv
bnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCB7IHJl
dHVybiBudWxsQXRvbSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVk
ZUlmT2ZmID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0luc2lkZUxpdmVSZWdp
b24oYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVl
KSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVS
ZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAg
ICBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nl
c3NpYmlsaXR5Um9sZSk7CiAgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxl
ZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY29udGVudEVkaXRhYmxlQXR0
cmlidXRlSXNFbmFibGVkKEVsZW1lbnQqKTsKLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0
dHJpYnV0ZVNldCgpIGNvbnN0OworICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRl
U2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Q7CisgICAgYm9vbCBz
dXBwb3J0c1JlYWRPbmx5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRPbmx5VmFs
dWUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgYm9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBh
dXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0OwotICAgIAotICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0
cmlidXRlcygpIGNvbnN0OwotICAgIAogICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCi0g
ICAgdmlydHVhbCBPcHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gT3B0aW9uU2V0PFNwZWFrQXM+IHsgfTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBz
cGVha0FzUHJvcGVydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcHRpb25TZXQ8U3BlYWtB
cz4geyB9OyB9CiAKICAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xsaW5n
IGFzIG1hbnkgbmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgotICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VW
aXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBv
YmplY3QgY2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9j
YWwgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRo
U3ViRm9jdXMoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8g
U2Nyb2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVz
IG9mIHRoZSB0b3AtbGV2ZWwgd2luZG93LgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2Jh
bFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgCi0gICAgZW51bSBjbGFzcyBTY3Jv
bGxCeVBhZ2VEaXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsKLSAgICBib29sIHNj
cm9sbEJ5UGFnZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0OwotICAgIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBzY3JvbGxDb250ZW50c1NpemUoKSBj
b25zdDsgICAgCi0gICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsK
LSAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9w
dGlvbnMmKSBjb25zdDsKLSAgICAKLSAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCk7
Ci0gICAgdm9pZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKTsKKyAgICB2b2lkIHNj
cm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgc2Nyb2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRT
aXplIHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3Qgc2Ny
b2xsVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxU
b01ha2VWaXNpYmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKIAogICAg
IC8vIEZpcmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBp
ZiB0aGUgaXNJZ25vcmVkIHZhbHVlIGNoYW5nZWQuCi0gICAgdm9pZCBub3RpZnlJZklnbm9yZWRW
YWx1ZUNoYW5nZWQoKTsKKyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92
ZXJyaWRlOwogCiAgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0
aEVsZW1lbnQoKS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3co
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJl
Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRl
eHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1i
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZl
bmNlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0
aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRP
YmplY3RUeXBlKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoRWxlbWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGcmFj
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhG
ZW5jZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRo
U3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNNYXRoUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlUm93
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxl
Q2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhN
dWx0aXNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01hdGhUb2tlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4
T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAorICAgIEFYQ29yZU9iamVjdCogbWF0
aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29y
ZU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKwogICAgIC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBGcmFjdGlvbiBjb21wb25lbnRzLgot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhE
ZW5vbWluYXRvck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3Qq
IG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlw
dE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAK
KyAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9i
amVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIC8vIEZlbmNlZCBjb21w
b25lbnRzLgotICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IG1hdGhM
aW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Fu
b255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCisgICAg
U3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRv
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBNdWx0aXNjcmlw
dHMgY29tcG9uZW50cy4KLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0
eU9iamVjdCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdFBhaXJzOwotICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5
TWF0aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3Jp
cHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQotICAgIAorICAgIHZv
aWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0
aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9CisKICAgICAvLyBWaXNpYmlsaXR5LgotICAgIGJv
b2wgaXNBWEhpZGRlbigpIGNvbnN0OwotICAgIGJvb2wgaXNET01IaWRkZW4oKSBjb25zdDsKLSAg
ICBib29sIGlzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlk
ZGVuKCk7IH0KKyAgICBib29sIGlzQVhIaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzRE9NSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGlzQVhIaWRkZW4oKSB8fCBpc0RPTUhpZGRlbigpOyB9CiAKICNp
ZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciog
d3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAg
IHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgeyBt
X3dyYXBwZXIgPSB3cmFwcGVyOyB9CisgICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKiB3cmFwcGVyKSBvdmVycmlkZSB7IG1fd3JhcHBlciA9IHdyYXBwZXI7IH0K
ICNlbHNlCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCk7CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0
KiBwYXJlbnQpIG92ZXJyaWRlOwogI2Vsc2UKLSAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBh
cmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1l
bnRQYXJlbnQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKLSAgICAKKwogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZKQogICAgIC8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWV0aG9k
IGZvciBkZXRlcm1pbmluZyBpZiBhbiBhdHRhY2htZW50IGlzIGlnbm9yZWQKLSAgICBib29sIGFj
Y2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Q7CisgICAgYm9vbCBhY2Nlc3NpYmls
aXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIC8vIGdpdmVzIHBsYXRm
b3JtcyB0aGUgb3Bwb3J0dW5pdHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hv
dWxkIGJlIGluY2x1ZGVkCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3Np
YmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25z
dCBvdmVycmlkZTsKICNlbHNlCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
QWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CisgICAgYm9v
bCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQ
bGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVu
Z3RoKCk7Ci0gICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdDsKLSAgICBib29s
IGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdDsKKyAgICBpbnQgYWNjZXNzaWJpbGl0eVBh
c3N3b3JkRmllbGRMZW5ndGgoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0
ZW5lcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgCisKICAgICAvLyBhbGxvd3MgZm9yIGFuIEFj
Y2Vzc2liaWxpdHlPYmplY3QgdG8gdXBkYXRlIGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCiAg
ICAgLy8gb3RoZXIgb3BlcmF0aW9ucyB1cGRhdGUgdHlwZSBvcGVyYXRpb25zCi0gICAgdm9pZCB1
cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICAKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
IG92ZXJyaWRlOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBwcmV2ZW50S2V5Ym9h
cmRET01FdmVudERpc3BhdGNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoKGJvb2wpOwotICAgIGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNW
YWx1ZUluVGl0bGUoKSBjb25zdDsKKyAgICBib29sIHByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlz
cGF0Y2goKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2
ZW50RGlzcGF0Y2goYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0
dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzcGVlY2hIaW50
QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgZGVzY3JpcHRpb25B
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBoZWxwVGV4dEF0dHJp
YnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFs
dWUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQo
KSBjb25zdDsKLSAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIGJv
b2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENh
cmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBmb2N1c2FibGVBbmNlc3RvcigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGVkaXRhYmxlQW5jZXN0b3IoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoaWdoZXN0
RWRpdGFibGVBbmNlc3RvcigpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzYWJsZUFu
Y2VzdG9yKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWRpdGFibGVBbmNl
c3RvcigpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RFZGl0YWJs
ZUFuY2VzdG9yKCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25z
dDsKKyAgICBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGF0
aWMgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0Y2hlZFBhcmVudChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0JiwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29s
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKT4mKTsKLSAgICAKLSAgICB2b2lkIGNsZWFySXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEoKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsgfQotICAgIHZvaWQgc2V0SXNJZ25v
cmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7Ci0gICAgCisK
KyAgICB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlkZSB7IG1faXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoKTsgfQorICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENv
cmVPYmplY3QqKSBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIEFYSUQgbV9pZCB7IDAgfTsK
ICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKQEAgLTEwMjEsMjQg
Kzc3OCwyNCBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKICAgICBib29sIG1faXNvbGF0ZWRUcmVlTm9kZUluaXRpYWxpemVkIHsgZmFsc2UgfTsK
ICNlbmRpZgotICAgIAotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNz
aWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSB7IG1faXNJZ25vcmVkRnJvbVBh
cmVudERhdGEgPSBkYXRhOyB9CisKKyAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRh
KEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSYgZGF0YSkgb3ZlcnJpZGUgeyBt
X2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCiAgICAgdmlydHVhbCBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIAorCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVy
biBpdHMgU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgeyB9CiAgICAgU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhQW5jZXN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNj
cm9sbEFyZWFBbmRBbmNlc3RvcihzdGQ6OnBhaXI8U2Nyb2xsYWJsZUFyZWEqLCBBY2Nlc3NpYmls
aXR5T2JqZWN0Kj4mKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxp
dHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxp
dHlTZWFyY2hDcml0ZXJpYSopOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRT
ZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhKik7Ci0gICAgc3RhdGljIGJvb2wgb2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJl
c3VsdExpbWl0KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKworICAgIHN0YXRpYyBib29sIGlz
QWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBWENvcmVPYmplY3QqLCBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBzaXplX3QpOworICAgIHN0YXRpYyBib29sIGlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYSopOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFy
Y2hNYXRjaChBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAg
ICBzdGF0aWMgYm9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQo
QVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBidXR0b25S
b2xlVHlwZSgpIGNvbnN0OwotICAgIGJvb2wgaXNPbnNjcmVlbigpIGNvbnN0OworICAgIGJvb2wg
aXNPblNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZGlzcGF0Y2hUb3VjaEV2ZW50
KCk7CiAKICAgICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwpAQCAtMTA2NCwxMCAr
ODIxLDEwIEBAIHByb3RlY3RlZDoKIH07CiAKICNpZiAhRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCi1p
bmxpbmUgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSB7IHJldHVybiBtX2NoaWxk
cmVuOyB9CitpbmxpbmUgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSBvdmVycmlk
ZSB7IHJldHVybiBtX2NoaWxkcmVuOyB9CiBpbmxpbmUgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQog
aW5saW5lIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KLWlubGluZSB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpIHsgfQoraW5saW5lIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYK
IAogQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29u
c3QgTm9kZSosIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Jik+JiBpc0FjY2Vzc2libGUpOwpAQCAtMTA3Niw5ICs4MzMsOSBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2RlKiwgY29uc3Qg
V1RGOjpGdW5jdAogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElU
WShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVybiBvYmpl
Y3QucHJlZGljYXRlOyB9IFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
QVhDb3JlT2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5wcmVkaWNhdGU7IH0gXAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QpCi1zdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSYgY29udGV4dCkgeyByZXR1cm4g
Y29udGV4dC5pc0FjY2Vzc2liaWxpdHlPYmplY3QoKTsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0Fj
Y2Vzc2liaWxpdHlPYmplY3QoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaAppbmRleCA5OGZmYjMxNWUyMTBiMGNiMzVkYmU3OWJjYzIwZjkxMTAy
MTc4YmJjLi4yOTAzZGUxOTg4YzY1ZDUyYjViMjA3YjAwNjA1MTFlZGY1MzgxNzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaApAQCAtMjUsNyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJl
Y3QuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9y
LmgiCisjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiVmlzaWJsZVNlbGVj
dGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFURk9STShXSU4p
CkBAIC00NSw2ICs1MCwyMyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBOb2RlOworY2xhc3MgRWxlbWVudDsKK2NsYXNz
IFJlbmRlck9iamVjdDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBQYXRoOworY2xhc3Mg
V2lkZ2V0OworY2xhc3MgUGFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRnJhbWU7CitjbGFz
cyBGcmFtZVZpZXc7CitjbGFzcyBTY3JvbGxWaWV3OworY2xhc3MgQVhPYmplY3RDYWNoZTsKK2Ns
YXNzIEFYQ29yZU9iamVjdDsKK2NsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Oworc3RydWN0
IEFjY2Vzc2liaWxpdHlUZXh0Oworc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zOwor
CiB0eXBlZGVmIHVuc2lnbmVkIEFYSUQ7CiBleHRlcm4gY29uc3QgQVhJRCBJbnZhbGlkQVhJRDsK
IHR5cGVkZWYgdW5zaWduZWQgQVhJc29sYXRlZFRyZWVJRDsgICAgCkBAIC0yMDMsMzYgKzIyNSw4
NTYgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgV2luZG93LAogfTsKIAot
Y2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSB7CitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlEZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkLCBF
bGVtZW50Q2hhbmdlIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFj
ZSB7IFNjcmVlbiwgUGFnZSB9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJl
Y3Rpb24geworICAgIE5leHQgPSAxLAorICAgIFByZXZpb3VzLAorfTsKKworZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHsKKyAgICBBbnlUeXBlID0gMSwKKyAgICBBcnRpY2xlLAor
ICAgIEJsb2NrcXVvdGVTYW1lTGV2ZWwsCisgICAgQmxvY2txdW90ZSwKKyAgICBCb2xkRm9udCwK
KyAgICBCdXR0b24sCisgICAgQ2hlY2tCb3gsCisgICAgQ29udHJvbCwKKyAgICBEaWZmZXJlbnRU
eXBlLAorICAgIEZvbnRDaGFuZ2UsCisgICAgRm9udENvbG9yQ2hhbmdlLAorICAgIEZyYW1lLAor
ICAgIEdyYXBoaWMsCisgICAgSGVhZGluZ0xldmVsMSwKKyAgICBIZWFkaW5nTGV2ZWwyLAorICAg
IEhlYWRpbmdMZXZlbDMsCisgICAgSGVhZGluZ0xldmVsNCwKKyAgICBIZWFkaW5nTGV2ZWw1LAor
ICAgIEhlYWRpbmdMZXZlbDYsCisgICAgSGVhZGluZ1NhbWVMZXZlbCwKKyAgICBIZWFkaW5nLAor
ICAgIEhpZ2hsaWdodGVkLAorICAgIEl0YWxpY0ZvbnQsCisgICAgS2V5Ym9hcmRGb2N1c2FibGUs
CisgICAgTGFuZG1hcmssCisgICAgTGluaywKKyAgICBMaXN0LAorICAgIExpdmVSZWdpb24sCisg
ICAgTWlzc3BlbGxlZFdvcmQsCisgICAgT3V0bGluZSwKKyAgICBQbGFpblRleHQsCisgICAgUmFk
aW9Hcm91cCwKKyAgICBTYW1lVHlwZSwKKyAgICBTdGF0aWNUZXh0LAorICAgIFN0eWxlQ2hhbmdl
LAorICAgIFRhYmxlU2FtZUxldmVsLAorICAgIFRhYmxlLAorICAgIFRleHRGaWVsZCwKKyAgICBV
bmRlcmxpbmUsCisgICAgVW52aXNpdGVkTGluaywKKyAgICBWaXNpdGVkTGluaywKK307CisKK3N0
cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgeworICAgIEFYQ29yZU9iamVjdCogc3Rh
cnRPYmplY3Q7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rp
b247CisgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IHNlYXJjaEtleXM7CisgICAg
U3RyaW5nIHNlYXJjaFRleHQ7CisgICAgdW5zaWduZWQgcmVzdWx0c0xpbWl0OworICAgIGJvb2wg
dmlzaWJsZU9ubHk7CisgICAgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHk7CisKKyAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEoQVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCwgQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hU
ZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5KQorICAgICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQor
ICAgICAgICAsIHNlYXJjaERpcmVjdGlvbihzZWFyY2hEaXJlY3Rpb24pCisgICAgICAgICwgc2Vh
cmNoVGV4dChzZWFyY2hUZXh0KQorICAgICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQp
CisgICAgICAgICwgdmlzaWJsZU9ubHkodmlzaWJsZU9ubHkpCisgICAgICAgICwgaW1tZWRpYXRl
RGVzY2VuZGFudHNPbmx5KGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKKyAgICB7IH0KK307CisK
K2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiB7CisgICAgSW5jbHVkZU9i
amVjdCwKKyAgICBJZ25vcmVPYmplY3QsCisgICAgRGVmYXVsdEJlaGF2aW9yLAorfTsKKworZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIHsgRmFsc2UsIFRydWUsIFBhZ2UsIFN0
ZXAsIExvY2F0aW9uLCBEYXRlLCBUaW1lIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUJ1
dHRvblN0YXRlIHsKKyAgICBPZmYgPSAwLAorICAgIE9uLAorICAgIE1peGVkLAorfTsKKworZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiB7CisgICAgTm9uZSwKKyAgICBBc2Nl
bmRpbmcsCisgICAgRGVzY2VuZGluZywKKyAgICBPdGhlciwKKyAgICBJbnZhbGlkLAorfTsKKwor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSB7CisgICAgQmVnaW4s
IC8vIFNlYXJjaCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVsZW1lbnQuCisgICAgU2VsZWN0
aW9uLCAvLyBTZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9u
LgorICAgIEVuZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorfTsKKwor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiB7CisgICAgRm9yd2Fy
ZCwgLy8gT2NjdXJyZW5jZSBhZnRlciB0aGUgc3RhcnRpbmcgcmFuZ2UuCisgICAgQmFja3dhcmQs
IC8vIE9jY3VycmVuY2UgYmVmb3JlIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBDbG9zZXN0LCAv
LyBDbG9zZXN0IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVy
IG9yIGJlZm9yZS4KKyAgICBBbGwgLy8gQWxsIG9jY3VycmVuY2VzCit9OworCitzdHJ1Y3QgQWNj
ZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSB7CisgICAgVmVjdG9yPFN0cmluZz4gc2VhcmNo
U3RyaW5nczsgLy8gVGV4dCBzdHJpbmdzIHRvIHNlYXJjaCBmb3IuCisgICAgQWNjZXNzaWJpbGl0
eVNlYXJjaFRleHRTdGFydEZyb20gc3RhcnQ7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uOworCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJp
YSgpCisgICAgICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206OlNl
bGVjdGlvbikKKyAgICAgICAgLCBkaXJlY3Rpb24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJl
Y3Rpb246OkZvcndhcmQpCisgICAgeyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlU
ZXh0T3BlcmF0aW9uVHlwZSB7CisgICAgU2VsZWN0LAorICAgIFJlcGxhY2UsCisgICAgQ2FwaXRh
bGl6ZSwKKyAgICBMb3dlcmNhc2UsCisgICAgVXBwZXJjYXNlCit9OworCitzdHJ1Y3QgQWNjZXNz
aWJpbGl0eVRleHRPcGVyYXRpb24geworICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFu
Z2VzOyAvLyB0ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4KKyAgICBBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0
OyAvLyBGb3IgdHlwZSA9IHJlcGxhY2UuCisKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlv
bigpCisgICAgICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVj
dCkKKyAgICB7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsK
KyAgICBWZXJ0aWNhbCwKKyAgICBIb3Jpem9udGFsLAorICAgIFVuZGVmaW5lZCwKK307CisKK3N0
cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgeworICAgIGVudW0gQ2hpbGRy
ZW5JbmNsdXNpb24geworICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hp
bGRyZW4sCisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZUFsbENoaWxkcmVuLAor
ICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRy
ZW4sIC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gQVJJQSBjb25jZXB0OiBuYW1lRnJvbQorICAgIH07
CisKKyAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1c2lvbjsKKyAgICBib29sIGlu
Y2x1ZGVGb2N1c2FibGVDb250ZW50OworICAgIE5vZGUqIGlnbm9yZWRDaGlsZE5vZGU7CisKKyAg
ICBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9
IFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2Us
IE5vZGUqIGlnbm9yZWQgPSBudWxscHRyKQorICAgICAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMp
CisgICAgICAgICwgaW5jbHVkZUZvY3VzYWJsZUNvbnRlbnQoaSkKKyAgICAgICAgLCBpZ25vcmVk
Q2hpbGROb2RlKGlnbm9yZWQpCisgICAgeyB9Cit9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCit0
eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOworI2VuZGlmCisKK3N0cnVjdCBQbGFpblRl
eHRSYW5nZSB7CisgICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CisgICAgdW5zaWduZWQgbGVuZ3Ro
IHsgMCB9OworCisgICAgUGxhaW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBQbGFpblRl
eHRSYW5nZSh1bnNpZ25lZCBzLCB1bnNpZ25lZCBsKQorICAgICAgICA6IHN0YXJ0KHMpCisgICAg
ICAgICwgbGVuZ3RoKGwpCisgICAgeyB9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGFp
blRleHRSYW5nZShOU1JhbmdlKTsKKyNlbmRpZgorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmls
aXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzIHsKKyAgICBGaXJzdCwKKyAgICBMYXN0LAorfTsK
Kworc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnQ7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZDsKKworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
KCkgPSBkZWZhdWx0OworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcywgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQorICAgICAgICA6IHN0YXJ0KHMpCisg
ICAgICAgICwgZW5kKGUpCisgICAgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCisgICAgICAgIDogc3RhcnQoc2VsZWN0aW9u
LnN0YXJ0KCkpCisgICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKKyAgICB7IH0KKworICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVs
bCgpOyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlw
ZSB7IFN1YnNjcmlwdCwgU3VwZXJzY3JpcHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQ
b3N0U3Vic2NyaXB0LCBQb3N0U3VwZXJzY3JpcHQgfTsKKworLy8gVXNlIHRoaXMgc3RydWN0IHRv
IHN0b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNv
IHRoYXQgaW4gYWRkQ2hpbGRyZW4oKQorLy8gd2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBj
aGFpbiBmb3IgZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2Vm
dWwgaW5mb3JtYXRpb24gYWxyZWFkeS4KK3N0cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJv
bVBhcmVudERhdGEgeworICAgIEFYQ29yZU9iamVjdCogcGFyZW50IHsgbnVsbHB0ciB9OworICAg
IGJvb2wgaXNBWEhpZGRlbiB7IGZhbHNlIH07CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hp
bGRPZkFyaWFSb2xlIHsgZmFsc2UgfTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFy
ZW50IHsgZmFsc2UgfTsKKworICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YShBWENvcmVPYmplY3QqIHBhcmVudCA9IG51bGxwdHIpCisgICAgICAgIDogcGFyZW50KHBhcmVu
dCkKKyAgICB7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsg
fQorfTsKKworY2xhc3MgQVhDb3JlT2JqZWN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEFYQ29yZU9iamVjdD4gewogcHVibGljOgotICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QVhDb3JlT2JqZWN0KCkgPSBk
ZWZhdWx0OwogCi0gICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICAvLyBBZnRl
ciBjb25zdHJ1Y3RpbmcgYW4gYWNjZXNzaWJsZSBvYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQor
ICAgIC8vIHVuaXF1ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxs
eSBpbml0KCkgbXVzdAorICAgIC8vIGJlIGNhbGxlZCBsYXN0LgorICAgIHZpcnR1YWwgdm9pZCBz
ZXRPYmplY3RJRChBWElEKSA9IDA7CisgICAgdmlydHVhbCBBWElEIG9iamVjdElEKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBpbml0KCkgPSAwOworCisgICAgLy8gV2hlbiB0aGUgY29y
cmVzcG9uZGluZyBXZWJDb3JlIG9iamVjdCB0aGF0IHRoaXMgYWNjZXNzaWJsZSBvYmplY3QKKyAg
ICAvLyByZXByZXNlbnRzIGlzIGRlbGV0ZWQsIGl0IG11c3QgYmUgZGV0YWNoZWQuCisgICAgdmly
dHVhbCB2b2lkIGRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0Q2Fj
aGUqID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Qg
PSAwOworCisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvcjsKKworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlP
YmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdS
b290KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdFbGVt
ZW50KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcg
KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIGlzTGluaygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1h
cExpbmsoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VC
dXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRh
aW5pbmdQYXNzd29yZEZpZWxkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRD
b250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzQ2hlY2tib3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmFk
aW9CdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlTGlzdEJveCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRp
bWVsaW5lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWVudUJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QnV0
dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlk
ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYWJl
bCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1RhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rh
dGFUYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
RmllbGRzZXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNZW51TGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBv
cHVwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
b2NrT2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbExh
YmVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGV4
dENvbnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRleHRDb250cm9s
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzVGFiSXRlbSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNS
YWRpb0dyb3VwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbWJvQm94KCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1RyZWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzVHJlZUdyaWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVHJlZUl0
ZW0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0J1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNMaXN0SXRlbSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveE9yUmFk
aW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQmxvY2tx
dW90ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01l
dGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwbGl0dGVyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNG
aWd1cmVFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9j
dXNhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzT3V0cHV0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVk
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzSG92ZXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWluYXRl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCA9IDA7CisgICAgLy8gRklY
TUUgc2hvdWxkIG5lZWQganVzdCBvbmUgc2luY2Ugb25zY3JlZW4gc2hvdWxkIGJlICFvZmZzY3Jl
ZW4uCisgICAgdmlydHVhbCBib29sIGlzT25TY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNz
ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzUmVxdWlyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVx
dWlyZWRBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
Q29sbGFwc2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogcGFyZW50T2JqZWN0
SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICAKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZs
b2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKKworICAg
IC8vIEluIGEgbXVsdGktc2VsZWN0IGxpc3QsIG1hbnkgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ1
dCBvbmx5IG9uZSBpcyBhY3RpdmUgYXQgYSB0aW1lLgorICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVj
dGVkT3B0aW9uQWN0aXZlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0JvbGRG
b250KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNv
bnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGhhc1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzU3RhdGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJs
aW5lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRl
VmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1
dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0
ZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGlu
dCBoZWFkaW5nTGV2ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdGFibGVMZXZlbCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBjaGVja2Jv
eE9yUmFkaW9WYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZURlc2Ny
aXB0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVj
dCogc2VsZWN0ZWRMaXN0SXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIGludCBsYXlvdXRDb3VudCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFp
bmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc1Jl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmli
ZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURldGFp
bHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUVy
cm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlh
Rmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlh
TGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYU93
bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNQb3B1cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBwb3B1cFZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNE
YXRhbGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIYXNQb3B1cCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGludmFsaWRTdGF0dXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzUHJlc3NlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNF
eHBhbmRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERp
cmVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FudmFzSGFzRmFsbGJhY2tD
b250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0
cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgbGlua1Jl
bFZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0
cmluZz4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50
U3RhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25v
cmVkIHdoZW4gdGhlcmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCisgICAgdmlydHVhbCBi
b29sIGlnbm9yZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNb2RhbE5vZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXRT
aXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bvc0luU2V0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IHNldFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBpbnQgcG9zSW5TZXQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AK
KyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3Jh
YmJlZChib29sKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklB
RHJvcEVmZmVjdHMoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0
IHRvIHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9
IDA7CisgICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVl
IGRldGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChj
b25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBm
b2N1c2VkVUlFbGVtZW50KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IGZpcnN0Q2hpbGQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGxhc3RD
aGlsZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcHJldmlvdXNTaWJs
aW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9y
ZWQoaW50IGxpbWl0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHByZXZp
b3VzU2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3Jl
T2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSos
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNE
ZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
RGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QgPSAwOworCisgICAgLy8g
VGV4dCBzZWxlY3Rpb24KKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4
dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNz
aWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9i
amVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbGlu
a2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJv
bEZvckxhYmVsRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCog
c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgPSAwOworCisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0
ID0gMDsKKworICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAorICAgIHZpcnR1YWwgdm9pZCBhY2Nl
c3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3QgPSAwOworICAg
IC8vIEEgc2luZ2xlIG1ldGhvZCBmb3IgZ2V0dGluZyBhIGNvbXB1dGVkIGxhYmVsIGZvciBhbiBB
WE9iamVjdC4gSXQgY29uZGVuc2VzIHRoZSBudWFuY2VzIG9mIGFjY2Vzc2liaWxpdHlUZXh0LiBV
c2VkIGJ5IEluc3BlY3Rvci4KKyAgICB2aXJ0dWFsIFN0cmluZyBjb21wdXRlZExhYmVsKCkgPSAw
OworCisgICAgLy8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5hbWUgb24gYW4gQWNjZXNz
aWJsZU9iamVjdC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRv
bVN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9y
SW5jbHVzaW9uKCkgY29uc3QgPSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0IC0gKFRv
IGJlIGRlcHJlY2F0ZWQpLgorICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ldGhv
ZHMgZm9yIGRldGVybWluaW5nIGFjY2Vzc2liaWxpdHkgdGV4dC4KKyAgICB2aXJ0dWFsIGJvb2wg
aXNBUklBU3RhdGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdW
YWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFj
Y2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJF
bGVtZW50TW9kZSgpKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3QgPSAwOworCisg
ICAgLy8gQWJicmV2aWF0aW9ucworICAgIHZpcnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVl
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShW
ZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAg
IC8vIE9ubHkgaWYgaXNDb2xvcldlbGwoKQorICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGlu
dCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWE9iamVjdENh
Y2hlKiBheE9iamVjdENhY2hlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBFbGVtZW50KiBh
bmNob3JFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ByZXNz
QWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3Qo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgSW50UG9pbnQgY2xpY2tQb2ludCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBh
dGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZp
b3JGb3JUZXh0UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBz
ZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNlbGVj
dGlvblN0YXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2VsZWN0aW9uRW5k
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5n
JiBhY3Rpb25WZXJiKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFnZSogcGFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lVmll
dyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogZnJh
bWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOworICAgIC8vIDEtYmFzZWQsIHRvIG1h
dGNoIHRoZSBhcmlhLWxldmVsIHNwZWMuCisgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGlj
YWxMZXZlbCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0
UmFuZ2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRUZXh0KGNv
bnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShjb25zdCBQbGFpblRleHRSYW5nZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBl
cmZvcm1EZWZhdWx0QWN0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3Jl
bWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dENo
YW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkg
PSAwOworICAgIHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGls
ZHJlbihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBWENv
cmVPYmplY3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVj
dCosIHVuc2lnbmVkKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlUm9sZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckNoaWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgPSAwOworCisgICAgdmlydHVh
bCBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURl
c2NlbmRhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFjdGl2ZURl
c2NlbmRhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRD
aGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25z
dCBBWENvcmVPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQW5jZXN0b3JP
Zk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdl
Rm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdl
IHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
blJhbmdlIGxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5l
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b25SYW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdl
IGxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5n
Rm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBi
b3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVm
UHRyPFJhbmdlPikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGxlbmd0aEZvclZpc2libGVQ
b3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2li
bGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5
VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcHJldmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwcmV2
aW91c1dvcmRTdGFydChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNM
aW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgo
aW50KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVP
YmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHBs
YWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGxpbmVCcmVha3MoVmVjdG9y
PGludD4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VG
b3JMaW5lKHVuc2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBk
b0FYUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2ln
bmVkKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2Uo
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGRv
QVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGRv
QVhMaW5lRm9ySW5kZXgodW5zaWduZWQpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1
dGVkUm9sZVN0cmluZygpIGNvbnN0ID0gMDsKKworICAgIC8vIE1TQUEKKyAgICB2aXJ0dWFsIFN0
cmluZyBzdHJpbmdWYWx1ZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZUZv
ck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25Gb3JNU0FB
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9y
TVNBQSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9u
VHlwZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRvIGdldCBh
bGwgaXRzIHJvd3MuCisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0
byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KKyAgICB2
aXJ0dWFsIHZvaWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQg
b25seSBpdHMgY29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBz
LgorICAgIHZpcnR1YWwgdm9pZCBhcmlhVHJlZUl0ZW1Db250ZW50KEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpID0gMDsKKworICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24gZmVhdHVyZXMuCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRy
dWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wg
ZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzQnVzeSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250
ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNSZWFkT25seSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25s
eVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXV0b0NvbXBs
ZXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBj
b25zdCA9IDA7CisKKyAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgorICAgIHZpcnR1YWwg
T3B0aW9uU2V0PFNwZWFrQXM+IHNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIC8v
IE1ha2UgdGhpcyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxpbmcgYXMgbWFueSBuZXN0ZWQgc2Ny
b2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZp
c2libGUoKSBjb25zdCA9IDA7CisgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3Qg
Y2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29v
cmRpbmF0ZXMuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9j
dXMoY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3Qg
dG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3
aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9p
bnQmKSBjb25zdCA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7
IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9OworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxCeVBhZ2Uo
U2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBz
Y3JvbGxQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsQ29u
dGVudHNTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxWaXNpYmxl
Q29udGVudFJlY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZp
c2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpID0gMDsKKworICAgIC8vIEZp
cmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUg
aXNJZ25vcmVkIHZhbHVlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlmSWdub3Jl
ZFZhbHVlQ2hhbmdlZCgpID0gMDsKKworICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0
cnVlIGZvciBpc01hdGhFbGVtZW50KCkuCisgICAgdmlydHVhbCBib29sIGlzTWF0aEVsZW1lbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFVu
ZGVyT3ZlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNYXRoTnVtYmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRv
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc01hdGhUYWJsZVJvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFi
bGVDZWxsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlw
dE9iamVjdFR5cGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3Jp
cHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0g
MDsKKworICAgIC8vIFJvb3QgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCog
bWF0aFJhZGljYW5kT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRo
Um9vdEluZGV4T2JqZWN0KCkgPSAwOworCisgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgor
ICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSA9IDA7CisgICAgdmly
dHVhbCBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgPSAwOworCisgICAgLy8gRnJhY3Rp
b24gY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9i
amVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2Jq
ZWN0KCkgPSAwOworCisgICAgLy8gU3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgPSAwOworICAgIHZpcnR1
YWwgQVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwg
QVhDb3JlT2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSA9IDA7CisKKyAgICAvLyBGZW5j
ZWQgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3QgPSAwOwor
CisgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCisgICAgdHlwZWRlZiBWZWN0b3I8c3Rk
OjpwYWlyPEFYQ29yZU9iamVjdCosIEFYQ29yZU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11
bHRpc2NyaXB0UGFpcnM7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2li
aWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFBv
c3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKworICAg
IC8vIFZpc2liaWxpdHkuCisgICAgdmlydHVhbCBib29sIGlzQVhIaWRkZW4oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzRE9NSGlkZGVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0hpZGRlbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFdy
YXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KSA9IDA7CisK
KyAgICAvLyBhIHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgaWYgYW4g
YXR0YWNobWVudCBpcyBpZ25vcmVkCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJZ25v
cmVBdHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUgb3Bw
b3J0dW5pdHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluY2x1
ZGVkCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxp
dHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgPSAwOworCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICB2aXJ0dWFsIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0
aCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3QgPSAw
OworI2VuZGlmCisKKyAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgdG8g
dXBkYXRlIGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCisgICAgLy8gb3RoZXIgb3BlcmF0aW9u
cyB1cGRhdGUgdHlwZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdT
dG9yZSgpID0gMDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgYm9vbCBwcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKGJvb2wpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwog
I2VuZGlmCiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVy
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSog
YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisjaWYgUExBVEZPUk0o
Q09DT0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZpcnR1YWwgYm9vbCBjYXJldEJy
b3dzaW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93
c2luZ0VuYWJsZWQoYm9vbCkgPSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVj
dCogZm9jdXNhYmxlQW5jZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGVk
aXRhYmxlQW5jZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGhpZ2hlc3RF
ZGl0YWJsZUFuY2VzdG9yKCkgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVT
ZWxmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCop
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDUzMzRkYzc2NmVjNTFmNTY3MWMxMjQ2YzRhZmFhMDk4MzRjYmZkNmMuLjdjMGJlNzQ3MzU1
MGIxZjkyMmFlNmM4NzNmNjU3ZTc0ZjE2MWFjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAt
OTc2LDcgKzk3Niw3IEBAIE9wdGlvblNldDxTcGVha0FzPiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzcGVha0FzUHJvcGVydHkoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHls
ZSgpLnNwZWFrQXMoKTsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdAordm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4o
QVhDb3JlT2JqZWN0KiBwYXJlbnQsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGlua2Vk
VUlFbGVtZW50cykgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50
LT5jaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uKQpAQCAtMTI4MSw3ICsxMjgxLDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0CiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpKSB7CiAgICAgICAgIC8v
IHN0YXRpYyB0ZXh0IGJlbmVhdGggTWVudUl0ZW1zIGFuZCBNZW51QnV0dG9ucyBhcmUganVzdCBy
ZXBvcnRlZCBhbG9uZyB3aXRoIHRoZSBtZW51IGl0ZW0sIHNvIGl0J3MgaWdub3JlZCBvbiBhbiBp
bmRpdmlkdWFsIGxldmVsCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBh
cmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQtPmlz
TWVudUl0ZW0oKSB8fCBwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6Ok1lbnVCdXR0b24pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1
dG8mIHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcik7CkBAIC0x
NDMzLDcgKzE0MzMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJl
ci0+aXNMaXN0TWFya2VyKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50
ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHJldHVybiBwYXJlbnQgJiYgIXBh
cmVudC0+aXNMaXN0SXRlbSgpOwogICAgIH0KIApAQCAtMjM3MCw3ICsyMzcwLDcgQEAgSW50UmVj
dCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJh
Y3Rlck9mZnNldChjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1h
cEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxp
dHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFhcmVhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIzOTMsNyArMjM5Myw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVt
b3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbW90ZSA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0
ZSk7CiAgICAgaWYgKCFyZW1vdGUpCkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVt
ZW50SGl0VGVzdAogICAgIHJldHVybiByZW1vdGUtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBv
aW50KG9mZnNldCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAogewogICAgIGlmIChpc1NWR0ltYWdlKCkpCiAgICAgICAgIHJldHVybiByZW1vdGVTVkdF
bGVtZW50SGl0VGVzdChwb2ludCk7CkBAIC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgYm9vbCBz
aG91bGRVc2VTaGFkb3dIb3N0Rm9ySGl0VGVzdGluZyhOb2RlKiBzaGFkb3dIb3N0KQogICAgIHJl
dHVybiBzaGFkb3dIb3N0ICYmICFzaGFkb3dIb3N0LT5oYXNUYWdOYW1lKHZpZGVvVGFnKTsKIH0K
IAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhD
b3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8
ICFtX3JlbmRlcmVyLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0
NTAsNyArMjQ1MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvCiAgICAgaWYgKCFvYmopCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJl
c3VsdCA9IG9iai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG9iaik7
CisgICAgQVhDb3JlT2JqZWN0KiByZXN1bHQgPSBvYmotPmRvY3VtZW50KCkuYXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShvYmopOwogICAgIHJlc3VsdC0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vz
c2FyeSgpOwogCiAgICAgLy8gQWxsb3cgdGhlIGVsZW1lbnQgdG8gcGVyZm9ybSBhbnkgaGl0LXRl
c3RpbmcgaXQgbWlnaHQgbmVlZCB0byBkbyB0byByZWFjaCBub24tcmVuZGVyIGNoaWxkcmVuLgpA
QCAtMjQ1OCw3ICsyNDU4LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY28KICAgICAKICAgICBp
ZiAocmVzdWx0ICYmIHJlc3VsdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAg
IC8vIElmIHRoaXMgZWxlbWVudCBpcyB0aGUgbGFiZWwgb2YgYSBjb250cm9sLCBhIGhpdCB0ZXN0
IHNob3VsZCByZXR1cm4gdGhlIGNvbnRyb2wuCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvbnRyb2xPYmplY3QgPSByZXN1bHQtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVt
ZW50KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29y
cmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRyb2xP
YmplY3QgJiYgIWNvbnRyb2xPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGNvbnRyb2xPYmplY3Q7CiAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAg
IGlmICghYXJlYU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBt
X2NoaWxkcmVuLmFwcGVuZCgmYXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3QuYXhPYmplY3RJRCgpKTsKKyAgICAg
ICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAg
ICAgfQogfQogCkBAIC0zMzA4LDcgKzMzMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKCkKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdo
ZXJlIHRoZSBsYXN0IHJlbmRlciBzaWJsaW5nIGlzIGxvY2F0ZWQgd2l0aGluIG1fY2hpbGRyZW4u
Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVj
dCogY2hpbGRPYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldChjaGlsZC0+cmVuZGVyZXIoKSk7
CiAgICAgICAgICAgICBpZiAoY2hpbGRPYmplY3QgJiYgY2hpbGRPYmplY3QtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkcmVuID0gY2hpbGRP
YmplY3QtPmNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUoKSkK
QEAgLTM1MjUsNyArMzUyNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2Vs
ZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlCiAgICAgICAgIGFy
aWFTZWxlY3RlZFJvd3MocmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYkxpc3Q6Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBz
ZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQorICAgICAgICBpZiAoQVhDb3JlT2JqZWN0
KiBzZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChzZWxlY3RlZFRhYik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAwYjE5ZGE1MmFiZTZjMWYxNTg3Mjk4
MGIyNzRlNWRkNGFhZTAyYmZjLi4zOTYxNzMwNGNlYTM3MGY0OTdiZjM0YzVmNTE0NzIxMDE3ZGJi
NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBv
YmplY3QgdG8ga2ljayBvZmYgYSBoaXQgdGVzdC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9p
bnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHRl
eHRMZW5ndGgoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdDsKKyAg
ICBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQq
IHdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVu
dFZpZXcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnRMaW5r
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTIzNSwxMSArMjM1LDExIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0OwogICAgIExheW91dFJl
Y3QgY2hlY2tib3hPclJhZGlvUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgYWRkUmFkaW9CdXR0b25H
cm91cE1lbWJlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRz
KSBjb25zdDsKLSAgICB2b2lkIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBY2Nlc3NpYmls
aXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CisgICAgdm9p
ZCBhZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJu
YWxMaW5rRWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2li
aWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBj
b25zdDsKKyAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRN
TEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBj
b25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVP
YmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2Jq
ZWN0JikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25z
dDsKQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoUmVtb3RlU1ZH
Um9vdCgpOwogICAgIGVudW0gQ3JlYXRpb25DaG9pY2UgeyBDcmVhdGUsIFJldHJpZXZlIH07CiAg
ICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0aW9uQ2hv
aWNlIGNyZWF0ZUlmTmVjZXNzYXJ5KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlKiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIEFYQ29yZU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQm
KSBjb25zdDsKICAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChM
YXlvdXRSZWN0JikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmNwcAppbmRleCA1MTc4YjlmYTUzZDU0MjYyYzlmYWE3ODRmZWU0OThj
NzZjNjgyYTNlLi5kMTE2ZWRkZmQ3ZTY5MTBiYTk2MzljZjZjZjViMWJhMjJiZTRkOGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwogICAgIGlmICghd2ViQXJlYSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuaAppbmRleCA2NmZmNTk0N2Q2YTFkZWNlYjBlYjFhMTVmODdiMjRhZDg4YWQwYTNi
Li45YmZhZjE1NWFkYjIzMmE1NjYzZjU4Y2IwOGMxMmMxMzNlMmMzNTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5o
CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Ny
b2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRD
aGlsZHJlbigpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOwot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNU
b1VwZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAg
ICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBiM2ZmMGE5NzUxMDhmMTM4
M2E5NjgyZmUwMmMxNmM2OTA5NWY2N2QzLi5jYzZjYjgxOGU4YjNlMzZjOTE2Y2ZmMDRjMTdhNTBk
MDVkZDllZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTbGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
U2xpZGVyOjphZGRDaGlsZHJlbigpCiAgICAgLy8gQmVmb3JlIGFjdHVhbGx5IGFkZGluZyB0aGUg
dmFsdWUgaW5kaWNhdG9yIHRvIHRoZSBoaWVyYXJjaHksCiAgICAgLy8gYWxsb3cgdGhlIHBsYXRm
b3JtIHRvIG1ha2UgYSBmaW5hbCBkZWNpc2lvbiBhYm91dCBpdC4KICAgICBpZiAodGh1bWIuYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICBjYWNoZS0+cmVtb3ZlKHRodW1iLmF4T2Jq
ZWN0SUQoKSk7CisgICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIub2JqZWN0SUQoKSk7CiAgICAg
ZWxzZQogICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmdGh1bWIpOwogfQpAQCAtMTAwLDcgKzEw
MCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmdldEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1CiAgICAgcmV0dXJuIGlucHV0RWxlbWVudCgp
LT5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTbGlkZXI6
OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAgICAgaWYgKG1fY2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVChtX2NoaWxk
cmVuLnNpemUoKSA9PSAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmgKaW5kZXggNDY5ZDIxNzAxYmVjNTNhZjE5ZDk3YmY0NWUwZWVl
MWJkYzIyNmM0NS4uOTFjNzA5MjVlNmQ5MmY1MzJlYTJhMmZiYzc3MjM5ZGQ3OGEyZGRjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVy
OyB9CiAgICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7
CiAgICAgCiAgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBn
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIAog
ICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgZmxvYXQgdmFs
dWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAppbmRleCBjM2NjMDgy
NmE5M2Y2MmFjYTQ2ZTY2ZjMyNTNiMzNkNzM4YzM2YWVjLi43ZDBhNmE0M2FhNTEwOTE2OWRiZWJh
YTQyNGM2ZGY5NGI3ZjNkYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBB
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKQogCiBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbjo6fkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCkgPSBkZWZhdWx0
OwogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246Omlu
Y3JlbWVudEJ1dHRvbigpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpp
bmNyZW1lbnRCdXR0b24oKQogewogICAgIGlmICghbV9oYXZlQ2hpbGRyZW4pCiAgICAgICAgIGFk
ZENoaWxkcmVuKCk7CkBAIC01NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRCdXR0b24oKQogICAgIHJldHVybiBtX2NoaWxk
cmVuWzBdLmdldCgpOwogfQogICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6ZGVjcmVtZW50QnV0dG9uKCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0
eVNwaW5CdXR0b246OmRlY3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJl
bikKICAgICAgICAgYWRkQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAppbmRleCA2M2Q1ZjM3ZWVlZmFl
ZDNiNjQ5OTdhNjE1MGU2MWRhMTE3NDIyYWRiLi4wMGU5MGEyOTNmNDc5ZTA4OTU3NmQ5Y2E4YTQx
NjMxMjFlNDFiNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCkBAIC0zNyw4ICszNyw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIHNldFNwaW5CdXR0b25FbGVtZW50KFNwaW5CdXR0b25FbGVtZW50KiBzcGlu
QnV0dG9uKSB7IG1fc3BpbkJ1dHRvbkVsZW1lbnQgPSBzcGluQnV0dG9uOyB9CiAgICAgCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogaW5jcmVtZW50QnV0dG9uKCk7Ci0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogZGVjcmVtZW50QnV0dG9uKCk7CisgICAgQVhDb3JlT2JqZWN0KiBpbmNyZW1lbnRC
dXR0b24oKTsKKyAgICBBWENvcmVPYmplY3QqIGRlY3JlbWVudEJ1dHRvbigpOwogCiAgICAgdm9p
ZCBzdGVwKGludCBhbW91bnQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGY1YmY1YjJmNjBmZjg1N2M4YTZk
ZTkyNWEwYmQzMGY3Y2Q4NmZlMDEuLjI3MzFiMDc4ODZhZWY5YmMyNzU2NmI3YjE0ZThlNjRhOGFl
NzAxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6Y29sdW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnNDb3B5ID0gbV9jb2x1bW5zOwog
ICAgIAogICAgIGZvciAoY29uc3QgYXV0byYgY29sdW1uIDogY29sdW1uc0NvcHkpIHsKLSAgICAg
ICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbj4oKmNvbHVtbikuaGVhZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBWENv
cmVPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmNv
bHVtbikuaGVhZGVyT2JqZWN0KCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIp
OwogICAgIH0KIH0KQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5ID0gbV9yb3dzOwogICAgIAogICAgIGZv
ciAoY29uc3QgYXV0byYgcm93IDogcm93c0NvcHkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvdyku
aGVhZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGhlYWRlciA9IGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvdykuaGVhZGVyT2JqZWN0KCkpCiAgICAgICAg
ICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOwogICAgIH0KIH0KQEAgLTYyMiw3ICs2MjIsNyBA
QCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1
bW5BbmRSb3codW5zaWduZWQgY29sdW1uLAogICAgICAgICAvLyBjZWxsIHRvIGRldGVybWluZSB3
aGljaCBpcyB0aGUgcmlnaHQgb25lLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbEluZGV4Q291
bnRlciA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGlsZHJlbi5zaXplKCkpLCBj
b2x1bW4gKyAxKTsgY29sSW5kZXhDb3VudGVyID4gMDsgLS1jb2xJbmRleENvdW50ZXIpIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGNvbEluZGV4ID0gY29sSW5kZXhDb3VudGVyIC0gMTsKLSAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhdLmdl
dCgpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4
XS5nZXQoKTsKICAgICAgICAgICAgIEFTU0VSVChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigq
Y2hpbGQpKTsKICAgICAgICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNo
aWxkKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDliYmFk
MTEyOTZlNWUxYzcwNTkzNzI1YjYyOTg0NmZhOTU2YjQ0MDAuLmRiNTA0MWM5Mzg5NzkyOGZiMWQ3
NDRkNzdkYjVlYTdmNjlhYWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAKIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6cGFyZW50Um93KCkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghaXM8QWNjZXNzaWJp
bGl0eVRhYmxlUm93PigqcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0
dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAppbmRleCAzY2I3ZjE1YTIxNzZlNDQ1ZGZjODYzZDhjYjEyMmYzNmQxMmYyNDZiLi5mZGM2
N2Y4YWMxNTZhNWFkYmJhYTYxMzU3NmI4NjgyYWU2MjcxNWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpl
bGVtZW50UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbHVtblJlY3Q7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKK0FY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQogewog
ICAgIGlmICghbV9wYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgK
aW5kZXggOWZjZGI1Y2YzNmUyNzk2M2FlODIwMGIyNDAwYzM3M2JiNWUzOThjNS4uNTY5N2NjMWM4
MmYyZDhjYTA4YjczZGVjZDc3NjI2OGRmNDQzODYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCkBAIC00MCw5
ICs0MCw5IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbiBmaW5hbCA6IHB1YmxpYyBB
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbigpOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVj
dCgpOwotICAgICAgICAKKworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisKICAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRl
eChpbnQgY29sdW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKaW5kZXggYmI5ZDllMDRjNGRmNDg2YWRiNzU2YzMzYWRlZjFkYTA1NTk5MzI3Zi4uN2I0
OWMyOGJjMGNkNjg0MTQyNmQ2N2RhNTM0ODJjMTMwYzNiNjc2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAt
MTEwLDcgKzExMCw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93
OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCitB
WENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHsKICAg
ICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVSb3coKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xMjAsNyArMTIwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICAvLyBjaGVjayB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcm93IHRv
IHNlZSBpZiBpdCBpcyBhIFRIIGVsZW1lbnQKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxs
ID0gcm93Q2hpbGRyZW5bMF0uZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBjZWxsID0gcm93Q2hp
bGRyZW5bMF0uZ2V0KCk7CiAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2Vs
bCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggOTg4ZTI0NTky
MTNlNzBkNTRmZmVlNGNiYWI2MTIxM2JmMzUzMzEzOS4uNzliZjA1ZmZhZGQxZDg0ODlhMTMzYTM1
MzgwOTdlNGFiZWY5Y2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKTsKIAogICAgIC8vIHJldHJpZXZlcyB0
aGUgInJvdyIgaGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikKLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOworICAgIHZpcnR1YWwg
QVhDb3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlU
YWJsZSogcGFyZW50VGFibGUoKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldFJvd0luZGV4KGlu
dCByb3dJbmRleCkgeyBtX3Jvd0luZGV4ID0gcm93SW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IDY4N2Yx
YWVkZjc4ODE2YWUzMTVhZDg2ZmRmMWU3YzczZjlkMDVlYWIuLmRmNThlZmE3NjUzZjY4MDUzMWM4
Y2U5MzkzOWU3YjA2NjMxNzM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAg
IG9iai0+c2V0V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5v
dGlmaWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0
aW9uKQogewogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5t
bQppbmRleCA0ZGUzOTI0MDJjOTU4NzViNmQ1ZGFjZWNkOTZiMjFhZTA5NTA0NzIyLi43ZTA1YWNm
ZmZjOWFlYTdmZDI0YWY2NDlkOTdhN2Q0OGE2OTJkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0K
QEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaWxlVXBsb2FkQnV0
dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3Np
YmlsaXR5T2JqZWN0KikKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2ht
ZW50UGFyZW50KEFYQ29yZU9iamVjdCopCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGJjY2YzN2U0ZjRiNjJkNDA5MTMxNGRjNzZkYTVhZDdk
ZWRjODYzOTYuLjg3YmZiOWUxOTMwOGRhZTBjYWEwOThkYTY2OWFjOTUyMGVjZTI4MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAg
c3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVk
QW5jZXN0b3IoQWNjZXNzaWJpbGl0eU8KICAgICAgICAgaWYgKFt3cmFwcGVyIGlzQXR0YWNobWVu
dF0gJiYgIVtbd3JhcHBlciBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUlzSWdub3JlZF0p
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwor
ICAgICAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0
VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICAgICAgYnJl
YWs7CiAKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIAogICAgIC8vIFRyeSBhIGZ1enp5IGhpdCB0ZXN0IGZpcnN0IHRv
IGZpbmQgYW4gYWNjZXNzaWJsZSBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UgKmF4T2JqZWN0ID0gbnVsbHB0cjsKKyAgICBBWENvcmVPYmplY3QgKmF4T2JqZWN0ID0g
bnVsbHB0cjsKICAgICB7CiAgICAgICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNh
Y2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwogICAgICAgICBheE9iamVjdCA9IG1fb2Jq
ZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwpAQCAtMTI0MCw3ICsx
MjQwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5n
ICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgCiAgICAgdW5zaWduZWQgY29sdW1uUmFu
Z2VJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW5SYW5nZS5maXJzdCk7CiAgICAg
aWYgKGNvbHVtblJhbmdlSW5kZXggPCBjb2x1bW5IZWFkZXJzLnNpemUoKSkgewotICAgICAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gY29sdW1uSGVhZGVyID0gY29sdW1uSGVhZGVyc1tj
b2x1bW5SYW5nZS5maXJzdF07CisgICAgICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNvbHVtbkhl
YWRlciA9IGNvbHVtbkhlYWRlcnNbY29sdW1uUmFuZ2UuZmlyc3RdOwogICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IGNvbHVtbkhlYWRlci0+d3JhcHBlcigpOwog
ICAgICAgICBpZiAod3JhcHBlcikKICAgICAgICAgICAgIFtoZWFkZXJzIGFkZE9iamVjdDp3cmFw
cGVyXTsKQEAgLTE2NjQsNyArMTY2NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVz
dWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIEFYQXR0
cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkp
OwogICAgIAogICAgIC8vIEFzIGxvbmcgYXMgdGhlcmUncyBhIHBhcmVudCB3cmFwcGVyLCB0aGF0
J3MgdGhlIGNvcnJlY3QgY2hhaW4gdG8gY2xpbWIuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOyAKKyAgICBBWENvcmVP
YmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBp
ZiAocGFyZW50KQogICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAKQEAgLTE4MDAs
NyArMTgwMCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0
cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgLy8gSWYgdGhpcyBzdGF0aWMgdGV4dCBpbnNpZGUgb2YgYSBsaW5rLCBpdCBzaG91bGQgdXNl
IGl0cyBwYXJlbnQncyBsaW5rZWQgZWxlbWVudC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBl
bGVtZW50ID0gbV9vYmplY3Q7CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7
CiAgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Rh
dGljVGV4dCAmJiBtX29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQog
ICAgICAgICBlbGVtZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcAppbmRleCBkOGRiYjlmMmM5N2M4YmNmZGY3ODE1
OTMzYTRhZTE5YmVmZjA3ZGIyLi43OTM5Mjk5NTFkZDJkYzZhNDAxYzQ1ODI2Njg2YWVlMjM5YTcz
YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKQEAgLTk4LDE5ICs5OCwxOSBA
QCB2b2lkIEFYSXNvbGF0ZWRUcmVlTm9kZTo6c2V0VHJlZUlkZW50aWZpZXIoQVhJc29sYXRlZFRy
ZWVJRCB0cmVlSWRlbnRpZmllcikKICAgICAgICAgbV9jYWNoZWRUcmVlID0gdHJlZTsKIH0KIAot
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2Vk
VUlFbGVtZW50KCkgY29uc3QKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1
c2VkVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2VkRWxlbWVudCA9IHRy
ZWUoKS0+Zm9jdXNlZFVJRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZm9jdXNlZEVsZW1lbnQu
Z2V0KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0
SW50ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdu
b3JlZCgpIGNvbnN0CitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2Jq
ZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJlZSgpLT5ub2Rl
Rm9ySUQocGFyZW50KCkpLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
KiBBWElzb2xhdGVkVHJlZU5vZGU6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjphY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFy
ZWxhdGl2ZUZyYW1lKCkuY29udGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKaW5kZXggOTM0ZDYzZjRhOWEyMzFlOWY3MmY4M2U5
YjViZmM0NjBiNDQ3NzcwOS4uYzM1NDZmYmU4Mjc1MmU5OWVmYWE3ZWRkZmE2Mjc2NzZkNTQyYTYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5
T2JqZWN0OwogCi1jbGFzcyBBWElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMgQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNv
bGF0ZWRUcmVlTm9kZT4geworY2xhc3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGlj
IEFYQ29yZU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVl
Tm9kZT4gewogCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4
X3QgewpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlTm9kZShj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRl
RGF0YShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKSBvdmVycmlkZSB7IH0KIAogICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNNZWRpYUNvbnRyb2xMYWJlbCk7IH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6SXNJbWFnZSk7IH0KICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNBY2Nlc3NpYmlsaXR5SWdub3JlZCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlKiBwYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUcmVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWUpOyB9CiAgICAgYm9v
bCBpc1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc1RyZWVJdGVtKTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzU2Nyb2xsYmFyKTsgfQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJp
bmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9CiAgICAgU3Ry
aW5nIGhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJp
bmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGVscFRleHQpOyB9CiAgICAgU3RyaW5n
IHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VGl0bGUpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFY
Q29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdXNp
bmcgQXR0cmlidXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5n
LCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIE9wdGlvbmFsPEZsb2F0UmVjdD4+OwogICAg
IHZvaWQgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCYm
LCBib29sIHNob3VsZFJlbW92ZSA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDJmNzVmOTY1MDhkMDcy
MWM4NDAyMDc3NGIyMjMzMTQ3NjhmNDg2YzYuLmM5YTg5M2JjMzA5OTZkOTlmZTQ1Y2IxYjcyMTll
MzZhYzczYTBmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIEFY
UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAq
b2JqZWN0LCBOCiAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5m
byhvYmplY3QsIG5vdGlmaWNhdGlvbiwgdXNlckluZm8pOwogfQogCi12b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFY
Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRm
b3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tCmluZGV4IDZiOTU1MDIyZWQzY2RmZGU0ZWY5MGMyMWE2ZjUxMDA0MWQwNjRlNjIuLjJjZGJj
NzNhYjg5OGJmYjVjMzJlZWZlYjVjN2RhYmM0NjYyMTlhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5t
bQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21Q
YXJlbnQoKQogICAgICAgICBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQobnVsbHB0cik7CiB9CiAK
LXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJp
ZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KQogewogICAgIGlmICghaXNB
dHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLmgKaW5kZXggZmZlZDg1NWM4NGRkYzhmYzJkOWZkNWU0MWVlYWVkZWIxMDc0NzE3
ZS4uODg1OGJlYTNkMDg3YjFiYjYyNjVkNzg3ZmQ4ODA1OGQ3MTI2MmZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlz
aWJsZVBvc2l0aW9uOwogLSAoQk9PTCl1cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7CiAKIC8vIFRo
aXMgY2FuIGJlIGVpdGhlciBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0IG9yIGFuIEFYSXNvbGF0ZWRU
cmVlTm9kZQotLSAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhCYWNr
aW5nT2JqZWN0OworLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KilheEJhY2tpbmdPYmplY3Q7CiAK
IC8vIFRoZXNlIGFyZSBwcmUtZml4ZWQgd2l0aCBiYXNlIHNvIHRoYXQgQXBwS2l0IGRvZXMgbm90
IGVuZCB1cCBjYWxsaW5nIGludG8gdGhlc2UgZGlyZWN0bHkgKGJ5cGFzc2luZyBzYWZldHkgY2hl
Y2tzKS4KIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBkYWYzNGYxNTBmNTdhMzcyMjE3MTdh
NmUwYTIyYTFhYmJjNWY1ZTY0Li5mYTg5YjZhZDk4MDkzYmRmN2ExODU3Zjk2N2IwNzAxMjlkYTYy
NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC0yNjQs
NyArMjY0LDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGkKICAgICByZXR1cm4gYXJyYXk7CiB9
CiAKLXN0YXRpYyB2b2lkIGFkZENoaWxkVG9BcnJheShBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlJiBjaGlsZCwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBhcnJheSkKK3N0YXRpYyB2b2lk
IGFkZENoaWxkVG9BcnJheShBWENvcmVPYmplY3QmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IGFycmF5KQogewogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICp3cmFw
cGVyID0gY2hpbGQud3JhcHBlcigpOwogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRh
Y2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNo
bWVudCwKQEAgLTMwNiw3ICszMDYsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0
IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZAogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgbV9vYmplY3QgPSBheE9iamVjdDsKLSAgICBfaWRlbnRpZmll
ciA9IG1fb2JqZWN0LT5heE9iamVjdElEKCk7CisgICAgX2lkZW50aWZpZXIgPSBtX29iamVjdC0+
b2JqZWN0SUQoKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzg2LDcgKzM4Niw3IEBAIE5T
QXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkCiAgICAgcmV0dXJuIF9heEJhY2tpbmdPYmplY3QtPnRpdGxl
QXR0cmlidXRlVmFsdWUoKTsKIH0KIAotLSAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZSopYXhCYWNraW5nT2JqZWN0CistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWF4QmFj
a2luZ09iamVjdAogewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAg
ICAgaWYgKF9BWFVJRWxlbWVudFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJlYWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMDE1MGZjYWU3YWZk
MTE1Nzg1NWUwNjZhMzcwNTRjYzU2N2U4YjQ5My4uYzU3MDk0OWM1NjBiNWZhMTFiYzQ0MzAwOTBl
MjI1M2M2OTVjOGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
QEAgLTI2NjcsMTUgKzI2NjcsMTUgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIAogICAgICAgICAvLyBUcmVlIGl0ZW0gKGNoYW5nZWQgdG8gQVhSb3dzKSBj
YW4gb25seSByZXBvcnQgdGhlIHRyZWUgKEFYT3V0bGluZSkgYXMgaXRzIHBhcmVudC4KICAgICAg
ICAgaWYgKF9heEJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgYXV0
byBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9y
ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHBhcmVudC0+aXNUcmVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBwYXJlbnQtPndyYXBwZXIoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpOworICAgICAgICAgICAgICAgIHBhcmVudCA9
IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFy
ZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gX2F4
QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmICghcGFy
ZW50KQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCkBAIC0yODYxLDE0ICsyODYx
LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAKICAg
ICAgICAgLy8gcmFkaW8gZ3JvdXBzIHJldHVybiB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uIGFz
IHRoZSBBWFZhbHVlCiAgICAgICAgIGlmIChtX29iamVjdC0+aXNSYWRpb0dyb3VwKCkpIHsKLSAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJhZGlvQnV0dG9uID0gbV9vYmplY3QtPnNl
bGVjdGVkUmFkaW9CdXR0b24oKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogcmFkaW9CdXR0
b24gPSBtX29iamVjdC0+c2VsZWN0ZWRSYWRpb0J1dHRvbigpOwogICAgICAgICAgICAgaWYgKCFy
YWRpb0J1dHRvbikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0
dXJuIHJhZGlvQnV0dG9uLT53cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGlmIChtX29iamVjdC0+aXNUYWJMaXN0KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CisgICAgICAgICAg
ICBBWENvcmVPYmplY3QqIHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CiAg
ICAgICAgICAgICBpZiAoIXRhYkl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICAgICAgICAgIHJldHVybiB0YWJJdGVtLT53cmFwcGVyKCk7CkBAIC0zMDYzLDcgKzMwNjMsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGNvbHVtbi5jaGlsZHJlbigpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRl
ckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9
IGNvbHVtbi5oZWFkZXJPYmplY3QoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogaGVhZGVy
ID0gY29sdW1uLmhlYWRlck9iamVjdCgpOwogICAgICAgICAgICAgaWYgKCFoZWFkZXIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiBoZWFkZXItPndyYXBw
ZXIoKTsKQEAgLTMxNjgsNyArMzE2OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAg
fSBlbHNlIGlmIChpczxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkpIHsKLSAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdz4oKm1fb2JqZWN0KS5kaXNjbG9zZWRCeVJvdygpOworICAgICAgICAgICAg
QVhDb3JlT2JqZWN0KiByb3cgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCpt
X29iamVjdCkuZGlzY2xvc2VkQnlSb3coKTsKICAgICAgICAgICAgIGlmICghcm93KQogICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgICAgICByZXR1cm4gcm93LT53cmFwcGVyKCk7
CkBAIC0zNTExLDcgKzM1MTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfYXhCYWNraW5nT2JqZWN0LT51cGRh
dGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZSogYXhPYmplY3QgPSBfYXhCYWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQ
b2ludChwb2ludCkpOworICAgIEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBfYXhCYWNraW5nT2Jq
ZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwogICAgIGlmIChheE9i
amVjdCkgewogICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVj
dC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgIHJldHVybiBbYXhPYmpl
Y3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CmluZGV4IDFjZTVjOWE4MDE0ZDEyYmE4NGRmMzQ4YzdmZjQ4ZWYxMmFjNDg5MmMuLmUxZTIzYTc2
YTRkOTQ2ZjllYTI3ZjYyNmEyMmIyY2M3NzhhOTRkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKQEAgLTUzLDcgKzUzLDcgQEAgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0OjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QoSW5zcGVjdG9yQXUK
IHsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2libGl0eU9iamVjdEZv
ck5vZGUoTm9kZSYgbm9kZSkKK3N0YXRpYyBBWENvcmVPYmplY3QqIGFjY2Vzc2libGl0eU9iamVj
dEZvck5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkpCiAgICAgICAgIEFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxp
dHkoKTsKQEAgLTcxLDcgKzcxLDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IElu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUMKICAgICBWZWN0
b3I8UmVmPE5vZGU+PiBub2RlczsKIAogICAgIGZvciAoRWxlbWVudCYgZWxlbWVudCA6IGVsZW1l
bnREZXNjZW5kYW50cyhpczxDb250YWluZXJOb2RlPihjb250YWluZXIpID8gZG93bmNhc3Q8Q29u
dGFpbmVyTm9kZT4oKmNvbnRhaW5lcikgOiBkb2N1bWVudCkpIHsKLSAgICAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShlbGVt
ZW50KSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0
eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChheE9iamVjdC0+Y29t
cHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQo
ZWxlbWVudCk7CiAgICAgICAgIH0KQEAgLTg0LDE3ICs4NCwxNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QWN0aXZlRGVz
Y2VuZGFudAogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShu
b2RlKSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFu
dCA9IGF4T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgaWYgKEFYQ29yZU9iamVjdCog
YXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgICAgIGlm
IChBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQgPSBheE9iamVjdC0+YWN0aXZlRGVzY2Vu
ZGFudCgpKQogICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZURlc2NlbmRhbnQtPm5vZGUoKTsKICAg
ICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgYWRkQ2hpbGRyZW4o
QWNjZXNzaWJpbGl0eU9iamVjdCYgcGFyZW50T2JqZWN0LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYg
Y2hpbGROb2RlcykKK3N0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFYQ29yZU9iamVjdCYgcGFyZW50
T2JqZWN0LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgY2hpbGROb2RlcykKIHsKLSAgICBmb3IgKGNv
bnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgY2hpbGRPYmplY3QgOiBwYXJlbnRPYmpl
Y3QuY2hpbGRyZW4oKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRPYmplY3QgOiBwYXJl
bnRPYmplY3QuY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoTm9kZSogY2hpbGROb2RlID0gY2hp
bGRPYmplY3QtPm5vZGUoKSkKICAgICAgICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9k
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTEwOCw3ICsxMDgsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25h
bDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAg
IGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZv
ck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2li
bGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4g
Y2hpbGROb2RlczsKICAgICAgICAgYWRkQ2hpbGRyZW4oKmF4T2JqZWN0LCBjaGlsZE5vZGVzKTsK
ICAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShjaGlsZE5vZGVzKTsKQEAgLTEyMywxMCArMTIzLDEw
IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6Q29tcHV0ZWRQcm9wZXJ0aWVzPj4gSW5zCiAKICAgICBPcHRpb25hbDxJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4gcmVzdWx0OwogCi0gICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9y
Tm9kZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJs
aXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBDb21wdXRlZFByb3BlcnRpZXMgY29t
cHV0ZWRQcm9wZXJ0aWVzOwogCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGN1cnJlbnQg
PSBheE9iamVjdDsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7CiAg
ICAgICAgIHdoaWxlIChjdXJyZW50ICYmICghY29tcHV0ZWRQcm9wZXJ0aWVzLmJ1c3kgfHwgIWNv
bXB1dGVkUHJvcGVydGllcy5idXN5LnZhbHVlKCkpKSB7CiAgICAgICAgICAgICBjb21wdXRlZFBy
b3BlcnRpZXMuYnVzeSA9IGN1cnJlbnQtPmlzQnVzeSgpOwogICAgICAgICAgICAgY3VycmVudCA9
IGN1cnJlbnQtPnBhcmVudE9iamVjdCgpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIEV4Y2VwdGlvbk9y
PE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0
OwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0g
YWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRy
PE5vZGU+PiBjb250cm9sbGVkTm9kZXM7CiAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBjb250
cm9sbGVkRWxlbWVudHM7CkBAIC0yNjksNyArMjY5LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8
VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmcKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JO
b2RlKG5vZGUpKSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxp
dHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGZs
b3dlZE5vZGVzOwogCiAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gZmxvd2VkRWxlbWVudHM7CkBA
IC0yODksNyArMjg5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldE1vdXNlRXZlbnROb2RlKE4KIHsKICAgICBFUlJPUl9J
Rl9OT19BQ1RJVkVfQVVESVQoKTsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
amVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3Jl
T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAg
ICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0PihheE9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q+KGF4T2JqZWN0KS0+
bW91c2VCdXR0b25MaXN0ZW5lcihNb3VzZUJ1dHRvbkxpc3RlbmVyUmVzdWx0RmlsdGVyOjpJbmNs
dWRlQm9keUVsZW1lbnQpOwogICAgIH0KQEAgLTMwMyw3ICszMDMsNyBAQCBFeGNlcHRpb25PcjxP
cHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsK
IAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9i
amVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFj
Y2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgaWYgKGF4T2JqZWN0LT5z
dXBwb3J0c0FSSUFPd25zKCkpIHsKICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IG93
bmVkTm9kZXM7CiAKQEAgLTMyNSw4ICszMjUsOCBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+
IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0UGFyZW50Tm9kZShOb2RlJgog
ewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewot
ICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQorICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0
ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgICAgICBpZiAoQVhDb3Jl
T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkp
CiAgICAgICAgICAgICByZXR1cm4gcGFyZW50T2JqZWN0LT5ub2RlKCk7CiAgICAgfQogCkBAIC0z
MzksMTIgKzMzOSwxMiBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+
Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgT3B0aW9uYWw8
VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBp
ZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9k
ZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gc2VsZWN0ZWRDaGlsZE5vZGVzOwog
Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBzZWxlY3RlZENoaWxkcmVuOworICAgICAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICBheE9iamVjdC0+c2VsZWN0
ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuKTsKLSAgICAgICAgZm9yIChSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4mIHNlbGVjdGVkQ2hpbGRPYmplY3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7
CisgICAgICAgIGZvciAoYXV0byYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRy
ZW4pIHsKICAgICAgICAgICAgIGlmIChOb2RlKiBzZWxlY3RlZENoaWxkTm9kZSA9IHNlbGVjdGVk
Q2hpbGRPYmplY3QtPm5vZGUoKSkKICAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZXMu
YXBwZW5kKHNlbGVjdGVkQ2hpbGROb2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MDRk
YjUyZDk2ODE2ZDc4OWFjMGIxNjU4YmE5ZjgzNmEwNTk5NzNhLi4zZWFkMTM1YWQzNDRhNWUyYTFk
YzM2ZWZjMDRlNzQ0MTRlNzE3ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXYKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQWNjZXNzaWJpbGl0
eU9iamVjdCYgYXhPYmplY3QsIEpTT046OkFycmF5T2Y8aW50PiYgY2hpbGROb2RlSWRzKQordm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBWENvcmVP
YmplY3QmIGF4T2JqZWN0LCBKU09OOjpBcnJheU9mPGludD4mIGNoaWxkTm9kZUlkcykKIHsKICAg
ICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGF4T2JqZWN0LmNoaWxkcmVuKCk7CiAgICAgaWYgKCFj
aGlsZHJlbi5zaXplKCkpCkBAIC0xODI0LDEzICsxODI0LDEzIEBAIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpCiAgICAgdW5zaWduZWQgbGV2ZWwgPSAwOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUq
IGF4T2JqZWN0Q2FjaGUgPSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkgewotICAg
ICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBheE9iamVjdENhY2hlLT5n
ZXRPckNyZWF0ZShub2RlKSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9
IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUpKSB7CiAKLSAgICAgICAgICAgIGlmIChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURl
c2NlbmRhbnQoKSkKKyAgICAgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRh
bnQgPSBheE9iamVjdC0+YWN0aXZlRGVzY2VuZGFudCgpKQogICAgICAgICAgICAgICAgIGFjdGl2
ZURlc2NlbmRhbnROb2RlID0gYWN0aXZlRGVzY2VuZGFudC0+bm9kZSgpOwogCiAgICAgICAgICAg
ICAvLyBBbiBBWCBvYmplY3QgaXMgImJ1c3kiIGlmIGl0IG9yIGFueSBhbmNlc3RvciBoYXMgYXJp
YS1idXN5PSJ0cnVlIiBzZXQuCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjdXJy
ZW50ID0gYXhPYmplY3Q7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIGN1cnJlbnQgPSBheE9i
amVjdDsKICAgICAgICAgICAgIHdoaWxlICghYnVzeSAmJiBjdXJyZW50KSB7CiAgICAgICAgICAg
ICAgICAgYnVzeSA9IGN1cnJlbnQtPmlzQnVzeSgpOwogICAgICAgICAgICAgICAgIGN1cnJlbnQg
PSBjdXJyZW50LT5wYXJlbnRPYmplY3QoKTsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQorICAgICAgICAgICAgaWYgKEFYQ29yZU9iamVjdCog
cGFyZW50T2JqZWN0ID0gYXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQogICAgICAg
ICAgICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnRPYmplY3QtPm5vZGUoKTsKIAogICAgICAgICAg
ICAgc3VwcG9ydHNQcmVzc2VkID0gYXhPYmplY3QtPnByZXNzZWRJc1ByZXNlbnQoKTsKQEAgLTE5
ODgsNyArMTk4OCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICByb2xl
ID0gYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwogICAgICAgICAgICAgc2VsZWN0ZWQg
PSBheE9iamVjdC0+aXNTZWxlY3RlZCgpOwogCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKKyAgICAg
ICAgICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVk
Q2hpbGRyZW47CiAgICAgICAgICAgICBheE9iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3Rl
ZENoaWxkcmVuKTsKICAgICAgICAgICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLnNpemUoKSkgewog
ICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+
OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuaAppbmRleCBjYjdiZWFhMTNhYzM1NGU5NGY4MDdiNWI4MzY1OTI1MzJj
OTlkNGI1Li5kOTE3ZTUwMjE3OTE0NWM4MDBiNTIwNjhkNWYyNTM1NjZmZmMyMWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
CkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIEpTVmFsdWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKK2NsYXNzIEFYQ29yZU9iamVjdDsKIGNsYXNz
IENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTIy
NSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25z
dCBFbGVtZW50JiwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIo
Y29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJn
ZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGJvb2wgaGFz
QnJlYWtwb2ludCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMo
Tm9kZSopOwotICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBY2Nlc3NpYmls
aXR5T2JqZWN0JiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CisgICAgdm9pZCBwcm9jZXNzQWNjZXNz
aWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwogICAg
IAogICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgTm9kZSog
bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAppbmRleCAyNDRlNWI5NTQ4ZmZlMzlhYTU4Y2MzZWY4MTllNzZiYmNjNTI5Mjc3
Li5iOGVhZWQ5M2Y2YzIwZGFkZWEyNzc2NzU2NDI3OTlkZDc0NmY5MjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcApAQCAtNTYsNyArNTYsNyBAQAogI2luY2x1ZGUgIldlYlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9B
WE9iamVjdENhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTI0OCw3ICsyNDgsNyBA
QCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
KQogICAgIAogICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHko
KTsKIAotICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3QgPSBjb3JlLmRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIFdlYkNvcmU6OkFYQ29y
ZU9iamVjdCogcm9vdCA9IGNvcmUuZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2Jq
ZWN0KCk7CiAgICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTI3MSw3
ICsyNzEsNyBAQCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmKQogCiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNz
aWJpbGl0eSgpOwogCi0gICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNlZE9i
amVjdCA9IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBh
Z2UpOworICAgIFdlYkNvcmU6OkFYQ29yZU9iamVjdCogZm9jdXNlZE9iamVjdCA9IFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpOwogICAgIGlmICgh
Zm9jdXNlZE9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382296</attachid>
            <date>2019-10-30 05:05:30 -0700</date>
            <delta_ts>2019-10-30 05:35:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203408-20191030080529.patch</filename>
            <type>text/plain</type>
            <size>260388</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkOWFkMjljMmQzMzJh
ODMwMTAyYjIxMGRlZTllZmFmNjg3MDE5NC4uODc3ZjhiMmU3OGIwZmM1YWI3ODc3MzJiOTlhODVh
ZTlmZWFjYzQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxNSBAQAorMjAxOS0xMC0zMCAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJh
c2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVl
Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBuZWVkZWQgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBBWENvcmVPYmplY3QgaXMgbm93IGEgY29tbW9uIGJhc2UgY2xhc3Mg
Zm9yIGJvdGggQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQKKyAgICAgICAgQVhJc29sYXRlZFRyZWVO
b2RlLiBBbGwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSBBWENvcmVPYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBhbnkgb2YgdGhlIGRlcml2ZWQgY2xhc3Nlcy4gVGhpcyB3aWxsIGFsbG93IHRvIHNl
YW1sZXNzbHkgc3dpdGNoCisgICAgICAgIGJldHdlZW4gdXNpbmcgQVhJc29sYXRlZFRyZWVOb2Rl
IGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkIGFuZAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGluIHRoZSBtYWluIHRocmVhZCB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbworICAgICAg
ICBhbGxvd3MgZm9yIGNsZWFuZXIgY2xpZW50IGNvZGUsIGVuY2Fwc3VsYXRpbmcgdGhlIGRlY2lz
aW9uIHdoZXRoZXIKKyAgICAgICAgQVhJc29sYXRlZFRyZWVOb2RlIGNhbiByZXNwb25kIHRvIGEg
cmVxdWVzdCBvciBuZWVkIHRvIHJlc29ydCB0byBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LCBhbmQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjb21waWxlCisg
ICAgICAgIHRpbWUgZmxhZyBjaGVja3MgZm9yIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0QVhJRCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0
TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJy
ZWRDYWNoZVVwZGF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmF4Um93U3BhbldpdGhSb3dJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9t
aW5hdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb250YWluc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjpB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjppc051bGwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OlZpc2libGVQb3NpdGlvblJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjppc051bGwgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjppc051bGwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbjo6QWNjZXNzaWJpbGl0
eVRleHRPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0QVhPYmplY3RJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJ
bWFnZUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3
b3JkRmllbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNOYXRpdmVUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzUmFkaW9CdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNOYXRpdmVMaXN0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdEJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3hPcHRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNNZWRpYVRpbWVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUJhciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVCdXR0
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0lucHV0SW1hZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NsaWRlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1NsaWRlclRodW1iIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzSW5wdXRTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250cm9sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGFiZWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFi
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEYXRhVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RhYmxlQ29sdW1uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVDZWxsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRmll
bGRzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNHcm91cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FSSUFUcmVlR3JpZFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUxpc3RQb3B1
cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BpbkJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZVNwaW5CdXR0b24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGlu
QnV0dG9uUGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01vY2tPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZWRpYU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RvZ2dsZUJ1
dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RhYkxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFkaW9Hcm91cCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbWJvQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVHJlZUdy
aWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMaXN0SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDYW52YXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQ
b3BVcEJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0NvbG9yV2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwbGl0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9vbGJhciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N1bW1hcnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXND
aGVja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1NlbGVjdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRm9jdXNlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hvdmVyZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbmRldGVy
bWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTG9hZGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT2ZmU2NyZWVuIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1VudmlzaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Zpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSZXF1aXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlua2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0V4cGFuZGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25B
Y3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzQm9sZEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzSXRhbGljRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQbGFpblRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZUZvbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzU2FtZUZvbnRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNTYW1lU3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdGF0aWNUZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
YW5TZXRGb2N1c0F0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldFZhbHVl
QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5T
ZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmlidXRlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0xldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYmxlTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2YWx1ZUZv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5n
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXlvdXRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojplc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNBUklBT3ducyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBRHJvcHBpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBR3JhYmJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBUklB
R3JhYmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RDaGlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmlvdXNTaWJsaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5leHRTaWJsaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtlZFVJRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGVV
SUVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRy
b2xFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9s
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlSGFzUHJl
c2VudGF0aW9uYWxDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBUklBU3RhdGljVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4
dExlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhTGFiZWxlZEJ5QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
eHBhbmRlZFRleHRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbG9yVmFsdWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXhP
YmplY3RJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBpeGVs
U25hcHBlZEJvdW5kaW5nQm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxl
Y3RlZFRleHRSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25TdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25FbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZWxlY3RlZFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzS2V5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OndpZGdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVkVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRT
ZWxlY3RlZFJvd3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6bWFrZVJhbmdlVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtRGVmYXVsdEFjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmNyZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVjcmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhhdmVD
aGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1
YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bmVlZHNUb1VwZGF0ZUNoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGFiQ2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFu
ZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRzRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0
VmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVha3MgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdl
Rm9yTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWEJvdW5kc0Zv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ1ZhbHVl
Rm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZl
UmVnaW9uUmVsZXZhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1c3kgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlYWtBc1Byb3BlcnR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
TWF0aEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNNYXRoRnJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoRmVuY2VkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhVbmRlck92ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoUm9vdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTcXVh
cmVSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWF0aFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNl
T3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoSWRlbnRpZmllciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhU
YWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01hdGhUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUYWJsZUNlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNN
YXRoVG9rZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhS
YWRpY2FuZE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUm9vdEluZGV4T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJhdG9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGhEZW5vbWluYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoQmFzZU9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vic2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRo
RmVuY2VkT3BlblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aExpbmVUaGlja25lc3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSGlkZGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6Y2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFpblRl
eHRSYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
blJhbmdlOjpWaXNpYmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb25SYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0
dG9uR3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpkZWNyZW1l
bnRCdXR0b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkhlYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdyBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaXN0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAg
ICAgICAgKHJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtHZXRTdGFydEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRFbmRJbmRleCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJ0ZXh0R2V0TGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0Tkxp
bmtzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKToK
KyAgICAgICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24p
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVNlbGVjdGlvblJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAob2Zm
c2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKToKKyAgICAgICAgKHdlYkNvcmVPZmZzZXRUb0F0a09m
ZnNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAg
ICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IpOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVs
ZW1lbnRzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlDb250YWluZXJdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUxpbmtlZEVsZW1lbnRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAg
ICAgKGFkZENoaWxkVG9BcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBheEJhY2tpbmdPYmplY3RdKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vz
c2libGl0eU9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QWN0aXZlRGVz
Y2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENoaWxkTm9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRD
b21wdXRlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpnZXRDb250cm9sbGVkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRGbG93ZWROb2Rlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldE1vdXNl
RXZlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0
eU9iamVjdDo6Z2V0T3duZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRTZWxlY3RlZENoaWxkTm9kZXMp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKwogMjAxOS0xMC0yNiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIE1haW4gaW1wbGVtZW50YXRpb24gZm9yIGxhenkgaW1hZ2UgbG9h
ZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA4NmU2N2NkNGUwOThjMzE5MDk2MDVkYjE2NDliNzgxNjRiMDUxYWU0
Li44MzY3ODVmYzFkNmJkY2NhNDRjYzM2OGZiNmQ2YmQzOTI3ZDhlOTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE5LTEwLTMwICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFw
cGxlLmNvbT4KKworICAgICAgICBDcmVhdGUgYmFzZSBjbGFzcyBjb21tb24gdG8gQWNjZXNzaWJp
bGl0eU9iamVjdCBhbmQgQVhJc29sYXRlZFRyZWVOb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KTogVXNlcyBBWENvcmVPYmplY3QgaW5zdGVhZCBvZiBBY2Nlc3NpYmlsaXR5T2JqZWN0LgorICAg
ICAgICAoV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdCk6IFVzZXMgQVhDb3JlT2JqZWN0IGlu
c3RlYWQgb2YgQWNjZXNzaWJpbGl0eU9iamVjdC4KKwogMjAxOS0xMC0yNiAgQ2hyaXMgTG9yZCAg
PGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgUHV0IE9mZnNjcmVlbkNhbnZhcyBiZWhpbmQg
YSBidWlsZCBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCBhYWU0ZDg2MzhiNTMwMWEwZTAzMTYwYTI4M2UxYjIyODY1NGNlODAxLi45
N2FlZjZhNGI4MzZmNjM4MTNlMDA1YmVjNjc0MmYxYjBiOTExZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBA
QCBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiAgICAgZm9yIChjb25zdCBhdXRvJiBv
YmplY3QgOiBtX29iamVjdHMudmFsdWVzKCkpIHsKICAgICAgICAgZGV0YWNoV3JhcHBlcihvYmpl
Y3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOwog
ICAgICAgICBvYmplY3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hl
RGVzdHJveWVkKTsKLSAgICAgICAgb2JqZWN0LT5zZXRBWE9iamVjdElEKDApOworICAgICAgICBv
YmplY3QtPnNldE9iamVjdElEKDApOwogICAgIH0KIH0KIApAQCAtMzM2LDE1ICszMzYsMTUgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVt
ZW50KEhUTUxBcmVhRWxlbWVudCogYXIKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhS
ZW5kZXJJbWFnZS0+Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbms+KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisK
ICAgICAgICAgaWYgKGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpjaGlsZCku
YXJlYUVsZW1lbnQoKSA9PSBhcmVhRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBjaGlsZC5n
ZXQoKTsKLSAgICB9ICAgIAorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbms+KGNoaWxkLmdldCgpKTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1
c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQorQVhDb3JlT2JqZWN0KiBBWE9i
amVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogewog
ICAgIGlmICghZ0FjY2Vzc2liaWxpdHlFbmFibGVkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTM1NSwxMiArMzU1LDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6
OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgaWYgKGlzPEhU
TUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZm9jdXNlZElt
YWdlTWFwVUlFbGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQp
KTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGZvY3VzZWREb2N1bWVudC0+YXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5v
ZGUqPihmb2N1c2VkRWxlbWVudCkgOiBmb2N1c2VkRG9jdW1lbnQpOworICAgIEFYQ29yZU9iamVj
dCogb2JqID0gZm9jdXNlZERvY3VtZW50LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZv
Y3VzZWRFbGVtZW50ID8gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZvY3VzZWRFbGVtZW50KSA6IGZvY3Vz
ZWREb2N1bWVudCk7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKG9iai0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2ZURlc2NlbmRhbnQo
KSkKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogZGVzY2VuZGFudCA9IG9iai0+YWN0aXZlRGVz
Y2VuZGFudCgpKQogICAgICAgICAgICAgb2JqID0gZGVzY2VuZGFudDsKICAgICB9CiAKQEAgLTU2
MCw4ICs1NjAsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNy
ZWF0ZShXaWRnZXQqIHdpZGdldCkKIAogICAgIGdldEFYSUQobmV3T2JqLmdldCgpKTsKICAgICAK
LSAgICBtX3dpZGdldE9iamVjdE1hcHBpbmcuc2V0KHdpZGdldCwgbmV3T2JqLT5heE9iamVjdElE
KCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCksIG5ld09iaik7ICAg
IAorICAgIG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5zZXQod2lkZ2V0LCBuZXdPYmotPm9iamVjdElE
KCkpOworICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmopOwogICAg
IG5ld09iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsKICAgICBy
ZXR1cm4gbmV3T2JqLmdldCgpOwpAQCAtNjA4LDggKzYwOCw4IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKE5vZGUqIG5vZGUpCiAKICAgICBnZXRBWElE
KG5ld09iai5nZXQoKSk7CiAKLSAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdP
YmotPmF4T2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQo
KSwgbmV3T2JqKTsKKyAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdPYmotPm9i
amVjdElEKCkpOworICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmop
OwogICAgIG5ld09iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsK
ICAgICBuZXdPYmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKTsKQEAgLTYzNiw4ICs2MzYsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAg
ICAgZ2V0QVhJRChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNl
dChyZW5kZXJlciwgbmV3T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3
T2JqLT5heE9iamVjdElEKCksIG5ld09iaik7CisgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNl
dChyZW5kZXJlciwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09i
ai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hX
cmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgbmV3T2JqLT5zZXRMYXN0S25vd25Jc0lnbm9yZWRW
YWx1ZShuZXdPYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSk7CkBAIC03MDksNyArNzA5LDcg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZSkKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgbV9vYmplY3RzLnNldChvYmotPmF4T2JqZWN0SUQoKSwgb2JqKTsgICAgCisgICAgbV9vYmpl
Y3RzLnNldChvYmotPm9iamVjdElEKCksIG9iaik7CiAgICAgb2JqLT5pbml0KCk7CiAgICAgYXR0
YWNoV3JhcHBlcihvYmouZ2V0KCkpOwogICAgIHJldHVybiBvYmouZ2V0KCk7CkBAIC03MjYsNyAr
NzI2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoQVhJRCBheElEKQogCiAgICAgZGV0
YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxl
bWVudERlc3Ryb3llZCk7CiAgICAgb2JqZWN0LT5kZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1l
bnRUeXBlOjpFbGVtZW50RGVzdHJveWVkLCB0aGlzKTsKLSAgICBvYmplY3QtPnNldEFYT2JqZWN0
SUQoMCk7CisgICAgb2JqZWN0LT5zZXRPYmplY3RJRCgwKTsKIAogICAgIG1faWRzSW5Vc2UucmVt
b3ZlKGF4SUQpOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCkBAIC03
OTksNyArNzk5LDcgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUdlbmVyYXRlQVhJRCgp
IGNvbnN0CiBBWElEIEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQogewogICAgIC8vIGNoZWNrIGZvciBhbHJlYWR5LWFzc2lnbmVkIElECi0gICAgQVhJRCBv
YmpJRCA9IG9iai0+YXhPYmplY3RJRCgpOworICAgIEFYSUQgb2JqSUQgPSBvYmotPm9iamVjdElE
KCk7CiAgICAgaWYgKG9iaklEKSB7CiAgICAgICAgIEFTU0VSVChtX2lkc0luVXNlLmNvbnRhaW5z
KG9iaklEKSk7CiAgICAgICAgIHJldHVybiBvYmpJRDsKQEAgLTgwOCw3ICs4MDgsNyBAQCBBWElE
IEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIG9i
aklEID0gcGxhdGZvcm1HZW5lcmF0ZUFYSUQoKTsKIAogICAgIG1faWRzSW5Vc2UuYWRkKG9iaklE
KTsKLSAgICBvYmotPnNldEFYT2JqZWN0SUQob2JqSUQpOworICAgIG9iai0+c2V0T2JqZWN0SUQo
b2JqSUQpOwogICAgIAogICAgIHJldHVybiBvYmpJRDsKIH0KQEAgLTg4MSwxMiArODgxLDEyIEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFJlbmRlck9iamVjdCogbmV3Q2hpCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJl
cikpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmopCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBWENv
cmVPYmplY3QqIG9iaikKIHsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3QuYWRkKG9iaik7CisgICAgbV9kZWZlcnJlZENo
aWxkcmVuQ2hhbmdlZExpc3QuYWRkKG9iaik7CiB9CiAgICAgCiB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKQEAgLTg5OSw4ICs4OTksOCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKICAgICBhdXRvIG5vdGlm
aWNhdGlvbnMgPSBXVEZNb3ZlKG1fbm90aWZpY2F0aW9uc1RvUG9zdCk7CiAgICAgCiAgICAgZm9y
IChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0aW9ucykgewotICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgpOwotICAgICAgICBpZiAoIW9iai0+YXhP
YmplY3RJRCgpKQorICAgICAgICBBWENvcmVPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7
CisgICAgICAgIGlmICghb2JqLT5vYmplY3RJRCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKCFvYmotPmF4T2JqZWN0Q2FjaGUoKSkKQEAgLTk4OCw3ICs5ODgsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oTm9kZSogbm9kZSwgQVhOb3RpZmlj
YXRpb24gbm90aWZpY2F0aW9uLCBQbwogICAgIHBvc3ROb3RpZmljYXRpb24ob2JqZWN0LmdldCgp
LCAmbm9kZS0+ZG9jdW1lbnQoKSwgbm90aWZpY2F0aW9uLCBwb3N0VGFyZ2V0LCBwb3N0VHlwZSk7
CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQVhOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uLCBQb3N0VGFyZ2V0IHBvc3RUYXJnZXQsIFBvc3RUeXBlIHBvc3RUeXBlKQordm9pZCBB
WE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBEb2N1
bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCBw
b3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKIHsKICAgICBzdG9wQ2FjaGluZ0NvbXB1dGVk
T2JqZWN0QXR0cmlidXRlcygpOwogCkBAIC0xOTM2LDcgKzE5MzYsNyBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0
YSYgdGV4dE1hcgogICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKICAgICB9CiAgICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQo
KS0+YXhPYmplY3RJRCgpOworICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9i
amVjdElEKCk7CiAgICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CiAgICAgdGV4dE1h
cmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICB0
ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0
SW5kZXg7CkBAIC0yMjMwLDcgKzIyMzAsNyBAQCBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhP
YmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVgogICAg
IFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNfY2FzdDx2
b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7CiAgICAg
Ci0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+YXhPYmplY3RJRCgpOworICAg
IHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9iamVjdElEKCk7CiAgICAgdGV4dE1h
cmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CiAgICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVl
cFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIHRleHRNYXJrZXJEYXRhLmFmZmlu
aXR5ID0gdmlzaWJsZVBvcy5hZmZpbml0eSgpOwpAQCAtMjI2Miw3ICsyMjYyLDcgQEAgT3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQ
b3NpdGlvbkluVGV4dENvbnQKICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAg
ICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihU
ZXh0TWFya2VyRGF0YSkpOwogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0
KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5v
YmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4dENvbnRyb2w7CiAKICAg
ICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7CkBAIC0yOTA3LDkgKzI5MDcsOSBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICB9
CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZE5vZGVMaXN0LmNsZWFyKCk7CiAKLSAgICBm
b3IgKGF1dG8mIGNoaWxkIDogbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3QpCisgICAgZm9y
IChhdXRvJiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0KQogICAgICAgICBj
aGlsZC0+Y2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExp
c3QuY2xlYXIoKTsKKyAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdC5jbGVhcigpOwog
CiAgICAgZm9yIChhdXRvKiBub2RlIDogbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCkKICAgICAg
ICAgdGV4dENoYW5nZWQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCmluZGV4IGU1MjIwM2JlYjE0MzAxMDQwMzc1NmM0NmMzNzNlOWU3ZGEzMTk5
YmYuLjg4NDk5ZmQxOGMyMDczOWQyZGEzNzBhMDRiYTdiZjQxYmZlM2M4NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xNDgsNyArMTQ4LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmKTsKICAgICB+
QVhPYmplY3RDYWNoZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShj
b25zdCBQYWdlKik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgdGhlIGVu
dGlyZSBkb2N1bWVudC4KICAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBy
b290T2JqZWN0KCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXR0YWNo
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Tm9kZSosIE5vZGUqIG5ld0NoaWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIpOwotICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChBWENvcmVPYmplY3QqKTsKICAgICB2b2lkIGNoZWNrZWRTdGF0ZUNoYW5n
ZWQoTm9kZSopOwogICAgIC8vIENhbGxlZCB3aGVuIGEgbm9kZSBoYXMganVzdCBiZWVuIGF0dGFj
aGVkLCBzbyB3ZSBjYW4gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IHN1YmNsYXNzIG9mIEFj
Y2Vzc2liaWxpdHlPYmplY3QuCiAgICAgdm9pZCB1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNo
ZWQoTm9kZSopOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdE5v
dGlmaWNhdGlvbihSZW5kZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRh
cmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKICAgICB2b2lkIHBv
c3ROb3RpZmljYXRpb24oTm9kZSosIEFYTm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0ID0gVGFyZ2V0
RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwotICAgIHZvaWQgcG9zdE5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgRG9jdW1lbnQqLCBBWE5vdGlmaWNhdGlv
biwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91
c2x5KTsKKyAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiwgRG9jdW1lbnQq
LCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0g
UG9zdEFzeW5jaHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dJbnRl
bnQoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgCiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOworICAgIHZvaWQgcG9z
dFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKICAg
ICB2b2lkIHBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9j
dXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKIAogICAgIHZvaWQgcGxhdGZvcm1QZXJm
b3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogCiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25Q
b3N0VGltZXI7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVj
dD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zVG9Qb3N0OworICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmUHRyPEFYQ29yZU9iamVjdD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmlj
YXRpb25zVG9Qb3N0OwogCiAgICAgVGltZXIgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1l
cjsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHByaXZhdGU6CiAgICAgTGlzdEhhc2hTZXQ8RWxlbWVu
dCo+IG1fZGVmZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PE5v
ZGUqPiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PEVsZW1lbnQq
PiBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0OwotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExp
c3Q7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEFYQ29yZU9iamVjdD4+IG1fZGVmZXJyZWRDaGls
ZHJlbkNoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX2RlZmVycmVkQ2hpbGRy
ZW5DaGFuZ2VkTm9kZUxpc3Q7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgU3RyaW5nPiBtX2RlZmVy
cmVkVGV4dEZvcm1Db250cm9sVmFsdWU7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgUXVhbGlmaWVk
TmFtZT4gbV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBpbmxp
bmUgY29uc3QgRWxlbWVudCogQVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVFbGVtZW50KGNv
bnN0IE5vZGUqKSB7IHJldHVybgogaW5saW5lIE5vZGUqIEFYT2JqZWN0Q2FjaGU6Om1vZGFsTm9k
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6Y2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQoraW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKEFYQ29yZU9iamVjdCopIHsgfQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKE5vZGUqLCBOb2RlKikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2Jq
ZWN0KiwgUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZl
ckZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VJZk5lZWRlZChOb2RlKiwgTm9kZSopIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwCmluZGV4IGQ3MzA5ODhmODk3ZWNmYTQ5YWJiOTBkMzNlNzEyZDYwZWRlODUyOWUuLjAwMGFk
ZDRjM2FhMjI4ZjJlM2Y2MDUxODAxMDIwNTlmYWQxMTIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gQWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVuZGVyZXIpKTsKIH0KIAotYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25l
ZCYgY29sdW1uQ291bnQpCitib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxs
Q2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQogewogICAgIGlmICghY2hpbGQg
fHwgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpjaGlsZCkgJiYgIWlzPEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdz4oKmNoaWxkKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1LDcg
Kzg1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkg
Y29uc3QKICAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFNdWx0
aVNlbGVjdGFibGUsICJmYWxzZSIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6
YWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3dDaGlsZCwgSGFzaFNldDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50
KQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2Jq
ZWN0KiByb3dDaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93
cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQogewogICAgIGlmICghcm93Q2hpbGQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5oCmluZGV4IGI4ZTdiYWY0YTViMmU2NDU5ZWZlYTlkOGIyNjBhYTkyODEy
MDIwYjcuLmY3MmM5MDZhYTBjZTBmNGI3ODE4NWFiMTVlNWY5MTNhOWJjMzMyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
aApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIGlzQXJpYVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIAotICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNv
bHVtbkNvdW50KTsKLSAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25l
ZCYgY29sdW1uQ291bnQpOworICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBWENvcmVPYmplY3Qq
LCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYg
Y29sdW1uQ291bnQpOworICAgIGJvb2wgYWRkVGFibGVDZWxsQ2hpbGQoQVhDb3JlT2JqZWN0Kiwg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNv
bHVtbkNvdW50KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcAppbmRleCBkMDIzZjhjZTU3ZjM1NTQ3YmNhZTE1NTRkNjQwMjQyZTM4OWQyODQ3Li5mODE5
ZTlhZWU5NDZjNWQzNTUwZjczYjI0OWUxMzljOTliNGE0Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gQVJJQSBncmlkY2VsbHMgbWF5
IGhhdmUgbXVsdGlwbGUgbGV2ZWxzIG9mIHVuaWdub3JlZCBhbmNlc3RvcnMgdGhhdCBhcmUgbm90
IHRoZSBwYXJlbnQgdGFibGUsCiAgICAgLy8gaW5jbHVkaW5nIHJvd3MgYW5kIGludGVyYWN0aXZl
IHJvd2dyb3Vwcy4gSW4gYWRkaXRpb24sIHBvb3JseS1mb3JtZWQgZ3JpZHMgbWF5IGNvbnRhaW4g
ZWxlbWVudHMKICAgICAvLyB3aGljaCBwYXNzIHRoZSB0ZXN0cyBmb3IgaW5jbHVzaW9uLgotICAg
IGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVk
KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewor
ICAgIGZvciAoYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewogICAgICAgICBpZiAo
aXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCk7CiAgICAg
fQpAQCAtNjUsNyArNjUsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGw6OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYg
cm93UmFuZ2UpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRP
YmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMDMsNyArMTAzLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhS
b3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4KSBjb24KICAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFuZ2Uuc2Vjb25kKSwgMSk7CiAgICAgfQogCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAg
ICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgCkBAIC0xMzQsNyArMTM0LDcg
QEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0lu
ZGV4KHVuc2lnbmVkIHJvd0luZGV4KSBjb24KIAogdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRD
ZWxsOjpjb2x1bW5JbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1
bW5SYW5nZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9i
amVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmNwcAppbmRleCBmMjk2NDY3Y2E0ZTgxMWJlZDI2MDFjN2NhMzIzMWQ4ODA4YWE1
NDMwLi4zMjgzODA3NjUyOWRkNDVjMTBmYzdkNGE3YWMwOWEwYzdmNWEzZGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAg
YXV0byYgYWxsUm93cyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkucm93
cygpOwogICAgIGludCByb3dDb3VudCA9IGFsbFJvd3Muc2l6ZSgpOwogICAgIGZvciAoaW50IGsg
PSBpbmRleCArIDE7IGsgPCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHJvdyA9IGFsbFJvd3Nba10uZ2V0KCk7CisgICAgICAgIGF1dG8qIHJvdyA9IGFsbFJv
d3Nba10uZ2V0KCk7CiAgICAgICAgIC8vIFN0b3AgYXQgdGhlIGZpcnN0IHJvdyB0aGF0IGRvZXNu
J3QgbWF0Y2ggdGhlIGNvcnJlY3QgbGV2ZWwuCiAgICAgICAgIGlmIChyb3ctPmhpZXJhcmNoaWNh
bExldmVsKCkgIT0gbGV2ZWwgKyAxKQogICAgICAgICAgICAgYnJlYWs7CkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAgfQogfQogICAgIAotQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdygpIGNvbnN0
CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3co
KSBjb25zdAogewogICAgIC8vIFRoZSByb3cgdGhhdCBkaXNjbG9zZXMgdGhpcyBvbmUgaXMgdGhl
IHJvdyBpbiB0aGUgdGFibGUKICAgICAvLyB0aGF0IGlzIGFyaWEtbGV2ZWwgc3VidHJhY3QgMSBm
cm9tIHRoaXMgcm93LgpAQCAtMTAzLDcgKzEwMyw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBmb3IgKGludCBrID0gaW5kZXggLSAxOyBrID49IDA7
IC0taykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBhbGxSb3dzW2tdLmdl
dCgpOworICAgICAgICBhdXRvKiByb3cgPSBhbGxSb3dzW2tdLmdldCgpOwogICAgICAgICBpZiAo
cm93LT5oaWVyYXJjaGljYWxMZXZlbCgpID09IGxldmVsIC0gMSkKICAgICAgICAgICAgIHJldHVy
biByb3c7CiAgICAgfQpAQCAtMTMzLDcgKzEzMyw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dzo6aGVhZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpoZWFkZXJPYmplY3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93SGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKaW5kZXggN2JhNzRmNGRkMjMxNzFm
ZTViNDgyYjZmZTc4MGEyZmY3ODY5ZDg4Ni4uODU0MDY4MzVhZmU3MWVjODRkNTlhNTYxMDQ2MDk1
MDUxOWRiNmU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCkBAIC00MCw5ICs0MCw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3coKTsKICAgICAKICAgICB2b2lkIGRp
c2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogZGlzY2xvc2VkQnlSb3coKSBjb25zdDsKKyAgICBBWENvcmVPYmplY3QqIGRp
c2Nsb3NlZEJ5Um93KCkgY29uc3Q7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVh
ZGVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKSBv
dmVycmlkZTsKICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93KFJlbmRlck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCmluZGV4IGI0NWZjNjAwMjRhNGYzMGFiMDA3NTU2
ZWI1NmIzNDlmMjM0MjJmNTguLjYzNDVmM2NkOGYzODVhMDUwZjljYWM5YjkzNzhhMDg1MzJlNzUx
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxhYmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMYWJlbC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMYWJlbDo6
Y2xlYXJDaGlsZHJlbigpCiAgICAgbV9jb250YWluc09ubHlTdGF0aWNUZXh0RGlydHkgPSBmYWxz
ZTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgaW5kZXgpCit2b2lkIEFjY2Vzc2liaWxpdHlMYWJl
bDo6aW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQogewog
ICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omluc2VydENoaWxkKG9iamVjdCwgaW5kZXgp
OwogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oCmluZGV4IGIxM2Fm
MmQ3ZDkyZGJiNTI4MGY0ZGNjZDgyMTQwMGQ0NjZjMzk0ZTAuLmI2YTQxYjlhZmYwZjg1NmViOWU5
NDg2M2RjN2Y1YmU2ZGQ4MDVjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRy
ZW5JZk5lY2Vzc2FyeSgpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIGZpbmFsOwot
ICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIHVuc2lnbmVkKSBmaW5h
bDsKKyAgICB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkKSBmaW5hbDsK
ICAgICBib29sIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5IDogMTsKICAgICBib29sIG1f
Y29udGFpbnNPbmx5U3RhdGljVGV4dCA6IDE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAppbmRleCAwN2FlZGM5NzE0
Njg0MTBiOTAxYTc4MjJkYWIwNzkyOWVlYTMwNGUwLi45NWY5NzI4NzdkMTY2OGMwMWQ3NGRiZWNj
Yjk1NTYxN2Y0ZWM2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJp
bGl0eU9iamVjdChIVE1MCiAgICAgcmV0dXJuICZsaXN0Qm94T2JqZWN0OwogfQogICAgIAotQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxl
bWVudCBtZXRob2RzIGZvciByZXR1cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CiAg
ICAgLy8gaWdub3JlIG9wdGdyb3VwIGVsZW1lbnRzLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50CiAgICAgCiAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gYm91
bmRpbmdCb3hSZWN0KCk7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9w
dGlvbiA9IG51bGxwdHI7CisgICAgQVhDb3JlT2JqZWN0KiBsaXN0Qm94T3B0aW9uID0gbnVsbHB0
cjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0
ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKm1fcmVuZGVyZXIpLml0ZW1Cb3VuZGluZ0JveFJl
Y3QocGFyZW50UmVjdC5sb2NhdGlvbigpLCBpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAppbmRleCA0N2EzOWNlOTVhNWE2MGRm
OGE5YzZhOGNkNTZjNjE1NGIzMzQxMjUwLi43NGU1OTA4MmUzYzk3ZTA1MzIxMDIxOGE2NWVmM2Fi
NmMyNjgxODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1M
RWxlbWVudCopIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29y
ZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcAppbmRleCA3YWJmZmFlNGZhMTQ5MTIzYjA1ZWMwZDUwMzM0YmI1ZmVkMzIzYjI4
Li5hYWVhZmUwODRjOGU3ZGJiYzllNmQ2MGY1NmE2MzM3YjUyZDFkZGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6OmlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVj
dFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplYwogCiBib29s
IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nl
c3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB0eXBlKSBjb25zdAogewotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAg
IEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYg
KCFwYXJlbnQgfHwgIXBhcmVudC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoUmFkaWNhbmRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKIHsKICAgICBpZiAoIWlz
TWF0aFJvb3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNTAsNyArMjUwLDcgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSYWRp
Y2FuZE9iamVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdldCgpOwogfQogCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9i
amVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUm9v
dEluZGV4T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFJvb3QoKSB8fCBpc01hdGhTcXVhcmVS
b290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjYyLDcgKzI2Miw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUm9vdEluZGV4
T2JqZWN0KCkKICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0
KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0
b3JPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzQsNyArMjc0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmplY3QoKQogICAgIHJldHVybiBj
aGlsZHJlblswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU1hdGhNTEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQogewogICAg
IGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODYs
NyArMjg2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgp
OwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFVuZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhVbmRlck9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhVbmRlck92ZXIoKSB8fCAh
bm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwMSw3ICszMDEsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFVuZGVyT2Jq
ZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCog
QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KCkKIHsKICAgICBpZiAo
IWlzTWF0aFVuZGVyT3ZlcigpIHx8ICFub2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzE4LDcgKzMxOCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9i
amVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFz
ZU9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpICYmICFp
c01hdGhVbmRlck92ZXIoKSAmJiAhaXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMzEsNyArMzMxLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhCYXNlT2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhTdWJzY3JpcHRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhTdWJzY3Jp
cHRTdXBlcnNjcmlwdCgpIHx8ICFub2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MzQ2LDcgKzM0Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50OjptYXRoU3Vic2NyaXB0T2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhTdXBl
cnNjcmlwdE9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
OjptYXRoU3VwZXJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuaAppbmRleCA1ODBiODU5Y2JjMWQwYzY3MzM1ZTJiNTA0OTQyNzY2NGJlZDExNjdhLi44
NzQ3YjA1NGVmNDM5MGFkOTIzZDYwMTdjMjVkMDc2NGY1MDUyYThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5oCkBAIC03NywyMyArNzcsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTWF0aE11bHRpc2Ny
aXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIEdlbmVyaWMgY29tcG9uZW50cy4KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0
aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIFJvb3QgY29tcG9uZW50cy4KLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZTsKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVP
YmplY3QqIG1hdGhSb290SW5kZXhPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIEZyYWN0aW9u
IGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRvck9iamVj
dCgpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5vbWluYXRvck9i
amVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgp
IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhV
bmRlck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3Qo
KSBvdmVycmlkZTsKIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlk
ZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKKyAg
ICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRmVuY2VkIGNvbXBvbmVudHMuCiAgICAgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgKaW5kZXggYzk4NWZkZGQzZGI3NWI4YTg0
YzdlMjU4MzNlMDA5OTU3NjZkNTk0OC4uZjNhZDZkOTZlMzZmODViMzc5ZTVjZjk1Y2U0YjQ1Y2Iz
ZDZmN2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaApAQCAtNjQsNyArNjQsNiBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdmFsdWVE
ZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVsaW5lKFJlbmRlck9iamVjdCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwCmluZGV4IGVmMTM3N2JmNDZjM2IyMjUwZDNjZjZlNmU5ZDM2M2IyZTYyYmI5
MWYuLmEyY2I1MTdhZmI4YmU4NjhlYWVlZTFkMzI4MTI1YzU4NjYyYjZlMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKCkKIAogICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqbGlzdCkuc2V0
UGFyZW50KHRoaXMpOwogICAgIGlmIChsaXN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsK
LSAgICAgICAgY2FjaGUtPnJlbW92ZShsaXN0LT5heE9iamVjdElEKCkpOworICAgICAgICBjYWNo
ZS0+cmVtb3ZlKGxpc3QtPm9iamVjdElEKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IGVlOTYxYjVjZjVjNjEzMjNjMjlkYmJjYmNiMzI4Zjk4
Mjg4YTQ0NGQuLjdiMDJjMjI0OWM2YTM5NDYzMTk4MzQzYTJlNDc4MGU0NGI1MTEyMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC0xMTIsMTAgKzExMiwxMCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQoKQogewogICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NoaWxkcmVu
LnNpemUoKTsgaSA+IDAgOyAtLWkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGQgPSBtX2NoaWxkcmVuW2kgLSAxXS5nZXQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjaGls
ZCA9IG1fY2hpbGRyZW5baSAtIDFdLmdldCgpOwogICAgICAgICBpZiAoY2hpbGQtPmFjdGlvbkVs
ZW1lbnQoKSAmJiAhY2hpbGQtPmFjdGlvbkVsZW1lbnQoKS0+aW5SZW5kZXJlZERvY3VtZW50KCkp
IHsKICAgICAgICAgICAgIGNoaWxkLT5kZXRhY2hGcm9tUGFyZW50KCk7Ci0gICAgICAgICAgICBj
YWNoZS0+cmVtb3ZlKGNoaWxkLT5heE9iamVjdElEKCkpOworICAgICAgICAgICAgY2FjaGUtPnJl
bW92ZShjaGlsZC0+b2JqZWN0SUQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBkYXRlQWN0
aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKICAgICBBU1NFUlRfQVJHKG9wdGlvbkluZGV4LCBv
cHRpb25JbmRleCA8IHN0YXRpY19jYXN0PGludD4obV9jaGlsZHJlbi5zaXplKCkpKTsKIAogICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpOwor
ICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNoaWxkID0gbV9jaGlsZHJlbltvcHRpb25JbmRleF0u
Z2V0KCk7CiAKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQoKSwgZG9jdW1l
bnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFyZ2V0RWxl
bWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwogICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNo
aWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVj
dGVkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmlu
ZGV4IGEyZDMyN2Y4Y2YxNzgwOGNhZjI1YTY4MDVhNDg4ZTg4ZjhkNGU1YmYuLjAzMDRlYzcyNTUw
ZjJhOWI0N2UwYTkxZTlmMTNkNGRmMDA1NmE1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC05MTIs
NyArOTEyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHcm91cCgpIGNvbnN0
CiAgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwIHx8IHJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uVGV4dEdyb3VwOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKIHsKICAgICBpZiAoIWlzUmFkaW9H
cm91cCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkyNSwxNCArOTI1LDE0IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlv
QnV0dG9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCitBWENvcmVPYmplY3Qq
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0oKQogewogICAgIGlmICgh
aXNUYWJMaXN0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRklYTUU6IElz
IHRoaXMgdmFsaWQ/IEFSSUEgdGFiIGl0ZW1zIHN1cHBvcnQgYXJpYS1zZWxlY3RlZDsgbm90IGFy
aWEtY2hlY2tlZC4KICAgICAvLyBGaW5kIHRoZSBjaGlsZCB0YWIgaXRlbSB0aGF0IGlzIHNlbGVj
dGVkIChpZS4gdGhlIGludFZhbHVlID09IDEpLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJzOworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHRhYnM7CiAgICAgdGFiQ2hpbGRyZW4odGFicyk7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4
IGE4NjdjMGNmMGFjOGNkNDA2OTRiODNjNzQ1NDk0Y2JiNmI4NmExNTMuLjM4MGQ5OTdhNTQxNDdl
YzI5ODYyZWNjMTRmZjMwNGJiZTlhZTFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKQEAgLTEwMSw4ICsxMDEs
OCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7Ci0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CisgICAgQVhD
b3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5QnV0dG9u
U3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHVuc2ln
bmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBlOGFh
NjliZWMxNzcwMjcwNjM4NzkzZTczNWNhOTI3YmQ3Yzg5OWM1Li5hMzRhNWYwOTYyNTFmZmYzNzc2
M2FkNDFmZTQ2MDczMDM4ZDQ1MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGV0YWNoZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hB
dEluZGV4KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3QgaW5kZXgpCitib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBWENvcmVPYmplY3Qq
IGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3Qg
aW5kZXgpCiB7CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsKICAg
ICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBub24t
bnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0LgpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFj
Y2Vzc2liaWxpdHlPCiAgICAgfQogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBWENvcmVPYmplY3Qq
IGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQogewogICAg
IGlmICghYXhPYmplY3QgfHwgIWNyaXRlcmlhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NzYsNyArMjc2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlP
YmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIHNpemVfdCBsZW5ndGgg
PSBjcml0ZXJpYS0+c2VhcmNoS2V5cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNo
TWF0Y2hBdEluZGV4KGF4T2JqZWN0LCBjcml0ZXJpYSwgaSkpIHsKLSAgICAgICAgICAgIGlmIChj
cml0ZXJpYS0+dmlzaWJsZU9ubHkgJiYgIWF4T2JqZWN0LT5pc09uc2NyZWVuKCkpCisgICAgICAg
ICAgICBpZiAoY3JpdGVyaWEtPnZpc2libGVPbmx5ICYmICFheE9iamVjdC0+aXNPblNjcmVlbigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0yODQsMTUgKzI4NCwxNSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3Qq
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwg
QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFYQ29yZU9iamVjdCogYXhP
YmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEpCiB7CiAgICAgaWYg
KCFheE9iamVjdCB8fCAhY3JpdGVyaWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICByZXR1cm4gYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQoJmNyaXRl
cmlhLT5zZWFyY2hUZXh0KTsKKyAgICByZXR1cm4gYXhPYmplY3QtPmNvbnRhaW5zVGV4dCgmY3Jp
dGVyaWEtPnNlYXJjaFRleHQpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vz
c2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nKiB0ZXh0KSBjb25zdAorYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojpjb250YWluc1RleHQoU3RyaW5nKiB0ZXh0KSBjb25zdAogewogICAg
IC8vIElmIHRleHQgaXMgbnVsbCBvciBlbXB0eSB3ZSByZXR1cm4gdHJ1ZS4KICAgICByZXR1cm4g
IXRleHQKQEAgLTUyMiw3ICs1MjIsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpi
bG9ja3F1b3RlTGV2ZWwoKSBjb25zdAogICAgIHJldHVybiBsZXZlbDsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkg
Y29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICFv
YmplY3QuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwpAQCAtNjI1LDcgKzYyNSw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGUpIGNvbnN0CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5k
QWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKK3N0YXRp
YyB2b2lkIGFwcGVuZEFjY2Vzc2liaWxpdHlPYmplY3QoQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykK
IHsKICAgICAvLyBGaW5kIHRoZSBuZXh0IGRlc2NlbmRhbnQgb2YgdGhpcyBhdHRhY2htZW50IG9i
amVjdCBzbyBzZWFyY2ggY2FuIGNvbnRpbnVlIHRocm91Z2ggZnJhbWVzLgogICAgIGlmIChvYmpl
Y3QtPmlzQXR0YWNobWVudCgpKSB7CkBAIC02NDQsNyArNjQ0LDcgQEAgc3RhdGljIHZvaWQgYXBw
ZW5kQWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vz
c2liaWxpdHkKICAgICAgICAgcmVzdWx0cy5hcHBlbmQob2JqZWN0KTsKIH0KICAgICAKLXZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGQsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNlcnRDaGls
ZChBWENvcmVPYmplY3QqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWNoaWxk
KQogICAgICAgICByZXR1cm47CkBAIC02ODQsMTIgKzY4NCwxMiBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNpZ25l
ZCBpbmRleAogICAgIGNoaWxkLT5jbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCk7CiB9CiAg
ICAgCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNoaWxkKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBWENvcmVPYmpl
Y3QqIGNoaWxkKQogewogICAgIGluc2VydENoaWxkKGNoaWxkLCBtX2NoaWxkcmVuLnNpemUoKSk7
CiB9CiAgICAgCi1zdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwgQWNjZXNzaWJpbGl0eU9iamVjdCogc3Rh
cnRPYmplY3QsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgcmVzdWx0cykKK3N0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBWENvcmVPYmpl
Y3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFYQ29yZU9iamVjdCogc3RhcnRPYmplY3QsIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykK
IHsKICAgICAvLyBBIHRhYmxlJ3MgY2hpbGRyZW4gaW5jbHVkZXMgZWxlbWVudHMgd2hvc2Ugb3du
IGNoaWxkcmVuIGFyZSBhbHNvIHRoZSB0YWJsZSdzIGNoaWxkcmVuIChkdWUgdG8gdGhlIHdheSB0
aGUgTWFjIGV4cG9zZXMgdGFibGVzKS4KICAgICAvLyBUaGUgcm93cyBmcm9tIHRoZSB0YWJsZSBz
aG91bGQgYmUgcXVlcmllZCwgc2luY2UgdGhvc2UgYXJlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0
aGUgdGFibGUsIGFuZCB0aGV5IGNvbnRhaW4gY29udGVudC4KQEAgLTcwMiw3ICs3MDIsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0LCBib29sIGlzRm9yd2FyZCwgQQogCiAgICAgLy8gSWYgdGhlIHN0YXJ0T2JqZWN0IGlzIGln
bm9yZWQsIHdlIHNob3VsZCB1c2UgYW4gYWNjZXNzaWJsZSBzaWJsaW5nIGFzIGEgc3RhcnQgZWxl
bWVudCBpbnN0ZWFkLgogICAgIGlmIChzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdC0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpICYmIHN0YXJ0T2JqZWN0LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChv
YmplY3QpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHN0
YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRP
YmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2JqZWN0KCk7CiAgICAgICAgIC8vIEdvIHVwIHRo
ZSBwYXJlbnQgY2hhaW4gdG8gZmluZCB0aGUgaGlnaGVzdCBhbmNlc3RvciB0aGF0J3MgYWxzbyBi
ZWluZyBpZ25vcmVkLgogICAgICAgICB3aGlsZSAocGFyZW50T2JqZWN0ICYmIHBhcmVudE9iamVj
dC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50T2Jq
ZWN0ID09IG9iamVjdCkKQEAgLTczNSw3ICs3MzUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGls
ZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwg
QQogfQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG51bWJlciBvZiByZXN1bHRzIGlzIG5vdyA+
PSB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgZGVzaXJlZC4KLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6b2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHRzKQorYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEsIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKIHsKICAgICBpZiAoaXNBY2Nlc3Np
YmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2gob2JqZWN0LCBjcml0ZXJpYSkgJiYgaXNBY2Nlc3NpYmls
aXR5VGV4dFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpKSB7CiAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG9iamVjdCk7CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3Jp
dGUKICAgICAvLyBJdCBkb2VzIHRoaXMgYnkgc3RlcHBpbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBh
bmQgYXQgZWFjaCBsZXZlbCBkb2luZyBhIERGUy4KICAgICAKICAgICAvLyBJZiB0aGVyZSdzIG5v
IHN0YXJ0IG9iamVjdCwgaXQgbWVhbnMgd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZy4KLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFydE9iamVjdCA9IGNyaXRlcmlhLT5zdGFydE9iamVj
dDsKKyAgICBBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0ID0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0
OwogICAgIGlmICghc3RhcnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gdGhpczsKICAg
ICAKQEAgLTc3MSwxNCArNzcxLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZE1h
dGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlCiAgICAgLy8g
VGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUgb3V0ZXIgbG9vcCB3aWxsIGV4YW1pbmUgdGhlIGNo
aWxkcmVuIG9mIHRoZSBzdGFydCBvYmplY3QgZm9yIG1hdGNoZXMuIEhvd2V2ZXIsIHdoZW4KICAg
ICAvLyBpdGVyYXRpbmcgYmFja3dhcmRzLCB0aGUgc3RhcnQgb2JqZWN0IGNoaWxkcmVuIHNob3Vs
ZCBub3QgYmUgY29uc2lkZXJlZCwgc28gdGhlIGxvb3AgaXMgc2tpcHBlZCBhaGVhZC4gV2UgbWFr
ZSBhbgogICAgIC8vIGV4Y2VwdGlvbiB3aGVuIG5vIHN0YXJ0IG9iamVjdCB3YXMgc3BlY2lmaWVk
IGJlY2F1c2Ugd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIHNlYXJj
aCBkaXJlY3Rpb24uCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNPYmplY3QgPSBu
dWxscHRyOworICAgIEFYQ29yZU9iamVjdCogcHJldmlvdXNPYmplY3QgPSBudWxscHRyOwogICAg
IGlmICghaXNGb3J3YXJkICYmIHN0YXJ0T2JqZWN0ICE9IHRoaXMpIHsKICAgICAgICAgcHJldmlv
dXNPYmplY3QgPSBzdGFydE9iamVjdDsKICAgICAgICAgc3RhcnRPYmplY3QgPSBzdGFydE9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZSBvdXRl
ciBsb29wIHN0ZXBzIHVwIHRoZSBwYXJlbnQgY2hhaW4gZWFjaCB0aW1lICh1bmlnbm9yZWQgaXMg
aW1wb3J0YW50IGhlcmUgYmVjYXVzZSBvdGhlcndpc2UgZWxlbWVudHMgd291bGQgYmUgc2VhcmNo
ZWQgdHdpY2UpCi0gICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdG9wU2VhcmNoRWxlbWVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdCAh
PSBzdG9wU2VhcmNoRWxlbWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCkpIHsKKyAgICBmb3IgKGF1dG8qIHN0b3BTZWFyY2hFbGVtZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7IHN0YXJ0T2JqZWN0ICYmIHN0YXJ0T2JqZWN0ICE9IHN0b3BT
ZWFyY2hFbGVtZW50OyBzdGFydE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKSkgewogCiAgICAgICAgIC8vIE9ubHkgYXBwZW5kIHRoZSBjaGlsZHJlbiBhZnRlci9i
ZWZvcmUgdGhlIHByZXZpb3VzIGVsZW1lbnQsIHNvIHRoYXQgdGhlIHNlYXJjaCBkb2VzIG5vdCBj
aGVjayBlbGVtZW50cyB0aGF0IGFyZSAKICAgICAgICAgLy8gYWxyZWFkeSBiZWhpbmQvYWhlYWQg
b2Ygc3RhcnQgZWxlbWVudC4KQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBj
cml0ZQogCiAgICAgICAgIC8vIFRoaXMgbm93IGRvZXMgYSBERlMgYXQgdGhlIGN1cnJlbnQgbGV2
ZWwgb2YgdGhlIHBhcmVudC4KICAgICAgICAgd2hpbGUgKCFzZWFyY2hTdGFjay5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlYXJjaE9iamVjdCA9IHNlYXJj
aFN0YWNrLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogc2VhcmNoT2Jq
ZWN0ID0gc2VhcmNoU3RhY2subGFzdCgpLmdldCgpOwogICAgICAgICAgICAgc2VhcmNoU3RhY2su
cmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAob2JqZWN0TWF0Y2hl
c1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KHNlYXJjaE9iamVjdCwgY3JpdGVyaWEsIHJl
c3VsdHMpKQpAQCAtMjAzMSwxMyArMjAzMSwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5nRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIHsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJPYmplY3QgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
T2JqZWN0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGF4T2JqZWN0ID0gcmVuZGVyT2JqZWN0LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyT2JqZWN0KTsKLSAgICAKKwogICAgIHJldHVybiBjb25z
dF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCpheE9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpIZWFkaW5nOwogICAgIH0pKTsKQEAgLTIzNjAsMTcgKzIzNjAsMTcgQEAgQWNjZXNz
aWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiB9ICAg
IAogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0KSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqIGF4T2JqZWN0
KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5oYXNDaGlsZHJlbigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtheE9iamVjdF0gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gJm9iamVjdCA9PSBh
eE9iamVjdDsKICAgICB9KSAhPSBudWxscHRyOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KGNv
bnN0IEFYQ29yZU9iamVjdCogYXhPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFheE9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc3OCw3ICsyNzc4LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYpIGNvbnN0
CiAgICAgcmV0dXJuIGV4Y2x1ZGVJZk9mZiA/IGxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2
ZVJlZ2lvblN0YXR1c1ZhbHVlKSA6ICFsaXZlUmVnaW9uU3RhdHVzVmFsdWUuaXNFbXB0eSgpOwog
fQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
bGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogeyAKICAgICAvLyBTZW5kIHRoZSBo
aXQgdGVzdCBiYWNrIGludG8gdGhlIHN1Yi1mcmFtZSBpZiBuZWNlc3NhcnkuCiAgICAgaWYgKGlz
QXR0YWNobWVudCgpKSB7CkBAIC0yODA1LDcgKzI4MDUsNyBAQCBBWE9iamVjdENhY2hlKiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1l
bnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzZWRVSUVs
ZW1lbnQoKSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2Vk
VUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAg
IHJldHVybiBwYWdlID8gQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UocGFn
ZSkgOiBudWxscHRyOwpAQCAtMjk2Myw3ICsyOTYzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0V4cGFuZGVkKCkgY29uc3QKICAgICAgICAgfSkpCiAgICAgICAgICAgICByZXR1cm4g
cGFyZW50LT5pc0V4cGFuZGVkKCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOyAg
CiB9CiAKQEAgLTMxMDMsNyArMzEwMyw3IEBAIHN0YXRpYyBpbnQgY29tcHV0ZUJlc3RTY3JvbGxP
ZmZzZXQoaW50IGN1cnJlbnRTY3JvbGxPZmZzZXQsIGludCBzdWJmb2N1c01pbiwgaW50CiAgICAg
cmV0dXJuIChvYmplY3RNaW4gKyBvYmplY3RNYXggLSB2aWV3cG9ydE1pbiAtIHZpZXdwb3J0TWF4
KSAvIDI7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbigpIGNvbnN0
Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25TY3JlZW4oKSBjb25zdAogeyAgIAogICAg
IGJvb2wgaXNPbnNjcmVlbiA9IHRydWU7CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAg
IGF0dHJpYnV0ZUNhY2hlID0gY2FjaGUtPmNvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUoKTsK
ICAgICAKICAgICBpZiAoYXR0cmlidXRlQ2FjaGUpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBpZ25vcmVkID0gYXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQoYXhPYmpl
Y3RJRCgpKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkID0g
YXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQob2JqZWN0SUQoKSk7CiAgICAgICAgIHN3aXRjaCAo
aWdub3JlZCkgewogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Okln
bm9yZU9iamVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzQ5NSw3ICszNDk1LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIAogICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJp
YnV0ZSBjYWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBl
eGlzdHMuCiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdu
b3JlZChheE9iamVjdElEKCksIHJlc3VsdCA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmpl
Y3QpOworICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChvYmplY3RJRCgpLCByZXN1
bHQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0zNjIwLDcgKzM2MjAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
Q29udGFpbmVkQnlQYXNzd29yZEZpZWxkKCkgY29uc3QKICAgICByZXR1cm4gaXM8SFRNTElucHV0
RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQp
LmlzUGFzc3dvcmRGaWVsZCgpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQogewogICAgIGZvciAoY29uc3QgYXV0byYg
Y2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNMaXN0SXRlbSgpICYm
IChjaGlsZC0+aXNTZWxlY3RlZCgpIHx8IGNoaWxkLT5pc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3Vz
ZWRDb250YWluZXIoKSkpCkBAIC0zNzUyLDcgKzM3NTIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0bwogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShvd25lcnMsIGFyaWFf
b3duc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZy
b21QYXJlbnREYXRhRm9yQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQpCit2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhD
b3JlT2JqZWN0KiBjaGlsZCkKIHsKICAgICBpZiAoIWNoaWxkKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CmluZGV4IDNmZjBjMzYwMWI0MTJhMjllODI4ZWJhNjM4MzZjZmQxNjI0OGRjODUuLjM4M2RkZWM4
ZjM4NzAyZGZlNDg5YTA1MWFkNWQzZTg1YjcwMTU3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0zMSwxMyArMzEsOSBA
QAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgotI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCi0jaW5jbHVkZSAiVmlzaWJs
ZVBvc2l0aW9uLmgiCi0jaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTMsOCArNDksNiBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLXR5cGVk
ZWYgc3RydWN0IF9OU1JhbmdlIE5TUmFuZ2U7Ci0KIE9CSkNfQ0xBU1MgTlNBcnJheTsKIE9CSkNf
Q0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOwogT0JKQ19DTEFTUyBOU0RhdGE7CkBAIC02OCwyMCAr
NjIsOSBAQCBPQkpDX0NMQVNTIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QWNjZXNzaWJpbGl0eU9iamVjdDsKLWNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OwotY2xh
c3MgQVhPYmplY3RDYWNoZTsKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIEZy
YW1lVmlldzsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIE5vZGU7Ci1j
bGFzcyBQYWdlOwotY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7Ci1j
bGFzcyBTY3JvbGxWaWV3OwotY2xhc3MgV2lkZ2V0Owotc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2li
bGVPcHRpb25zOwogCiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHsKICAgICBB
bHRlcm5hdGl2ZSwKQEAgLTEyMSw0OTYgKzEwNCwyNzIgQEAgc3RydWN0IEFjY2Vzc2liaWxpdHlU
ZXh0IHsKICAgICB9CiB9OwogCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRN
b2RlIHsKLSAgICBlbnVtIENoaWxkcmVuSW5jbHVzaW9uIHsKLSAgICAgICAgVGV4dFVuZGVyRWxl
bWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLAotICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9k
ZUluY2x1ZGVBbGxDaGlsZHJlbiwKLSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRl
TmFtZUZyb21Db250ZW50c0NoaWxkcmVuLCAvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIEFSSUEgY29u
Y2VwdDogbmFtZUZyb20KLSAgICB9OwotICAgIAotICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxk
cmVuSW5jbHVzaW9uOwotICAgIGJvb2wgaW5jbHVkZUZvY3VzYWJsZUNvbnRlbnQ7Ci0gICAgTm9k
ZSogaWdub3JlZENoaWxkTm9kZTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9IFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcEln
bm9yZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2UsIE5vZGUqIGlnbm9yZWQgPSBudWxscHRyKQot
ICAgICAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMpCi0gICAgICAgICwgaW5jbHVkZUZvY3VzYWJs
ZUNvbnRlbnQoaSkKLSAgICAgICAgLCBpZ25vcmVkQ2hpbGROb2RlKGlnbm9yZWQpCi0gICAgeyB9
Ci19OwotCi0vLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gc3RvcmUgdGhlIGlzSWdub3JlZCBkYXRhIHRo
YXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28gdGhhdCBpbiBhZGRDaGlsZHJlbigpCi0vLyB3
ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNoYWluIGZvciBlYWNoIGVsZW1lbnQgd2hpbGUg
dHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1bCBpbmZvcm1hdGlvbiBhbHJlYWR5Lgotc3Ry
dWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSB7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50IHsgbnVsbHB0ciB9OwotICAgIGJvb2wgaXNBWEhpZGRlbiB7IGZh
bHNlIH07Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIHsgZmFsc2Ug
fTsKLSAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50IHsgZmFsc2UgfTsKLSAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gbnVsbHB0cikKLSAgICAgICAgOiBwYXJlbnQocGFyZW50KQotICAgIHsg
fQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFyZW50OyB9Ci19OwotICAg
IAotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewotICAgIFZlcnRpY2FsLAot
ICAgIEhvcml6b250YWwsCi0gICAgVW5kZWZpbmVkLAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiB7Ci0gICAgSW5jbHVkZU9iamVjdCwKLSAgICBJZ25v
cmVPYmplY3QsCi0gICAgRGVmYXVsdEJlaGF2aW9yLAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlIHsKLSAgICBPZmYgPSAwLAotICAgIE9uLAotICAgIE1peGVk
LAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gewotICAg
IE5vbmUsCi0gICAgQXNjZW5kaW5nLAotICAgIERlc2NlbmRpbmcsCi0gICAgT3RoZXIsCi0gICAg
SW52YWxpZCwKLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiB7
Ci0gICAgTmV4dCA9IDEsCi0gICAgUHJldmlvdXMsCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXkgewotICAgIEFueVR5cGUgPSAxLAotICAgIEFydGljbGUsCi0gICAgQmxv
Y2txdW90ZVNhbWVMZXZlbCwKLSAgICBCbG9ja3F1b3RlLAotICAgIEJvbGRGb250LAotICAgIEJ1
dHRvbiwKLSAgICBDaGVja0JveCwKLSAgICBDb250cm9sLAotICAgIERpZmZlcmVudFR5cGUsCi0g
ICAgRm9udENoYW5nZSwKLSAgICBGb250Q29sb3JDaGFuZ2UsCi0gICAgRnJhbWUsCi0gICAgR3Jh
cGhpYywKLSAgICBIZWFkaW5nTGV2ZWwxLAotICAgIEhlYWRpbmdMZXZlbDIsCi0gICAgSGVhZGlu
Z0xldmVsMywKLSAgICBIZWFkaW5nTGV2ZWw0LAotICAgIEhlYWRpbmdMZXZlbDUsCi0gICAgSGVh
ZGluZ0xldmVsNiwKLSAgICBIZWFkaW5nU2FtZUxldmVsLAotICAgIEhlYWRpbmcsCi0gICAgSGln
aGxpZ2h0ZWQsCi0gICAgSXRhbGljRm9udCwKLSAgICBLZXlib2FyZEZvY3VzYWJsZSwKLSAgICBM
YW5kbWFyaywKLSAgICBMaW5rLAotICAgIExpc3QsCi0gICAgTGl2ZVJlZ2lvbiwKLSAgICBNaXNz
cGVsbGVkV29yZCwKLSAgICBPdXRsaW5lLAotICAgIFBsYWluVGV4dCwKLSAgICBSYWRpb0dyb3Vw
LAotICAgIFNhbWVUeXBlLAotICAgIFN0YXRpY1RleHQsCi0gICAgU3R5bGVDaGFuZ2UsCi0gICAg
VGFibGVTYW1lTGV2ZWwsCi0gICAgVGFibGUsCi0gICAgVGV4dEZpZWxkLAotICAgIFVuZGVybGlu
ZSwKLSAgICBVbnZpc2l0ZWRMaW5rLAotICAgIFZpc2l0ZWRMaW5rLAotfTsKLQotZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzIHsKLSAgICBGaXJzdCwKLSAg
ICBMYXN0LAotfTsKLQotc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7Ci0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3Q7Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247Ci0gICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk+IHNlYXJjaEtleXM7Ci0gICAgU3RyaW5nIHNlYXJjaFRleHQ7Ci0gICAgdW5zaWduZWQg
cmVzdWx0c0xpbWl0OwotICAgIGJvb2wgdmlzaWJsZU9ubHk7Ci0gICAgYm9vbCBpbW1lZGlhdGVE
ZXNjZW5kYW50c09ubHk7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0
aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRleHQsIHVuc2lnbmVkIHJlc3VsdHNM
aW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCi0g
ICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCi0gICAgICAgICwgc2VhcmNoRGlyZWN0
aW9uKHNlYXJjaERpcmVjdGlvbikKLSAgICAgICAgLCBzZWFyY2hUZXh0KHNlYXJjaFRleHQpCi0g
ICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkKLSAgICAgICAgLCB2aXNpYmxlT25s
eSh2aXNpYmxlT25seSkKLSAgICAgICAgLCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkoaW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5KQotICAgIHsgfQotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQg
fTsKLQotc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKLQotICAgIFZpc2libGVQb3NpdGlv
biBzdGFydDsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kOwotCi0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoKSB7fQotCi0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBzLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCi0gICAgICAgIDogc3RhcnQocykKLSAg
ICAgICAgLCBlbmQoZSkKLSAgICB7IH0KLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKLSAgICAgICAgOiBzdGFydChzZWxlY3Rpb24u
c3RhcnQoKSkKLSAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQotICAgIHsgfQotCi0gICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxs
KCk7IH0KLX07Ci0KLXN0cnVjdCBQbGFpblRleHRSYW5nZSB7Ci0gICAgICAgIAotICAgIHVuc2ln
bmVkIHN0YXJ0IHsgMCB9OwotICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKLSAgICAKLSAgICBQ
bGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKLSAgICAKLSAgICBQbGFpblRleHRSYW5nZSh1bnNp
Z25lZCBzLCB1bnNpZ25lZCBsKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAgICAgICwgbGVuZ3Ro
KGwpCi0gICAgeyB9Ci0gICAgCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUGxhaW5UZXh0UmFu
Z2UoTlNSYW5nZSk7Ci0jZW5kaWYKLSAgICAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0U3RhcnRGcm9tIHsKLSAgICBCZWdpbiwgLy8gU2VhcmNoIGZyb20gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZWxlbWVudC4KLSAgICBTZWxlY3Rpb24sIC8vIFNlYXJjaCBmcm9tIHRoZSBw
b3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCi0gICAgRW5kIC8vIFNlYXJjaCBmcm9t
IHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0RGlyZWN0aW9uIHsKLSAgICBGb3J3YXJkLCAvLyBPY2N1cnJlbmNlIGFmdGVyIHRo
ZSBzdGFydGluZyByYW5nZS4KLSAgICBCYWNrd2FyZCwgLy8gT2NjdXJyZW5jZSBiZWZvcmUgdGhl
IHN0YXJ0aW5nIHJhbmdlLgotICAgIENsb3Nlc3QsIC8vIENsb3Nlc3Qgb2NjdXJyZW5jZSB0byB0
aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIgb3IgYmVmb3JlLgotICAgIEFsbCAvLyBB
bGwgb2NjdXJyZW5jZXMKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRl
cmlhIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hTdHJpbmdzOyAvLyBUZXh0IHN0cmluZ3Mg
dG8gc2VhcmNoIGZvci4KLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSBzdGFy
dDsKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247Ci0KLSAg
ICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKCkKLSAgICAgICAgOiBzdGFydChBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2VsZWN0aW9uKQotICAgICAgICAsIGRpcmVj
dGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6Rm9yd2FyZCkKLSAgICB7IH0K
LX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb25UeXBlIHsKLSAgICBT
ZWxlY3QsCi0gICAgUmVwbGFjZSwKLSAgICBDYXBpdGFsaXplLAotICAgIExvd2VyY2FzZSwKLSAg
ICBVcHBlcmNhc2UKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiB7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZXM7IC8vIHRleHQgb24gd2hpY2ggcGVy
Zm9ybSB0aGUgb3BlcmF0aW9uLgotICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB0
eXBlOwotICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7IC8vIEZvciB0eXBlID0gcmVwbGFjZS4K
LQotICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uKCkKLSAgICAgICAgOiB0eXBlKEFjY2Vz
c2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0KQotICAgIHsgfQotfTsKLQotZW51bSBj
bGFzcyBBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3JpcHQsIFN1cGVy
c2NyaXB0IH07Ci1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RU
eXBlIHsgUHJlU3Vic2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlwdCwgUG9zdFN1
cGVyc2NyaXB0IH07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSB7IEZh
bHNlLCBUcnVlLCBQYWdlLCBTdGVwLCBMb2NhdGlvbiwgRGF0ZSwgVGltZSB9OwotZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlIHsgU2NyZWVuLCBQYWdlIH07Ci0KIGJvb2wg
bm9kZUhhc1ByZXNlbnRhdGlvblJvbGUoTm9kZSopOwotICAgIAotY2xhc3MgQWNjZXNzaWJpbGl0
eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3Q+LCBwdWJsaWMg
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgOiBwdWJsaWMgQVhDb3JlT2JqZWN0IHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KCkgPSBkZWZhdWx0OwotICAgIAorCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNz
aWJpbGl0eU9iamVjdCgpOwogCiAgICAgLy8gQWZ0ZXIgY29uc3RydWN0aW5nIGFuIEFjY2Vzc2li
aWxpdHlPYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQogICAgIC8vIHVuaXF1ZSBJRCwgdGhlbiBh
ZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBpbml0KCkgbXVzdAogICAgIC8vIGJl
IGNhbGxlZCBsYXN0LgotICAgIHZvaWQgc2V0QVhPYmplY3RJRChBWElEIGF4T2JqZWN0SUQpIHsg
bV9pZCA9IGF4T2JqZWN0SUQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIHsgfQorICAgIHZv
aWQgc2V0T2JqZWN0SUQoQVhJRCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KKyAgICB2b2lk
IGluaXQoKSBvdmVycmlkZSB7IH0KIAogICAgIC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
Q29yZSBvYmplY3QgdGhhdCB0aGlzIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICAvLyB3cmFwcyBp
cyBkZWxldGVkLCBpdCBtdXN0IGJlIGRldGFjaGVkLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
QWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG51bGxw
dHIpOwotICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Q7CisgICAgdm9pZCBkZXRh
Y2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiA9IG51bGxwdHIp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3I7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNW
R1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlTVkdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQo
U3RyaW5nICopIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQo
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZp
ZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQ2hlY2tib3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRp
b0J1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0J1dHRvbjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzSW1hZ2VNYXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KKyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDb250YWluZWRC
eVBhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXNzd29yZEZpZWxkT3JDb250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsg
fQorICAgIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsgfQorICAgIGJvb2wgaXNSYWRpb0J1
dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpSYWRpb0J1dHRvbjsgfQorICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94
OyB9CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNNZW51KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWVudUJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTGFiZWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzR3JvdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0lucHV0SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc1NsaWRlclRodW1iKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
VGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNEYXRh
VGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJs
ZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxl
Q29sdW1uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFi
bGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRmll
bGRzZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNHcm91
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FSSUFUcmVl
R3JpZFJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0lt
YWdlTWFwTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWVudUxpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRp
dmVTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTW9ja09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01l
bnVMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVu
dUxpc3RQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01lbnVMaXN0T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CisgICAgYm9vbCBpc05hdGl2ZVNwaW5C
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTcGlu
QnV0dG9uUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzTWVkaWFPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0K
LSAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKLSAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdDsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQotICAgIGJvb2wgaXNS
YWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvR3JvdXA7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KKyAgICBib29sIGlz
TWVkaWFPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNTd2l0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVC
dXR0b247IH0KKyAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc05vbk5h
dGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RhYkxpc3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFiTGlzdDsgfQorICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQorICAgIGJvb2wgaXNSYWRp
b0dyb3VwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0KKyAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7
IH0KICAgICBib29sIGlzVHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9Ci0gICAgYm9vbCBpc1RyZWVHcmlkKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9
CisgICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVt
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtOyB9CiAgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KLSAg
ICBib29sIGlzQnV0dG9uKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9Ci0gICAg
Ym9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hlY2tib3goKSB8fCBp
c1JhZGlvQnV0dG9uKCk7IH0KLSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAgYm9v
bCBpc0NhbnZhcygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDYW52YXM7IH0KLSAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KLSAgICBib29s
IGlzQmxvY2txdW90ZSgpIGNvbnN0OwotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0OwotICAg
IGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q29sb3JXZWxsOyB9Ci0gICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0
OwotICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0OwotICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQot
ICAgIGJvb2wgaXNUb29sYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KLSAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNv
bnN0OwotICAgIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0tleWJv
YXJkRm9jdXNhYmxlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQotICAgIGJvb2wg
aXNPdXRwdXQoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSG92ZXJlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgeyB9CisgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQorICAgIGJvb2wg
aXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0NoZWNrYm94KCkg
fHwgaXNSYWRpb0J1dHRvbigpOyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJl
YTsgfQorICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOyB9CisgICAgYm9vbCBpc1BvcFVwQnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlBvcFVwQnV0dG9uOyB9CisgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
Q29sb3JXZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQorICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzU3BsaXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KKyAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFy
OyB9CisgICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2Fy
ZEZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1h
cnk7IH0KKyAgICBib29sIGlzT3V0cHV0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGlz
Q2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWxl
Y3RlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZvY3Vz
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIb3ZlcmVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5kZXRlcm1p
bmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xvYWRl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc011bHRpU2Vs
ZWN0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09m
ZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1By
ZXNzZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNVbnZp
c2l0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUmVxdWly
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNS
ZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0xpbmtlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wp
IG92ZXJyaWRlIHsgfQogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0Jiwg
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGNvbnZl
cnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBt
YW55IGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGlt
ZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzUGxhaW5UZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0Kikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3RhdGljVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdDsKLQotICAgIGJvb2wgc3VwcG9ydHNEYXRl
dGltZUF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0
cmlidXRlVmFsdWUoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5B
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzU2VsZWN0ZWRP
cHRpb25BY3RpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9v
bCBoYXNCb2xkRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBoYXNJdGFsaWNGb250KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFJhbmdlPiBn
ZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BsYWluVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTYW1lRm9u
dChSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGlj
VGV4dDsgfQorICAgIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldE51bWVy
aWNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5T
ZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRl
ZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdDsKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRCeURlZmF1bHQoKSBjb25zdDsKLSAgICAKLSAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7
Ci0gICAgCi0gICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgaW50
IHRhYmxlTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9Ci0g
ICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsg
fQotICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAu
MGY7IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1
cm4gMC4wZjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRp
b0J1dHRvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCk7Ci0gICAgdmlydHVhbCBpbnQgbGF5b3V0
Q291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
dW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGhlYWRp
bmdMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgdGFibGVMZXZl
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5QnV0dG9u
U3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0K
KyAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4w
ZjsgfQorICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwLjBmOyB9CisgICAgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwLjBmOyB9CisgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRU
YWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
c2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOworICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzQVJJQUNvbnRyb2woQWNjZXNzaWJpbGl0eVJvbGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlSb2xlKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigpIGNvbnN0Owot
ICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAg
ICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBo
YXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIHBvcHVwVmFsdWUo
KSBjb25zdDsKLSAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0
c0hhc1BvcHVwKCkgY29uc3Q7Ci0gICAgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3Q7Ci0g
ICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdDsKLSAgICBTdHJpbmcgaW52YWxpZFN0YXR1
cygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Q7Ci0gICAgYm9vbCBz
dXBwb3J0c0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdDsKLSAgICBj
b25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Q7Ci0gICAgY29uc3Qg
QXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBjbGFzc0xpc3QoVmVj
dG9yPFN0cmluZz4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24o
KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNv
bnN0OwotICAgIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRz
Q3VycmVudCgpIGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNv
bnN0OwotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250
YWluZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUxh
YmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFPd25z
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaGFzRGF0YWxpc3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHByZXNzZWRJc1By
ZXNlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFyaWFJc011bHRpbGluZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyBpbnZhbGlkU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBv
cnRzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzQ2hlY2tlZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJl
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c1Jh
bmdlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlm
aWVyQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGlu
a1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0
cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25z
dCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIFRo
aXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiB0
aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KLSAgICBib29sIGlnbm9yZWRGcm9tTW9k
YWxQcmVzZW5jZSgpIGNvbnN0OwotICAgIGJvb2wgaXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNv
bnN0OwotICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25zdDsKLSAgICAKLSAgICBib29sIHN1cHBv
cnRzU2V0U2l6ZSgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0Owot
ICAgIGludCBzZXRTaXplKCkgY29uc3Q7Ci0gICAgaW50IHBvc0luU2V0KCkgY29uc3Q7Ci0gICAg
CisgICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIHN1cHBvcnRzU2V0U2l6
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGludCBzZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHBvc0lu
U2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQVJJQUdyYWJiZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSB7IH0KLSAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0cygpIHsgcmV0dXJuIHsg
fTsgfQotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBR3JhYmJlZCgpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBv
dmVycmlkZSB7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMo
KSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKwogICAgIC8vIENhbGxlZCBvbiB0aGUgcm9vdCBB
WCBvYmplY3QgdG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0
ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
LQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGZvY3VzZWRVSUVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RD
aGlsZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG5leHRTaWJsaW5n
KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdDsKLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3JlZChpbnQgbGltaXQp
IGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSogcGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IH0KLSAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBWENvcmVPYmplY3QqIGZvY3Vz
ZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGZpcnN0Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBu
ZXh0U2libGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3Jl
ZChpbnQgbGltaXQpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENv
cmVPYmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJz
dEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2RlKik7Ci0gICAgdm9pZCBmaW5kTWF0
Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBh
cmVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBmaW5kTWF0Y2hpbmdPYmpl
Y3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0OworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRleHQgc2Vs
ZWN0aW9uCiBwcml2YXRlOgpAQCAtNjE4LDM5NyArMzc3LDM5NSBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsKICAgICBSZWZQdHI8UmFuZ2U+IGZp
bmRUZXh0UmFuZ2UoVmVjdG9yPFN0cmluZz4gY29uc3QmIHNlYXJjaFN0cmluZ3MsIFJlZlB0cjxS
YW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbikgY29u
c3Q7CiBwdWJsaWM6Ci0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFj
Y2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdDsKLSAgICBWZWN0b3I8
U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBj
b25zdCYpOwotCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZhYmxlT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRV
SUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IHsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRy
b2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9s
ZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJv
bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhh
c1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2li
aWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlv
biBjb25zdCYpIG92ZXJyaWRlOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJs
ZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGxp
bmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGUgeyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgQWNjZXNzaWJp
bGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6VW5rbm93bjsgfQorICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBh
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0Ci0g
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4
dD4mKSBjb25zdCB7IH07CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNz
aWJpbGl0eVRleHQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9OwogICAgIC8vIEEgc2luZ2xlIG1ldGhv
ZCBmb3IgZ2V0dGluZyBhIGNvbXB1dGVkIGxhYmVsIGZvciBhbiBBWE9iamVjdC4gSXQgY29uZGVu
c2VzIHRoZSBudWFuY2VzIG9mIGFjY2Vzc2liaWxpdHlUZXh0LiBVc2VkIGJ5IEluc3BlY3Rvci4K
LSAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgpOwotICAgIAorICAgIFN0cmluZyBjb21wdXRlZExh
YmVsKCkgb3ZlcnJpZGU7CisKICAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFt
ZSBvbiBhbiBBY2Nlc3NpYmxlT2JqZWN0LgotICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxl
TmFtZShjb25zdCBBdG9tU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0
ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0OworICAgIHZvaWQgc2V0QWNjZXNzaWJsZU5h
bWUoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaGFzQXR0cmlidXRl
c1JlcXVpcmVkRm9ySW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBY2Nlc3Np
YmlsaXR5IFRleHQgLSAoVG8gYmUgZGVwcmVjYXRlZCkuCi0gICAgdmlydHVhbCBTdHJpbmcgYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmly
dHVhbCBTdHJpbmcgaGVscFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0
cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0
cmluZygpOyB9CisgICAgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KIAogICAgIC8vIE1ldGhvZHMgZm9yIGRldGVybWluaW5nIGFjY2Vzc2liaWxp
dHkgdGV4dC4KLSAgICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBhcmlh
Um9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRl
ckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3Jp
YmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIGNvbnN0IFN0
cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURl
cml2ZXNGcm9tQ29udGVudCgpIGNvbnN0OwotICAgIAorICAgIGJvb2wgaXNBUklBU3RhdGljVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7IH0KKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0cmluZyB0ZXh0VW5kZXJFbGVt
ZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0
VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIFN0cmluZyB0ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAg
ICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBTdHJp
bmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFs
dWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21D
b250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBYmJyZXZpYXRpb25zCi0gICAgdmly
dHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0
b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFN0cmluZyBl
eHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVt
ZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBP
bmx5IGlmIGlzQ29sb3JXZWxsKCkKLSAgICB2aXJ0dWFsIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIs
IGludCYgZywgaW50JiBiKSBjb25zdCB7IHIgPSAwOyBnID0gMDsgYiA9IDA7IH0KKyAgICB2b2lk
IGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3Qgb3ZlcnJpZGUgeyByID0g
MDsgZyA9IDA7IGIgPSAwOyB9CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvbGU7IH0KIAotICAgIHZpcnR1YWwgQVhPYmplY3RD
YWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0OwotICAgIEFYSUQgYXhPYmplY3RJRCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KLSAgICAKKyAgICBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faWQ7IH0KKwogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhbmNob3JF
bGVtZW50Rm9yTm9kZShOb2RlKik7CiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhl
YWRpbmdFbGVtZW50Rm9yTm9kZShOb2RlKik7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIGJvb2wgc3VwcG9ydHNQcmVz
c0FjdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdC
b3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBzbmFwcGVkSW50UmVjdChi
b3VuZGluZ0JveFJlY3QoKSk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3Qo
KSBjb25zdCA9IDA7Ci0gICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVu
dFJlY3QoKS5zaXplKCk7IH0KLSAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKTsKKyAg
ICBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIGJvb2wgc3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAg
IEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94
UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94
UmVjdCgpKTsgfQorICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSA9
IDA7CisgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZWxlbWVu
dFJlY3QoKS5zaXplKCk7IH0KKyAgICBJbnRQb2ludCBjbGlja1BvaW50KCkgb3ZlcnJpZGU7CiAg
ICAgc3RhdGljIEludFJlY3QgYm91bmRpbmdCb3hGb3JRdWFkcyhSZW5kZXJPYmplY3QqLCBjb25z
dCBWZWN0b3I8RmxvYXRRdWFkPiYpOwotICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIFBhdGgoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BhdGgoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRl
eHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQbGFp
blRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFBsYWluVGV4dFJh
bmdlKCk7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHNl
bGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBj
b25zdCB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgpLmxlbmd0aDsgfQotICAgIAotICAgIHZp
cnR1YWwgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIFVSTCgpOyB9Ci0gICAgdmlydHVhbCBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24o
KTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25z
dCB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUGFnZSogcGFnZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBGcmFtZVZpZXcqIGRv
Y3VtZW50RnJhbWVWaWV3KCkgY29uc3Q7Ci0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7Ci0gICAg
RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0OwotICAgIERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNv
bnN0OwotICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3RvcigpIGNvbnN0OwotICAgIFN0
cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQYXRoKCk7IH0KKyAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0
SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWlu
VGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxh
aW5UZXh0UmFuZ2UoKTsgfQorICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsgfQorICAgIHVuc2lnbmVk
IHNlbGVjdGlvbkVuZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdl
KCkubGVuZ3RoOyB9CisKKyAgICBVUkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJM
KCk7IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQorICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcm
IGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXaWRnZXQqIHdp
ZGdldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBXaWRnZXQqIHdp
ZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiB0b3BEb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3Rv
cigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNwZWMuCi0gICAgdmly
dHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNlZChib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSB7IH0KLSAgICBib29sIHJlcGxhY2VUZXh0
SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpOwotICAgIGJvb2wg
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShm
bG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
eyB9Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKTsKLSAgICBib29sIHBlcmZv
cm1EZWZhdWx0QWN0aW9uKCkgeyByZXR1cm4gcHJlc3MoKTsgfQotICAgIAotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGluY3JlbWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSB7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dENoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0
eVJvbGUoKSB7IH0KLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpOwotICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZHJlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmls
aXR5T2JqZWN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqLCB1bnNpZ25lZCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29s
IGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsgfQorICAgIHVu
c2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQor
CisgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2Vs
ZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0
ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgcmVwbGFjZVRl
eHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGU7
CisgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgcHJlc3MoKSBvdmVy
cmlkZTsKKyAgICBib29sIHBlcmZvcm1EZWZhdWx0QWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4g
cHJlc3MoKTsgfQorCisgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHRleHRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlIHsgfQorICAgIGNvbnN0IEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklm
TmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faGF2ZUNoaWxkcmVuOyB9CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlU3VidHJlZSgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCBib29sIG5lZWRzVG9V
cGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldE5lZWRzVG9VcGRh
dGVTdWJ0cmVlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hGcm9tUGFyZW50KCk7CisgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGU7CiAj
ZWxzZQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyB9CisgICAgdm9pZCBk
ZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGJvb2wg
aXNEZXRhY2hlZEZyb21QYXJlbnQoKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBi
b29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9jdXNB
Y3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSB7IH0KLSAg
ICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqKSBj
b25zdDsKLSAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KikgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9j
a0NoaWxkKCkgY29uc3Q7CisgICAgYm9vbCBpc0RldGFjaGVkRnJvbVBhcmVudCgpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNlbGVjdGVkQ2hpbGRy
ZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB2
aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVy
cmlkZSB7IH0KKyAgICBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZl
RGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lk
IGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBo
YW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0Rlc2Nl
bmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
Um9sZSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgYm9vbCBo
YXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgCi0gICAgUmVmUHRyPFJhbmdlPiBlbGVt
ZW50UmFuZ2UoKSBjb25zdDsKKyAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1RhZ05h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugdmlz
aWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisKKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0YXRpYyBib29sIHJlcGxhY2VkTm9kZU5lZWRz
Q2hhcmFjdGVyKE5vZGUqIHJlcGxhY2VkTm9kZSk7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVm
dExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsK
LSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBz
ZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
Y29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Q7CisKKyAgICBW
aXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0
aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mTGVmdFdvcmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgcG9zaXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsZWZ0TGluZVZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHNlbnRlbmNlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2Ugc3R5bGVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9y
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRS
YW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGlj
IFN0cmluZyBzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYpOwotICAgIFN0cmluZyBzdHJpbmdGb3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25z
dDsKLSAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAg
ICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikgY29u
c3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKSBjb25zdCB7IH0KLQotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JC
b3VuZHMpIGNvbnN0OwotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MubmV4dCgp
OyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3QgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2
aW91cygpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
U2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAg
IFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3Rh
cnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxh
c3RJbmRleE9LICovKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIAot
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCkg
Y29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICB2aXJ0dWFsIGludCBpbmRl
eEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCB7IHJldHVy
biAwOyB9Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9y
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgaW50IGxpbmVGb3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBQbGFpblRleHRSYW5n
ZSBwbGFpblRleHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBsaW5lQnJl
YWtzKFZlY3RvcjxpbnQ+JikgY29uc3QgeyB9Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBk
b0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgp
OyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4
KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9Ci0gICAgUGxhaW5U
ZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB2
aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBkb0FYQm91bmRz
Rm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7
IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0K
KyAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSW50UmVjdCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAg
IEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBv
c2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5uZXh0KCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gcHJl
dmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlUG9zLnByZXZpb3VzKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFN0YXJ0KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0TGlu
ZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVu
Y2VFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQ
YXJhZ3JhcGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICov
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorCisgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBpbnQgaW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQorCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBsaW5l
Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBpbmRleChj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAtMTsgfQorCisg
ICAgdm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAg
UGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQorICAgIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5n
ZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhaW5U
ZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5n
ZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZTsKKworICAgIFN0cmluZyBkb0FYU3Ry
aW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQorICAgIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgSW50
UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQogICAgIHN0YXRp
YyBTdHJpbmcgbGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oTm9kZSosIGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwogCi0gICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25l
ZCk7CisgICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGU7CiAK
LSAgICBTdHJpbmcgY29tcHV0ZWRSb2xlU3RyaW5nKCkgY29uc3Q7CisgICAgU3RyaW5nIGNvbXB1
dGVkUm9sZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nVmFsdWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IFN0cmluZyBzdHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0g
ICAgdmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JN
U0FBKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCk7IH0KKyAgICBTdHJpbmcgc3RyaW5nVmFs
dWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQorICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNB
QSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisKKyAgICBTdHJpbmcg
cGFzc3dvcmRGaWVsZFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBib29sIGlzVmFsdWVBdXRvZmlsbGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBdXRvRmlsbEJ1
dHRvblR5cGUgdmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci0gICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0OwotICAgIGJvb2wgaXNW
YWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZh
bHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Q7Ci0gICAgCiAgICAgLy8gVXNlZCBieSBhbiBB
UklBIHRyZWUgdG8gZ2V0IGFsbCBpdHMgcm93cy4KLSAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKyAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKICAgICAvLyBVc2VkIGJ5IGFuIEFSSUEg
dHJlZSBpdGVtIHRvIGdldCBhbGwgb2YgaXRzIGRpcmVjdCByb3dzIHRoYXQgaXQgY2FuIGRpc2Ns
b3NlLgotICAgIHZvaWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKTsKLSAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRvIGdldCBv
bmx5IGl0cyBjb250ZW50LCBhbmQgbm90IGl0cyBjaGlsZCB0cmVlIGl0ZW1zIGFuZCBncm91cHMu
IAotICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKTsKLSAgICAKKyAgICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRy
ZWUgaXRlbSB0byBnZXQgb25seSBpdHMgY29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBp
dGVtcyBhbmQgZ3JvdXBzLgorICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKKwogICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24g
ZmVhdHVyZXMuCi0gICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYg
PSB0cnVlKSBjb25zdDsKLSAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJ
Zk9mZiA9IHRydWUpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpdmVSZWdpb25B
bmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQnVzeSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRl
SWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lv
bihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUp
IGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJl
Z2lvblJlbGV2YW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAg
IGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcgZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JSb2xlKEFjY2Vz
c2liaWxpdHlSb2xlKTsKICAgICBzdGF0aWMgYm9vbCBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVk
KGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBjb250ZW50RWRpdGFibGVBdHRy
aWJ1dGVJc0VuYWJsZWQoRWxlbWVudCopOwotICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0
cmlidXRlU2V0KCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVT
ZXQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdDsKKyAgICBib29sIHN1
cHBvcnRzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcmVhZE9ubHlWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGF1
dG9Db21wbGV0ZVZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRy
aWJ1dGVzKCkgY29uc3Q7Ci0gICAgCiAgICAgLy8gQ1NTMyBTcGVlY2ggcHJvcGVydGllcy4KLSAg
ICB2aXJ0dWFsIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJvcGVydHkoKSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8U3BlYWtBcz4geyB9OyB9CisgICAgT3B0aW9uU2V0PFNwZWFrQXM+IHNw
ZWFrQXNQcm9wZXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE9wdGlvblNldDxTcGVha0Fz
PiB7IH07IH0KIAogICAgIC8vIE1ha2UgdGhpcyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxpbmcg
YXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQuCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZp
c2libGUoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBTYW1lLCBidXQgaWYgdGhlIHdob2xlIG9i
amVjdCBjYW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2Nh
bCBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBT
Y3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMg
b2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFs
UG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICAKLSAgICBlbnVtIGNsYXNzIFNjcm9s
bEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9OwotICAgIGJvb2wgc2Ny
b2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Q7Ci0gICAgSW50UG9pbnQgc2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICBJbnRTaXplIHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNv
bnN0OyAgICAKLSAgICBJbnRSZWN0IHNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0Owot
ICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0
aW9ucyYpIGNvbnN0OwotICAgIAotICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKTsK
LSAgICB2b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpOworICAgIHZvaWQgc2Ny
b2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
Ym9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsK
KyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFNp
emUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBzY3Jv
bGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbFRv
TWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRmlyZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlm
IHRoZSBpc0lnbm9yZWQgdmFsdWUgY2hhbmdlZC4KLSAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZh
bHVlQ2hhbmdlZCgpOworICAgIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBmb3IgaXNNYXRo
RWxlbWVudCgpLgotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFJvdygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVyT3Zl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFJvb3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVS
b290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE9wZXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVu
Y2VPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRva2VuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRo
U2NyaXB0T2JqZWN0VHlwZSkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9i
amVjdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZyYWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZl
bmNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhT
dWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc01hdGhSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWF0aE51bWJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aElkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVD
ZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aE11
bHRpc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFRva2VuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9i
amVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFJvb3QgY29tcG9uZW50cy4KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSb290SW5kZXhP
YmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgCisgICAgQVhDb3JlT2JqZWN0KiBtYXRo
UmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3Jl
T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorCiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEZyYWN0aW9uIGNvbXBvbmVudHMuCi0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aERl
bm9taW5hdG9yT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
bWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBB
WENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgotICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0
T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAor
ICAgIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgLy8gRmVuY2VkIGNvbXBv
bmVudHMuCi0gICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBpbnQgbWF0aExp
bmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQW5v
bnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKyAgICBT
dHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9y
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIE11bHRpc2NyaXB0
cyBjb21wb25lbnRzLgotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0UGFpcnM7Ci0gICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlw
dHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgeyB9Ci0gICAgCisgICAgdm9p
ZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7IH0KKwogICAgIC8vIFZpc2liaWxpdHkuCi0gICAgYm9v
bCBpc0FYSGlkZGVuKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0RPTUhpZGRlbigpIGNvbnN0OwotICAg
IGJvb2wgaXNIaWRkZW4oKSBjb25zdCB7IHJldHVybiBpc0FYSGlkZGVuKCkgfHwgaXNET01IaWRk
ZW4oKTsgfQorICAgIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNET01IaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSGlkZGVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVuKCk7IH0KIAogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3
cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKSB7IG1f
d3JhcHBlciA9IHdyYXBwZXI7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIpIG92ZXJyaWRlIHsgbV93cmFwcGVyID0gd3JhcHBlcjsgfQog
I2Vsc2UKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50KTsKKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3Qq
IHBhcmVudCkgb3ZlcnJpZGU7CiAjZWxzZQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFy
ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVu
dFBhcmVudChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0KICNlbmRpZgotICAgIAorCiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFkpCiAgICAgLy8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBtZXRob2Qg
Zm9yIGRldGVybWluaW5nIGlmIGFuIGF0dGFjaG1lbnQgaXMgaWdub3JlZAotICAgIGJvb2wgYWNj
ZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBib29sIGFjY2Vzc2liaWxp
dHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gZ2l2ZXMgcGxhdGZv
cm1zIHRoZSBvcHBvcnR1bml0eSB0byBpbmRpY2F0ZSBpZiBhbmQgaG93IGFuIG9iamVjdCBzaG91
bGQgYmUgaW5jbHVkZWQKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogI2Vsc2UKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KKyAgICBib29s
IGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBs
YXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmllbGRMZW5n
dGgoKTsKLSAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwotICAgIGJvb2wg
aXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0OworICAgIGludCBhY2Nlc3NpYmlsaXR5UGFz
c3dvcmRGaWVsZExlbmd0aCgpIG92ZXJyaWRlOworICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3Rl
bmVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIGFsbG93cyBmb3IgYW4gQWNj
ZXNzaWJpbGl0eU9iamVjdCB0byB1cGRhdGUgaXRzIHJlbmRlciB0cmVlIG9yIHBlcmZvcm0KICAg
ICAvLyBvdGhlciBvcGVyYXRpb25zIHVwZGF0ZSB0eXBlIG9wZXJhdGlvbnMKLSAgICB2b2lkIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIAorICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCkg
b3ZlcnJpZGU7CisKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHByZXZlbnRLZXlib2Fy
ZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdDsKLSAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2goYm9vbCk7Ci0gICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1Zh
bHVlSW5UaXRsZSgpIGNvbnN0OworICAgIGJvb2wgcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sKSBvdmVycmlkZTsKKyAgICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1
cm5zVmFsdWVJblRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNwZWVjaEhpbnRB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBkZXNjcmlwdGlvbkF0
dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGhlbHBUZXh0QXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdGl0bGVBdHRyaWJ1dGVWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgp
IGNvbnN0OwotICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CisgICAgYm9v
bCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q2Fy
ZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGZvY3VzYWJsZUFuY2VzdG9yKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZWRpdGFibGVBbmNlc3RvcigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RF
ZGl0YWJsZUFuY2VzdG9yKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNhYmxlQW5j
ZXN0b3IoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlZGl0YWJsZUFuY2Vz
dG9yKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGlnaGVzdEVkaXRhYmxl
QW5jZXN0b3IoKSBvdmVycmlkZTsKIAotICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0
OworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0YXRp
YyBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRjaGVkUGFyZW50KGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmLCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wo
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYpPiYpOwotICAgIAotICAgIHZvaWQgY2xlYXJJc0ln
bm9yZWRGcm9tUGFyZW50RGF0YSgpIHsgbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YSA9IEFjY2Vz
c2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOyB9Ci0gICAgdm9pZCBzZXRJc0lnbm9y
ZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICAKKwor
ICAgIHZvaWQgY2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpIG92ZXJyaWRlIHsgbV9pc0ln
bm9yZWRGcm9tUGFyZW50RGF0YSA9IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YSgpOyB9CisgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29y
ZU9iamVjdCopIG92ZXJyaWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgQVhJRCBtX2lkIHsgMCB9Owog
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwpAQCAtMTAyMSwyNCAr
Nzc4LDI0IEBAIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9U
UkVFKQogICAgIGJvb2wgbV9pc29sYXRlZFRyZWVOb2RlSW5pdGlhbGl6ZWQgeyBmYWxzZSB9Owog
I2VuZGlmCi0gICAgCi0gICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmIGRhdGEpIHsgbV9pc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YSA9IGRhdGE7IH0KKworICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEo
QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSBvdmVycmlkZSB7IG1f
aXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgCisKICAgICAvLyBJZiB0aGlzIG9iamVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJu
IGl0cyBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3Jv
bGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdCB7IH0KICAgICBTY3Jv
bGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFBbmNlc3RvcigpIGNvbnN0OwogICAgIHZvaWQgc2Ny
b2xsQXJlYUFuZEFuY2VzdG9yKHN0ZDo6cGFpcjxTY3JvbGxhYmxlQXJlYSosIEFjY2Vzc2liaWxp
dHlPYmplY3QqPiYpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJp
bGl0eVNlYXJjaENyaXRlcmlhKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2li
aWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0
eVNlYXJjaENyaXRlcmlhKik7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNl
YXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqKTsKLSAgICBzdGF0aWMgYm9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVz
dWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJp
YSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOworCisgICAgc3RhdGljIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFYQ29yZU9iamVjdCosIEFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNl
YXJjaENyaXRlcmlhKik7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJj
aE1hdGNoKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOworICAg
IHN0YXRpYyBib29sIG9iamVjdE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChB
WENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGJ1dHRvblJv
bGVUeXBlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc09uc2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBp
c09uU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXNwYXRjaFRvdWNoRXZlbnQo
KTsKIAogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xMDY0LDEwICs4
MjEsMTAgQEAgcHJvdGVjdGVkOgogfTsKIAogI2lmICFFTkFCTEUoQUNDRVNTSUJJTElUWSkKLWlu
bGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIHsgcmV0dXJuIG1fY2hpbGRy
ZW47IH0KK2lubGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KIGlubGluZSBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiBp
bmxpbmUgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCB7IHJldHVybiAtMTsgfQotaW5saW5lIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgeyB9CitpbmxpbmUgdm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVycmlkZSB7IH0KICNlbmRpZgog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25z
dCBOb2RlKiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmKT4mIGlzQWNjZXNzaWJsZSk7CkBAIC0xMDc2LDkgKzgzMyw5IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqLCBjb25zdCBX
VEY6OkZ1bmN0CiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZ
KFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVj
dC5wcmVkaWNhdGU7IH0gXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpB
WENvcmVPYmplY3QmIG9iamVjdCkgeyByZXR1cm4gb2JqZWN0LnByZWRpY2F0ZTsgfSBcCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCkKLXN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlJiBjb250ZXh0KSB7IHJldHVybiBj
b250ZXh0LmlzQWNjZXNzaWJpbGl0eU9iamVjdCgpOyB9CitzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0JiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzQWNj
ZXNzaWJpbGl0eU9iamVjdCgpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCmluZGV4IDk4ZmZiMzE1ZTIxMGIwY2IzNWRiZTc5YmNjMjBmOTExMDIx
NzhiYmMuLjI5MDNkZTE5ODhjNjVkNTJiNWIyMDdiMDA2MDUxMWVkZjUzODE3N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCkBAIC0yNSw3ICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3Iu
aCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbmNsdWRlICJWaXNpYmxlU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKFdJTikK
QEAgLTQ1LDYgKzUwLDIzIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE5vZGU7CitjbGFzcyBFbGVtZW50OworY2xhc3Mg
UmVuZGVyT2JqZWN0OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNzIFBhdGg7CitjbGFzcyBX
aWRnZXQ7CitjbGFzcyBQYWdlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNz
IEZyYW1lVmlldzsKK2NsYXNzIFNjcm9sbFZpZXc7CitjbGFzcyBBWE9iamVjdENhY2hlOworY2xh
c3MgQVhDb3JlT2JqZWN0OworY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc7CitzdHJ1Y3Qg
QWNjZXNzaWJpbGl0eVRleHQ7CitzdHJ1Y3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnM7CisK
IHR5cGVkZWYgdW5zaWduZWQgQVhJRDsKIGV4dGVybiBjb25zdCBBWElEIEludmFsaWRBWElEOwog
dHlwZWRlZiB1bnNpZ25lZCBBWElzb2xhdGVkVHJlZUlEOyAgICAKQEAgLTIwMywzNiArMjI1LDg1
NiBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBXaW5kb3csCiB9OwogCi1j
bGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlIHsKK2VudW0gY2xhc3MgQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQsIEVs
ZW1lbnRDaGFuZ2UgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNl
IHsgU2NyZWVuLCBQYWdlIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVj
dGlvbiB7CisgICAgTmV4dCA9IDEsCisgICAgUHJldmlvdXMsCit9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXkgeworICAgIEFueVR5cGUgPSAxLAorICAgIEFydGljbGUsCisg
ICAgQmxvY2txdW90ZVNhbWVMZXZlbCwKKyAgICBCbG9ja3F1b3RlLAorICAgIEJvbGRGb250LAor
ICAgIEJ1dHRvbiwKKyAgICBDaGVja0JveCwKKyAgICBDb250cm9sLAorICAgIERpZmZlcmVudFR5
cGUsCisgICAgRm9udENoYW5nZSwKKyAgICBGb250Q29sb3JDaGFuZ2UsCisgICAgRnJhbWUsCisg
ICAgR3JhcGhpYywKKyAgICBIZWFkaW5nTGV2ZWwxLAorICAgIEhlYWRpbmdMZXZlbDIsCisgICAg
SGVhZGluZ0xldmVsMywKKyAgICBIZWFkaW5nTGV2ZWw0LAorICAgIEhlYWRpbmdMZXZlbDUsCisg
ICAgSGVhZGluZ0xldmVsNiwKKyAgICBIZWFkaW5nU2FtZUxldmVsLAorICAgIEhlYWRpbmcsCisg
ICAgSGlnaGxpZ2h0ZWQsCisgICAgSXRhbGljRm9udCwKKyAgICBLZXlib2FyZEZvY3VzYWJsZSwK
KyAgICBMYW5kbWFyaywKKyAgICBMaW5rLAorICAgIExpc3QsCisgICAgTGl2ZVJlZ2lvbiwKKyAg
ICBNaXNzcGVsbGVkV29yZCwKKyAgICBPdXRsaW5lLAorICAgIFBsYWluVGV4dCwKKyAgICBSYWRp
b0dyb3VwLAorICAgIFNhbWVUeXBlLAorICAgIFN0YXRpY1RleHQsCisgICAgU3R5bGVDaGFuZ2Us
CisgICAgVGFibGVTYW1lTGV2ZWwsCisgICAgVGFibGUsCisgICAgVGV4dEZpZWxkLAorICAgIFVu
ZGVybGluZSwKKyAgICBVbnZpc2l0ZWRMaW5rLAorICAgIFZpc2l0ZWRMaW5rLAorfTsKKworc3Ry
dWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7CisgICAgQVhDb3JlT2JqZWN0KiBzdGFy
dE9iamVjdDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlv
bjsKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4gc2VhcmNoS2V5czsKKyAgICBT
dHJpbmcgc2VhcmNoVGV4dDsKKyAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQ7CisgICAgYm9vbCB2
aXNpYmxlT25seTsKKyAgICBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seTsKKworICAgIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRl
eHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlh
dGVEZXNjZW5kYW50c09ubHkpCisgICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCisg
ICAgICAgICwgc2VhcmNoRGlyZWN0aW9uKHNlYXJjaERpcmVjdGlvbikKKyAgICAgICAgLCBzZWFy
Y2hUZXh0KHNlYXJjaFRleHQpCisgICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkK
KyAgICAgICAgLCB2aXNpYmxlT25seSh2aXNpYmxlT25seSkKKyAgICAgICAgLCBpbW1lZGlhdGVE
ZXNjZW5kYW50c09ubHkoaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorICAgIHsgfQorfTsKKwor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIHsKKyAgICBJbmNsdWRlT2Jq
ZWN0LAorICAgIElnbm9yZU9iamVjdCwKKyAgICBEZWZhdWx0QmVoYXZpb3IsCit9OworCitlbnVt
IGNsYXNzIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3Rl
cCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGUgeworICAgIE9mZiA9IDAsCisgICAgT24sCisgICAgTWl4ZWQsCit9OworCitlbnVt
IGNsYXNzIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKKyAgICBOb25lLAorICAgIEFzY2Vu
ZGluZywKKyAgICBEZXNjZW5kaW5nLAorICAgIE90aGVyLAorICAgIEludmFsaWQsCit9OworCitl
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tIHsKKyAgICBCZWdpbiwg
Ly8gU2VhcmNoIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZWxlbWVudC4KKyAgICBTZWxlY3Rp
b24sIC8vIFNlYXJjaCBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24u
CisgICAgRW5kIC8vIFNlYXJjaCBmcm9tIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCit9OworCitl
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIHsKKyAgICBGb3J3YXJk
LCAvLyBPY2N1cnJlbmNlIGFmdGVyIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBCYWNrd2FyZCwg
Ly8gT2NjdXJyZW5jZSBiZWZvcmUgdGhlIHN0YXJ0aW5nIHJhbmdlLgorICAgIENsb3Nlc3QsIC8v
IENsb3Nlc3Qgb2NjdXJyZW5jZSB0byB0aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIg
b3IgYmVmb3JlLgorICAgIEFsbCAvLyBBbGwgb2NjdXJyZW5jZXMKK307CisKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hT
dHJpbmdzOyAvLyBUZXh0IHN0cmluZ3MgdG8gc2VhcmNoIGZvci4KKyAgICBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dFN0YXJ0RnJvbSBzdGFydDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb247CisKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlh
KCkKKyAgICAgICAgOiBzdGFydChBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2Vs
ZWN0aW9uKQorICAgICAgICAsIGRpcmVjdGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVj
dGlvbjo6Rm9yd2FyZCkKKyAgICB7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb25UeXBlIHsKKyAgICBTZWxlY3QsCisgICAgUmVwbGFjZSwKKyAgICBDYXBpdGFs
aXplLAorICAgIExvd2VyY2FzZSwKKyAgICBVcHBlcmNhc2UKK307CisKK3N0cnVjdCBBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbiB7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5n
ZXM7IC8vIHRleHQgb24gd2hpY2ggcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgorICAgIEFjY2Vzc2li
aWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB0eXBlOworICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7
IC8vIEZvciB0eXBlID0gcmVwbGFjZS4KKworICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KCkKKyAgICAgICAgOiB0eXBlKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0
KQorICAgIHsgfQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewor
ICAgIFZlcnRpY2FsLAorICAgIEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAorfTsKKworc3Ry
dWN0IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7CisgICAgZW51bSBDaGlsZHJl
bkluY2x1c2lvbiB7CisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGls
ZHJlbiwKKyAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCisg
ICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJl
biwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5hbWVGcm9tCisgICAgfTsK
KworICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxkcmVuSW5jbHVzaW9uOworICAgIGJvb2wgaW5j
bHVkZUZvY3VzYWJsZUNvbnRlbnQ7CisgICAgTm9kZSogaWdub3JlZENoaWxkTm9kZTsKKworICAg
IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZShDaGlsZHJlbkluY2x1c2lvbiBjID0g
VGV4dFVuZGVyRWxlbWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLCBib29sIGkgPSBmYWxzZSwg
Tm9kZSogaWdub3JlZCA9IG51bGxwdHIpCisgICAgICAgIDogY2hpbGRyZW5JbmNsdXNpb24oYykK
KyAgICAgICAgLCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudChpKQorICAgICAgICAsIGlnbm9yZWRD
aGlsZE5vZGUoaWdub3JlZCkKKyAgICB7IH0KK307CisKKyNpZiBQTEFURk9STShDT0NPQSkKK3R5
cGVkZWYgc3RydWN0IF9OU1JhbmdlIE5TUmFuZ2U7CisjZW5kaWYKKworc3RydWN0IFBsYWluVGV4
dFJhbmdlIHsKKyAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
eyAwIH07CisKKyAgICBQbGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIFBsYWluVGV4
dFJhbmdlKHVuc2lnbmVkIHMsIHVuc2lnbmVkIGwpCisgICAgICAgIDogc3RhcnQocykKKyAgICAg
ICAgLCBsZW5ndGgobCkKKyAgICB7IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWlu
VGV4dFJhbmdlKE5TUmFuZ2UpOworI2VuZGlmCisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlWaXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMgeworICAgIEZpcnN0LAorICAgIExhc3QsCit9Owor
CitzdHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgeworICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dDsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kOworCisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSA9IGRlZmF1bHQ7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBzLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCisgICAgICAgIDogc3RhcnQocykKKyAg
ICAgICAgLCBlbmQoZSkKKyAgICB7IH0KKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKKyAgICAgICAgOiBzdGFydChzZWxlY3Rpb24u
c3RhcnQoKSkKKyAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQorICAgIHsgfQorCisgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxs
KCk7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBl
IHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0
aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBv
c3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9OworCisvLyBVc2UgdGhpcyBzdHJ1Y3QgdG8g
c3RvcmUgdGhlIGlzSWdub3JlZCBkYXRhIHRoYXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28g
dGhhdCBpbiBhZGRDaGlsZHJlbigpCisvLyB3ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNo
YWluIGZvciBlYWNoIGVsZW1lbnQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1
bCBpbmZvcm1hdGlvbiBhbHJlYWR5Lgorc3RydWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YSB7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgeyBudWxscHRyIH07CisgICAg
Ym9vbCBpc0FYSGlkZGVuIHsgZmFsc2UgfTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGls
ZE9mQXJpYVJvbGUgeyBmYWxzZSB9OworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJl
bnQgeyBmYWxzZSB9OworCisgICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRh
KEFYQ29yZU9iamVjdCogcGFyZW50ID0gbnVsbHB0cikKKyAgICAgICAgOiBwYXJlbnQocGFyZW50
KQorICAgIHsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFyZW50OyB9
Cit9OworCitjbGFzcyBBWENvcmVPYmplY3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
QVhDb3JlT2JqZWN0PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5BWENvcmVPYmplY3QoKSA9IGRl
ZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIC8vIEFmdGVy
IGNvbnN0cnVjdGluZyBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgaXQgbXVzdCBiZSBnaXZlbiBhCisg
ICAgLy8gdW5pcXVlIElELCB0aGVuIGFkZGVkIHRvIEFYT2JqZWN0Q2FjaGUsIGFuZCBmaW5hbGx5
IGluaXQoKSBtdXN0CisgICAgLy8gYmUgY2FsbGVkIGxhc3QuCisgICAgdmlydHVhbCB2b2lkIHNl
dE9iamVjdElEKEFYSUQpID0gMDsKKyAgICB2aXJ0dWFsIEFYSUQgb2JqZWN0SUQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGluaXQoKSA9IDA7CisKKyAgICAvLyBXaGVuIHRoZSBjb3Jy
ZXNwb25kaW5nIFdlYkNvcmUgb2JqZWN0IHRoYXQgdGhpcyBhY2Nlc3NpYmxlIG9iamVjdAorICAg
IC8vIHJlcHJlc2VudHMgaXMgZGVsZXRlZCwgaXQgbXVzdCBiZSBkZXRhY2hlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNo
ZSogPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCA9
IDA7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yOworCisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAq
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFw
TGluaygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFp
bmluZ1Bhc3N3b3JkRmllbGQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENv
bnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzV2ViQXJlYSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSYWRp
b0J1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGlt
ZWxpbmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNZW51QmFyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0
b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRl
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVs
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGF0
YVRhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNG
aWVsZHNldCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcm91cCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc01lbnVMaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01v
Y2tPYmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFi
ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFPYmplY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzU3dpdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVGV4dENvbnRyb2wo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFiTGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Jh
ZGlvR3JvdXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29tYm9Cb3goKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVHJlZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlSXRl
bSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0xpc3RJdGVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94T3JSYWRp
bygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NhbnZhcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNCbG9ja3F1
b3RlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWV0
ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzVG9vbGJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Zp
Z3VyZUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3VtbWFyeSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPdXRwdXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNDaGVja2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNIb3ZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBGSVhN
RSBzaG91bGQgbmVlZCBqdXN0IG9uZSBzaW5jZSBvbnNjcmVlbiBzaG91bGQgYmUgIW9mZnNjcmVl
bi4KKyAgICB2aXJ0dWFsIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUHJlc3Nl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZXF1aXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1
aXJlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXND
b2xsYXBzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5kZWQoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBwYXJlbnRPYmplY3RJ
bnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIAorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxv
YXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOworCisgICAg
Ly8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0
IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUuCisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0
ZWRPcHRpb25BY3RpdmUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZv
bnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29u
c3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBo
YXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNVbmRlcmxp
bmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IGhlYWRpbmdMZXZlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94
T3JSYWRpb1ZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3Jp
cHRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBzZWxlY3RlZExpc3RJdGVtKCkgPSAwOworICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWlu
ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWls
c1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFG
bG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFM
YWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhT3du
c1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIGhhc1BvcHVwKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0Rh
dGFsaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNQcmVzc2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4
cGFuZGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGly
ZWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0Nv
bnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXJBdHRy
aWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBsaW5rUmVs
VmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsYXNzTGlzdChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRT
dGF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ3VycmVudCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9y
ZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KKyAgICB2aXJ0dWFsIGJv
b2wgaWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01vZGFsTm9kZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NldFNp
emUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgc2V0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCBwb3NJblNldCgpIGNvbnN0ID0gMDsKKworICAgIC8vIEFSSUEgZHJhZyBhbmQgZHJvcAor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcm9wcGluZygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzQVJJQUdyYWJiZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFSSUFHcmFi
YmVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFE
cm9wRWZmZWN0cygpID0gMDsKKworICAgIC8vIENhbGxlZCBvbiB0aGUgcm9vdCBBWCBvYmplY3Qg
dG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgorICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKKyAgICAvLyBDYWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUgcmVuZGVyIHRyZWUg
ZGV0ZXJtaW5lcyB3aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4K
KyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGZv
Y3VzZWRVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCog
Zmlyc3RDaGlsZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbGFzdENo
aWxkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1NpYmxp
bmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG5leHRTaWJsaW5nKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3Jl
ZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcHJldmlv
dXNTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVP
YmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rl
c2NlbmRhbnRPZkJhcnJlblBhcmVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNE
ZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCA9IDA7CisKKyAgICAvLyBU
ZXh0IHNlbGVjdGlvbgorICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0
UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYpID0gMDsKKworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsaW5r
ZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9s
Rm9yTGFiZWxFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBz
Y3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Qg
PSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0CisgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCA9IDA7CisgICAg
Ly8gQSBzaW5nbGUgbWV0aG9kIGZvciBnZXR0aW5nIGEgY29tcHV0ZWQgbGFiZWwgZm9yIGFuIEFY
T2JqZWN0LiBJdCBjb25kZW5zZXMgdGhlIG51YW5jZXMgb2YgYWNjZXNzaWJpbGl0eVRleHQuIFVz
ZWQgYnkgSW5zcGVjdG9yLgorICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSA9IDA7
CisKKyAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFtZSBvbiBhbiBBY2Nlc3Np
YmxlT2JqZWN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9t
U3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJ
bmNsdXNpb24oKSBjb25zdCA9IDA7CisKKyAgICAvLyBBY2Nlc3NpYmlsaXR5IFRleHQgLSAoVG8g
YmUgZGVwcmVjYXRlZCkuCisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gTWV0aG9k
cyBmb3IgZGV0ZXJtaW5pbmcgYWNjZXNzaWJpbGl0eSB0ZXh0LgorICAgIHZpcnR1YWwgYm9vbCBp
c0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1Zh
bHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlKCkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdCA9IDA7CisKKyAg
ICAvLyBBYmJyZXZpYXRpb25zCisgICAgdmlydHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworCisgICAg
Ly8gT25seSBpZiBpc0NvbG9yV2VsbCgpCisgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50
JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGFu
Y2hvckVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUHJlc3NB
Y3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBJbnRQb2ludCBjbGlja1BvaW50KCkgPSAwOworICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0
aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0b3JCZWhhdmlv
ckZvclRleHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHNl
bGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2VsZWN0
aW9uU3RhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
U3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcm
IGFjdGlvblZlcmIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBQYWdlKiBwYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRnJhbWVWaWV3
KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBmcmFt
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCA9IDA7CisgICAgLy8gMS1iYXNlZCwgdG8gbWF0
Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNoaWNh
bExldmVsKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRS
YW5nZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGluc2VydFRleHQoY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVy
Zm9ybURlZmF1bHRBY3Rpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVt
ZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hh
bmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFYQ29y
ZU9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0
KiwgdW5zaWduZWQpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVSb2xlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCBib29sIG5lZWRzVG9VcGRhdGVDaGlsZHJlbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogYWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2Vu
ZGFudENoYW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENo
YW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFYQ29yZU9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbmNlc3Rvck9m
T2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VG
b3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
cG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
blJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
bGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdG
b3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJv
dW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JSYW5nZShjb25zdCBSZWZQ
dHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGVuZ3RoRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFjY2Vzc2liaWxpdHlW
aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJsZVBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzV29yZFN0YXJ0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xp
bmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VFbmRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJl
dmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICovKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChp
bnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgcGxh
aW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25S
YW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleChjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8
aW50PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZv
ckxpbmUodW5zaWduZWQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRv
QVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWdu
ZWQpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGRvQVhTdHJpbmdGb3JSYW5nZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZG9B
WEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25z
dCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgZG9B
WExpbmVGb3JJbmRleCh1bnNpZ25lZCkgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgY29tcHV0
ZWRSb2xlU3RyaW5nKCkgY29uc3QgPSAwOworCisgICAgLy8gTVNBQQorICAgIHZpcnR1YWwgU3Ry
aW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBz
dHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lRm9y
TVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JN
U0FBKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgcGFzc3dvcmRGaWVsZFZhbHVl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgQXV0b0ZpbGxCdXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25U
eXBlKCkgY29uc3QgPSAwOworCisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgdG8gZ2V0IGFs
bCBpdHMgcm93cy4KKyAgICB2aXJ0dWFsIHZvaWQgYXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpID0gMDsKKyAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRv
IGdldCBhbGwgb2YgaXRzIGRpcmVjdCByb3dzIHRoYXQgaXQgY2FuIGRpc2Nsb3NlLgorICAgIHZp
cnR1YWwgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpID0gMDsKKyAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRvIGdldCBv
bmx5IGl0cyBjb250ZW50LCBhbmQgbm90IGl0cyBjaGlsZCB0cmVlIGl0ZW1zIGFuZCBncm91cHMu
CisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgPSAwOworCisgICAgLy8gQVJJQSBsaXZlLXJlZ2lvbiBmZWF0dXJlcy4KKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1
ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBl
eGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNCdXN5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0NvbnRl
bnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1JlYWRPbmx5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRPbmx5
VmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxl
dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0ID0gMDsKKworICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCisgICAgdmlydHVhbCBP
cHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgPSAwOworCisgICAgLy8g
TWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9sbGluZyBhcyBtYW55IG5lc3RlZCBzY3Jv
bGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBTYW1lLCBidXQgaWYgdGhlIHdob2xlIG9iamVjdCBj
YW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2NhbCBjb29y
ZGluYXRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1
cyhjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOworICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0
byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdp
bmRvdy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0ID0gMDsKKworICAgIGVudW0gY2xhc3MgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uIHsg
VXAsIERvd24sIExlZnQsIFJpZ2h0IH07CisgICAgdmlydHVhbCBib29sIHNjcm9sbEJ5UGFnZShT
Y3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBzY3JvbGxDb250
ZW50c1NpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbFZpc2libGVD
b250ZW50UmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUoYm9vbCkgPSAwOworCisgICAgLy8gRmly
ZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlmIHRoZSBp
c0lnbm9yZWQgdmFsdWUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SWZJZ25vcmVk
VmFsdWVDaGFuZ2VkKCkgPSAwOworCisgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRy
dWUgZm9yIGlzTWF0aEVsZW1lbnQoKS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFJvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVW5k
ZXJPdmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhOdW1iZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE9wZXJhdG9y
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aFRhYmxlUm93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJs
ZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0
T2JqZWN0VHlwZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlw
dE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3QgPSAw
OworCisgICAgLy8gUm9vdCBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBt
YXRoUmFkaWNhbmRPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhS
b290SW5kZXhPYmplY3QoKSA9IDA7CisKKyAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpID0gMDsKKyAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSA9IDA7CisKKyAgICAvLyBGcmFjdGlv
biBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoTnVtZXJhdG9yT2Jq
ZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmpl
Y3QoKSA9IDA7CisKKyAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KKyAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSA9IDA7CisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpID0gMDsKKworICAgIC8vIEZlbmNl
ZCBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6
OnBhaXI8QVhDb3JlT2JqZWN0KiwgQVhDb3JlT2JqZWN0Kj4+IEFjY2Vzc2liaWxpdHlNYXRoTXVs
dGlzY3JpcHRQYWlyczsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9z
dHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgPSAwOworCisgICAg
Ly8gVmlzaWJpbGl0eS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNET01IaWRkZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzSGlkZGVuKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V3Jh
cHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQpID0gMDsKKwor
ICAgIC8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhbiBh
dHRhY2htZW50IGlzIGlnbm9yZWQKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlnbm9y
ZUF0dGFjaG1lbnQoKSBjb25zdCA9IDA7CisgICAgLy8gZ2l2ZXMgcGxhdGZvcm1zIHRoZSBvcHBv
cnR1bml0eSB0byBpbmRpY2F0ZSBpZiBhbmQgaG93IGFuIG9iamVjdCBzaG91bGQgYmUgaW5jbHVk
ZWQKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCA9IDA7CisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIHZpcnR1YWwgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVuZ3Ro
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdCA9IDA7
CisjZW5kaWYKKworICAgIC8vIGFsbG93cyBmb3IgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCB0byB1
cGRhdGUgaXRzIHJlbmRlciB0cmVlIG9yIHBlcmZvcm0KKyAgICAvLyBvdGhlciBvcGVyYXRpb25z
IHVwZGF0ZSB0eXBlIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmFja2luZ1N0
b3JlKCkgPSAwOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBib29sIHByZXZl
bnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBzcGVlY2hIaW50QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBh
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpID0gMDsKKyNpZiBQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdmlydHVhbCBib29sIGNhcmV0QnJv
d3NpbmdFbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDYXJldEJyb3dz
aW5nRW5hYmxlZChib29sKSA9IDA7CisjZW5kaWYKKworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBmb2N1c2FibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZWRp
dGFibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogaGlnaGVzdEVk
aXRhYmxlQW5jZXN0b3IoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNl
bGYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhDb3JlT2JqZWN0Kikg
PSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggNTMzNGRjNzY2ZWM1MWY1NjcxYzEyNDZjNGFmYWEwOTgzNGNiZmQ2Yy4uN2MwYmU3NDczNTUw
YjFmOTIyYWU2Yzg3M2Y2NTdlNzRmMTYxYWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC05
NzYsNyArOTc2LDcgQEAgT3B0aW9uU2V0PFNwZWFrQXM+IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxl
KCkuc3BlYWtBcygpOwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50LCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0Cit2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihB
WENvcmVPYmplY3QqIHBhcmVudCwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRV
SUVsZW1lbnRzKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQt
PmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6UmFkaW9CdXR0b24pCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikpIHsKICAgICAgICAgLy8g
c3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVCdXR0b25zIGFyZSBqdXN0IHJl
cG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQncyBpZ25vcmVkIG9uIGFuIGlu
ZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmIChwYXJlbnQgJiYgKHBhcmVudC0+aXNN
ZW51SXRlbSgpIHx8IHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUJ1dHRvbikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYXV0
byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKTsKQEAgLTE0
MzMsNyArMTQzMyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmVy
LT5pc0xpc3RNYXJrZXIoKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFy
ZW50LT5pc0xpc3RJdGVtKCk7CiAgICAgfQogCkBAIC0yMzcwLDcgKzIzNzAsNyBAQCBJbnRSZWN0
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFj
dGVyT2Zmc2V0KGNvbnN0CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAotQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFw
SGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0
eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKIHsKICAgICBpZiAoIWFyZWEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjM5Myw3ICsyMzkzLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE0KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1v
dGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRl
KTsKICAgICBpZiAoIXJlbW90ZSkKQEAgLTI0MDMsNyArMjQwMyw3IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1l
bnRIaXRUZXN0CiAgICAgcmV0dXJuIHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QoSW50UG9p
bnQob2Zmc2V0KSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIHJlbW90ZVNWR0Vs
ZW1lbnRIaXRUZXN0KHBvaW50KTsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFVzZVNoYWRvd0hvc3RGb3JIaXRUZXN0aW5nKE5vZGUqIHNoYWRvd0hvc3QpCiAgICAgcmV0
dXJuIHNoYWRvd0hvc3QgJiYgIXNoYWRvd0hvc3QtPmhhc1RhZ05hbWUodmlkZW9UYWcpOwogfQog
Ci1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwg
IW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1
MCw3ICsyNDUwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY28KICAgICBpZiAoIW9iaikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVz
dWx0ID0gb2JqLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsK
KyAgICBBWENvcmVPYmplY3QqIHJlc3VsdCA9IG9iai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKG9iaik7CiAgICAgcmVzdWx0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNz
YXJ5KCk7CiAKICAgICAvLyBBbGxvdyB0aGUgZWxlbWVudCB0byBwZXJmb3JtIGFueSBoaXQtdGVz
dGluZyBpdCBtaWdodCBuZWVkIHRvIGRvIHRvIHJlYWNoIG5vbi1yZW5kZXIgY2hpbGRyZW4uCkBA
IC0yNDU4LDcgKzI0NTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjbwogICAgIAogICAgIGlm
IChyZXN1bHQgJiYgcmVzdWx0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAg
Ly8gSWYgdGhpcyBlbGVtZW50IGlzIHRoZSBsYWJlbCBvZiBhIGNvbnRyb2wsIGEgaGl0IHRlc3Qg
c2hvdWxkIHJldHVybiB0aGUgY29udHJvbC4KLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1l
bnQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjb250cm9sT2JqZWN0ID0gcmVzdWx0LT5jb3Jy
ZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpOwogICAgICAgICBpZiAoY29udHJvbE9i
amVjdCAmJiAhY29udHJvbE9iamVjdC0+ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gY29udHJvbE9iamVjdDsKIApAQCAtMzEzNiw3ICszMTM2LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKCkKICAgICAgICAg
aWYgKCFhcmVhT2JqZWN0LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZhcmVhT2JqZWN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
YXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC5heE9iamVjdElEKCkpOworICAgICAg
ICAgICAgYXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC5vYmplY3RJRCgpKTsKICAg
ICB9CiB9CiAKQEAgLTMzMDgsNyArMzMwOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkSGlkZGVuQ2hpbGRyZW4oKQogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gRmluZCBvdXQgd2hl
cmUgdGhlIGxhc3QgcmVuZGVyIHNpYmxpbmcgaXMgbG9jYXRlZCB3aXRoaW4gbV9jaGlsZHJlbi4K
LSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkT2JqZWN0ID0gYXhPYmplY3RD
YWNoZSgpLT5nZXQoY2hpbGQtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0
KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsK
ICAgICAgICAgICAgIGlmIChjaGlsZE9iamVjdCAmJiBjaGlsZE9iamVjdC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgY2hpbGRyZW4gPSBjaGlsZE9i
amVjdC0+Y2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpKQpA
QCAtMzUyNSw3ICszNTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxl
Y3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgYXJp
YVNlbGVjdGVkUm93cyhyZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHNl
bGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3Qq
IHNlbGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHNlbGVjdGVkVGFiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDBiMTlkYTUyYWJlNmMxZjE1ODcyOTgw
YjI3NGU1ZGQ0YWFlMDJiZmMuLjM5NjE3MzA0Y2VhMzcwZjQ5N2JmMzRjNWY1MTQ3MjEwMTdkYmI3
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgcm9vdCBhY2Nlc3NpYmlsaXR5IG9i
amVjdCB0byBraWNrIG9mZiBhIGhpdCB0ZXN0LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4
dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0OworICAg
IGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCog
d2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50
VmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudExpbmtz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpAQCAtMjM1LDExICsyMzUsMTEgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3Q7CiAgICAgTGF5b3V0UmVj
dCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdy
b3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMp
IGNvbnN0OwotICAgIHZvaWQgYWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKKyAgICB2b2lk
IGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpbnRlcm5h
bExpbmtFbGVtZW50KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0OworICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1M
QXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopIGNv
bnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9i
amVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBhcmVudE9iamVjdCgpIGNvbnN0
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdS
b290KCk7CiAgICAgZW51bSBDcmVhdGlvbkNob2ljZSB7IENyZWF0ZSwgUmV0cmlldmUgfTsKICAg
ICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaG9p
Y2UgY3JlYXRlSWZOZWNlc3NhcnkpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Cisg
ICAgQVhDb3JlT2JqZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwogICAgIHZvaWQgb2Zmc2V0Qm91bmRpbmdCb3hGb3JSZW1vdGVTVkdFbGVtZW50KExh
eW91dFJlY3QmKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDUxNzhiOWZhNTNkNTQyNjJjOWZhYTc4NGZlZTQ5OGM3
NmM2ODJhM2UuLmQxMTZlZGRmZDdlNjkxMGJhOTYzOWNmNmNmNWIxYmEyMmJlNGQ4ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHdlYkFyZWEgPSB3ZWJBcmVhT2JqZWN0KCk7CiAgICAgaWYgKCF3ZWJBcmVhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oCmluZGV4IDY2ZmY1OTQ3ZDZhMWRlY2ViMGViMWExNWY4N2IyNGFkODhhZDBhM2Iu
LjliZmFmMTU1YWRiMjMyYTU2NjNmNThjYjA4YzEyYzEzM2UyYzM1MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3Jv
bGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENo
aWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2li
aWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc1Rv
VXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IG1fY2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KICAg
ICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCmluZGV4IGIzZmYwYTk3NTEwOGYxMzgz
YTk2ODJmZTAyYzE2YzY5MDk1ZjY3ZDMuLmNjNmNiODE4ZThiM2UzNmM5MTZjZmYwNGMxN2E1MGQw
NWRkOWVlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlT
bGlkZXI6OmFkZENoaWxkcmVuKCkKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2
YWx1ZSBpbmRpY2F0b3IgdG8gdGhlIGhpZXJhcmNoeSwKICAgICAvLyBhbGxvdyB0aGUgcGxhdGZv
cm0gdG8gbWFrZSBhIGZpbmFsIGRlY2lzaW9uIGFib3V0IGl0LgogICAgIGlmICh0aHVtYi5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIuYXhPYmpl
Y3RJRCgpKTsKKyAgICAgICAgY2FjaGUtPnJlbW92ZSh0aHVtYi5vYmplY3RJRCgpKTsKICAgICBl
bHNlCiAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0aHVtYik7CiB9CkBAIC0xMDAsNyArMTAw
LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gaW5wdXRFbGVtZW50KCkt
PmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
IHsKICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAgQVNTRVJUKG1fY2hpbGRy
ZW4uc2l6ZSgpID09IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaAppbmRleCA0NjlkMjE3MDFiZWM1M2FmMTlkOTdiZjQ1ZTBlZWUx
YmRjMjI2YzQ1Li45MWM3MDkyNWU2ZDkyZjUzMmVhMmEyZmJjNzcyMzlkZDc4YTJkZGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
aApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSFRNTElucHV0
RWxlbWVudCogaW5wdXRFbGVtZW50KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7
IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsK
ICAgICAKICAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdl
dEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBmbG9hdCB2YWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCmluZGV4IGMzY2MwODI2
YTkzZjYyYWNhNDZlNjZmMzI1M2IzM2Q3MzhjMzZhZWMuLjdkMGE2YTQzYWE1MTA5MTY5ZGJlYmFh
NDI0YzZkZjk0YjdmM2RhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIEFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpCiAKIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uOjp+QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKSA9IGRlZmF1bHQ7
CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5j
cmVtZW50QnV0dG9uKCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246Omlu
Y3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAgYWRk
Q2hpbGRyZW4oKTsKQEAgLTU1LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b246OmluY3JlbWVudEJ1dHRvbigpCiAgICAgcmV0dXJuIG1fY2hpbGRy
ZW5bMF0uZ2V0KCk7CiB9CiAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjpkZWNyZW1lbnRCdXR0b24oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6ZGVjcmVtZW50QnV0dG9uKCkKIHsKICAgICBpZiAoIW1faGF2ZUNoaWxkcmVu
KQogICAgICAgICBhZGRDaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCmluZGV4IDYzZDVmMzdlZWVmYWVk
M2I2NDk5N2E2MTUwZTYxZGExMTc0MjJhZGIuLjAwZTkwYTI5M2Y0NzllMDg5NTc2ZDljYThhNDE2
MzEyMWU0MWI0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTM3LDggKzM3LDggQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgc2V0U3BpbkJ1dHRvbkVsZW1lbnQoU3BpbkJ1dHRvbkVsZW1lbnQqIHNwaW5C
dXR0b24pIHsgbV9zcGluQnV0dG9uRWxlbWVudCA9IHNwaW5CdXR0b247IH0KICAgICAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBpbmNyZW1lbnRCdXR0b24oKTsKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBkZWNyZW1lbnRCdXR0b24oKTsKKyAgICBBWENvcmVPYmplY3QqIGluY3JlbWVudEJ1
dHRvbigpOworICAgIEFYQ29yZU9iamVjdCogZGVjcmVtZW50QnV0dG9uKCk7CiAKICAgICB2b2lk
IHN0ZXAoaW50IGFtb3VudCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggZjViZjViMmY2MGZmODU3YzhhNmRl
OTI1YTBiZDMwZjdjZDg2ZmUwMS4uMjczMWIwNzg4NmFlZjliYzI3NTY2YjdiMTRlOGU2NGE4YWU3
MDFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcApAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uc0NvcHkgPSBtX2NvbHVtbnM7CiAg
ICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb2x1bW4gOiBjb2x1bW5zQ29weSkgewotICAgICAg
ICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uPigqY29sdW1uKS5oZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFYQ29y
ZU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqY29s
dW1uKS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7
CiAgICAgfQogfQpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpy
b3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHkgPSBtX3Jvd3M7CiAgICAgCiAgICAgZm9y
IChjb25zdCBhdXRvJiByb3cgOiByb3dzQ29weSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93KS5o
ZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogaGVhZGVyID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93KS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAg
ICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CiAgICAgfQogfQpAQCAtNjIyLDcgKzYyMiw3IEBA
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgIC8vIGNlbGwgdG8gZGV0ZXJtaW5lIHdo
aWNoIGlzIHRoZSByaWdodCBvbmUuCiAgICAgICAgIGZvciAodW5zaWduZWQgY29sSW5kZXhDb3Vu
dGVyID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoaWxkcmVuLnNpemUoKSksIGNv
bHVtbiArIDEpOyBjb2xJbmRleENvdW50ZXIgPiAwOyAtLWNvbEluZGV4Q291bnRlcikgewogICAg
ICAgICAgICAgdW5zaWduZWQgY29sSW5kZXggPSBjb2xJbmRleENvdW50ZXIgLSAxOwotICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBjaGlsZHJlbltjb2xJbmRleF0uZ2V0
KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhd
LmdldCgpOwogICAgICAgICAgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpj
aGlsZCkpOwogICAgICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hp
bGQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXggOWJiYWQx
MTI5NmU1ZTFjNzA1OTM3MjViNjI5ODQ2ZmE5NTZiNDQwMC4uZGI1MDQxYzkzODk3OTI4ZmIxZDc0
NGQ3N2RiNWVhN2Y2OWFhZTdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgaGVhZGVycykKIAogQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpwYXJlbnRSb3coKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCog
cGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFpczxBY2Nlc3NpYmls
aXR5VGFibGVSb3c+KCpwYXJlbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihwYXJlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
Y3BwCmluZGV4IDNjYjdmMTVhMjE3NmU0NDVkZmM4NjNkOGNiMTIyZjM2ZDEyZjI0NmIuLmZkYzY3
ZjhhYzE1NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYyNzE1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAK
QEAgLTcwLDcgKzcwLDcgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmVs
ZW1lbnRSZWN0KCkgY29uc3QKICAgICByZXR1cm4gY29sdW1uUmVjdDsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQorQVhD
b3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiB7CiAg
ICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApp
bmRleCA5ZmNkYjVjZjM2ZTI3OTYzYWU4MjAwYjI0MDBjMzczYmI1ZTM5OGM1Li41Njk3Y2MxYzgy
ZjJkOGNhMDhiNzNkZWNkNzc2MjY4ZGY0NDM4NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKQEAgLTQwLDkg
KzQwLDkgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uIGZpbmFsIDogcHVibGljIEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uKCk7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0
KCk7Ci0gICAgICAgIAorCisgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKKwogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpDb2x1bW47IH0KICAgICAKICAgICB2b2lkIHNldENvbHVtbkluZGV4
KGludCBjb2x1bW5JbmRleCkgeyBtX2NvbHVtbkluZGV4ID0gY29sdW1uSW5kZXg7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcAppbmRleCBiYjlkOWUwNGM0ZGY0ODZhZGI3NTZjMzNhZGVmMWRhMDU1OTkzMjdmLi43YjQ5
YzI4YmMwY2Q2ODQxNDI2ZDY3ZGE1MzQ4MmMxMzBjM2I2NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKK0FY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogewogICAg
IGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZVJvdygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEyMCw3ICsxMjAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIC8vIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSByb3cgdG8g
c2VlIGlmIGl0IGlzIGEgVEggZWxlbWVudAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNlbGwg
PSByb3dDaGlsZHJlblswXS5nZXQoKTsKKyAgICBBWENvcmVPYmplY3QqIGNlbGwgPSByb3dDaGls
ZHJlblswXS5nZXQoKTsKICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjZWxs
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCA5ODhlMjQ1OTIx
M2U3MGQ1NGZmZWU0Y2JhYjYxMjEzYmYzNTMzMTM5Li43OWJmMDVmZmFkZDFkODQ4OWExMzNhMzUz
ODA5N2U0YWJlZjljYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZVJvdygpOwogCiAgICAgLy8gcmV0cmlldmVzIHRo
ZSAicm93IiBoZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1uKQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIGhlYWRlck9iamVjdCgpOwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRh
YmxlKiBwYXJlbnRUYWJsZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0Um93SW5kZXgoaW50
IHJvd0luZGV4KSB7IG1fcm93SW5kZXggPSByb3dJbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCAyODRl
MzZkMDhhOThhMmViMzdhZDQyZDQwZmQ0MzI2YTUwODgyMzQ1Li42YWY0MTJkNWFhMDcxZjZmOTMy
ZjM0NTRlYzQ3ZDVmMDA3ZGQyNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1QZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAg
ICAgbV9kZWZlcnJlZERldGFjaGVkV3JhcHBlckxpc3QuY2xlYXIoKTsKIH0KIAotc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGdldExpc3RPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0KQorc3RhdGljIEFYQ29yZU9iamVjdCogZ2V0TGlzdE9iamVjdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gT25seSBsaXN0IGJveGVzIGFuZCBtZW51IGxpc3RzIHN1
cHBvcnRlZCBzbyBmYXIuCiAgICAgaWYgKCFvYmplY3QtPmlzTGlzdEJveCgpICYmICFvYmplY3Qt
PmlzTWVudUxpc3QoKSkKQEAgLTEzNiwyMSArMTM2LDIxIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBnZXRMaXN0T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBp
ZiAoIWNoaWxkcmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3Jl
T2JqZWN0KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0
T2JqZWN0LT5pc01lbnVMaXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1
cm4gbGlzdE9iamVjdDsKIH0KIAotc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25D
aGFuZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgbm90aWZ5Q2hp
bGRyZW5TZWxlY3Rpb25DaGFuZ2UoQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhp
cyBzdGF0aWMgdmFyaWFibGVzIGFyZSBuZWVkZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgb2xkCiAg
ICAgLy8gZm9jdXNlZCBvYmplY3QgYW5kIGl0cyBhc3NvY2lhdGVkIGxpc3Qgb2JqZWN0LCBhcyBw
ZXIgcHJldmlvdXMKICAgICAvLyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBpbiBvcmRlciB0byBw
cm9wZXJseSBkZWNpZGUgd2hldGhlciB0bwogICAgIC8vIGVtaXQgc29tZSBzaWduYWxzIG9yIG5v
dC4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
PiBvbGRMaXN0T2JqZWN0OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4+IG9sZEZvY3VzZWRPYmplY3Q7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvbGRMaXN0T2JqZWN0OworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gb2xkRm9jdXNlZE9iamVjdDsKIAogICAg
IC8vIE9ubHkgbGlzdCBib3hlcyBhbmQgbWVudSBsaXN0cyBzdXBwb3J0ZWQgc28gZmFyLgogICAg
IGlmICghb2JqZWN0IHx8ICEob2JqZWN0LT5pc0xpc3RCb3goKSB8fCBvYmplY3QtPmlzTWVudUxp
c3QoKSkpCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxl
Y3Rpb25DaGFuZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIEhUTUxTZWxlY3RF
bGVtZW50JiBzZWxlY3QgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpOwogICAg
IGludCBjaGFuZ2VkSXRlbUluZGV4ID0gc2VsZWN0LmFjdGl2ZVNlbGVjdGlvblN0YXJ0TGlzdElu
ZGV4KCk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0T2JqZWN0ID0gZ2V0TGlzdE9i
amVjdChvYmplY3QpOworICAgIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdCA9IGdldExpc3RPYmpl
Y3Qob2JqZWN0KTsKICAgICBpZiAoIWxpc3RPYmplY3QpIHsKICAgICAgICAgb2xkTGlzdE9iamVj
dC5nZXQoKSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBz
dGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QpCiAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiBpdGVtcyA9IGxpc3RPYmplY3QtPmNoaWxkcmVuKCk7CiAgICAgaWYg
KGNoYW5nZWRJdGVtSW5kZXggPCAwIHx8IGNoYW5nZWRJdGVtSW5kZXggPj0gc3RhdGljX2Nhc3Q8
aW50PihpdGVtcy5zaXplKCkpKQogICAgICAgICByZXR1cm47Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogaXRlbSA9IGl0ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOworICAgIEFYQ29y
ZU9iamVjdCogaXRlbSA9IGl0ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOwogCiAgICAg
Ly8gRW5zdXJlIHRoZSBjdXJyZW50IGxpc3Qgb2JqZWN0IGlzIHRoZSBzYW1lIHRoYW4gdGhlIG9s
ZCBvbmUgc28KICAgICAvLyBmdXJ0aGVyIGNvbXBhcmlzb25zIG1ha2Ugc2Vuc2UuIE90aGVyd2lz
ZSwganVzdCByZXNldApAQCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxk
cmVuU2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBvbGRG
b2N1c2VkT2JqZWN0LmdldCgpID0gaXRlbTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVhO
b3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZv
cm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBWE5vdGlmaWNhdGlvbiBu
b3RpZmljYXRpb24pCiB7CiAgICAgYXV0byogYXhPYmplY3QgPSBBVEtfT0JKRUNUKGNvcmVPYmpl
Y3QtPndyYXBwZXIoKSk7CiAgICAgaWYgKCFheE9iamVjdCkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlT2JqZWN0LCBBWAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQVhBY3Rp
dmVEZXNjZW5kYW50Q2hhbmdlZDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGRl
c2NlbmRhbnQgPSBjb3JlT2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgICAgIGlmIChB
WENvcmVPYmplY3QqIGRlc2NlbmRhbnQgPSBjb3JlT2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkp
CiAgICAgICAgICAgICBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKG51bGxw
dHIsIGRlc2NlbmRhbnQtPm5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zMDcsNyArMzA3
LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAgICBpZiAoIW9iamVjdCB8fCB0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50T2JqZWN0ID0gb2JqZWN0LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBv
YmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50
T2JqZWN0ID0gb2JqZWN0LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBvYmpl
Y3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50T2JqZWN0KQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKaW5kZXggMTJhZTQzNWJkMTcxZWNmNmUxOTQyM2U2MGI0
YWE1YjUxOTQ4ODAxOS4uZDMyYzgyMmFlMWM0NTIxOTY5MDZmYmZkYWFlMTk5ODQxNjc1MGQwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZS5jcHAKQEAgLTExNjUsNyArMTE2NSw3IEBAIHN0YXRpYyBib29sIHJvbGVJc1RleHRU
eXBlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA7CiB9CiAKLXN0YXRpYyBndWludDE2IGludGVyZmFj
ZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCitzdGF0aWMg
Z3VpbnQxNiBpbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBWENvcmVPYmplY3QqIGNvcmVPYmplY3Qp
CiB7CiAgICAgZ3VpbnQxNiBpbnRlcmZhY2VNYXNrID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJs
aW5rLmNwcAppbmRleCA3MjQ1MDI0MWE0NmM0ODNiN2FmZWViNmNhMzE4NDFkODdjMGJlMjAxLi5i
MGY3M2U2YTRmYWEwY2ZjZWM4MTQ3M2I2ODU1NTMwOTdlNDAxZTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBnaW50IHJhbmdlTGVuZ3Ro
Rm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iaiwgUmFuZ2UqIHJhbmdlKQogCiAgICAg
Ly8gQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBoeXBlcmxpbmsgYmVsb25ncyB0byBhIGxpc3Qg
aXRlbS4KICAgICAvLyBJZiBzbywgd2UgbmVlZCB0byBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRo
ZSBpdGVtJ3MgbWFya2VyCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gb2JqLnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gb2JqLnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIHx8ICFwYXJlbnQtPmlzTGlzdEl0ZW0oKSkKICAgICAg
ICAgcmV0dXJuIGJhc2VMZW5ndGg7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgZ2ludCBy
YW5nZUxlbmd0aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIFJhbmdlKiByYW5n
ZSkKICAgICAvLyBUZWNobm9sb2dpZXMsIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBtZWFzdXJl
IHRoZWlyIGxlbmd0aAogICAgIC8vIGZvciB0aG9zZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkIHRv
IHRha2UgaXQgaW50byBhY2NvdW50CiAgICAgLy8gc2VwYXJhdGVseSAoYXMgaW4gZ2V0QWNjZXNz
aWJpbGl0eU9iamVjdEZvck9mZnNldCkKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXJrZXJP
YmogPSBwYXJlbnQtPmZpcnN0Q2hpbGQoKTsKKyAgICBBWENvcmVPYmplY3QqIG1hcmtlck9iaiA9
IHBhcmVudC0+Zmlyc3RDaGlsZCgpOwogICAgIGlmICghbWFya2VyT2JqKQogICAgICAgICByZXR1
cm4gYmFzZUxlbmd0aDsKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBy
ZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZUh5cGVybGluay0+
cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICBhdXRvJiBjb3JlT2JqZWN0ID0gd2Via2l0
QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJsZUh5cGVybGluay0+cHJp
di0+aHlwZXJsaW5rSW1wbCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VW5pZ25v
cmVkID0gY29yZU9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmpl
Y3QqIHBhcmVudFVuaWdub3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgaWYgKCFwYXJlbnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yMDYs
NyArMjA2LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJ
c0ludmFsaWQoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAK
ICAgICBhdXRvJiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlP
YmplY3QoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCk7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5wYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudFVuaWdub3JlZCA9IGNvcmVP
YmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnRVbmlnbm9yZWQp
CiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBl
cnRleHQuY3BwCmluZGV4IDhhMzM4M2QzZTQxZmZmNjE2YWY0Y2VmOGQzYmQzMzgzM2E2YmRmYzAu
LmE3OGQ4ODMyYWE0ZDNkZWMzODljZTc5ZTdjMWM2ZWNhY2RmMDZhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VI
eXBlcnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRp
YyBBdGtIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0a0h5cGVy
dGV4dCogaHlwZXJ0ZXh0LCBnCiAKICAgICBnaW50IGN1cnJlbnRMaW5rID0gLTE7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOworICAgICAgICBBWENvcmVPYmplY3QqIGNv
cmVDaGlsZCA9IGNoaWxkLmdldCgpOwogICAgICAgICBpZiAoIWNvcmVDaGlsZC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGNvcmVDaGls
ZC0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX0hZUEVS
TElOS19JTVBMKGF4T2JqZWN0KSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0
QWNjZXNzaWJsZUh5cGVydGV4dEdldE5MaW5rcyhBdGtIeXBlcnRleHQqIGh5cGVydGV4dCkKICAg
ICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGNoaWxkcmVuID0gY29yZShoeXBlcnRleHQpLT5jaGlsZHJlbigpOwogICAgIGdpbnQgbGlua3NG
b3VuZCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOworICAgICAg
ICBBWENvcmVPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOwogICAgICAgICBpZiAoIWNv
cmVDaGlsZC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBhdXRvKiBh
eE9iamVjdCA9IGNvcmVDaGlsZC0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKGF4T2JqZWN0
ICYmIEFUS19JU19IWVBFUkxJTktfSU1QTChheE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCmluZGV4IDE3Yjk4MDY0YWRhNmMzMDIwYjAxOGE3MmFm
OTg0YmNmZmQ2OGJlZGYuLjc0NTE2YTEyMDcyNzc3ZTFkZjkwY2JmYjQ4YjQ5MjQ3MTgzYmE0YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCkBAIC02Nywx
NCArNjcsMTQgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPYmplY3RGb3JDb3Jl
U2VsZWN0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUKICAgICBpZiAoIWNoaWxkcmVuLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBs
aXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0T2JqZWN0LT5p
c01lbnVMaXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
bGlzdE9iamVjdDsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZyb21M
aXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIEFYQ29yZU9i
amVjdCogb3B0aW9uRnJvbUxpc3QoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgp
CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0
aW9uKTsKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgaW5kZXggPCAwKQpAQCAtOTIsNyArOTIs
NyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uRnJvbUxpc3QoQXRrU2VsZWN0
aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0
YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9uKEF0a1NlbGVjdGlv
biogc2VsZWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIEFYQ29yZU9iamVjdCogb3B0aW9uRnJv
bVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKIHsKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29yZShzZWxlY3Rpb24pOwogICAg
IGlmICghY29yZVNlbGVjdGlvbiB8fCAhY29yZVNlbGVjdGlvbi0+aXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkgfHwgaW5kZXggPCAwKQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uQWRkU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiog
c2VsZWN0aW9uLCBnCiAgICAgaWYgKCFjb3JlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gRkFM
U0U7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChz
ZWxlY3Rpb24sIGluZGV4KTsKKyAgICBBWENvcmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21M
aXN0KHNlbGVjdGlvbiwgaW5kZXgpOwogICAgIGlmIChvcHRpb24gJiYgKGNvcmVTZWxlY3Rpb24t
PmlzTGlzdEJveCgpIHx8IGNvcmVTZWxlY3Rpb24tPmlzTWVudUxpc3QoKSkpIHsKICAgICAgICAg
b3B0aW9uLT5zZXRTZWxlY3RlZCh0cnVlKTsKICAgICAgICAgcmV0dXJuIG9wdGlvbi0+aXNTZWxl
Y3RlZCgpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vz
c2libGVTZWxlY3Rpb25SZWZTZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sCiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1NFTEVDVElPTihzZWxlY3Rpb24pLCBudWxscHRyKTsK
ICAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lC
TEUoc2VsZWN0aW9uKSwgbnVsbHB0cik7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRp
b24gPSBvcHRpb25Gcm9tU2VsZWN0aW9uKHNlbGVjdGlvbiwgaW5kZXgpOworICAgIEFYQ29yZU9i
amVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGluZGV4KTsKICAg
ICBpZiAob3B0aW9uKSB7CiAgICAgICAgIGF1dG8qIGNoaWxkID0gb3B0aW9uLT53cmFwcGVyKCk7
CiAgICAgICAgIGdfb2JqZWN0X3JlZihjaGlsZCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGlj
IGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQoQXRrU2Vs
ZWN0aW9uKiBzZWxlY3Rpb24KICAgICBpZiAoIWNvcmVTZWxlY3Rpb24pCiAgICAgICAgIHJldHVy
biBGQUxTRTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21M
aXN0KHNlbGVjdGlvbiwgaW5kZXgpOworICAgIEFYQ29yZU9iamVjdCogb3B0aW9uID0gb3B0aW9u
RnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CiAgICAgaWYgKG9wdGlvbiAmJiAoY29yZVNlbGVj
dGlvbi0+aXNMaXN0Qm94KCkgfHwgY29yZVNlbGVjdGlvbi0+aXNNZW51TGlzdCgpKSkKICAgICAg
ICAgcmV0dXJuIG9wdGlvbi0+aXNTZWxlY3RlZCgpOwogCkBAIC0yMTIsNyArMjEyLDcgQEAgc3Rh
dGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25SZW1vdmVTZWxlY3Rpb24oQXRr
U2VsZWN0aW9uKiBzZWxlY3Rpb24KICAgICBpZiAoIWNvcmVTZWxlY3Rpb24pCiAgICAgICAgIHJl
dHVybiBGQUxTRTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZy
b21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpbmRleCk7CisgICAgQVhDb3JlT2JqZWN0KiBvcHRpb24g
PSBvcHRpb25Gcm9tU2VsZWN0aW9uKHNlbGVjdGlvbiwgaW5kZXgpOwogICAgIGlmIChvcHRpb24g
JiYgKGNvcmVTZWxlY3Rpb24tPmlzTGlzdEJveCgpIHx8IGNvcmVTZWxlY3Rpb24tPmlzTWVudUxp
c3QoKSkpIHsKICAgICAgICAgb3B0aW9uLT5zZXRTZWxlY3RlZChmYWxzZSk7CiAgICAgICAgIHJl
dHVybiAhb3B0aW9uLT5pc1NlbGVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKaW5kZXggNDk2ZTI2MjI4ODVjNzhkNTA1YmUwNDE4Y2ZmZjRjNmQzZjkwY2QwMS4uYjI3
MTVjN2M1M2NhZTlkMDRhZjNlNGMwZjkzYWY5NzVmNjNkYjUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUZXh0LmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBJbnRSZWN0IHRl
eHRFeHRlbnRzKEF0a1RleHQqIHRleHQsIGdpbnQgc3RhcnRPZmZzZXQsIGdpbnQgbGVuZ3RoLCBB
dGtDb29yCiAgICAgcmV0dXJuIGV4dGVudHM7CiB9CiAKLXN0YXRpYyBpbnQgb2Zmc2V0QWRqdXN0
bWVudEZvckxpc3RJdGVtKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3N0YXRp
YyBpbnQgb2Zmc2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKGNvbnN0IEFYQ29yZU9iamVjdCogb2Jq
ZWN0KQogewogICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IHRoZSBvZmZzZXRzIGZvciB0aGUgbGlz
dCBpdGVtIG1hcmtlciBpbgogICAgIC8vIExlZnQtVG8tUmlnaHQgdGV4dCwgc2luY2Ugd2UgZXhw
b3NlIGl0IHRvZ2V0aGVyIHdpdGggdGhlIHRleHQuCkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGlj
IGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0oY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHdlYkNvcmVPZmZzZXRU
b0F0a09mZnNldChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGludCBvZmZzZXQp
CitzdGF0aWMgaW50IHdlYkNvcmVPZmZzZXRUb0F0a09mZnNldChjb25zdCBBWENvcmVPYmplY3Qq
IG9iamVjdCwgaW50IG9mZnNldCkKIHsKICAgICBpZiAoIW9iamVjdC0+aXNMaXN0SXRlbSgpKQog
ICAgICAgICByZXR1cm4gb2Zmc2V0OwpAQCAtOTkwLDcgKzk5MCw3IEBAIHN0YXRpYyBnaW50IHdl
YmtpdEFjY2Vzc2libGVUZXh0R2V0Q2FyZXRPZmZzZXQoQXRrVGV4dCogdGV4dCkKIAogICAgIC8v
IGNvcmVPYmplY3QgaXMgdGhlIHVuaWdub3JlZCBvYmplY3Qgd2hvc2Ugb2Zmc2V0IHRoZSBjYWxs
ZXIgaXMgcmVxdWVzdGluZy4KICAgICAvLyBmb2N1c2VkT2JqZWN0IGlzIHRoZSBvYmplY3Qgd2l0
aCB0aGUgY2FyZXQuIEl0IGlzIGxpa2VseSBpZ25vcmVkIC0tIHVubGVzcyBpdCdzIGEgbGluay4K
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0ZXh0KTsKKyAgICBB
WENvcmVPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKHRleHQpOwogICAgIGlmICghY29yZU9iamVj
dC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlVXRpbC5jcHAKaW5kZXggYTNiODcxYjQ0Y2EwMGE2YTA3NTZiNzdkYmMyMWRmNTRiY2Rh
YzNkOS4uNTYzOTJjMGJkODNkMWEyYTdjYjc2YTc1NGI5ZWI4ODNmMjBjZmY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVVdGlsLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIGJvb2wgc2VsZWN0aW9uQmVsb25nc1RvT2Jq
ZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libGVTZWxlY3Rpb24mCiAg
ICAgICAgICYmICgmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgIT0gbGFzdERlc2NlbmRhbnQgfHwg
cmFuZ2UtPnN0YXJ0T2Zmc2V0KCkgIT0gbGFzdE9mZnNldCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiByZWZlcmVuY2VPYmplY3QsIGludCYgb2Zmc2V0KQorQVhDb3JlT2JqZWN0KiBvYmpl
Y3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoQVhDb3JlT2JqZWN0KiByZWZlcmVuY2VP
YmplY3QsIGludCYgb2Zmc2V0KQogewogICAgIC8vIEluZGljYXRpb24gdGhhdCBzb21ldGhpbmcg
Ym9ndXMgaGFzIHRyYW5zcGlyZWQuCiAgICAgb2Zmc2V0ID0gLTE7CkBAIC0xOTgsNyArMTk4LDcg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25v
cmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAvLyBMb29rIGZvciB0aGUgYWN0dWFsIChub3QgaWdub3JpbmcgYWNjZXNzaWJpbGl0eSkgc2Vs
ZWN0ZWQgb2JqZWN0LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0VW5pZ25vcmVkUGFy
ZW50ID0gZm9jdXNlZE9iamVjdDsKKyAgICBBWENvcmVPYmplY3QqIGZpcnN0VW5pZ25vcmVkUGFy
ZW50ID0gZm9jdXNlZE9iamVjdDsKICAgICBpZiAoZmlyc3RVbmlnbm9yZWRQYXJlbnQtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgZmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmaXJz
dFVuaWdub3JlZFBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFmaXJz
dFVuaWdub3JlZFBhcmVudCkKQEAgLTIyNCw3ICsyMjQsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCogcgogICAgICAgICAvLyBiZWNhdXNlIHdlIHdhbnQgaXQgdG8gYmUgcmVsYXRpdmUgdG8gdGhl
IG9iamVjdCBvZgogICAgICAgICAvLyByZWZlcmVuY2UsIG5vdCBqdXN0IHRvIHRoZSBmb2N1c2Vk
IG9iamVjdCAod2hpY2ggY291bGQgaGF2ZQogICAgICAgICAvLyBwcmV2aW91cyBzaWJsaW5ncyB3
aGljaCBzaG91bGQgYmUgdGFrZW4gaW50byBhY2NvdW50IHRvbykuCi0gICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGF4Rmlyc3RDaGlsZCA9IHJlZmVyZW5jZU9iamVjdC0+Zmlyc3RDaGlsZCgp
OworICAgICAgICBBWENvcmVPYmplY3QqIGF4Rmlyc3RDaGlsZCA9IHJlZmVyZW5jZU9iamVjdC0+
Zmlyc3RDaGlsZCgpOwogICAgICAgICBpZiAoYXhGaXJzdENoaWxkKQogICAgICAgICAgICAgc3Rh
cnROb2RlID0gYXhGaXJzdENoaWxkLT5ub2RlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmgKaW5kZXgg
ZjZhYzc2NDY1MWM0ODJiZWJlNTJmZjY0YWIwMDExYzQ3OWFlZjNmYy4uMTcwZjViZDMyODkxOTI5
OWJkMGNjY2UzMGM0MjEyMGM5NGFhMTY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oCkBAIC02Niw2ICs2Niw2
IEBAIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdCopOwogCiBib29sIHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYpOwogCi1XZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9y
ZWQoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIGludCYgb2Zmc2V0KTsKK1dlYkNvcmU6
OkFYQ29yZU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKFdlYkNv
cmU6OkFYQ29yZU9iamVjdCosIGludCYgb2Zmc2V0KTsKIAogI2VuZGlmIC8vIEVOQUJMRShBQ0NF
U1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FY
T2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggNjg3ZjFhZWRmNzg4MTZhZTMxNWFkODZmZGYxZTdjNzNm
OWQwNWVhYi4uZGY1OGVmYTc2NTNmNjgwNTMxYzhjZTkzOTM5ZTdiMDY2MzE3MzgzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9T
Lm1tCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0
KCkpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK3Zv
aWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCog
b2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKCFvYmopCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmluZGV4IDRkZTM5MjQwMmM5NTg3NWI2ZDVk
YWNlY2Q5NmIyMWFlMDk1MDQ3MjIuLjdlMDVhY2ZmZmM5YWVhN2ZkMjRhZjY0OWQ5N2E3ZDQ4YTY5
MmRhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vz
c2liaWxpdHlPYmplY3RJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpAQCAtNDcsNyArNDcsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3Zl
cnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKQordm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KikKIHsK
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggYmNj
ZjM3ZTRmNGI2MmQ0MDkxMzE0ZGM3NmRhNWFkN2RlZGM4NjM5Ni4uODdiZmI5ZTE5MzA4ZGFlMGNh
YTA5OGRhNjY5YWM5NTIwZWNlMjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAg
ICAgICBpZiAoW3dyYXBwZXIgaXNBdHRhY2htZW50XSAmJiAhW1t3cmFwcGVyIGF0dGFjaG1lbnRW
aWV3XSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IG9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50
T2JqZWN0ID0gb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgaWYgKCFw
YXJlbnRPYmplY3QpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzg4LDcgKzM4OCw3IEBAIHN0
YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFu
Y2VzdG9yKEFjY2Vzc2liaWxpdHlPCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgLy8g
VHJ5IGEgZnV6enkgaGl0IHRlc3QgZmlyc3QgdG8gZmluZCBhbiBhY2Nlc3NpYmxlIGVsZW1lbnQu
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSAqYXhPYmplY3QgPSBudWxscHRyOwor
ICAgIEFYQ29yZU9iamVjdCAqYXhPYmplY3QgPSBudWxscHRyOwogICAgIHsKICAgICAgICAgQVhB
dHRyaWJ1dGVDYWNoZUVuYWJsZXIgZW5hYmxlQ2FjaGUobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUo
KSk7CiAgICAgICAgIGF4T2JqZWN0ID0gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KElu
dFBvaW50KHBvaW50KSk7CkBAIC0xMjQwLDcgKzEyNDAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRT
dHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykK
ICAgICAKICAgICB1bnNpZ25lZCBjb2x1bW5SYW5nZUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbHVtblJhbmdlLmZpcnN0KTsKICAgICBpZiAoY29sdW1uUmFuZ2VJbmRleCA8IGNvbHVt
bkhlYWRlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBj
b2x1bW5IZWFkZXIgPSBjb2x1bW5IZWFkZXJzW2NvbHVtblJhbmdlLmZpcnN0XTsKKyAgICAgICAg
UmVmUHRyPEFYQ29yZU9iamVjdD4gY29sdW1uSGVhZGVyID0gY29sdW1uSGVhZGVyc1tjb2x1bW5S
YW5nZS5maXJzdF07CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVy
ID0gY29sdW1uSGVhZGVyLT53cmFwcGVyKCk7CiAgICAgICAgIGlmICh3cmFwcGVyKQogICAgICAg
ICAgICAgW2hlYWRlcnMgYWRkT2JqZWN0OndyYXBwZXJdOwpAQCAtMTY2NCw3ICsxNjY0LDcgQEAg
c3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQs
IE5TU3RyaW5nICpzdHJpbmcpCiAgICAgQVhBdHRyaWJ1dGVDYWNoZUVuYWJsZXIgZW5hYmxlQ2Fj
aGUobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSk7CiAgICAgCiAgICAgLy8gQXMgbG9uZyBhcyB0
aGVyZSdzIGEgcGFyZW50IHdyYXBwZXIsIHRoYXQncyB0aGUgY29ycmVjdCBjaGFpbiB0byBjbGlt
Yi4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7IAorICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmIChwYXJlbnQpCiAgICAgICAgIHJldHVybiBw
YXJlbnQtPndyYXBwZXIoKTsKIApAQCAtMTgwMCw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgYXBw
ZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJp
bmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBJZiB0aGlzIHN0YXRpYyB0ZXh0IGlu
c2lkZSBvZiBhIGxpbmssIGl0IHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIGxpbmtlZCBlbGVtZW50
LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnQgPSBtX29iamVjdDsKKyAgICBBWENv
cmVPYmplY3QqIGVsZW1lbnQgPSBtX29iamVjdDsKICAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0ICYmIG1fb2JqZWN0LT5wYXJlbnRP
YmplY3RVbmlnbm9yZWQoKS0+aXNMaW5rKCkpCiAgICAgICAgIGVsZW1lbnQgPSBtX29iamVjdC0+
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3Bw
CmluZGV4IGQ4ZGJiOWYyYzk3YzhiY2ZkZjc4MTU5MzNhNGFlMTliZWZmMDdkYjIuLjc5MzkyOTk1
MWRkMmRjNmE0MDFjNDU4MjY2ODZhZWUyMzlhNzNiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmNwcApAQCAtOTgsMTkgKzk4LDE5IEBAIHZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjpz
ZXRUcmVlSWRlbnRpZmllcihBWElzb2xhdGVkVHJlZUlEIHRyZWVJZGVudGlmaWVyKQogICAgICAg
ICBtX2NhY2hlZFRyZWUgPSB0cmVlOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
KiBBWElzb2xhdGVkVHJlZU5vZGU6OmZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdAorQVhDb3JlT2Jq
ZWN0KiBBWElzb2xhdGVkVHJlZU5vZGU6OmZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdAogewogICAg
IGlmIChhdXRvIGZvY3VzZWRFbGVtZW50ID0gdHJlZSgpLT5mb2N1c2VkVUlFbGVtZW50KCkpCiAg
ICAgICAgIHJldHVybiBmb2N1c2VkRWxlbWVudC5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0ZWRUcmVlTm9k
ZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3QKK0FYQ29yZU9iamVjdCog
QVhJc29sYXRlZFRyZWVOb2RlOjpwYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKSBjb25z
dAogewogICAgIHJldHVybiB0cmVlKCktPm5vZGVGb3JJRChwYXJlbnQoKSkuZ2V0KCk7CiB9CiAK
LUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0
KiBBWElzb2xhdGVkVHJlZU5vZGU6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIXJlbGF0aXZlRnJhbWUoKS5jb250YWlucyhwb2lu
dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaApp
bmRleCA5MzRkNjNmNGE5YTIzMWU5ZjcyZjgzZTliNWJmYzQ2MGI0NDc3NzA5Li5jMzU0NmZiZTgy
NzUyZTk5ZWZhYTdlZGRmYTYyNzY3NmQ1NDJhNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5v
ZGUuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWElzb2xh
dGVkVHJlZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiAKLWNsYXNzIEFYSXNvbGF0ZWRU
cmVlTm9kZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29sYXRlZFRyZWVOb2RlPiB7CitjbGFzcyBBWElz
b2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMgQVhDb3JlT2JqZWN0LCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8QVhJc29sYXRlZFRyZWVOb2RlPiB7CiAKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDhfdCB7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWVOb2RlKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKTsK
ICAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0
KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlIHsgfQogCiAgICAg
Ym9vbCBpc01lZGlhQ29udHJvbExhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01lZGlhQ29udHJvbExhYmVsKTsgfQpAQCAt
MTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ltYWdlKTsg
fQogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpbGVVcGxvYWRCdXR0b24pOyB9
CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjY2Vzc2liaWxpdHlJZ25v
cmVkKTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIHBhcmVudE9iamVjdElu
dGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogcGFy
ZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzVHJlZSk7IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVHJlZUl0ZW0p
OyB9CiAgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTY3JvbGxiYXIpOyB9CkBAIC0xMTUsNyAr
MTE1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpEZXNjcmlwdGlvbik7IH0KICAgICBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpIZWxwVGV4dCk7IH0KICAgICBTdHJpbmcgdGl0bGVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpU
aXRsZSk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQgPSBW
YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJs
ZSwgT3B0aW9uYWw8RmxvYXRSZWN0Pj47CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3ZlID0gZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RD
YWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2Fj
aGVNYWMubW0KaW5kZXggMmY3NWY5NjUwOGQwNzIxYzg0MDIwNzc0YjIyMzMxNDc2OGY0ODZjNi4u
YzlhODkzYmMzMDk5NmQ5OWZlNDVjYjFiNzIxOWUzNmFjNzNhMGZkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC0y
NzYsNyArMjc2LDcgQEAgc3RhdGljIHZvaWQgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZv
KEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICpvYmplY3QsIE4KICAgICBOU0FjY2Vzc2liaWxp
dHlQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKG9iamVjdCwgbm90aWZpY2F0aW9uLCB1c2Vy
SW5mbyk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9u
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQor
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0
KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAoIW9iaikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggNmI5NTUwMjJlZDNjZGZkZTRl
ZjkwYzIxYTZmNTEwMDQxZDA2NGU2Mi4uMmNkYmM3M2FiODk4YmZiNWMzMmVlZmViNWM3ZGFiYzQ2
NjIxOWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNj
ZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoRnJvbVBhcmVudCgpCiAgICAgICAgIG92ZXJyaWRlQXR0
YWNobWVudFBhcmVudChudWxscHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpv
dmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50KQordm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2Jq
ZWN0KiBwYXJlbnQpCiB7CiAgICAgaWYgKCFpc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAppbmRleCBmZmVkODU1Yzg0
ZGRjOGZjMmQ5ZmQ1ZTQxZWVhZWRlYjEwNzQ3MTdlLi44ODU4YmVhM2QwODdiMWJiNjI2NWQ3ODdm
ZDg4MDU4ZDcxMjYyZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
aApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAtIChCT09MKXVwZGF0
ZU9iamVjdEJhY2tpbmdTdG9yZTsKIAogLy8gVGhpcyBjYW4gYmUgZWl0aGVyIGFuIEFjY2Vzc2li
aWxpdHlPYmplY3Qgb3IgYW4gQVhJc29sYXRlZFRyZWVOb2RlCi0tIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlKilheEJhY2tpbmdPYmplY3Q7CistIChXZWJDb3JlOjpBWENv
cmVPYmplY3QqKWF4QmFja2luZ09iamVjdDsKIAogLy8gVGhlc2UgYXJlIHByZS1maXhlZCB3aXRo
IGJhc2Ugc28gdGhhdCBBcHBLaXQgZG9lcyBub3QgZW5kIHVwIGNhbGxpbmcgaW50byB0aGVzZSBk
aXJlY3RseSAoYnlwYXNzaW5nIHNhZmV0eSBjaGVja3MpLgogLSAoTlNTdHJpbmcgKiliYXNlQWNj
ZXNzaWJpbGl0eVRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
CmluZGV4IGRhZjM0ZjE1MGY1N2EzNzIyMTcxN2E2ZTBhMjJhMWFiYmM1ZjVlNjQuLmZhODliNmFk
OTgwOTNiZGY3YTE4NTdmOTY3YjA3MDEyOWRhNjI1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgTlNBcnJheSAq
Y29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaQogICAgIHJldHVybiBhcnJheTsKIH0KIAotc3RhdGljIHZvaWQgYWRkQ2hpbGRUb0Fy
cmF5KEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGFycmF5KQorc3RhdGljIHZvaWQgYWRkQ2hpbGRUb0FycmF5KEFYQ29yZU9iamVj
dCYgY2hpbGQsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYXJyYXkpCiB7CiAgICAgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKndyYXBwZXIgPSBjaGlsZC53cmFwcGVyKCk7CiAgICAg
Ly8gV2Ugd2FudCB0byByZXR1cm4gdGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBv
YmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdHRhY2htZW50LApAQCAtMzA2LDcgKzMwNiw3IEBAIE5T
QXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX29iamVj
dCA9IGF4T2JqZWN0OwotICAgIF9pZGVudGlmaWVyID0gbV9vYmplY3QtPmF4T2JqZWN0SUQoKTsK
KyAgICBfaWRlbnRpZmllciA9IG1fb2JqZWN0LT5vYmplY3RJRCgpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC0zODYsNyArMzg2LDcgQEAgTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25z
dCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGQKICAgICBy
ZXR1cm4gX2F4QmFja2luZ09iamVjdC0+dGl0bGVBdHRyaWJ1dGVWYWx1ZSgpOwogfQogCi0tIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKilheEJhY2tpbmdPYmplY3QKKy0g
KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopYXhCYWNraW5nT2JqZWN0CiB7CiAjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBpZiAoX0FYVUlFbGVtZW50UmVxdWVzdFNl
cnZpY2VkQnlTZWNvbmRhcnlBWFRocmVhZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQppbmRleCAwMTUwZmNhZTdhZmQxMTU3ODU1ZTA2NmEzNzA1NGNjNTY3ZThiNDkz
Li5jNTcwOTQ5YzU2MGI1ZmExMWJjNDQzMDA5MGUyMjUzYzY5NWM4ZTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjY2NywxNSArMjY2NywxNSBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgCiAgICAgICAgIC8vIFRy
ZWUgaXRlbSAoY2hhbmdlZCB0byBBWFJvd3MpIGNhbiBvbmx5IHJlcG9ydCB0aGUgdHJlZSAoQVhP
dXRsaW5lKSBhcyBpdHMgcGFyZW50LgogICAgICAgICBpZiAoX2F4QmFja2luZ09iamVjdC0+aXNU
cmVlSXRlbSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudCA9IF9heEJhY2tpbmdPYmplY3Qt
PnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpOworICAgICAgICAgICAgYXV0byBwYXJl
bnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAg
ICAgIHdoaWxlIChwYXJlbnQpIHsKICAgICAgICAgICAgICAgICBpZiAocGFyZW50LT5pc1RyZWUo
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwotICAgICAg
ICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVk
KCk7CisgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9y
ZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYXV0byBw
YXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQo
KTsKKyAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgICAgICByZXR1cm4gbmls
OwogICAgICAgICAKQEAgLTI4NjEsMTQgKzI4NjEsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIAogICAgICAgICAvLyByYWRpbyBncm91cHMgcmV0dXJu
IHRoZSBzZWxlY3RlZCByYWRpbyBidXR0b24gYXMgdGhlIEFYVmFsdWUKICAgICAgICAgaWYgKG1f
b2JqZWN0LT5pc1JhZGlvR3JvdXAoKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogcmFkaW9CdXR0b24gPSBtX29iamVjdC0+c2VsZWN0ZWRSYWRpb0J1dHRvbigpOworICAgICAg
ICAgICAgQVhDb3JlT2JqZWN0KiByYWRpb0J1dHRvbiA9IG1fb2JqZWN0LT5zZWxlY3RlZFJhZGlv
QnV0dG9uKCk7CiAgICAgICAgICAgICBpZiAoIXJhZGlvQnV0dG9uKQogICAgICAgICAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgICAgICAgICByZXR1cm4gcmFkaW9CdXR0b24tPndyYXBwZXIoKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkg
ewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFiSXRlbSA9IG1fb2JqZWN0LT5z
ZWxlY3RlZFRhYkl0ZW0oKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogdGFiSXRlbSA9IG1f
b2JqZWN0LT5zZWxlY3RlZFRhYkl0ZW0oKTsKICAgICAgICAgICAgIGlmICghdGFiSXRlbSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJuIHRhYkl0ZW0tPndy
YXBwZXIoKTsKQEAgLTMwNjMsNyArMzA2Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY29sdW1uLmNo
aWxkcmVuKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXSkgewotICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gY29sdW1uLmhlYWRlck9iamVjdCgpOworICAg
ICAgICAgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXIgPSBjb2x1bW4uaGVhZGVyT2JqZWN0KCk7CiAg
ICAgICAgICAgICBpZiAoIWhlYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICAgICAgcmV0dXJuIGhlYWRlci0+d3JhcHBlcigpOwpAQCAtMzE2OCw3ICszMTY4LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlB
UklBR3JpZFJvdz4oKm1fb2JqZWN0KSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogcm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93PigqbV9vYmplY3QpLmRp
c2Nsb3NlZEJ5Um93KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIHJvdyA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdz4oKm1fb2JqZWN0KS5kaXNjbG9zZWRCeVJvdygpOwog
ICAgICAgICAgICAgaWYgKCFyb3cpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAg
ICAgICAgIHJldHVybiByb3ctPndyYXBwZXIoKTsKQEAgLTM1MTEsNyArMzUxMSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gbmlsOwogICAg
IAogICAgIF9heEJhY2tpbmdPYmplY3QtPnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBheE9iamVjdCA9IF9heEJhY2tpbmdPYmpl
Y3QtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7CisgICAgQVhDb3JlT2Jq
ZWN0KiBheE9iamVjdCA9IF9heEJhY2tpbmdPYmplY3QtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KElu
dFBvaW50KHBvaW50KSk7CiAgICAgaWYgKGF4T2JqZWN0KSB7CiAgICAgICAgIGlmIChheE9iamVj
dC0+aXNBdHRhY2htZW50KCkgJiYgW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXdd
KQogICAgICAgICAgICAgcmV0dXJuIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWNlNWM5YTgwMTRkMTJiYTg0ZGYz
NDhjN2ZmNDhlZjEyYWM0ODkyYy4uZTFlMjNhNzZhNGQ5NDZmOWVhMjdmNjI2YTIyYjJjYzc3OGE5
NGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtNTMsNyArNTMs
NyBAQCBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6Okluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdChJbnNwZWN0b3JBdQogewogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0
eU9iamVjdCogYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShOb2RlJiBub2RlKQorc3RhdGljIEFY
Q29yZU9iamVjdCogYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShOb2RlJiBub2RlKQogewogICAg
IGlmICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAgICAgICAgQVhP
YmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwpAQCAtNzEsNyArNzEsNyBAQCBFeGNl
cHRpb25PcjxWZWN0b3I8UmVmPE5vZGU+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpnZXRFbGVtZW50c0J5QwogICAgIFZlY3RvcjxSZWY8Tm9kZT4+IG5vZGVzOwogCiAgICAg
Zm9yIChFbGVtZW50JiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGlzPENvbnRhaW5lck5v
ZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRv
Y3VtZW50KSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBh
Y2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChBWENvcmVP
YmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShlbGVtZW50KSkgewog
ICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKSA9PSByb2xlKQog
ICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChlbGVtZW50KTsKICAgICAgICAgfQpAQCAtODQs
MTcgKzg0LDE3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpnZXRBY3RpdmVEZXNjZW5kYW50CiB7CiAgICAgRVJST1JfSUZfTk9f
QUNUSVZFX0FVRElUKCk7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3Qg
PSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURlc2NlbmRh
bnQoKSkKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVj
dEZvck5vZGUobm9kZSkpIHsKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogYWN0aXZlRGVzY2Vu
ZGFudCA9IGF4T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
YWN0aXZlRGVzY2VuZGFudC0+bm9kZSgpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1zdGF0aWMgdm9pZCBhZGRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiBwYXJlbnRP
YmplY3QsIFZlY3RvcjxSZWZQdHI8Tm9kZT4+JiBjaGlsZE5vZGVzKQorc3RhdGljIHZvaWQgYWRk
Q2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBwYXJlbnRPYmplY3QsIFZlY3RvcjxSZWZQdHI8Tm9kZT4+
JiBjaGlsZE5vZGVzKQogewotICAgIGZvciAoY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+JiBjaGlsZE9iamVjdCA6IHBhcmVudE9iamVjdC5jaGlsZHJlbigpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZE9iamVjdCA6IHBhcmVudE9iamVjdC5jaGlsZHJlbigpKSB7CiAgICAg
ICAgIGlmIChOb2RlKiBjaGlsZE5vZGUgPSBjaGlsZE9iamVjdC0+bm9kZSgpKQogICAgICAgICAg
ICAgY2hpbGROb2Rlcy5hcHBlbmQoY2hpbGROb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTA4LDcg
KzEwOCw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxWZWN0b3I8
UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4
T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChBWENv
cmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewog
ICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBjaGlsZE5vZGVzOwogICAgICAgICBhZGRDaGls
ZHJlbigqYXhPYmplY3QsIGNoaWxkTm9kZXMpOwogICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGNo
aWxkTm9kZXMpOwpAQCAtMTIzLDEwICsxMjMsMTAgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8SW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+PiBJbnMK
IAogICAgIE9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Q29tcHV0
ZWRQcm9wZXJ0aWVzPiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhP
YmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgaWYgKEFYQ29y
ZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAg
ICAgICAgIENvbXB1dGVkUHJvcGVydGllcyBjb21wdXRlZFByb3BlcnRpZXM7CiAKLSAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0OworICAgICAgICBBWENvcmVP
YmplY3QqIGN1cnJlbnQgPSBheE9iamVjdDsKICAgICAgICAgd2hpbGUgKGN1cnJlbnQgJiYgKCFj
b21wdXRlZFByb3BlcnRpZXMuYnVzeSB8fCAhY29tcHV0ZWRQcm9wZXJ0aWVzLmJ1c3kudmFsdWUo
KSkpIHsKICAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVydGllcy5idXN5ID0gY3VycmVudC0+aXNC
dXN5KCk7CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T2JqZWN0KCk7CkBA
IC0yNDcsNyArMjQ3LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2Rl
Pj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlvbmFs
PFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9i
amVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAg
aWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5v
ZGUpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNvbnRyb2xsZWROb2RlczsKIAog
ICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGNvbnRyb2xsZWRFbGVtZW50czsKQEAgLTI2OSw3ICsy
NjksNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJl
ZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
amVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3Jl
T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAg
ICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gZmxvd2VkTm9kZXM7CiAKICAgICAgICAgVmVjdG9y
PEVsZW1lbnQqPiBmbG93ZWRFbGVtZW50czsKQEAgLTI4OSw3ICsyODksNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TW91
c2VFdmVudE5vZGUoTgogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9y
Tm9kZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJs
aXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q+KGF4T2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdD4oYXhPYmplY3QpLT5tb3VzZUJ1dHRvbkxpc3RlbmVyKE1vdXNlQnV0
dG9uTGlzdGVuZXJSZXN1bHRGaWx0ZXI6OkluY2x1ZGVCb2R5RWxlbWVudCk7CiAgICAgfQpAQCAt
MzAzLDcgKzMwMyw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+
Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxW
ZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlm
IChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2Rl
KSkgewogICAgICAgICBpZiAoYXhPYmplY3QtPnN1cHBvcnRzQVJJQU93bnMoKSkgewogICAgICAg
ICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gb3duZWROb2RlczsKIApAQCAtMzI1LDggKzMyNSw4
IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpnZXRQYXJlbnROb2RlKE5vZGUmCiB7CiAgICAgRVJST1JfSUZfTk9fQUNUSVZFX0FV
RElUKCk7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3Np
YmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpCisg
ICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2Rl
KG5vZGUpKSB7CisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdCA9IGF4T2Jq
ZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnRP
YmplY3QtPm5vZGUoKTsKICAgICB9CiAKQEAgLTMzOSwxMiArMzM5LDEyIEBAIEV4Y2VwdGlvbk9y
PE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0
OwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0g
YWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRy
PE5vZGU+PiBzZWxlY3RlZENoaWxkTm9kZXM7CiAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CisgICAgICAg
IEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRy
ZW47CiAgICAgICAgIGF4T2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4p
OwotICAgICAgICBmb3IgKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgc2VsZWN0ZWRDaGls
ZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4pIHsKKyAgICAgICAgZm9yIChhdXRvJiBzZWxlY3Rl
ZENoaWxkT2JqZWN0IDogc2VsZWN0ZWRDaGlsZHJlbikgewogICAgICAgICAgICAgaWYgKE5vZGUq
IHNlbGVjdGVkQ2hpbGROb2RlID0gc2VsZWN0ZWRDaGlsZE9iamVjdC0+bm9kZSgpKQogICAgICAg
ICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2Rlcy5hcHBlbmQoc2VsZWN0ZWRDaGlsZE5vZGUpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDYwNGRiNTJkOTY4MTZkNzg5YWMwYjE2NThiYTlmODM2
YTA1OTk3M2EuLjNlYWQxMzVhZDM0NGE1ZTJhMWRjMzZlZmMwNGU3NDQxNGU3MTdmN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAg
IHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vz
c2liaWxpdHlDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCwgSlNPTjo6QXJy
YXlPZjxpbnQ+JiBjaGlsZE5vZGVJZHMpCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwcm9jZXNz
QWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEpTT046OkFycmF5
T2Y8aW50PiYgY2hpbGROb2RlSWRzKQogewogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYXhP
YmplY3QuY2hpbGRyZW4oKTsKICAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkKQEAgLTE4MjQsMTMg
KzE4MjQsMTMgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0
eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICB1bnNpZ25lZCBsZXZlbCA9
IDA7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSA9IG5vZGUtPmRvY3Vt
ZW50KCkuYXhPYmplY3RDYWNoZSgpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUpKSB7CisgICAgICAg
IGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYXhPYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUo
bm9kZSkpIHsKIAotICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURl
c2NlbmRhbnQgPSBheE9iamVjdC0+YWN0aXZlRGVzY2VuZGFudCgpKQorICAgICAgICAgICAgaWYg
KEFYQ29yZU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCA9IGF4T2JqZWN0LT5hY3RpdmVEZXNjZW5k
YW50KCkpCiAgICAgICAgICAgICAgICAgYWN0aXZlRGVzY2VuZGFudE5vZGUgPSBhY3RpdmVEZXNj
ZW5kYW50LT5ub2RlKCk7CiAKICAgICAgICAgICAgIC8vIEFuIEFYIG9iamVjdCBpcyAiYnVzeSIg
aWYgaXQgb3IgYW55IGFuY2VzdG9yIGhhcyBhcmlhLWJ1c3k9InRydWUiIHNldC4KLSAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGN1cnJlbnQgPSBheE9iamVjdDsKKyAgICAgICAgICAg
IEFYQ29yZU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0OwogICAgICAgICAgICAgd2hpbGUgKCFi
dXN5ICYmIGN1cnJlbnQpIHsKICAgICAgICAgICAgICAgICBidXN5ID0gY3VycmVudC0+aXNCdXN5
KCk7CiAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9iamVjdCgpOwpA
QCAtMTk3MSw3ICsxOTcxLDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNj
ZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpCisg
ICAgICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCkpCiAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVu
dE9iamVjdC0+bm9kZSgpOwogCiAgICAgICAgICAgICBzdXBwb3J0c1ByZXNzZWQgPSBheE9iamVj
dC0+cHJlc3NlZElzUHJlc2VudCgpOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRP
TUFnZW50OjpidWkKICAgICAgICAgICAgIHJvbGUgPSBheE9iamVjdC0+Y29tcHV0ZWRSb2xlU3Ry
aW5nKCk7CiAgICAgICAgICAgICBzZWxlY3RlZCA9IGF4T2JqZWN0LT5pc1NlbGVjdGVkKCk7CiAK
LSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBzZWxlY3RlZENoaWxkcmVuOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKICAgICAgICAgICAgIGF4T2Jq
ZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4pOwogICAgICAgICAgICAgaWYg
KHNlbGVjdGVkQ2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGls
ZE5vZGVJZHMgPSBKU09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGNiN2Jl
YWExM2FjMzU0ZTk0ZjgwN2I1YjgzNjU5MjUzMmM5OWQ0YjUuLmQ5MTdlNTAyMTc5MTQ1YzgwMGI1
MjA2OGQ1ZjI1MzU2NmZmYzIxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNW
YWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0
OworY2xhc3MgQVhDb3JlT2JqZWN0OwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIERPTUVk
aXRvcjsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjI1LDcgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVp
bGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmLCBOb2RlVG9JZE1hcCogbm9k
ZXNNYXApOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+
IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ciYsIGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBkaXNhYmxlZCwgYm9vbCBoYXNCcmVha3BvaW50KTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmpl
Y3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKik7Ci0gICAgdm9pZCBwcm9jZXNzQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QmLCBKU09OOjpBcnJheU9mPGlu
dD4mKTsKKyAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQVhDb3JlT2JqZWN0
JiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CiAgICAgCiAgICAgTm9kZSogbm9kZUZvclBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKTsKICAgICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5n
JiBvYmplY3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDI0NGU1Yjk1NDhm
ZmUzOWFhNThjYzNlZjgxOWU3NmJiY2M1MjkyNzcuLmI4ZWFlZDkzZjZjMjBkYWRlYTI3NzY3NTY0
Mjc5OWRkNzQ2ZjkyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC01Niw3ICs1
Niw3IEBACiAjaW5jbHVkZSAiV2ViUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0FjY2Vzc2liaWxpdHlPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQqIFdLQWNjZXNzaWJpbGl0eVJvb3RP
YmplY3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiAgICAgCiAgICAgV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwogCi0gICAgV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdCogcm9vdCA9IGNvcmUuZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290
T2JqZWN0KCk7CisgICAgV2ViQ29yZTo6QVhDb3JlT2JqZWN0KiByb290ID0gY29yZS5kb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKICAgICBpZiAoIXJvb3QpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQqIFdLQWNjZXNzaWJp
bGl0eUZvY3VzZWRPYmplY3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiAKICAgICBXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CiAKLSAgICBXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkT2JqZWN0ID0gV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UocGFnZSk7CisgICAgV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0KiBmb2N1c2VkT2JqZWN0ID0gV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxl
bWVudEZvclBhZ2UocGFnZSk7CiAgICAgaWYgKCFmb2N1c2VkT2JqZWN0KQogICAgICAgICByZXR1
cm4gMDsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382297</attachid>
            <date>2019-10-30 05:35:46 -0700</date>
            <delta_ts>2019-10-30 05:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203408-20191030083544.patch</filename>
            <type>text/plain</type>
            <size>261154</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkOWFkMjljMmQzMzJh
ODMwMTAyYjIxMGRlZTllZmFmNjg3MDE5NC4uODc3ZjhiMmU3OGIwZmM1YWI3ODc3MzJiOTlhODVh
ZTlmZWFjYzQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxNSBAQAorMjAxOS0xMC0zMCAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJh
c2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVl
Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBuZWVkZWQgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBBWENvcmVPYmplY3QgaXMgbm93IGEgY29tbW9uIGJhc2UgY2xhc3Mg
Zm9yIGJvdGggQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQKKyAgICAgICAgQVhJc29sYXRlZFRyZWVO
b2RlLiBBbGwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSBBWENvcmVPYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBhbnkgb2YgdGhlIGRlcml2ZWQgY2xhc3Nlcy4gVGhpcyB3aWxsIGFsbG93IHRvIHNl
YW1sZXNzbHkgc3dpdGNoCisgICAgICAgIGJldHdlZW4gdXNpbmcgQVhJc29sYXRlZFRyZWVOb2Rl
IGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkIGFuZAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGluIHRoZSBtYWluIHRocmVhZCB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbworICAgICAg
ICBhbGxvd3MgZm9yIGNsZWFuZXIgY2xpZW50IGNvZGUsIGVuY2Fwc3VsYXRpbmcgdGhlIGRlY2lz
aW9uIHdoZXRoZXIKKyAgICAgICAgQVhJc29sYXRlZFRyZWVOb2RlIGNhbiByZXNwb25kIHRvIGEg
cmVxdWVzdCBvciBuZWVkIHRvIHJlc29ydCB0byBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LCBhbmQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjb21waWxlCisg
ICAgICAgIHRpbWUgZmxhZyBjaGVja3MgZm9yIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0QVhJRCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0
TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJy
ZWRDYWNoZVVwZGF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmF4Um93U3BhbldpdGhSb3dJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9t
aW5hdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb250YWluc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjpB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjppc051bGwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OlZpc2libGVQb3NpdGlvblJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjppc051bGwgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjppc051bGwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbjo6QWNjZXNzaWJpbGl0
eVRleHRPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0QVhPYmplY3RJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJ
bWFnZUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3
b3JkRmllbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNOYXRpdmVUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzUmFkaW9CdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNOYXRpdmVMaXN0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdEJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3hPcHRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNNZWRpYVRpbWVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUJhciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVCdXR0
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0lucHV0SW1hZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NsaWRlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1NsaWRlclRodW1iIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzSW5wdXRTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250cm9sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGFiZWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFi
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEYXRhVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RhYmxlQ29sdW1uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVDZWxsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRmll
bGRzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNHcm91cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FSSUFUcmVlR3JpZFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUxpc3RQb3B1
cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BpbkJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZVNwaW5CdXR0b24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGlu
QnV0dG9uUGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01vY2tPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZWRpYU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RvZ2dsZUJ1
dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RhYkxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFkaW9Hcm91cCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbWJvQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVHJlZUdy
aWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMaXN0SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDYW52YXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQ
b3BVcEJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0NvbG9yV2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwbGl0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9vbGJhciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N1bW1hcnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXND
aGVja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1NlbGVjdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRm9jdXNlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hvdmVyZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbmRldGVy
bWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTG9hZGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT2ZmU2NyZWVuIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1VudmlzaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Zpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSZXF1aXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlua2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0V4cGFuZGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25B
Y3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzQm9sZEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzSXRhbGljRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQbGFpblRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZUZvbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzU2FtZUZvbnRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNTYW1lU3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdGF0aWNUZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
YW5TZXRGb2N1c0F0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldFZhbHVl
QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5T
ZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmlidXRlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0xldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYmxlTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2YWx1ZUZv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5n
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXlvdXRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojplc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNBUklBT3ducyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBRHJvcHBpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBR3JhYmJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBUklB
R3JhYmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RDaGlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmlvdXNTaWJsaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5leHRTaWJsaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtlZFVJRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGVV
SUVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRy
b2xFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9s
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlSGFzUHJl
c2VudGF0aW9uYWxDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBUklBU3RhdGljVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4
dExlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhTGFiZWxlZEJ5QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
eHBhbmRlZFRleHRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbG9yVmFsdWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXhP
YmplY3RJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBpeGVs
U25hcHBlZEJvdW5kaW5nQm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxl
Y3RlZFRleHRSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25TdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25FbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZWxlY3RlZFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzS2V5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OndpZGdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVkVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRT
ZWxlY3RlZFJvd3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6bWFrZVJhbmdlVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtRGVmYXVsdEFjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmNyZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVjcmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhhdmVD
aGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1
YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bmVlZHNUb1VwZGF0ZUNoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGFiQ2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFu
ZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRzRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0
VmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVha3MgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdl
Rm9yTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWEJvdW5kc0Zv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ1ZhbHVl
Rm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZl
UmVnaW9uUmVsZXZhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1c3kgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlYWtBc1Byb3BlcnR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
TWF0aEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNNYXRoRnJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoRmVuY2VkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhVbmRlck92ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoUm9vdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTcXVh
cmVSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWF0aFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNl
T3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoSWRlbnRpZmllciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhU
YWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01hdGhUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUYWJsZUNlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNN
YXRoVG9rZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhS
YWRpY2FuZE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUm9vdEluZGV4T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJhdG9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGhEZW5vbWluYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoQmFzZU9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vic2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRo
RmVuY2VkT3BlblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aExpbmVUaGlja25lc3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSGlkZGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6Y2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFpblRl
eHRSYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
blJhbmdlOjpWaXNpYmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb25SYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0
dG9uR3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpkZWNyZW1l
bnRCdXR0b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkhlYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdyBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaXN0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAg
ICAgICAgKHJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtHZXRTdGFydEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRFbmRJbmRleCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJ0ZXh0R2V0TGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0Tkxp
bmtzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKToK
KyAgICAgICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24p
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVNlbGVjdGlvblJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAob2Zm
c2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKToKKyAgICAgICAgKHdlYkNvcmVPZmZzZXRUb0F0a09m
ZnNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAg
ICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IpOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVs
ZW1lbnRzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlDb250YWluZXJdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUxpbmtlZEVsZW1lbnRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAg
ICAgKGFkZENoaWxkVG9BcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBheEJhY2tpbmdPYmplY3RdKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vz
c2libGl0eU9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QWN0aXZlRGVz
Y2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENoaWxkTm9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRD
b21wdXRlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpnZXRDb250cm9sbGVkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRGbG93ZWROb2Rlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldE1vdXNl
RXZlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0
eU9iamVjdDo6Z2V0T3duZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRTZWxlY3RlZENoaWxkTm9kZXMp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKwogMjAxOS0xMC0yNiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIE1haW4gaW1wbGVtZW50YXRpb24gZm9yIGxhenkgaW1hZ2UgbG9h
ZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA4NmU2N2NkNGUwOThjMzE5MDk2MDVkYjE2NDliNzgxNjRiMDUxYWU0
Li44MzY3ODVmYzFkNmJkY2NhNDRjYzM2OGZiNmQ2YmQzOTI3ZDhlOTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE5LTEwLTMwICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFw
cGxlLmNvbT4KKworICAgICAgICBDcmVhdGUgYmFzZSBjbGFzcyBjb21tb24gdG8gQWNjZXNzaWJp
bGl0eU9iamVjdCBhbmQgQVhJc29sYXRlZFRyZWVOb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KTogVXNlcyBBWENvcmVPYmplY3QgaW5zdGVhZCBvZiBBY2Nlc3NpYmlsaXR5T2JqZWN0LgorICAg
ICAgICAoV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdCk6IFVzZXMgQVhDb3JlT2JqZWN0IGlu
c3RlYWQgb2YgQWNjZXNzaWJpbGl0eU9iamVjdC4KKwogMjAxOS0xMC0yNiAgQ2hyaXMgTG9yZCAg
PGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgUHV0IE9mZnNjcmVlbkNhbnZhcyBiZWhpbmQg
YSBidWlsZCBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCBhYWU0ZDg2MzhiNTMwMWEwZTAzMTYwYTI4M2UxYjIyODY1NGNlODAxLi45
N2FlZjZhNGI4MzZmNjM4MTNlMDA1YmVjNjc0MmYxYjBiOTExZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBA
QCBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiAgICAgZm9yIChjb25zdCBhdXRvJiBv
YmplY3QgOiBtX29iamVjdHMudmFsdWVzKCkpIHsKICAgICAgICAgZGV0YWNoV3JhcHBlcihvYmpl
Y3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOwog
ICAgICAgICBvYmplY3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hl
RGVzdHJveWVkKTsKLSAgICAgICAgb2JqZWN0LT5zZXRBWE9iamVjdElEKDApOworICAgICAgICBv
YmplY3QtPnNldE9iamVjdElEKDApOwogICAgIH0KIH0KIApAQCAtMzM2LDE1ICszMzYsMTUgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVt
ZW50KEhUTUxBcmVhRWxlbWVudCogYXIKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhS
ZW5kZXJJbWFnZS0+Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbms+KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisK
ICAgICAgICAgaWYgKGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpjaGlsZCku
YXJlYUVsZW1lbnQoKSA9PSBhcmVhRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBjaGlsZC5n
ZXQoKTsKLSAgICB9ICAgIAorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbms+KGNoaWxkLmdldCgpKTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1
c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQorQVhDb3JlT2JqZWN0KiBBWE9i
amVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogewog
ICAgIGlmICghZ0FjY2Vzc2liaWxpdHlFbmFibGVkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTM1NSwxMiArMzU1LDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6
OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgaWYgKGlzPEhU
TUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZm9jdXNlZElt
YWdlTWFwVUlFbGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQp
KTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGZvY3VzZWREb2N1bWVudC0+YXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5v
ZGUqPihmb2N1c2VkRWxlbWVudCkgOiBmb2N1c2VkRG9jdW1lbnQpOworICAgIEFYQ29yZU9iamVj
dCogb2JqID0gZm9jdXNlZERvY3VtZW50LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZv
Y3VzZWRFbGVtZW50ID8gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZvY3VzZWRFbGVtZW50KSA6IGZvY3Vz
ZWREb2N1bWVudCk7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKG9iai0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2ZURlc2NlbmRhbnQo
KSkKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogZGVzY2VuZGFudCA9IG9iai0+YWN0aXZlRGVz
Y2VuZGFudCgpKQogICAgICAgICAgICAgb2JqID0gZGVzY2VuZGFudDsKICAgICB9CiAKQEAgLTU2
MCw4ICs1NjAsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNy
ZWF0ZShXaWRnZXQqIHdpZGdldCkKIAogICAgIGdldEFYSUQobmV3T2JqLmdldCgpKTsKICAgICAK
LSAgICBtX3dpZGdldE9iamVjdE1hcHBpbmcuc2V0KHdpZGdldCwgbmV3T2JqLT5heE9iamVjdElE
KCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCksIG5ld09iaik7ICAg
IAorICAgIG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5zZXQod2lkZ2V0LCBuZXdPYmotPm9iamVjdElE
KCkpOworICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmopOwogICAg
IG5ld09iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsKICAgICBy
ZXR1cm4gbmV3T2JqLmdldCgpOwpAQCAtNjA4LDggKzYwOCw4IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKE5vZGUqIG5vZGUpCiAKICAgICBnZXRBWElE
KG5ld09iai5nZXQoKSk7CiAKLSAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdP
YmotPmF4T2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQo
KSwgbmV3T2JqKTsKKyAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdPYmotPm9i
amVjdElEKCkpOworICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmop
OwogICAgIG5ld09iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsK
ICAgICBuZXdPYmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKTsKQEAgLTYzNiw4ICs2MzYsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAg
ICAgZ2V0QVhJRChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNl
dChyZW5kZXJlciwgbmV3T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3
T2JqLT5heE9iamVjdElEKCksIG5ld09iaik7CisgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNl
dChyZW5kZXJlciwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09i
ai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hX
cmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgbmV3T2JqLT5zZXRMYXN0S25vd25Jc0lnbm9yZWRW
YWx1ZShuZXdPYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSk7CkBAIC03MDksNyArNzA5LDcg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZSkKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgbV9vYmplY3RzLnNldChvYmotPmF4T2JqZWN0SUQoKSwgb2JqKTsgICAgCisgICAgbV9vYmpl
Y3RzLnNldChvYmotPm9iamVjdElEKCksIG9iaik7CiAgICAgb2JqLT5pbml0KCk7CiAgICAgYXR0
YWNoV3JhcHBlcihvYmouZ2V0KCkpOwogICAgIHJldHVybiBvYmouZ2V0KCk7CkBAIC03MjYsNyAr
NzI2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoQVhJRCBheElEKQogCiAgICAgZGV0
YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxl
bWVudERlc3Ryb3llZCk7CiAgICAgb2JqZWN0LT5kZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1l
bnRUeXBlOjpFbGVtZW50RGVzdHJveWVkLCB0aGlzKTsKLSAgICBvYmplY3QtPnNldEFYT2JqZWN0
SUQoMCk7CisgICAgb2JqZWN0LT5zZXRPYmplY3RJRCgwKTsKIAogICAgIG1faWRzSW5Vc2UucmVt
b3ZlKGF4SUQpOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCkBAIC03
OTksNyArNzk5LDcgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUdlbmVyYXRlQVhJRCgp
IGNvbnN0CiBBWElEIEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQogewogICAgIC8vIGNoZWNrIGZvciBhbHJlYWR5LWFzc2lnbmVkIElECi0gICAgQVhJRCBv
YmpJRCA9IG9iai0+YXhPYmplY3RJRCgpOworICAgIEFYSUQgb2JqSUQgPSBvYmotPm9iamVjdElE
KCk7CiAgICAgaWYgKG9iaklEKSB7CiAgICAgICAgIEFTU0VSVChtX2lkc0luVXNlLmNvbnRhaW5z
KG9iaklEKSk7CiAgICAgICAgIHJldHVybiBvYmpJRDsKQEAgLTgwOCw3ICs4MDgsNyBAQCBBWElE
IEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIG9i
aklEID0gcGxhdGZvcm1HZW5lcmF0ZUFYSUQoKTsKIAogICAgIG1faWRzSW5Vc2UuYWRkKG9iaklE
KTsKLSAgICBvYmotPnNldEFYT2JqZWN0SUQob2JqSUQpOworICAgIG9iai0+c2V0T2JqZWN0SUQo
b2JqSUQpOwogICAgIAogICAgIHJldHVybiBvYmpJRDsKIH0KQEAgLTg4MSwxMiArODgxLDEyIEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFJlbmRlck9iamVjdCogbmV3Q2hpCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJl
cikpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmopCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBWENv
cmVPYmplY3QqIG9iaikKIHsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3QuYWRkKG9iaik7CisgICAgbV9kZWZlcnJlZENo
aWxkcmVuQ2hhbmdlZExpc3QuYWRkKG9iaik7CiB9CiAgICAgCiB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKQEAgLTg5OSw4ICs4OTksOCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKICAgICBhdXRvIG5vdGlm
aWNhdGlvbnMgPSBXVEZNb3ZlKG1fbm90aWZpY2F0aW9uc1RvUG9zdCk7CiAgICAgCiAgICAgZm9y
IChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0aW9ucykgewotICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgpOwotICAgICAgICBpZiAoIW9iai0+YXhP
YmplY3RJRCgpKQorICAgICAgICBBWENvcmVPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7
CisgICAgICAgIGlmICghb2JqLT5vYmplY3RJRCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKCFvYmotPmF4T2JqZWN0Q2FjaGUoKSkKQEAgLTk4OCw3ICs5ODgsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oTm9kZSogbm9kZSwgQVhOb3RpZmlj
YXRpb24gbm90aWZpY2F0aW9uLCBQbwogICAgIHBvc3ROb3RpZmljYXRpb24ob2JqZWN0LmdldCgp
LCAmbm9kZS0+ZG9jdW1lbnQoKSwgbm90aWZpY2F0aW9uLCBwb3N0VGFyZ2V0LCBwb3N0VHlwZSk7
CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQVhOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uLCBQb3N0VGFyZ2V0IHBvc3RUYXJnZXQsIFBvc3RUeXBlIHBvc3RUeXBlKQordm9pZCBB
WE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBEb2N1
bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCBw
b3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKIHsKICAgICBzdG9wQ2FjaGluZ0NvbXB1dGVk
T2JqZWN0QXR0cmlidXRlcygpOwogCkBAIC0xOTM2LDcgKzE5MzYsNyBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0
YSYgdGV4dE1hcgogICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKICAgICB9CiAgICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQo
KS0+YXhPYmplY3RJRCgpOworICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9i
amVjdElEKCk7CiAgICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CiAgICAgdGV4dE1h
cmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICB0
ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0
SW5kZXg7CkBAIC0yMjMwLDcgKzIyMzAsNyBAQCBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhP
YmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVgogICAg
IFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNfY2FzdDx2
b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7CiAgICAg
Ci0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+YXhPYmplY3RJRCgpOworICAg
IHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9iamVjdElEKCk7CiAgICAgdGV4dE1h
cmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CiAgICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVl
cFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIHRleHRNYXJrZXJEYXRhLmFmZmlu
aXR5ID0gdmlzaWJsZVBvcy5hZmZpbml0eSgpOwpAQCAtMjI2Miw3ICsyMjYyLDcgQEAgT3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQ
b3NpdGlvbkluVGV4dENvbnQKICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAg
ICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihU
ZXh0TWFya2VyRGF0YSkpOwogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0
KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5v
YmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4dENvbnRyb2w7CiAKICAg
ICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7CkBAIC0yOTA3LDkgKzI5MDcsOSBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICB9
CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZE5vZGVMaXN0LmNsZWFyKCk7CiAKLSAgICBm
b3IgKGF1dG8mIGNoaWxkIDogbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3QpCisgICAgZm9y
IChhdXRvJiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0KQogICAgICAgICBj
aGlsZC0+Y2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExp
c3QuY2xlYXIoKTsKKyAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdC5jbGVhcigpOwog
CiAgICAgZm9yIChhdXRvKiBub2RlIDogbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCkKICAgICAg
ICAgdGV4dENoYW5nZWQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCmluZGV4IGU1MjIwM2JlYjE0MzAxMDQwMzc1NmM0NmMzNzNlOWU3ZGEzMTk5
YmYuLjg4NDk5ZmQxOGMyMDczOWQyZGEzNzBhMDRiYTdiZjQxYmZlM2M4NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xNDgsNyArMTQ4LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmKTsKICAgICB+
QVhPYmplY3RDYWNoZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShj
b25zdCBQYWdlKik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgdGhlIGVu
dGlyZSBkb2N1bWVudC4KICAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBy
b290T2JqZWN0KCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXR0YWNo
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Tm9kZSosIE5vZGUqIG5ld0NoaWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIpOwotICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChBWENvcmVPYmplY3QqKTsKICAgICB2b2lkIGNoZWNrZWRTdGF0ZUNoYW5n
ZWQoTm9kZSopOwogICAgIC8vIENhbGxlZCB3aGVuIGEgbm9kZSBoYXMganVzdCBiZWVuIGF0dGFj
aGVkLCBzbyB3ZSBjYW4gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IHN1YmNsYXNzIG9mIEFj
Y2Vzc2liaWxpdHlPYmplY3QuCiAgICAgdm9pZCB1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNo
ZWQoTm9kZSopOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdE5v
dGlmaWNhdGlvbihSZW5kZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRh
cmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKICAgICB2b2lkIHBv
c3ROb3RpZmljYXRpb24oTm9kZSosIEFYTm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0ID0gVGFyZ2V0
RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwotICAgIHZvaWQgcG9zdE5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgRG9jdW1lbnQqLCBBWE5vdGlmaWNhdGlv
biwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91
c2x5KTsKKyAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiwgRG9jdW1lbnQq
LCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0g
UG9zdEFzeW5jaHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dJbnRl
bnQoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgCiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOworICAgIHZvaWQgcG9z
dFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKICAg
ICB2b2lkIHBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9j
dXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKIAogICAgIHZvaWQgcGxhdGZvcm1QZXJm
b3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogCiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25Q
b3N0VGltZXI7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVj
dD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zVG9Qb3N0OworICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmUHRyPEFYQ29yZU9iamVjdD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmlj
YXRpb25zVG9Qb3N0OwogCiAgICAgVGltZXIgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1l
cjsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHByaXZhdGU6CiAgICAgTGlzdEhhc2hTZXQ8RWxlbWVu
dCo+IG1fZGVmZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PE5v
ZGUqPiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PEVsZW1lbnQq
PiBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0OwotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExp
c3Q7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEFYQ29yZU9iamVjdD4+IG1fZGVmZXJyZWRDaGls
ZHJlbkNoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX2RlZmVycmVkQ2hpbGRy
ZW5DaGFuZ2VkTm9kZUxpc3Q7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgU3RyaW5nPiBtX2RlZmVy
cmVkVGV4dEZvcm1Db250cm9sVmFsdWU7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgUXVhbGlmaWVk
TmFtZT4gbV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBpbmxp
bmUgY29uc3QgRWxlbWVudCogQVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVFbGVtZW50KGNv
bnN0IE5vZGUqKSB7IHJldHVybgogaW5saW5lIE5vZGUqIEFYT2JqZWN0Q2FjaGU6Om1vZGFsTm9k
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6Y2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQoraW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKEFYQ29yZU9iamVjdCopIHsgfQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKE5vZGUqLCBOb2RlKikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2Jq
ZWN0KiwgUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZl
ckZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VJZk5lZWRlZChOb2RlKiwgTm9kZSopIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwCmluZGV4IGQ3MzA5ODhmODk3ZWNmYTQ5YWJiOTBkMzNlNzEyZDYwZWRlODUyOWUuLjAwMGFk
ZDRjM2FhMjI4ZjJlM2Y2MDUxODAxMDIwNTlmYWQxMTIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gQWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVuZGVyZXIpKTsKIH0KIAotYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25l
ZCYgY29sdW1uQ291bnQpCitib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxs
Q2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQogewogICAgIGlmICghY2hpbGQg
fHwgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpjaGlsZCkgJiYgIWlzPEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdz4oKmNoaWxkKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1LDcg
Kzg1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkg
Y29uc3QKICAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFNdWx0
aVNlbGVjdGFibGUsICJmYWxzZSIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6
YWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3dDaGlsZCwgSGFzaFNldDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50
KQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2Jq
ZWN0KiByb3dDaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93
cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQogewogICAgIGlmICghcm93Q2hpbGQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5oCmluZGV4IGI4ZTdiYWY0YTViMmU2NDU5ZWZlYTlkOGIyNjBhYTkyODEy
MDIwYjcuLmY3MmM5MDZhYTBjZTBmNGI3ODE4NWFiMTVlNWY5MTNhOWJjMzMyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
aApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIGlzQXJpYVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIAotICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNv
bHVtbkNvdW50KTsKLSAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25l
ZCYgY29sdW1uQ291bnQpOworICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBWENvcmVPYmplY3Qq
LCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYg
Y29sdW1uQ291bnQpOworICAgIGJvb2wgYWRkVGFibGVDZWxsQ2hpbGQoQVhDb3JlT2JqZWN0Kiwg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNv
bHVtbkNvdW50KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcAppbmRleCBkMDIzZjhjZTU3ZjM1NTQ3YmNhZTE1NTRkNjQwMjQyZTM4OWQyODQ3Li5mODE5
ZTlhZWU5NDZjNWQzNTUwZjczYjI0OWUxMzljOTliNGE0Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gQVJJQSBncmlkY2VsbHMgbWF5
IGhhdmUgbXVsdGlwbGUgbGV2ZWxzIG9mIHVuaWdub3JlZCBhbmNlc3RvcnMgdGhhdCBhcmUgbm90
IHRoZSBwYXJlbnQgdGFibGUsCiAgICAgLy8gaW5jbHVkaW5nIHJvd3MgYW5kIGludGVyYWN0aXZl
IHJvd2dyb3Vwcy4gSW4gYWRkaXRpb24sIHBvb3JseS1mb3JtZWQgZ3JpZHMgbWF5IGNvbnRhaW4g
ZWxlbWVudHMKICAgICAvLyB3aGljaCBwYXNzIHRoZSB0ZXN0cyBmb3IgaW5jbHVzaW9uLgotICAg
IGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVk
KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewor
ICAgIGZvciAoYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewogICAgICAgICBpZiAo
aXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCk7CiAgICAg
fQpAQCAtNjUsNyArNjUsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGw6OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYg
cm93UmFuZ2UpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRP
YmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMDMsNyArMTAzLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhS
b3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4KSBjb24KICAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFuZ2Uuc2Vjb25kKSwgMSk7CiAgICAgfQogCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAg
ICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgCkBAIC0xMzQsNyArMTM0LDcg
QEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0lu
ZGV4KHVuc2lnbmVkIHJvd0luZGV4KSBjb24KIAogdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRD
ZWxsOjpjb2x1bW5JbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1
bW5SYW5nZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9i
amVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmNwcAppbmRleCBmMjk2NDY3Y2E0ZTgxMWJlZDI2MDFjN2NhMzIzMWQ4ODA4YWE1
NDMwLi4zMjgzODA3NjUyOWRkNDVjMTBmYzdkNGE3YWMwOWEwYzdmNWEzZGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAg
YXV0byYgYWxsUm93cyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkucm93
cygpOwogICAgIGludCByb3dDb3VudCA9IGFsbFJvd3Muc2l6ZSgpOwogICAgIGZvciAoaW50IGsg
PSBpbmRleCArIDE7IGsgPCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHJvdyA9IGFsbFJvd3Nba10uZ2V0KCk7CisgICAgICAgIGF1dG8qIHJvdyA9IGFsbFJv
d3Nba10uZ2V0KCk7CiAgICAgICAgIC8vIFN0b3AgYXQgdGhlIGZpcnN0IHJvdyB0aGF0IGRvZXNu
J3QgbWF0Y2ggdGhlIGNvcnJlY3QgbGV2ZWwuCiAgICAgICAgIGlmIChyb3ctPmhpZXJhcmNoaWNh
bExldmVsKCkgIT0gbGV2ZWwgKyAxKQogICAgICAgICAgICAgYnJlYWs7CkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAgfQogfQogICAgIAotQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdygpIGNvbnN0
CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3co
KSBjb25zdAogewogICAgIC8vIFRoZSByb3cgdGhhdCBkaXNjbG9zZXMgdGhpcyBvbmUgaXMgdGhl
IHJvdyBpbiB0aGUgdGFibGUKICAgICAvLyB0aGF0IGlzIGFyaWEtbGV2ZWwgc3VidHJhY3QgMSBm
cm9tIHRoaXMgcm93LgpAQCAtMTAzLDcgKzEwMyw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBmb3IgKGludCBrID0gaW5kZXggLSAxOyBrID49IDA7
IC0taykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBhbGxSb3dzW2tdLmdl
dCgpOworICAgICAgICBhdXRvKiByb3cgPSBhbGxSb3dzW2tdLmdldCgpOwogICAgICAgICBpZiAo
cm93LT5oaWVyYXJjaGljYWxMZXZlbCgpID09IGxldmVsIC0gMSkKICAgICAgICAgICAgIHJldHVy
biByb3c7CiAgICAgfQpAQCAtMTMzLDcgKzEzMyw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dzo6aGVhZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpoZWFkZXJPYmplY3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93SGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKaW5kZXggN2JhNzRmNGRkMjMxNzFm
ZTViNDgyYjZmZTc4MGEyZmY3ODY5ZDg4Ni4uODU0MDY4MzVhZmU3MWVjODRkNTlhNTYxMDQ2MDk1
MDUxOWRiNmU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCkBAIC00MCw5ICs0MCw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3coKTsKICAgICAKICAgICB2b2lkIGRp
c2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogZGlzY2xvc2VkQnlSb3coKSBjb25zdDsKKyAgICBBWENvcmVPYmplY3QqIGRp
c2Nsb3NlZEJ5Um93KCkgY29uc3Q7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVh
ZGVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKSBv
dmVycmlkZTsKICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93KFJlbmRlck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCmluZGV4IGI0NWZjNjAwMjRhNGYzMGFiMDA3NTU2
ZWI1NmIzNDlmMjM0MjJmNTguLjYzNDVmM2NkOGYzODVhMDUwZjljYWM5YjkzNzhhMDg1MzJlNzUx
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxhYmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMYWJlbC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMYWJlbDo6
Y2xlYXJDaGlsZHJlbigpCiAgICAgbV9jb250YWluc09ubHlTdGF0aWNUZXh0RGlydHkgPSBmYWxz
ZTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgaW5kZXgpCit2b2lkIEFjY2Vzc2liaWxpdHlMYWJl
bDo6aW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQogewog
ICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omluc2VydENoaWxkKG9iamVjdCwgaW5kZXgp
OwogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oCmluZGV4IGIxM2Fm
MmQ3ZDkyZGJiNTI4MGY0ZGNjZDgyMTQwMGQ0NjZjMzk0ZTAuLmI2YTQxYjlhZmYwZjg1NmViOWU5
NDg2M2RjN2Y1YmU2ZGQ4MDVjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRy
ZW5JZk5lY2Vzc2FyeSgpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIGZpbmFsOwot
ICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIHVuc2lnbmVkKSBmaW5h
bDsKKyAgICB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkKSBmaW5hbDsK
ICAgICBib29sIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5IDogMTsKICAgICBib29sIG1f
Y29udGFpbnNPbmx5U3RhdGljVGV4dCA6IDE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAppbmRleCAwN2FlZGM5NzE0
Njg0MTBiOTAxYTc4MjJkYWIwNzkyOWVlYTMwNGUwLi45NWY5NzI4NzdkMTY2OGMwMWQ3NGRiZWNj
Yjk1NTYxN2Y0ZWM2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJp
bGl0eU9iamVjdChIVE1MCiAgICAgcmV0dXJuICZsaXN0Qm94T2JqZWN0OwogfQogICAgIAotQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxl
bWVudCBtZXRob2RzIGZvciByZXR1cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CiAg
ICAgLy8gaWdub3JlIG9wdGdyb3VwIGVsZW1lbnRzLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50CiAgICAgCiAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gYm91
bmRpbmdCb3hSZWN0KCk7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9w
dGlvbiA9IG51bGxwdHI7CisgICAgQVhDb3JlT2JqZWN0KiBsaXN0Qm94T3B0aW9uID0gbnVsbHB0
cjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0
ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKm1fcmVuZGVyZXIpLml0ZW1Cb3VuZGluZ0JveFJl
Y3QocGFyZW50UmVjdC5sb2NhdGlvbigpLCBpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAppbmRleCA0N2EzOWNlOTVhNWE2MGRm
OGE5YzZhOGNkNTZjNjE1NGIzMzQxMjUwLi43NGU1OTA4MmUzYzk3ZTA1MzIxMDIxOGE2NWVmM2Fi
NmMyNjgxODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1M
RWxlbWVudCopIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29y
ZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcAppbmRleCA3YWJmZmFlNGZhMTQ5MTIzYjA1ZWMwZDUwMzM0YmI1ZmVkMzIzYjI4
Li5hYWVhZmUwODRjOGU3ZGJiYzllNmQ2MGY1NmE2MzM3YjUyZDFkZGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6OmlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVj
dFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplYwogCiBib29s
IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nl
c3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB0eXBlKSBjb25zdAogewotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAg
IEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYg
KCFwYXJlbnQgfHwgIXBhcmVudC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoUmFkaWNhbmRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKIHsKICAgICBpZiAoIWlz
TWF0aFJvb3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNTAsNyArMjUwLDcgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSYWRp
Y2FuZE9iamVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdldCgpOwogfQogCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9i
amVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUm9v
dEluZGV4T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFJvb3QoKSB8fCBpc01hdGhTcXVhcmVS
b290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjYyLDcgKzI2Miw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUm9vdEluZGV4
T2JqZWN0KCkKICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0
KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0
b3JPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzQsNyArMjc0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmplY3QoKQogICAgIHJldHVybiBj
aGlsZHJlblswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU1hdGhNTEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQogewogICAg
IGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODYs
NyArMjg2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgp
OwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFVuZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhVbmRlck9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhVbmRlck92ZXIoKSB8fCAh
bm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwMSw3ICszMDEsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFVuZGVyT2Jq
ZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCog
QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KCkKIHsKICAgICBpZiAo
IWlzTWF0aFVuZGVyT3ZlcigpIHx8ICFub2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzE4LDcgKzMxOCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9i
amVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFz
ZU9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpICYmICFp
c01hdGhVbmRlck92ZXIoKSAmJiAhaXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMzEsNyArMzMxLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhCYXNlT2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhTdWJzY3JpcHRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhTdWJzY3Jp
cHRTdXBlcnNjcmlwdCgpIHx8ICFub2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MzQ2LDcgKzM0Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50OjptYXRoU3Vic2NyaXB0T2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhTdXBl
cnNjcmlwdE9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
OjptYXRoU3VwZXJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuaAppbmRleCA1ODBiODU5Y2JjMWQwYzY3MzM1ZTJiNTA0OTQyNzY2NGJlZDExNjdhLi44
NzQ3YjA1NGVmNDM5MGFkOTIzZDYwMTdjMjVkMDc2NGY1MDUyYThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5oCkBAIC03NywyMyArNzcsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTWF0aE11bHRpc2Ny
aXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIEdlbmVyaWMgY29tcG9uZW50cy4KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0
aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIFJvb3QgY29tcG9uZW50cy4KLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZTsKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVP
YmplY3QqIG1hdGhSb290SW5kZXhPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIEZyYWN0aW9u
IGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRvck9iamVj
dCgpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5vbWluYXRvck9i
amVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgp
IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhV
bmRlck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3Qo
KSBvdmVycmlkZTsKIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlk
ZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKKyAg
ICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRmVuY2VkIGNvbXBvbmVudHMuCiAgICAgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgKaW5kZXggYzk4NWZkZGQzZGI3NWI4YTg0
YzdlMjU4MzNlMDA5OTU3NjZkNTk0OC4uZjNhZDZkOTZlMzZmODViMzc5ZTVjZjk1Y2U0YjQ1Y2Iz
ZDZmN2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaApAQCAtNjQsNyArNjQsNiBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdmFsdWVE
ZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVsaW5lKFJlbmRlck9iamVjdCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwCmluZGV4IGVmMTM3N2JmNDZjM2IyMjUwZDNjZjZlNmU5ZDM2M2IyZTYyYmI5
MWYuLmEyY2I1MTdhZmI4YmU4NjhlYWVlZTFkMzI4MTI1YzU4NjYyYjZlMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKCkKIAogICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqbGlzdCkuc2V0
UGFyZW50KHRoaXMpOwogICAgIGlmIChsaXN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsK
LSAgICAgICAgY2FjaGUtPnJlbW92ZShsaXN0LT5heE9iamVjdElEKCkpOworICAgICAgICBjYWNo
ZS0+cmVtb3ZlKGxpc3QtPm9iamVjdElEKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IGVlOTYxYjVjZjVjNjEzMjNjMjlkYmJjYmNiMzI4Zjk4
Mjg4YTQ0NGQuLjdiMDJjMjI0OWM2YTM5NDYzMTk4MzQzYTJlNDc4MGU0NGI1MTEyMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC0xMTIsMTAgKzExMiwxMCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQoKQogewogICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NoaWxkcmVu
LnNpemUoKTsgaSA+IDAgOyAtLWkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGQgPSBtX2NoaWxkcmVuW2kgLSAxXS5nZXQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjaGls
ZCA9IG1fY2hpbGRyZW5baSAtIDFdLmdldCgpOwogICAgICAgICBpZiAoY2hpbGQtPmFjdGlvbkVs
ZW1lbnQoKSAmJiAhY2hpbGQtPmFjdGlvbkVsZW1lbnQoKS0+aW5SZW5kZXJlZERvY3VtZW50KCkp
IHsKICAgICAgICAgICAgIGNoaWxkLT5kZXRhY2hGcm9tUGFyZW50KCk7Ci0gICAgICAgICAgICBj
YWNoZS0+cmVtb3ZlKGNoaWxkLT5heE9iamVjdElEKCkpOworICAgICAgICAgICAgY2FjaGUtPnJl
bW92ZShjaGlsZC0+b2JqZWN0SUQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBkYXRlQWN0
aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKICAgICBBU1NFUlRfQVJHKG9wdGlvbkluZGV4LCBv
cHRpb25JbmRleCA8IHN0YXRpY19jYXN0PGludD4obV9jaGlsZHJlbi5zaXplKCkpKTsKIAogICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpOwor
ICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNoaWxkID0gbV9jaGlsZHJlbltvcHRpb25JbmRleF0u
Z2V0KCk7CiAKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQoKSwgZG9jdW1l
bnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFyZ2V0RWxl
bWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwogICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNo
aWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVj
dGVkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmlu
ZGV4IGEyZDMyN2Y4Y2YxNzgwOGNhZjI1YTY4MDVhNDg4ZTg4ZjhkNGU1YmYuLjAzMDRlYzcyNTUw
ZjJhOWI0N2UwYTkxZTlmMTNkNGRmMDA1NmE1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC05MTIs
NyArOTEyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHcm91cCgpIGNvbnN0
CiAgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwIHx8IHJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uVGV4dEdyb3VwOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKIHsKICAgICBpZiAoIWlzUmFkaW9H
cm91cCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkyNSwxNCArOTI1LDE0IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlv
QnV0dG9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCitBWENvcmVPYmplY3Qq
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0oKQogewogICAgIGlmICgh
aXNUYWJMaXN0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRklYTUU6IElz
IHRoaXMgdmFsaWQ/IEFSSUEgdGFiIGl0ZW1zIHN1cHBvcnQgYXJpYS1zZWxlY3RlZDsgbm90IGFy
aWEtY2hlY2tlZC4KICAgICAvLyBGaW5kIHRoZSBjaGlsZCB0YWIgaXRlbSB0aGF0IGlzIHNlbGVj
dGVkIChpZS4gdGhlIGludFZhbHVlID09IDEpLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJzOworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHRhYnM7CiAgICAgdGFiQ2hpbGRyZW4odGFicyk7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4
IGE4NjdjMGNmMGFjOGNkNDA2OTRiODNjNzQ1NDk0Y2JiNmI4NmExNTMuLjM4MGQ5OTdhNTQxNDdl
YzI5ODYyZWNjMTRmZjMwNGJiZTlhZTFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKQEAgLTEwMSw4ICsxMDEs
OCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7Ci0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CisgICAgQVhD
b3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5QnV0dG9u
U3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHVuc2ln
bmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBlOGFh
NjliZWMxNzcwMjcwNjM4NzkzZTczNWNhOTI3YmQ3Yzg5OWM1Li5hMzRhNWYwOTYyNTFmZmYzNzc2
M2FkNDFmZTQ2MDczMDM4ZDQ1MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGV0YWNoZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hB
dEluZGV4KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3QgaW5kZXgpCitib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBWENvcmVPYmplY3Qq
IGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3Qg
aW5kZXgpCiB7CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsKICAg
ICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBub24t
bnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0LgpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFj
Y2Vzc2liaWxpdHlPCiAgICAgfQogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBWENvcmVPYmplY3Qq
IGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQogewogICAg
IGlmICghYXhPYmplY3QgfHwgIWNyaXRlcmlhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NzYsNyArMjc2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlP
YmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIHNpemVfdCBsZW5ndGgg
PSBjcml0ZXJpYS0+c2VhcmNoS2V5cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNo
TWF0Y2hBdEluZGV4KGF4T2JqZWN0LCBjcml0ZXJpYSwgaSkpIHsKLSAgICAgICAgICAgIGlmIChj
cml0ZXJpYS0+dmlzaWJsZU9ubHkgJiYgIWF4T2JqZWN0LT5pc09uc2NyZWVuKCkpCisgICAgICAg
ICAgICBpZiAoY3JpdGVyaWEtPnZpc2libGVPbmx5ICYmICFheE9iamVjdC0+aXNPblNjcmVlbigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0yODQsMTUgKzI4NCwxNSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3Qq
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwg
QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFYQ29yZU9iamVjdCogYXhP
YmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEpCiB7CiAgICAgaWYg
KCFheE9iamVjdCB8fCAhY3JpdGVyaWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICByZXR1cm4gYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQoJmNyaXRl
cmlhLT5zZWFyY2hUZXh0KTsKKyAgICByZXR1cm4gYXhPYmplY3QtPmNvbnRhaW5zVGV4dCgmY3Jp
dGVyaWEtPnNlYXJjaFRleHQpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vz
c2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nKiB0ZXh0KSBjb25zdAorYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojpjb250YWluc1RleHQoU3RyaW5nKiB0ZXh0KSBjb25zdAogewogICAg
IC8vIElmIHRleHQgaXMgbnVsbCBvciBlbXB0eSB3ZSByZXR1cm4gdHJ1ZS4KICAgICByZXR1cm4g
IXRleHQKQEAgLTUyMiw3ICs1MjIsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpi
bG9ja3F1b3RlTGV2ZWwoKSBjb25zdAogICAgIHJldHVybiBsZXZlbDsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkg
Y29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICFv
YmplY3QuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwpAQCAtNjI1LDcgKzYyNSw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGUpIGNvbnN0CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5k
QWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKK3N0YXRp
YyB2b2lkIGFwcGVuZEFjY2Vzc2liaWxpdHlPYmplY3QoQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykK
IHsKICAgICAvLyBGaW5kIHRoZSBuZXh0IGRlc2NlbmRhbnQgb2YgdGhpcyBhdHRhY2htZW50IG9i
amVjdCBzbyBzZWFyY2ggY2FuIGNvbnRpbnVlIHRocm91Z2ggZnJhbWVzLgogICAgIGlmIChvYmpl
Y3QtPmlzQXR0YWNobWVudCgpKSB7CkBAIC02NDQsNyArNjQ0LDcgQEAgc3RhdGljIHZvaWQgYXBw
ZW5kQWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vz
c2liaWxpdHkKICAgICAgICAgcmVzdWx0cy5hcHBlbmQob2JqZWN0KTsKIH0KICAgICAKLXZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGQsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNlcnRDaGls
ZChBWENvcmVPYmplY3QqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWNoaWxk
KQogICAgICAgICByZXR1cm47CkBAIC02ODQsMTIgKzY4NCwxMiBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNpZ25l
ZCBpbmRleAogICAgIGNoaWxkLT5jbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCk7CiB9CiAg
ICAgCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNoaWxkKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBWENvcmVPYmpl
Y3QqIGNoaWxkKQogewogICAgIGluc2VydENoaWxkKGNoaWxkLCBtX2NoaWxkcmVuLnNpemUoKSk7
CiB9CiAgICAgCi1zdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwgQWNjZXNzaWJpbGl0eU9iamVjdCogc3Rh
cnRPYmplY3QsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgcmVzdWx0cykKK3N0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBWENvcmVPYmpl
Y3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFYQ29yZU9iamVjdCogc3RhcnRPYmplY3QsIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykK
IHsKICAgICAvLyBBIHRhYmxlJ3MgY2hpbGRyZW4gaW5jbHVkZXMgZWxlbWVudHMgd2hvc2Ugb3du
IGNoaWxkcmVuIGFyZSBhbHNvIHRoZSB0YWJsZSdzIGNoaWxkcmVuIChkdWUgdG8gdGhlIHdheSB0
aGUgTWFjIGV4cG9zZXMgdGFibGVzKS4KICAgICAvLyBUaGUgcm93cyBmcm9tIHRoZSB0YWJsZSBz
aG91bGQgYmUgcXVlcmllZCwgc2luY2UgdGhvc2UgYXJlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0
aGUgdGFibGUsIGFuZCB0aGV5IGNvbnRhaW4gY29udGVudC4KQEAgLTcwMiw3ICs3MDIsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0LCBib29sIGlzRm9yd2FyZCwgQQogCiAgICAgLy8gSWYgdGhlIHN0YXJ0T2JqZWN0IGlzIGln
bm9yZWQsIHdlIHNob3VsZCB1c2UgYW4gYWNjZXNzaWJsZSBzaWJsaW5nIGFzIGEgc3RhcnQgZWxl
bWVudCBpbnN0ZWFkLgogICAgIGlmIChzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdC0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpICYmIHN0YXJ0T2JqZWN0LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChv
YmplY3QpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHN0
YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRP
YmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2JqZWN0KCk7CiAgICAgICAgIC8vIEdvIHVwIHRo
ZSBwYXJlbnQgY2hhaW4gdG8gZmluZCB0aGUgaGlnaGVzdCBhbmNlc3RvciB0aGF0J3MgYWxzbyBi
ZWluZyBpZ25vcmVkLgogICAgICAgICB3aGlsZSAocGFyZW50T2JqZWN0ICYmIHBhcmVudE9iamVj
dC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50T2Jq
ZWN0ID09IG9iamVjdCkKQEAgLTczNSw3ICs3MzUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGls
ZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwg
QQogfQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG51bWJlciBvZiByZXN1bHRzIGlzIG5vdyA+
PSB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgZGVzaXJlZC4KLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6b2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHRzKQorYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEsIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKIHsKICAgICBpZiAoaXNBY2Nlc3Np
YmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2gob2JqZWN0LCBjcml0ZXJpYSkgJiYgaXNBY2Nlc3NpYmls
aXR5VGV4dFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpKSB7CiAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG9iamVjdCk7CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3Jp
dGUKICAgICAvLyBJdCBkb2VzIHRoaXMgYnkgc3RlcHBpbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBh
bmQgYXQgZWFjaCBsZXZlbCBkb2luZyBhIERGUy4KICAgICAKICAgICAvLyBJZiB0aGVyZSdzIG5v
IHN0YXJ0IG9iamVjdCwgaXQgbWVhbnMgd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZy4KLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFydE9iamVjdCA9IGNyaXRlcmlhLT5zdGFydE9iamVj
dDsKKyAgICBBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0ID0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0
OwogICAgIGlmICghc3RhcnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gdGhpczsKICAg
ICAKQEAgLTc3MSwxNCArNzcxLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZE1h
dGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlCiAgICAgLy8g
VGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUgb3V0ZXIgbG9vcCB3aWxsIGV4YW1pbmUgdGhlIGNo
aWxkcmVuIG9mIHRoZSBzdGFydCBvYmplY3QgZm9yIG1hdGNoZXMuIEhvd2V2ZXIsIHdoZW4KICAg
ICAvLyBpdGVyYXRpbmcgYmFja3dhcmRzLCB0aGUgc3RhcnQgb2JqZWN0IGNoaWxkcmVuIHNob3Vs
ZCBub3QgYmUgY29uc2lkZXJlZCwgc28gdGhlIGxvb3AgaXMgc2tpcHBlZCBhaGVhZC4gV2UgbWFr
ZSBhbgogICAgIC8vIGV4Y2VwdGlvbiB3aGVuIG5vIHN0YXJ0IG9iamVjdCB3YXMgc3BlY2lmaWVk
IGJlY2F1c2Ugd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIHNlYXJj
aCBkaXJlY3Rpb24uCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNPYmplY3QgPSBu
dWxscHRyOworICAgIEFYQ29yZU9iamVjdCogcHJldmlvdXNPYmplY3QgPSBudWxscHRyOwogICAg
IGlmICghaXNGb3J3YXJkICYmIHN0YXJ0T2JqZWN0ICE9IHRoaXMpIHsKICAgICAgICAgcHJldmlv
dXNPYmplY3QgPSBzdGFydE9iamVjdDsKICAgICAgICAgc3RhcnRPYmplY3QgPSBzdGFydE9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZSBvdXRl
ciBsb29wIHN0ZXBzIHVwIHRoZSBwYXJlbnQgY2hhaW4gZWFjaCB0aW1lICh1bmlnbm9yZWQgaXMg
aW1wb3J0YW50IGhlcmUgYmVjYXVzZSBvdGhlcndpc2UgZWxlbWVudHMgd291bGQgYmUgc2VhcmNo
ZWQgdHdpY2UpCi0gICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdG9wU2VhcmNoRWxlbWVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdCAh
PSBzdG9wU2VhcmNoRWxlbWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCkpIHsKKyAgICBmb3IgKGF1dG8qIHN0b3BTZWFyY2hFbGVtZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7IHN0YXJ0T2JqZWN0ICYmIHN0YXJ0T2JqZWN0ICE9IHN0b3BT
ZWFyY2hFbGVtZW50OyBzdGFydE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKSkgewogCiAgICAgICAgIC8vIE9ubHkgYXBwZW5kIHRoZSBjaGlsZHJlbiBhZnRlci9i
ZWZvcmUgdGhlIHByZXZpb3VzIGVsZW1lbnQsIHNvIHRoYXQgdGhlIHNlYXJjaCBkb2VzIG5vdCBj
aGVjayBlbGVtZW50cyB0aGF0IGFyZSAKICAgICAgICAgLy8gYWxyZWFkeSBiZWhpbmQvYWhlYWQg
b2Ygc3RhcnQgZWxlbWVudC4KQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBj
cml0ZQogCiAgICAgICAgIC8vIFRoaXMgbm93IGRvZXMgYSBERlMgYXQgdGhlIGN1cnJlbnQgbGV2
ZWwgb2YgdGhlIHBhcmVudC4KICAgICAgICAgd2hpbGUgKCFzZWFyY2hTdGFjay5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlYXJjaE9iamVjdCA9IHNlYXJj
aFN0YWNrLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogc2VhcmNoT2Jq
ZWN0ID0gc2VhcmNoU3RhY2subGFzdCgpLmdldCgpOwogICAgICAgICAgICAgc2VhcmNoU3RhY2su
cmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAob2JqZWN0TWF0Y2hl
c1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KHNlYXJjaE9iamVjdCwgY3JpdGVyaWEsIHJl
c3VsdHMpKQpAQCAtMjAzMSwxMyArMjAzMSwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5nRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIHsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJPYmplY3QgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
T2JqZWN0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGF4T2JqZWN0ID0gcmVuZGVyT2JqZWN0LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyT2JqZWN0KTsKLSAgICAKKwogICAgIHJldHVybiBjb25z
dF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCpheE9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpIZWFkaW5nOwogICAgIH0pKTsKQEAgLTIzNjAsMTcgKzIzNjAsMTcgQEAgQWNjZXNz
aWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiB9ICAg
IAogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0KSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqIGF4T2JqZWN0
KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5oYXNDaGlsZHJlbigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtheE9iamVjdF0gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gJm9iamVjdCA9PSBh
eE9iamVjdDsKICAgICB9KSAhPSBudWxscHRyOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KGNv
bnN0IEFYQ29yZU9iamVjdCogYXhPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFheE9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc3OCw3ICsyNzc4LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYpIGNvbnN0
CiAgICAgcmV0dXJuIGV4Y2x1ZGVJZk9mZiA/IGxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2
ZVJlZ2lvblN0YXR1c1ZhbHVlKSA6ICFsaXZlUmVnaW9uU3RhdHVzVmFsdWUuaXNFbXB0eSgpOwog
fQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
bGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogeyAKICAgICAvLyBTZW5kIHRoZSBo
aXQgdGVzdCBiYWNrIGludG8gdGhlIHN1Yi1mcmFtZSBpZiBuZWNlc3NhcnkuCiAgICAgaWYgKGlz
QXR0YWNobWVudCgpKSB7CkBAIC0yODA1LDcgKzI4MDUsNyBAQCBBWE9iamVjdENhY2hlKiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1l
bnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzZWRVSUVs
ZW1lbnQoKSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2Vk
VUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAg
IHJldHVybiBwYWdlID8gQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UocGFn
ZSkgOiBudWxscHRyOwpAQCAtMjk2Myw3ICsyOTYzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0V4cGFuZGVkKCkgY29uc3QKICAgICAgICAgfSkpCiAgICAgICAgICAgICByZXR1cm4g
cGFyZW50LT5pc0V4cGFuZGVkKCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOyAg
CiB9CiAKQEAgLTMxMDMsNyArMzEwMyw3IEBAIHN0YXRpYyBpbnQgY29tcHV0ZUJlc3RTY3JvbGxP
ZmZzZXQoaW50IGN1cnJlbnRTY3JvbGxPZmZzZXQsIGludCBzdWJmb2N1c01pbiwgaW50CiAgICAg
cmV0dXJuIChvYmplY3RNaW4gKyBvYmplY3RNYXggLSB2aWV3cG9ydE1pbiAtIHZpZXdwb3J0TWF4
KSAvIDI7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbigpIGNvbnN0
Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25TY3JlZW4oKSBjb25zdAogeyAgIAogICAg
IGJvb2wgaXNPbnNjcmVlbiA9IHRydWU7CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAg
IGF0dHJpYnV0ZUNhY2hlID0gY2FjaGUtPmNvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUoKTsK
ICAgICAKICAgICBpZiAoYXR0cmlidXRlQ2FjaGUpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBpZ25vcmVkID0gYXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQoYXhPYmpl
Y3RJRCgpKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkID0g
YXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQob2JqZWN0SUQoKSk7CiAgICAgICAgIHN3aXRjaCAo
aWdub3JlZCkgewogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Okln
bm9yZU9iamVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzQ5NSw3ICszNDk1LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIAogICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJp
YnV0ZSBjYWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBl
eGlzdHMuCiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdu
b3JlZChheE9iamVjdElEKCksIHJlc3VsdCA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmpl
Y3QpOworICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChvYmplY3RJRCgpLCByZXN1
bHQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0zNjIwLDcgKzM2MjAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
Q29udGFpbmVkQnlQYXNzd29yZEZpZWxkKCkgY29uc3QKICAgICByZXR1cm4gaXM8SFRNTElucHV0
RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQp
LmlzUGFzc3dvcmRGaWVsZCgpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQogewogICAgIGZvciAoY29uc3QgYXV0byYg
Y2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNMaXN0SXRlbSgpICYm
IChjaGlsZC0+aXNTZWxlY3RlZCgpIHx8IGNoaWxkLT5pc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3Vz
ZWRDb250YWluZXIoKSkpCkBAIC0zNzUyLDcgKzM3NTIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0bwogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShvd25lcnMsIGFyaWFf
b3duc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZy
b21QYXJlbnREYXRhRm9yQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQpCit2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhD
b3JlT2JqZWN0KiBjaGlsZCkKIHsKICAgICBpZiAoIWNoaWxkKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CmluZGV4IDNmZjBjMzYwMWI0MTJhMjllODI4ZWJhNjM4MzZjZmQxNjI0OGRjODUuLjM4M2RkZWM4
ZjM4NzAyZGZlNDg5YTA1MWFkNWQzZTg1YjcwMTU3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0zMSwxMyArMzEsOSBA
QAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgotI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCi0jaW5jbHVkZSAiVmlzaWJs
ZVBvc2l0aW9uLmgiCi0jaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTMsOCArNDksNiBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLXR5cGVk
ZWYgc3RydWN0IF9OU1JhbmdlIE5TUmFuZ2U7Ci0KIE9CSkNfQ0xBU1MgTlNBcnJheTsKIE9CSkNf
Q0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOwogT0JKQ19DTEFTUyBOU0RhdGE7CkBAIC02OCwyMCAr
NjIsOSBAQCBPQkpDX0NMQVNTIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QWNjZXNzaWJpbGl0eU9iamVjdDsKLWNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OwotY2xh
c3MgQVhPYmplY3RDYWNoZTsKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIEZy
YW1lVmlldzsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIE5vZGU7Ci1j
bGFzcyBQYWdlOwotY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7Ci1j
bGFzcyBTY3JvbGxWaWV3OwotY2xhc3MgV2lkZ2V0Owotc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2li
bGVPcHRpb25zOwogCiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHsKICAgICBB
bHRlcm5hdGl2ZSwKQEAgLTEyMSw0OTYgKzEwNCwyNzIgQEAgc3RydWN0IEFjY2Vzc2liaWxpdHlU
ZXh0IHsKICAgICB9CiB9OwogCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRN
b2RlIHsKLSAgICBlbnVtIENoaWxkcmVuSW5jbHVzaW9uIHsKLSAgICAgICAgVGV4dFVuZGVyRWxl
bWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLAotICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9k
ZUluY2x1ZGVBbGxDaGlsZHJlbiwKLSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRl
TmFtZUZyb21Db250ZW50c0NoaWxkcmVuLCAvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIEFSSUEgY29u
Y2VwdDogbmFtZUZyb20KLSAgICB9OwotICAgIAotICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxk
cmVuSW5jbHVzaW9uOwotICAgIGJvb2wgaW5jbHVkZUZvY3VzYWJsZUNvbnRlbnQ7Ci0gICAgTm9k
ZSogaWdub3JlZENoaWxkTm9kZTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9IFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcEln
bm9yZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2UsIE5vZGUqIGlnbm9yZWQgPSBudWxscHRyKQot
ICAgICAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMpCi0gICAgICAgICwgaW5jbHVkZUZvY3VzYWJs
ZUNvbnRlbnQoaSkKLSAgICAgICAgLCBpZ25vcmVkQ2hpbGROb2RlKGlnbm9yZWQpCi0gICAgeyB9
Ci19OwotCi0vLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gc3RvcmUgdGhlIGlzSWdub3JlZCBkYXRhIHRo
YXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28gdGhhdCBpbiBhZGRDaGlsZHJlbigpCi0vLyB3
ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNoYWluIGZvciBlYWNoIGVsZW1lbnQgd2hpbGUg
dHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1bCBpbmZvcm1hdGlvbiBhbHJlYWR5Lgotc3Ry
dWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSB7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50IHsgbnVsbHB0ciB9OwotICAgIGJvb2wgaXNBWEhpZGRlbiB7IGZh
bHNlIH07Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIHsgZmFsc2Ug
fTsKLSAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50IHsgZmFsc2UgfTsKLSAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gbnVsbHB0cikKLSAgICAgICAgOiBwYXJlbnQocGFyZW50KQotICAgIHsg
fQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFyZW50OyB9Ci19OwotICAg
IAotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewotICAgIFZlcnRpY2FsLAot
ICAgIEhvcml6b250YWwsCi0gICAgVW5kZWZpbmVkLAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiB7Ci0gICAgSW5jbHVkZU9iamVjdCwKLSAgICBJZ25v
cmVPYmplY3QsCi0gICAgRGVmYXVsdEJlaGF2aW9yLAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlIHsKLSAgICBPZmYgPSAwLAotICAgIE9uLAotICAgIE1peGVk
LAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gewotICAg
IE5vbmUsCi0gICAgQXNjZW5kaW5nLAotICAgIERlc2NlbmRpbmcsCi0gICAgT3RoZXIsCi0gICAg
SW52YWxpZCwKLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiB7
Ci0gICAgTmV4dCA9IDEsCi0gICAgUHJldmlvdXMsCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXkgewotICAgIEFueVR5cGUgPSAxLAotICAgIEFydGljbGUsCi0gICAgQmxv
Y2txdW90ZVNhbWVMZXZlbCwKLSAgICBCbG9ja3F1b3RlLAotICAgIEJvbGRGb250LAotICAgIEJ1
dHRvbiwKLSAgICBDaGVja0JveCwKLSAgICBDb250cm9sLAotICAgIERpZmZlcmVudFR5cGUsCi0g
ICAgRm9udENoYW5nZSwKLSAgICBGb250Q29sb3JDaGFuZ2UsCi0gICAgRnJhbWUsCi0gICAgR3Jh
cGhpYywKLSAgICBIZWFkaW5nTGV2ZWwxLAotICAgIEhlYWRpbmdMZXZlbDIsCi0gICAgSGVhZGlu
Z0xldmVsMywKLSAgICBIZWFkaW5nTGV2ZWw0LAotICAgIEhlYWRpbmdMZXZlbDUsCi0gICAgSGVh
ZGluZ0xldmVsNiwKLSAgICBIZWFkaW5nU2FtZUxldmVsLAotICAgIEhlYWRpbmcsCi0gICAgSGln
aGxpZ2h0ZWQsCi0gICAgSXRhbGljRm9udCwKLSAgICBLZXlib2FyZEZvY3VzYWJsZSwKLSAgICBM
YW5kbWFyaywKLSAgICBMaW5rLAotICAgIExpc3QsCi0gICAgTGl2ZVJlZ2lvbiwKLSAgICBNaXNz
cGVsbGVkV29yZCwKLSAgICBPdXRsaW5lLAotICAgIFBsYWluVGV4dCwKLSAgICBSYWRpb0dyb3Vw
LAotICAgIFNhbWVUeXBlLAotICAgIFN0YXRpY1RleHQsCi0gICAgU3R5bGVDaGFuZ2UsCi0gICAg
VGFibGVTYW1lTGV2ZWwsCi0gICAgVGFibGUsCi0gICAgVGV4dEZpZWxkLAotICAgIFVuZGVybGlu
ZSwKLSAgICBVbnZpc2l0ZWRMaW5rLAotICAgIFZpc2l0ZWRMaW5rLAotfTsKLQotZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzIHsKLSAgICBGaXJzdCwKLSAg
ICBMYXN0LAotfTsKLQotc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7Ci0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3Q7Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247Ci0gICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk+IHNlYXJjaEtleXM7Ci0gICAgU3RyaW5nIHNlYXJjaFRleHQ7Ci0gICAgdW5zaWduZWQg
cmVzdWx0c0xpbWl0OwotICAgIGJvb2wgdmlzaWJsZU9ubHk7Ci0gICAgYm9vbCBpbW1lZGlhdGVE
ZXNjZW5kYW50c09ubHk7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0
aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRleHQsIHVuc2lnbmVkIHJlc3VsdHNM
aW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCi0g
ICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCi0gICAgICAgICwgc2VhcmNoRGlyZWN0
aW9uKHNlYXJjaERpcmVjdGlvbikKLSAgICAgICAgLCBzZWFyY2hUZXh0KHNlYXJjaFRleHQpCi0g
ICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkKLSAgICAgICAgLCB2aXNpYmxlT25s
eSh2aXNpYmxlT25seSkKLSAgICAgICAgLCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkoaW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5KQotICAgIHsgfQotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQg
fTsKLQotc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKLQotICAgIFZpc2libGVQb3NpdGlv
biBzdGFydDsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kOwotCi0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoKSB7fQotCi0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBzLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCi0gICAgICAgIDogc3RhcnQocykKLSAg
ICAgICAgLCBlbmQoZSkKLSAgICB7IH0KLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKLSAgICAgICAgOiBzdGFydChzZWxlY3Rpb24u
c3RhcnQoKSkKLSAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQotICAgIHsgfQotCi0gICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxs
KCk7IH0KLX07Ci0KLXN0cnVjdCBQbGFpblRleHRSYW5nZSB7Ci0gICAgICAgIAotICAgIHVuc2ln
bmVkIHN0YXJ0IHsgMCB9OwotICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKLSAgICAKLSAgICBQ
bGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKLSAgICAKLSAgICBQbGFpblRleHRSYW5nZSh1bnNp
Z25lZCBzLCB1bnNpZ25lZCBsKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAgICAgICwgbGVuZ3Ro
KGwpCi0gICAgeyB9Ci0gICAgCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUGxhaW5UZXh0UmFu
Z2UoTlNSYW5nZSk7Ci0jZW5kaWYKLSAgICAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0U3RhcnRGcm9tIHsKLSAgICBCZWdpbiwgLy8gU2VhcmNoIGZyb20gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZWxlbWVudC4KLSAgICBTZWxlY3Rpb24sIC8vIFNlYXJjaCBmcm9tIHRoZSBw
b3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCi0gICAgRW5kIC8vIFNlYXJjaCBmcm9t
IHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0RGlyZWN0aW9uIHsKLSAgICBGb3J3YXJkLCAvLyBPY2N1cnJlbmNlIGFmdGVyIHRo
ZSBzdGFydGluZyByYW5nZS4KLSAgICBCYWNrd2FyZCwgLy8gT2NjdXJyZW5jZSBiZWZvcmUgdGhl
IHN0YXJ0aW5nIHJhbmdlLgotICAgIENsb3Nlc3QsIC8vIENsb3Nlc3Qgb2NjdXJyZW5jZSB0byB0
aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIgb3IgYmVmb3JlLgotICAgIEFsbCAvLyBB
bGwgb2NjdXJyZW5jZXMKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRl
cmlhIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hTdHJpbmdzOyAvLyBUZXh0IHN0cmluZ3Mg
dG8gc2VhcmNoIGZvci4KLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSBzdGFy
dDsKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247Ci0KLSAg
ICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKCkKLSAgICAgICAgOiBzdGFydChBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2VsZWN0aW9uKQotICAgICAgICAsIGRpcmVj
dGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6Rm9yd2FyZCkKLSAgICB7IH0K
LX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb25UeXBlIHsKLSAgICBT
ZWxlY3QsCi0gICAgUmVwbGFjZSwKLSAgICBDYXBpdGFsaXplLAotICAgIExvd2VyY2FzZSwKLSAg
ICBVcHBlcmNhc2UKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiB7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZXM7IC8vIHRleHQgb24gd2hpY2ggcGVy
Zm9ybSB0aGUgb3BlcmF0aW9uLgotICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB0
eXBlOwotICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7IC8vIEZvciB0eXBlID0gcmVwbGFjZS4K
LQotICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uKCkKLSAgICAgICAgOiB0eXBlKEFjY2Vz
c2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0KQotICAgIHsgfQotfTsKLQotZW51bSBj
bGFzcyBBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3JpcHQsIFN1cGVy
c2NyaXB0IH07Ci1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RU
eXBlIHsgUHJlU3Vic2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlwdCwgUG9zdFN1
cGVyc2NyaXB0IH07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSB7IEZh
bHNlLCBUcnVlLCBQYWdlLCBTdGVwLCBMb2NhdGlvbiwgRGF0ZSwgVGltZSB9OwotZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlIHsgU2NyZWVuLCBQYWdlIH07Ci0KIGJvb2wg
bm9kZUhhc1ByZXNlbnRhdGlvblJvbGUoTm9kZSopOwotICAgIAotY2xhc3MgQWNjZXNzaWJpbGl0
eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3Q+LCBwdWJsaWMg
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgOiBwdWJsaWMgQVhDb3JlT2JqZWN0IHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KCkgPSBkZWZhdWx0OwotICAgIAorCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNz
aWJpbGl0eU9iamVjdCgpOwogCiAgICAgLy8gQWZ0ZXIgY29uc3RydWN0aW5nIGFuIEFjY2Vzc2li
aWxpdHlPYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQogICAgIC8vIHVuaXF1ZSBJRCwgdGhlbiBh
ZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBpbml0KCkgbXVzdAogICAgIC8vIGJl
IGNhbGxlZCBsYXN0LgotICAgIHZvaWQgc2V0QVhPYmplY3RJRChBWElEIGF4T2JqZWN0SUQpIHsg
bV9pZCA9IGF4T2JqZWN0SUQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIHsgfQorICAgIHZv
aWQgc2V0T2JqZWN0SUQoQVhJRCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KKyAgICB2b2lk
IGluaXQoKSBvdmVycmlkZSB7IH0KIAogICAgIC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
Q29yZSBvYmplY3QgdGhhdCB0aGlzIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICAvLyB3cmFwcyBp
cyBkZWxldGVkLCBpdCBtdXN0IGJlIGRldGFjaGVkLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
QWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG51bGxw
dHIpOwotICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Q7CisgICAgdm9pZCBkZXRh
Y2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiA9IG51bGxwdHIp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3I7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNW
R1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlTVkdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQo
U3RyaW5nICopIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQo
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZp
ZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQ2hlY2tib3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRp
b0J1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0J1dHRvbjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzSW1hZ2VNYXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KKyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDb250YWluZWRC
eVBhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXNzd29yZEZpZWxkT3JDb250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsg
fQorICAgIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsgfQorICAgIGJvb2wgaXNSYWRpb0J1
dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpSYWRpb0J1dHRvbjsgfQorICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94
OyB9CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNNZW51KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWVudUJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTGFiZWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzR3JvdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0lucHV0SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc1NsaWRlclRodW1iKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
VGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNEYXRh
VGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJs
ZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxl
Q29sdW1uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFi
bGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRmll
bGRzZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNHcm91
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FSSUFUcmVl
R3JpZFJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0lt
YWdlTWFwTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWVudUxpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRp
dmVTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTW9ja09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01l
bnVMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVu
dUxpc3RQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01lbnVMaXN0T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CisgICAgYm9vbCBpc05hdGl2ZVNwaW5C
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTcGlu
QnV0dG9uUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzTWVkaWFPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0K
LSAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKLSAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdDsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQotICAgIGJvb2wgaXNS
YWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvR3JvdXA7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KKyAgICBib29sIGlz
TWVkaWFPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNTd2l0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVC
dXR0b247IH0KKyAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc05vbk5h
dGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RhYkxpc3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFiTGlzdDsgfQorICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQorICAgIGJvb2wgaXNSYWRp
b0dyb3VwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0KKyAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7
IH0KICAgICBib29sIGlzVHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9Ci0gICAgYm9vbCBpc1RyZWVHcmlkKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9
CisgICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVt
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtOyB9CiAgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KLSAg
ICBib29sIGlzQnV0dG9uKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9Ci0gICAg
Ym9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hlY2tib3goKSB8fCBp
c1JhZGlvQnV0dG9uKCk7IH0KLSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAgYm9v
bCBpc0NhbnZhcygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDYW52YXM7IH0KLSAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KLSAgICBib29s
IGlzQmxvY2txdW90ZSgpIGNvbnN0OwotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0OwotICAg
IGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q29sb3JXZWxsOyB9Ci0gICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0
OwotICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0OwotICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQot
ICAgIGJvb2wgaXNUb29sYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KLSAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNv
bnN0OwotICAgIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0tleWJv
YXJkRm9jdXNhYmxlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQotICAgIGJvb2wg
aXNPdXRwdXQoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSG92ZXJlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgeyB9CisgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQorICAgIGJvb2wg
aXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0NoZWNrYm94KCkg
fHwgaXNSYWRpb0J1dHRvbigpOyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJl
YTsgfQorICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOyB9CisgICAgYm9vbCBpc1BvcFVwQnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlBvcFVwQnV0dG9uOyB9CisgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
Q29sb3JXZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQorICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzU3BsaXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KKyAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFy
OyB9CisgICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2Fy
ZEZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1h
cnk7IH0KKyAgICBib29sIGlzT3V0cHV0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGlz
Q2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWxl
Y3RlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZvY3Vz
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIb3ZlcmVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5kZXRlcm1p
bmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xvYWRl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc011bHRpU2Vs
ZWN0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09m
ZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1By
ZXNzZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNVbnZp
c2l0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUmVxdWly
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNS
ZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0xpbmtlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wp
IG92ZXJyaWRlIHsgfQogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0Jiwg
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGNvbnZl
cnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBt
YW55IGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGlt
ZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzUGxhaW5UZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0Kikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3RhdGljVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdDsKLQotICAgIGJvb2wgc3VwcG9ydHNEYXRl
dGltZUF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0
cmlidXRlVmFsdWUoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5B
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzU2VsZWN0ZWRP
cHRpb25BY3RpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9v
bCBoYXNCb2xkRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBoYXNJdGFsaWNGb250KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFJhbmdlPiBn
ZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BsYWluVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTYW1lRm9u
dChSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGlj
VGV4dDsgfQorICAgIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldE51bWVy
aWNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5T
ZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRl
ZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdDsKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRCeURlZmF1bHQoKSBjb25zdDsKLSAgICAKLSAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7
Ci0gICAgCi0gICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgaW50
IHRhYmxlTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9Ci0g
ICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsg
fQotICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAu
MGY7IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1
cm4gMC4wZjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRp
b0J1dHRvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCk7Ci0gICAgdmlydHVhbCBpbnQgbGF5b3V0
Q291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
dW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGhlYWRp
bmdMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgdGFibGVMZXZl
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5QnV0dG9u
U3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0K
KyAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4w
ZjsgfQorICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwLjBmOyB9CisgICAgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwLjBmOyB9CisgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRU
YWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
c2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOworICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzQVJJQUNvbnRyb2woQWNjZXNzaWJpbGl0eVJvbGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlSb2xlKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigpIGNvbnN0Owot
ICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAg
ICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBo
YXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIHBvcHVwVmFsdWUo
KSBjb25zdDsKLSAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0
c0hhc1BvcHVwKCkgY29uc3Q7Ci0gICAgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3Q7Ci0g
ICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdDsKLSAgICBTdHJpbmcgaW52YWxpZFN0YXR1
cygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Q7Ci0gICAgYm9vbCBz
dXBwb3J0c0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdDsKLSAgICBj
b25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Q7Ci0gICAgY29uc3Qg
QXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBjbGFzc0xpc3QoVmVj
dG9yPFN0cmluZz4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24o
KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNv
bnN0OwotICAgIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRz
Q3VycmVudCgpIGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNv
bnN0OwotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250
YWluZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUxh
YmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFPd25z
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaGFzRGF0YWxpc3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHByZXNzZWRJc1By
ZXNlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFyaWFJc011bHRpbGluZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyBpbnZhbGlkU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBv
cnRzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzQ2hlY2tlZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJl
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c1Jh
bmdlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlm
aWVyQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGlu
a1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0
cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25z
dCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIFRo
aXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiB0
aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KLSAgICBib29sIGlnbm9yZWRGcm9tTW9k
YWxQcmVzZW5jZSgpIGNvbnN0OwotICAgIGJvb2wgaXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNv
bnN0OwotICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25zdDsKLSAgICAKLSAgICBib29sIHN1cHBv
cnRzU2V0U2l6ZSgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0Owot
ICAgIGludCBzZXRTaXplKCkgY29uc3Q7Ci0gICAgaW50IHBvc0luU2V0KCkgY29uc3Q7Ci0gICAg
CisgICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIHN1cHBvcnRzU2V0U2l6
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGludCBzZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHBvc0lu
U2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQVJJQUdyYWJiZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSB7IH0KLSAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0cygpIHsgcmV0dXJuIHsg
fTsgfQotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBR3JhYmJlZCgpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBv
dmVycmlkZSB7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMo
KSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKwogICAgIC8vIENhbGxlZCBvbiB0aGUgcm9vdCBB
WCBvYmplY3QgdG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0
ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
LQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGZvY3VzZWRVSUVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RD
aGlsZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG5leHRTaWJsaW5n
KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdDsKLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3JlZChpbnQgbGltaXQp
IGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSogcGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IH0KLSAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBWENvcmVPYmplY3QqIGZvY3Vz
ZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGZpcnN0Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBu
ZXh0U2libGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3Jl
ZChpbnQgbGltaXQpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENv
cmVPYmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJz
dEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2RlKik7Ci0gICAgdm9pZCBmaW5kTWF0
Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBh
cmVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBmaW5kTWF0Y2hpbmdPYmpl
Y3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0OworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRleHQgc2Vs
ZWN0aW9uCiBwcml2YXRlOgpAQCAtNjE4LDM5NyArMzc3LDM5NSBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsKICAgICBSZWZQdHI8UmFuZ2U+IGZp
bmRUZXh0UmFuZ2UoVmVjdG9yPFN0cmluZz4gY29uc3QmIHNlYXJjaFN0cmluZ3MsIFJlZlB0cjxS
YW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbikgY29u
c3Q7CiBwdWJsaWM6Ci0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFj
Y2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdDsKLSAgICBWZWN0b3I8
U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBj
b25zdCYpOwotCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZhYmxlT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRV
SUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IHsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRy
b2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9s
ZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJv
bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhh
c1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2li
aWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlv
biBjb25zdCYpIG92ZXJyaWRlOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJs
ZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGxp
bmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGUgeyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgQWNjZXNzaWJp
bGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6VW5rbm93bjsgfQorICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBh
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0Ci0g
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4
dD4mKSBjb25zdCB7IH07CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNz
aWJpbGl0eVRleHQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9OwogICAgIC8vIEEgc2luZ2xlIG1ldGhv
ZCBmb3IgZ2V0dGluZyBhIGNvbXB1dGVkIGxhYmVsIGZvciBhbiBBWE9iamVjdC4gSXQgY29uZGVu
c2VzIHRoZSBudWFuY2VzIG9mIGFjY2Vzc2liaWxpdHlUZXh0LiBVc2VkIGJ5IEluc3BlY3Rvci4K
LSAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgpOwotICAgIAorICAgIFN0cmluZyBjb21wdXRlZExh
YmVsKCkgb3ZlcnJpZGU7CisKICAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFt
ZSBvbiBhbiBBY2Nlc3NpYmxlT2JqZWN0LgotICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxl
TmFtZShjb25zdCBBdG9tU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0
ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0OworICAgIHZvaWQgc2V0QWNjZXNzaWJsZU5h
bWUoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaGFzQXR0cmlidXRl
c1JlcXVpcmVkRm9ySW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBY2Nlc3Np
YmlsaXR5IFRleHQgLSAoVG8gYmUgZGVwcmVjYXRlZCkuCi0gICAgdmlydHVhbCBTdHJpbmcgYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmly
dHVhbCBTdHJpbmcgaGVscFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0
cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0
cmluZygpOyB9CisgICAgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KIAogICAgIC8vIE1ldGhvZHMgZm9yIGRldGVybWluaW5nIGFjY2Vzc2liaWxp
dHkgdGV4dC4KLSAgICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBhcmlh
Um9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRl
ckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3Jp
YmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIGNvbnN0IFN0
cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURl
cml2ZXNGcm9tQ29udGVudCgpIGNvbnN0OwotICAgIAorICAgIGJvb2wgaXNBUklBU3RhdGljVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7IH0KKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0cmluZyB0ZXh0VW5kZXJFbGVt
ZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0
VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIFN0cmluZyB0ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAg
ICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBTdHJp
bmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFs
dWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21D
b250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBYmJyZXZpYXRpb25zCi0gICAgdmly
dHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0
b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFN0cmluZyBl
eHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVt
ZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBP
bmx5IGlmIGlzQ29sb3JXZWxsKCkKLSAgICB2aXJ0dWFsIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIs
IGludCYgZywgaW50JiBiKSBjb25zdCB7IHIgPSAwOyBnID0gMDsgYiA9IDA7IH0KKyAgICB2b2lk
IGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3Qgb3ZlcnJpZGUgeyByID0g
MDsgZyA9IDA7IGIgPSAwOyB9CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvbGU7IH0KIAotICAgIHZpcnR1YWwgQVhPYmplY3RD
YWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0OwotICAgIEFYSUQgYXhPYmplY3RJRCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KLSAgICAKKyAgICBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faWQ7IH0KKwogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhbmNob3JF
bGVtZW50Rm9yTm9kZShOb2RlKik7CiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhl
YWRpbmdFbGVtZW50Rm9yTm9kZShOb2RlKik7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIGJvb2wgc3VwcG9ydHNQcmVz
c0FjdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdC
b3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBzbmFwcGVkSW50UmVjdChi
b3VuZGluZ0JveFJlY3QoKSk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3Qo
KSBjb25zdCA9IDA7Ci0gICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVu
dFJlY3QoKS5zaXplKCk7IH0KLSAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKTsKKyAg
ICBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIGJvb2wgc3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAg
IEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94
UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94
UmVjdCgpKTsgfQorICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSA9
IDA7CisgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZWxlbWVu
dFJlY3QoKS5zaXplKCk7IH0KKyAgICBJbnRQb2ludCBjbGlja1BvaW50KCkgb3ZlcnJpZGU7CiAg
ICAgc3RhdGljIEludFJlY3QgYm91bmRpbmdCb3hGb3JRdWFkcyhSZW5kZXJPYmplY3QqLCBjb25z
dCBWZWN0b3I8RmxvYXRRdWFkPiYpOwotICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIFBhdGgoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BhdGgoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRl
eHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQbGFp
blRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFBsYWluVGV4dFJh
bmdlKCk7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHNl
bGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBj
b25zdCB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgpLmxlbmd0aDsgfQotICAgIAotICAgIHZp
cnR1YWwgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIFVSTCgpOyB9Ci0gICAgdmlydHVhbCBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24o
KTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25z
dCB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUGFnZSogcGFnZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBGcmFtZVZpZXcqIGRv
Y3VtZW50RnJhbWVWaWV3KCkgY29uc3Q7Ci0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7Ci0gICAg
RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0OwotICAgIERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNv
bnN0OwotICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3RvcigpIGNvbnN0OwotICAgIFN0
cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQYXRoKCk7IH0KKyAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0
SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWlu
VGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxh
aW5UZXh0UmFuZ2UoKTsgfQorICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsgfQorICAgIHVuc2lnbmVk
IHNlbGVjdGlvbkVuZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdl
KCkubGVuZ3RoOyB9CisKKyAgICBVUkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJM
KCk7IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQorICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcm
IGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXaWRnZXQqIHdp
ZGdldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBXaWRnZXQqIHdp
ZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiB0b3BEb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3Rv
cigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNwZWMuCi0gICAgdmly
dHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNlZChib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSB7IH0KLSAgICBib29sIHJlcGxhY2VUZXh0
SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpOwotICAgIGJvb2wg
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShm
bG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
eyB9Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKTsKLSAgICBib29sIHBlcmZv
cm1EZWZhdWx0QWN0aW9uKCkgeyByZXR1cm4gcHJlc3MoKTsgfQotICAgIAotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGluY3JlbWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSB7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dENoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0
eVJvbGUoKSB7IH0KLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpOwotICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZHJlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmls
aXR5T2JqZWN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqLCB1bnNpZ25lZCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29s
IGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsgfQorICAgIHVu
c2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQor
CisgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2Vs
ZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0
ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgcmVwbGFjZVRl
eHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGU7
CisgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgcHJlc3MoKSBvdmVy
cmlkZTsKKyAgICBib29sIHBlcmZvcm1EZWZhdWx0QWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4g
cHJlc3MoKTsgfQorCisgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHRleHRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlIHsgfQorICAgIGNvbnN0IEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklm
TmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faGF2ZUNoaWxkcmVuOyB9CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlU3VidHJlZSgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCBib29sIG5lZWRzVG9V
cGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldE5lZWRzVG9VcGRh
dGVTdWJ0cmVlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hGcm9tUGFyZW50KCk7CisgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGU7CiAj
ZWxzZQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyB9CisgICAgdm9pZCBk
ZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGJvb2wg
aXNEZXRhY2hlZEZyb21QYXJlbnQoKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBi
b29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9jdXNB
Y3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSB7IH0KLSAg
ICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqKSBj
b25zdDsKLSAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KikgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9j
a0NoaWxkKCkgY29uc3Q7CisgICAgYm9vbCBpc0RldGFjaGVkRnJvbVBhcmVudCgpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNlbGVjdGVkQ2hpbGRy
ZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB2
aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVy
cmlkZSB7IH0KKyAgICBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZl
RGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lk
IGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBo
YW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0Rlc2Nl
bmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
Um9sZSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgYm9vbCBo
YXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgCi0gICAgUmVmUHRyPFJhbmdlPiBlbGVt
ZW50UmFuZ2UoKSBjb25zdDsKKyAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1RhZ05h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugdmlz
aWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisKKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0YXRpYyBib29sIHJlcGxhY2VkTm9kZU5lZWRz
Q2hhcmFjdGVyKE5vZGUqIHJlcGxhY2VkTm9kZSk7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVm
dExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsK
LSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBz
ZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
Y29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Q7CisKKyAgICBW
aXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0
aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mTGVmdFdvcmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgcG9zaXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsZWZ0TGluZVZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHNlbnRlbmNlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2Ugc3R5bGVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9y
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRS
YW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGlj
IFN0cmluZyBzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYpOwotICAgIFN0cmluZyBzdHJpbmdGb3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25z
dDsKLSAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAg
ICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikgY29u
c3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKSBjb25zdCB7IH0KLQotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JC
b3VuZHMpIGNvbnN0OwotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MubmV4dCgp
OyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3QgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2
aW91cygpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
U2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAg
IFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3Rh
cnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxh
c3RJbmRleE9LICovKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIAot
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCkg
Y29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICB2aXJ0dWFsIGludCBpbmRl
eEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCB7IHJldHVy
biAwOyB9Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9y
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgaW50IGxpbmVGb3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBQbGFpblRleHRSYW5n
ZSBwbGFpblRleHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBsaW5lQnJl
YWtzKFZlY3RvcjxpbnQ+JikgY29uc3QgeyB9Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBk
b0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgp
OyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4
KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9Ci0gICAgUGxhaW5U
ZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB2
aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBkb0FYQm91bmRz
Rm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7
IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0K
KyAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSW50UmVjdCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAg
IEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBv
c2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5uZXh0KCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gcHJl
dmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlUG9zLnByZXZpb3VzKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFN0YXJ0KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0TGlu
ZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVu
Y2VFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQ
YXJhZ3JhcGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICov
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorCisgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBpbnQgaW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQorCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBsaW5l
Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBpbmRleChj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAtMTsgfQorCisg
ICAgdm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAg
UGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQorICAgIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5n
ZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhaW5U
ZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5n
ZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZTsKKworICAgIFN0cmluZyBkb0FYU3Ry
aW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQorICAgIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgSW50
UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQogICAgIHN0YXRp
YyBTdHJpbmcgbGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oTm9kZSosIGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwogCi0gICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25l
ZCk7CisgICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGU7CiAK
LSAgICBTdHJpbmcgY29tcHV0ZWRSb2xlU3RyaW5nKCkgY29uc3Q7CisgICAgU3RyaW5nIGNvbXB1
dGVkUm9sZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nVmFsdWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IFN0cmluZyBzdHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0g
ICAgdmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JN
U0FBKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCk7IH0KKyAgICBTdHJpbmcgc3RyaW5nVmFs
dWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQorICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNB
QSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisKKyAgICBTdHJpbmcg
cGFzc3dvcmRGaWVsZFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBib29sIGlzVmFsdWVBdXRvZmlsbGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBdXRvRmlsbEJ1
dHRvblR5cGUgdmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci0gICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0OwotICAgIGJvb2wgaXNW
YWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZh
bHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Q7Ci0gICAgCiAgICAgLy8gVXNlZCBieSBhbiBB
UklBIHRyZWUgdG8gZ2V0IGFsbCBpdHMgcm93cy4KLSAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKyAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKICAgICAvLyBVc2VkIGJ5IGFuIEFSSUEg
dHJlZSBpdGVtIHRvIGdldCBhbGwgb2YgaXRzIGRpcmVjdCByb3dzIHRoYXQgaXQgY2FuIGRpc2Ns
b3NlLgotICAgIHZvaWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKTsKLSAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRvIGdldCBv
bmx5IGl0cyBjb250ZW50LCBhbmQgbm90IGl0cyBjaGlsZCB0cmVlIGl0ZW1zIGFuZCBncm91cHMu
IAotICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKTsKLSAgICAKKyAgICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRy
ZWUgaXRlbSB0byBnZXQgb25seSBpdHMgY29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBp
dGVtcyBhbmQgZ3JvdXBzLgorICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKKwogICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24g
ZmVhdHVyZXMuCi0gICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYg
PSB0cnVlKSBjb25zdDsKLSAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJ
Zk9mZiA9IHRydWUpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpdmVSZWdpb25B
bmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQnVzeSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRl
SWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lv
bihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUp
IGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJl
Z2lvblJlbGV2YW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAg
IGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcgZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JSb2xlKEFjY2Vz
c2liaWxpdHlSb2xlKTsKICAgICBzdGF0aWMgYm9vbCBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVk
KGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBjb250ZW50RWRpdGFibGVBdHRy
aWJ1dGVJc0VuYWJsZWQoRWxlbWVudCopOwotICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0
cmlidXRlU2V0KCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVT
ZXQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdDsKKyAgICBib29sIHN1
cHBvcnRzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcmVhZE9ubHlWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGF1
dG9Db21wbGV0ZVZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRy
aWJ1dGVzKCkgY29uc3Q7Ci0gICAgCiAgICAgLy8gQ1NTMyBTcGVlY2ggcHJvcGVydGllcy4KLSAg
ICB2aXJ0dWFsIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJvcGVydHkoKSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8U3BlYWtBcz4geyB9OyB9CisgICAgT3B0aW9uU2V0PFNwZWFrQXM+IHNw
ZWFrQXNQcm9wZXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE9wdGlvblNldDxTcGVha0Fz
PiB7IH07IH0KIAogICAgIC8vIE1ha2UgdGhpcyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxpbmcg
YXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQuCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZp
c2libGUoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBTYW1lLCBidXQgaWYgdGhlIHdob2xlIG9i
amVjdCBjYW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2Nh
bCBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBT
Y3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMg
b2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFs
UG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICAKLSAgICBlbnVtIGNsYXNzIFNjcm9s
bEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9OwotICAgIGJvb2wgc2Ny
b2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Q7Ci0gICAgSW50UG9pbnQgc2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICBJbnRTaXplIHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNv
bnN0OyAgICAKLSAgICBJbnRSZWN0IHNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0Owot
ICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0
aW9ucyYpIGNvbnN0OwotICAgIAotICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKTsK
LSAgICB2b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpOworICAgIHZvaWQgc2Ny
b2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
Ym9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsK
KyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFNp
emUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBzY3Jv
bGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbFRv
TWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRmlyZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlm
IHRoZSBpc0lnbm9yZWQgdmFsdWUgY2hhbmdlZC4KLSAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZh
bHVlQ2hhbmdlZCgpOworICAgIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBmb3IgaXNNYXRo
RWxlbWVudCgpLgotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFJvdygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVyT3Zl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFJvb3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVS
b290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE9wZXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVu
Y2VPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRva2VuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRo
U2NyaXB0T2JqZWN0VHlwZSkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9i
amVjdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZyYWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZl
bmNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhT
dWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc01hdGhSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWF0aE51bWJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aElkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVD
ZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aE11
bHRpc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFRva2VuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9i
amVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFJvb3QgY29tcG9uZW50cy4KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSb290SW5kZXhP
YmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgCisgICAgQVhDb3JlT2JqZWN0KiBtYXRo
UmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3Jl
T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorCiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEZyYWN0aW9uIGNvbXBvbmVudHMuCi0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aERl
bm9taW5hdG9yT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
bWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBB
WENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgotICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0
T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAor
ICAgIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgLy8gRmVuY2VkIGNvbXBv
bmVudHMuCi0gICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBpbnQgbWF0aExp
bmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQW5v
bnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKyAgICBT
dHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9y
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIE11bHRpc2NyaXB0
cyBjb21wb25lbnRzLgotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0UGFpcnM7Ci0gICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlw
dHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgeyB9Ci0gICAgCisgICAgdm9p
ZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7IH0KKwogICAgIC8vIFZpc2liaWxpdHkuCi0gICAgYm9v
bCBpc0FYSGlkZGVuKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0RPTUhpZGRlbigpIGNvbnN0OwotICAg
IGJvb2wgaXNIaWRkZW4oKSBjb25zdCB7IHJldHVybiBpc0FYSGlkZGVuKCkgfHwgaXNET01IaWRk
ZW4oKTsgfQorICAgIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNET01IaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSGlkZGVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVuKCk7IH0KIAogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3
cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKSB7IG1f
d3JhcHBlciA9IHdyYXBwZXI7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIpIG92ZXJyaWRlIHsgbV93cmFwcGVyID0gd3JhcHBlcjsgfQog
I2Vsc2UKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50KTsKKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3Qq
IHBhcmVudCkgb3ZlcnJpZGU7CiAjZWxzZQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFy
ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVu
dFBhcmVudChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0KICNlbmRpZgotICAgIAorCiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFkpCiAgICAgLy8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBtZXRob2Qg
Zm9yIGRldGVybWluaW5nIGlmIGFuIGF0dGFjaG1lbnQgaXMgaWdub3JlZAotICAgIGJvb2wgYWNj
ZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBib29sIGFjY2Vzc2liaWxp
dHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gZ2l2ZXMgcGxhdGZv
cm1zIHRoZSBvcHBvcnR1bml0eSB0byBpbmRpY2F0ZSBpZiBhbmQgaG93IGFuIG9iamVjdCBzaG91
bGQgYmUgaW5jbHVkZWQKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogI2Vsc2UKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KKyAgICBib29s
IGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBs
YXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmllbGRMZW5n
dGgoKTsKLSAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwotICAgIGJvb2wg
aXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0OworICAgIGludCBhY2Nlc3NpYmlsaXR5UGFz
c3dvcmRGaWVsZExlbmd0aCgpIG92ZXJyaWRlOworICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3Rl
bmVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIGFsbG93cyBmb3IgYW4gQWNj
ZXNzaWJpbGl0eU9iamVjdCB0byB1cGRhdGUgaXRzIHJlbmRlciB0cmVlIG9yIHBlcmZvcm0KICAg
ICAvLyBvdGhlciBvcGVyYXRpb25zIHVwZGF0ZSB0eXBlIG9wZXJhdGlvbnMKLSAgICB2b2lkIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIAorICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCkg
b3ZlcnJpZGU7CisKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHByZXZlbnRLZXlib2Fy
ZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdDsKLSAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2goYm9vbCk7Ci0gICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1Zh
bHVlSW5UaXRsZSgpIGNvbnN0OworICAgIGJvb2wgcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sKSBvdmVycmlkZTsKKyAgICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1
cm5zVmFsdWVJblRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNwZWVjaEhpbnRB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBkZXNjcmlwdGlvbkF0
dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGhlbHBUZXh0QXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdGl0bGVBdHRyaWJ1dGVWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgp
IGNvbnN0OwotICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CisgICAgYm9v
bCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q2Fy
ZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGZvY3VzYWJsZUFuY2VzdG9yKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZWRpdGFibGVBbmNlc3RvcigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RF
ZGl0YWJsZUFuY2VzdG9yKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNhYmxlQW5j
ZXN0b3IoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlZGl0YWJsZUFuY2Vz
dG9yKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGlnaGVzdEVkaXRhYmxl
QW5jZXN0b3IoKSBvdmVycmlkZTsKIAotICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0
OworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0YXRp
YyBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRjaGVkUGFyZW50KGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmLCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wo
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYpPiYpOwotICAgIAotICAgIHZvaWQgY2xlYXJJc0ln
bm9yZWRGcm9tUGFyZW50RGF0YSgpIHsgbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YSA9IEFjY2Vz
c2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOyB9Ci0gICAgdm9pZCBzZXRJc0lnbm9y
ZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICAKKwor
ICAgIHZvaWQgY2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpIG92ZXJyaWRlIHsgbV9pc0ln
bm9yZWRGcm9tUGFyZW50RGF0YSA9IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YSgpOyB9CisgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29y
ZU9iamVjdCopIG92ZXJyaWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgQVhJRCBtX2lkIHsgMCB9Owog
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwpAQCAtMTAyMSwyNCAr
Nzc4LDI0IEBAIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9U
UkVFKQogICAgIGJvb2wgbV9pc29sYXRlZFRyZWVOb2RlSW5pdGlhbGl6ZWQgeyBmYWxzZSB9Owog
I2VuZGlmCi0gICAgCi0gICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmIGRhdGEpIHsgbV9pc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YSA9IGRhdGE7IH0KKworICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEo
QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSBvdmVycmlkZSB7IG1f
aXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgCisKICAgICAvLyBJZiB0aGlzIG9iamVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJu
IGl0cyBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3Jv
bGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdCB7IH0KICAgICBTY3Jv
bGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFBbmNlc3RvcigpIGNvbnN0OwogICAgIHZvaWQgc2Ny
b2xsQXJlYUFuZEFuY2VzdG9yKHN0ZDo6cGFpcjxTY3JvbGxhYmxlQXJlYSosIEFjY2Vzc2liaWxp
dHlPYmplY3QqPiYpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJp
bGl0eVNlYXJjaENyaXRlcmlhKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2li
aWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0
eVNlYXJjaENyaXRlcmlhKik7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNl
YXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqKTsKLSAgICBzdGF0aWMgYm9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVz
dWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJp
YSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOworCisgICAgc3RhdGljIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFYQ29yZU9iamVjdCosIEFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNl
YXJjaENyaXRlcmlhKik7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJj
aE1hdGNoKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOworICAg
IHN0YXRpYyBib29sIG9iamVjdE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChB
WENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGJ1dHRvblJv
bGVUeXBlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc09uc2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBp
c09uU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXNwYXRjaFRvdWNoRXZlbnQo
KTsKIAogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xMDY0LDEwICs4
MjEsMTAgQEAgcHJvdGVjdGVkOgogfTsKIAogI2lmICFFTkFCTEUoQUNDRVNTSUJJTElUWSkKLWlu
bGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIHsgcmV0dXJuIG1fY2hpbGRy
ZW47IH0KK2lubGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KIGlubGluZSBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiBp
bmxpbmUgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCB7IHJldHVybiAtMTsgfQotaW5saW5lIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgeyB9CitpbmxpbmUgdm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVycmlkZSB7IH0KICNlbmRpZgog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25z
dCBOb2RlKiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmKT4mIGlzQWNjZXNzaWJsZSk7CkBAIC0xMDc2LDkgKzgzMyw5IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqLCBjb25zdCBX
VEY6OkZ1bmN0CiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZ
KFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVj
dC5wcmVkaWNhdGU7IH0gXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpB
WENvcmVPYmplY3QmIG9iamVjdCkgeyByZXR1cm4gb2JqZWN0LnByZWRpY2F0ZTsgfSBcCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCkKLXN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlJiBjb250ZXh0KSB7IHJldHVybiBj
b250ZXh0LmlzQWNjZXNzaWJpbGl0eU9iamVjdCgpOyB9CitzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0JiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzQWNj
ZXNzaWJpbGl0eU9iamVjdCgpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCmluZGV4IDk4ZmZiMzE1ZTIxMGIwY2IzNWRiZTc5YmNjMjBmOTExMDIx
NzhiYmMuLjI5MDNkZTE5ODhjNjVkNTJiNWIyMDdiMDA2MDUxMWVkZjUzODE3N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCkBAIC0yNSw3ICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3Iu
aCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbmNsdWRlICJWaXNpYmxlU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKFdJTikK
QEAgLTQ1LDYgKzUwLDIzIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE5vZGU7CitjbGFzcyBFbGVtZW50OworY2xhc3Mg
UmVuZGVyT2JqZWN0OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNzIFBhdGg7CitjbGFzcyBX
aWRnZXQ7CitjbGFzcyBQYWdlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNz
IEZyYW1lVmlldzsKK2NsYXNzIFNjcm9sbFZpZXc7CitjbGFzcyBBWE9iamVjdENhY2hlOworY2xh
c3MgQVhDb3JlT2JqZWN0OworY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc7CitzdHJ1Y3Qg
QWNjZXNzaWJpbGl0eVRleHQ7CitzdHJ1Y3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnM7CisK
IHR5cGVkZWYgdW5zaWduZWQgQVhJRDsKIGV4dGVybiBjb25zdCBBWElEIEludmFsaWRBWElEOwog
dHlwZWRlZiB1bnNpZ25lZCBBWElzb2xhdGVkVHJlZUlEOyAgICAKQEAgLTIwMywzNiArMjI1LDg1
NiBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBXaW5kb3csCiB9OwogCi1j
bGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlIHsKK2VudW0gY2xhc3MgQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQsIEVs
ZW1lbnRDaGFuZ2UgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNl
IHsgU2NyZWVuLCBQYWdlIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVj
dGlvbiB7CisgICAgTmV4dCA9IDEsCisgICAgUHJldmlvdXMsCit9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXkgeworICAgIEFueVR5cGUgPSAxLAorICAgIEFydGljbGUsCisg
ICAgQmxvY2txdW90ZVNhbWVMZXZlbCwKKyAgICBCbG9ja3F1b3RlLAorICAgIEJvbGRGb250LAor
ICAgIEJ1dHRvbiwKKyAgICBDaGVja0JveCwKKyAgICBDb250cm9sLAorICAgIERpZmZlcmVudFR5
cGUsCisgICAgRm9udENoYW5nZSwKKyAgICBGb250Q29sb3JDaGFuZ2UsCisgICAgRnJhbWUsCisg
ICAgR3JhcGhpYywKKyAgICBIZWFkaW5nTGV2ZWwxLAorICAgIEhlYWRpbmdMZXZlbDIsCisgICAg
SGVhZGluZ0xldmVsMywKKyAgICBIZWFkaW5nTGV2ZWw0LAorICAgIEhlYWRpbmdMZXZlbDUsCisg
ICAgSGVhZGluZ0xldmVsNiwKKyAgICBIZWFkaW5nU2FtZUxldmVsLAorICAgIEhlYWRpbmcsCisg
ICAgSGlnaGxpZ2h0ZWQsCisgICAgSXRhbGljRm9udCwKKyAgICBLZXlib2FyZEZvY3VzYWJsZSwK
KyAgICBMYW5kbWFyaywKKyAgICBMaW5rLAorICAgIExpc3QsCisgICAgTGl2ZVJlZ2lvbiwKKyAg
ICBNaXNzcGVsbGVkV29yZCwKKyAgICBPdXRsaW5lLAorICAgIFBsYWluVGV4dCwKKyAgICBSYWRp
b0dyb3VwLAorICAgIFNhbWVUeXBlLAorICAgIFN0YXRpY1RleHQsCisgICAgU3R5bGVDaGFuZ2Us
CisgICAgVGFibGVTYW1lTGV2ZWwsCisgICAgVGFibGUsCisgICAgVGV4dEZpZWxkLAorICAgIFVu
ZGVybGluZSwKKyAgICBVbnZpc2l0ZWRMaW5rLAorICAgIFZpc2l0ZWRMaW5rLAorfTsKKworc3Ry
dWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7CisgICAgQVhDb3JlT2JqZWN0KiBzdGFy
dE9iamVjdDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlv
bjsKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4gc2VhcmNoS2V5czsKKyAgICBT
dHJpbmcgc2VhcmNoVGV4dDsKKyAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQ7CisgICAgYm9vbCB2
aXNpYmxlT25seTsKKyAgICBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seTsKKworICAgIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRl
eHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlh
dGVEZXNjZW5kYW50c09ubHkpCisgICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCisg
ICAgICAgICwgc2VhcmNoRGlyZWN0aW9uKHNlYXJjaERpcmVjdGlvbikKKyAgICAgICAgLCBzZWFy
Y2hUZXh0KHNlYXJjaFRleHQpCisgICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkK
KyAgICAgICAgLCB2aXNpYmxlT25seSh2aXNpYmxlT25seSkKKyAgICAgICAgLCBpbW1lZGlhdGVE
ZXNjZW5kYW50c09ubHkoaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorICAgIHsgfQorfTsKKwor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIHsKKyAgICBJbmNsdWRlT2Jq
ZWN0LAorICAgIElnbm9yZU9iamVjdCwKKyAgICBEZWZhdWx0QmVoYXZpb3IsCit9OworCitlbnVt
IGNsYXNzIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3Rl
cCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGUgeworICAgIE9mZiA9IDAsCisgICAgT24sCisgICAgTWl4ZWQsCit9OworCitlbnVt
IGNsYXNzIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKKyAgICBOb25lLAorICAgIEFzY2Vu
ZGluZywKKyAgICBEZXNjZW5kaW5nLAorICAgIE90aGVyLAorICAgIEludmFsaWQsCit9OworCitl
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tIHsKKyAgICBCZWdpbiwg
Ly8gU2VhcmNoIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZWxlbWVudC4KKyAgICBTZWxlY3Rp
b24sIC8vIFNlYXJjaCBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24u
CisgICAgRW5kIC8vIFNlYXJjaCBmcm9tIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCit9OworCitl
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIHsKKyAgICBGb3J3YXJk
LCAvLyBPY2N1cnJlbmNlIGFmdGVyIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBCYWNrd2FyZCwg
Ly8gT2NjdXJyZW5jZSBiZWZvcmUgdGhlIHN0YXJ0aW5nIHJhbmdlLgorICAgIENsb3Nlc3QsIC8v
IENsb3Nlc3Qgb2NjdXJyZW5jZSB0byB0aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIg
b3IgYmVmb3JlLgorICAgIEFsbCAvLyBBbGwgb2NjdXJyZW5jZXMKK307CisKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hT
dHJpbmdzOyAvLyBUZXh0IHN0cmluZ3MgdG8gc2VhcmNoIGZvci4KKyAgICBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dFN0YXJ0RnJvbSBzdGFydDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb247CisKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlh
KCkKKyAgICAgICAgOiBzdGFydChBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2Vs
ZWN0aW9uKQorICAgICAgICAsIGRpcmVjdGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVj
dGlvbjo6Rm9yd2FyZCkKKyAgICB7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb25UeXBlIHsKKyAgICBTZWxlY3QsCisgICAgUmVwbGFjZSwKKyAgICBDYXBpdGFs
aXplLAorICAgIExvd2VyY2FzZSwKKyAgICBVcHBlcmNhc2UKK307CisKK3N0cnVjdCBBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbiB7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5n
ZXM7IC8vIHRleHQgb24gd2hpY2ggcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgorICAgIEFjY2Vzc2li
aWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB0eXBlOworICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7
IC8vIEZvciB0eXBlID0gcmVwbGFjZS4KKworICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KCkKKyAgICAgICAgOiB0eXBlKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0
KQorICAgIHsgfQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewor
ICAgIFZlcnRpY2FsLAorICAgIEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAorfTsKKworc3Ry
dWN0IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7CisgICAgZW51bSBDaGlsZHJl
bkluY2x1c2lvbiB7CisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGls
ZHJlbiwKKyAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCisg
ICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJl
biwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5hbWVGcm9tCisgICAgfTsK
KworICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxkcmVuSW5jbHVzaW9uOworICAgIGJvb2wgaW5j
bHVkZUZvY3VzYWJsZUNvbnRlbnQ7CisgICAgTm9kZSogaWdub3JlZENoaWxkTm9kZTsKKworICAg
IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZShDaGlsZHJlbkluY2x1c2lvbiBjID0g
VGV4dFVuZGVyRWxlbWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLCBib29sIGkgPSBmYWxzZSwg
Tm9kZSogaWdub3JlZCA9IG51bGxwdHIpCisgICAgICAgIDogY2hpbGRyZW5JbmNsdXNpb24oYykK
KyAgICAgICAgLCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudChpKQorICAgICAgICAsIGlnbm9yZWRD
aGlsZE5vZGUoaWdub3JlZCkKKyAgICB7IH0KK307CisKKyNpZiBQTEFURk9STShDT0NPQSkKK3R5
cGVkZWYgc3RydWN0IF9OU1JhbmdlIE5TUmFuZ2U7CisjZW5kaWYKKworc3RydWN0IFBsYWluVGV4
dFJhbmdlIHsKKyAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
eyAwIH07CisKKyAgICBQbGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIFBsYWluVGV4
dFJhbmdlKHVuc2lnbmVkIHMsIHVuc2lnbmVkIGwpCisgICAgICAgIDogc3RhcnQocykKKyAgICAg
ICAgLCBsZW5ndGgobCkKKyAgICB7IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWlu
VGV4dFJhbmdlKE5TUmFuZ2UpOworI2VuZGlmCisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlWaXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMgeworICAgIEZpcnN0LAorICAgIExhc3QsCit9Owor
CitzdHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgeworICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dDsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kOworCisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSA9IGRlZmF1bHQ7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBzLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCisgICAgICAgIDogc3RhcnQocykKKyAg
ICAgICAgLCBlbmQoZSkKKyAgICB7IH0KKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKKyAgICAgICAgOiBzdGFydChzZWxlY3Rpb24u
c3RhcnQoKSkKKyAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQorICAgIHsgfQorCisgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxs
KCk7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBl
IHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0
aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBv
c3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9OworCisvLyBVc2UgdGhpcyBzdHJ1Y3QgdG8g
c3RvcmUgdGhlIGlzSWdub3JlZCBkYXRhIHRoYXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28g
dGhhdCBpbiBhZGRDaGlsZHJlbigpCisvLyB3ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNo
YWluIGZvciBlYWNoIGVsZW1lbnQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1
bCBpbmZvcm1hdGlvbiBhbHJlYWR5Lgorc3RydWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YSB7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgeyBudWxscHRyIH07CisgICAg
Ym9vbCBpc0FYSGlkZGVuIHsgZmFsc2UgfTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGls
ZE9mQXJpYVJvbGUgeyBmYWxzZSB9OworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJl
bnQgeyBmYWxzZSB9OworCisgICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRh
KEFYQ29yZU9iamVjdCogcGFyZW50ID0gbnVsbHB0cikKKyAgICAgICAgOiBwYXJlbnQocGFyZW50
KQorICAgIHsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFyZW50OyB9
Cit9OworCitjbGFzcyBBWENvcmVPYmplY3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
QVhDb3JlT2JqZWN0PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5BWENvcmVPYmplY3QoKSA9IGRl
ZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIC8vIEFmdGVy
IGNvbnN0cnVjdGluZyBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgaXQgbXVzdCBiZSBnaXZlbiBhCisg
ICAgLy8gdW5pcXVlIElELCB0aGVuIGFkZGVkIHRvIEFYT2JqZWN0Q2FjaGUsIGFuZCBmaW5hbGx5
IGluaXQoKSBtdXN0CisgICAgLy8gYmUgY2FsbGVkIGxhc3QuCisgICAgdmlydHVhbCB2b2lkIHNl
dE9iamVjdElEKEFYSUQpID0gMDsKKyAgICB2aXJ0dWFsIEFYSUQgb2JqZWN0SUQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGluaXQoKSA9IDA7CisKKyAgICAvLyBXaGVuIHRoZSBjb3Jy
ZXNwb25kaW5nIFdlYkNvcmUgb2JqZWN0IHRoYXQgdGhpcyBhY2Nlc3NpYmxlIG9iamVjdAorICAg
IC8vIHJlcHJlc2VudHMgaXMgZGVsZXRlZCwgaXQgbXVzdCBiZSBkZXRhY2hlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNo
ZSogPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCA9
IDA7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yOworCisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAq
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFw
TGluaygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFp
bmluZ1Bhc3N3b3JkRmllbGQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENv
bnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzV2ViQXJlYSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSYWRp
b0J1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGlt
ZWxpbmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNZW51QmFyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0
b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRl
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVs
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGF0
YVRhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNG
aWVsZHNldCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcm91cCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc01lbnVMaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01v
Y2tPYmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFi
ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFPYmplY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzU3dpdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVGV4dENvbnRyb2wo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFiTGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Jh
ZGlvR3JvdXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29tYm9Cb3goKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVHJlZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlSXRl
bSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0xpc3RJdGVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94T3JSYWRp
bygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NhbnZhcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNCbG9ja3F1
b3RlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWV0
ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzVG9vbGJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Zp
Z3VyZUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3VtbWFyeSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPdXRwdXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNDaGVja2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNIb3ZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBGSVhN
RSBzaG91bGQgbmVlZCBqdXN0IG9uZSBzaW5jZSBvbnNjcmVlbiBzaG91bGQgYmUgIW9mZnNjcmVl
bi4KKyAgICB2aXJ0dWFsIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUHJlc3Nl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZXF1aXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1
aXJlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXND
b2xsYXBzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5kZWQoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBwYXJlbnRPYmplY3RJ
bnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIAorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxv
YXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOworCisgICAg
Ly8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0
IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUuCisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0
ZWRPcHRpb25BY3RpdmUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZv
bnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29u
c3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBo
YXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNVbmRlcmxp
bmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IGhlYWRpbmdMZXZlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94
T3JSYWRpb1ZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3Jp
cHRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBzZWxlY3RlZExpc3RJdGVtKCkgPSAwOworICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWlu
ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWls
c1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFG
bG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFM
YWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhT3du
c1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIGhhc1BvcHVwKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0Rh
dGFsaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNQcmVzc2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4
cGFuZGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGly
ZWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0Nv
bnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXJBdHRy
aWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBsaW5rUmVs
VmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsYXNzTGlzdChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRT
dGF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ3VycmVudCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9y
ZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KKyAgICB2aXJ0dWFsIGJv
b2wgaWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01vZGFsTm9kZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NldFNp
emUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgc2V0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCBwb3NJblNldCgpIGNvbnN0ID0gMDsKKworICAgIC8vIEFSSUEgZHJhZyBhbmQgZHJvcAor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcm9wcGluZygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzQVJJQUdyYWJiZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFSSUFHcmFi
YmVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFE
cm9wRWZmZWN0cygpID0gMDsKKworICAgIC8vIENhbGxlZCBvbiB0aGUgcm9vdCBBWCBvYmplY3Qg
dG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgorICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKKyAgICAvLyBDYWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUgcmVuZGVyIHRyZWUg
ZGV0ZXJtaW5lcyB3aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4K
KyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGZv
Y3VzZWRVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCog
Zmlyc3RDaGlsZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbGFzdENo
aWxkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1NpYmxp
bmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG5leHRTaWJsaW5nKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3Jl
ZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcHJldmlv
dXNTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVP
YmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rl
c2NlbmRhbnRPZkJhcnJlblBhcmVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNE
ZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCA9IDA7CisKKyAgICAvLyBU
ZXh0IHNlbGVjdGlvbgorICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0
UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYpID0gMDsKKworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsaW5r
ZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9s
Rm9yTGFiZWxFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBz
Y3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Qg
PSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0CisgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCA9IDA7CisgICAg
Ly8gQSBzaW5nbGUgbWV0aG9kIGZvciBnZXR0aW5nIGEgY29tcHV0ZWQgbGFiZWwgZm9yIGFuIEFY
T2JqZWN0LiBJdCBjb25kZW5zZXMgdGhlIG51YW5jZXMgb2YgYWNjZXNzaWJpbGl0eVRleHQuIFVz
ZWQgYnkgSW5zcGVjdG9yLgorICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSA9IDA7
CisKKyAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFtZSBvbiBhbiBBY2Nlc3Np
YmxlT2JqZWN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9t
U3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJ
bmNsdXNpb24oKSBjb25zdCA9IDA7CisKKyAgICAvLyBBY2Nlc3NpYmlsaXR5IFRleHQgLSAoVG8g
YmUgZGVwcmVjYXRlZCkuCisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gTWV0aG9k
cyBmb3IgZGV0ZXJtaW5pbmcgYWNjZXNzaWJpbGl0eSB0ZXh0LgorICAgIHZpcnR1YWwgYm9vbCBp
c0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1Zh
bHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlKCkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdCA9IDA7CisKKyAg
ICAvLyBBYmJyZXZpYXRpb25zCisgICAgdmlydHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworCisgICAg
Ly8gT25seSBpZiBpc0NvbG9yV2VsbCgpCisgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50
JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGFu
Y2hvckVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUHJlc3NB
Y3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBJbnRQb2ludCBjbGlja1BvaW50KCkgPSAwOworICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0
aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0b3JCZWhhdmlv
ckZvclRleHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHNl
bGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2VsZWN0
aW9uU3RhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
U3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcm
IGFjdGlvblZlcmIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBQYWdlKiBwYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRnJhbWVWaWV3
KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBmcmFt
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCA9IDA7CisgICAgLy8gMS1iYXNlZCwgdG8gbWF0
Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNoaWNh
bExldmVsKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRS
YW5nZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGluc2VydFRleHQoY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVy
Zm9ybURlZmF1bHRBY3Rpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVt
ZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hh
bmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFYQ29y
ZU9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0
KiwgdW5zaWduZWQpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVSb2xlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCBib29sIG5lZWRzVG9VcGRhdGVDaGlsZHJlbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogYWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2Vu
ZGFudENoYW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENo
YW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFYQ29yZU9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbmNlc3Rvck9m
T2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VG
b3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
cG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
blJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
bGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdG
b3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJv
dW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JSYW5nZShjb25zdCBSZWZQ
dHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGVuZ3RoRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFjY2Vzc2liaWxpdHlW
aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJsZVBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzV29yZFN0YXJ0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xp
bmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VFbmRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJl
dmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICovKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChp
bnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgcGxh
aW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25S
YW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleChjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8
aW50PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZv
ckxpbmUodW5zaWduZWQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRv
QVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWdu
ZWQpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGRvQVhTdHJpbmdGb3JSYW5nZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZG9B
WEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25z
dCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgZG9B
WExpbmVGb3JJbmRleCh1bnNpZ25lZCkgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgY29tcHV0
ZWRSb2xlU3RyaW5nKCkgY29uc3QgPSAwOworCisgICAgLy8gTVNBQQorICAgIHZpcnR1YWwgU3Ry
aW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBz
dHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lRm9y
TVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JN
U0FBKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgcGFzc3dvcmRGaWVsZFZhbHVl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgQXV0b0ZpbGxCdXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25U
eXBlKCkgY29uc3QgPSAwOworCisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgdG8gZ2V0IGFs
bCBpdHMgcm93cy4KKyAgICB2aXJ0dWFsIHZvaWQgYXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpID0gMDsKKyAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRv
IGdldCBhbGwgb2YgaXRzIGRpcmVjdCByb3dzIHRoYXQgaXQgY2FuIGRpc2Nsb3NlLgorICAgIHZp
cnR1YWwgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpID0gMDsKKyAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRvIGdldCBv
bmx5IGl0cyBjb250ZW50LCBhbmQgbm90IGl0cyBjaGlsZCB0cmVlIGl0ZW1zIGFuZCBncm91cHMu
CisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgPSAwOworCisgICAgLy8gQVJJQSBsaXZlLXJlZ2lvbiBmZWF0dXJlcy4KKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1
ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBl
eGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNCdXN5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0NvbnRl
bnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1JlYWRPbmx5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRPbmx5
VmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxl
dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0ID0gMDsKKworICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCisgICAgdmlydHVhbCBP
cHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgPSAwOworCisgICAgLy8g
TWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9sbGluZyBhcyBtYW55IG5lc3RlZCBzY3Jv
bGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBTYW1lLCBidXQgaWYgdGhlIHdob2xlIG9iamVjdCBj
YW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2NhbCBjb29y
ZGluYXRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1
cyhjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOworICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0
byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdp
bmRvdy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0ID0gMDsKKworICAgIGVudW0gY2xhc3MgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uIHsg
VXAsIERvd24sIExlZnQsIFJpZ2h0IH07CisgICAgdmlydHVhbCBib29sIHNjcm9sbEJ5UGFnZShT
Y3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBzY3JvbGxDb250
ZW50c1NpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbFZpc2libGVD
b250ZW50UmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUoYm9vbCkgPSAwOworCisgICAgLy8gRmly
ZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlmIHRoZSBp
c0lnbm9yZWQgdmFsdWUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SWZJZ25vcmVk
VmFsdWVDaGFuZ2VkKCkgPSAwOworCisgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRy
dWUgZm9yIGlzTWF0aEVsZW1lbnQoKS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFJvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVW5k
ZXJPdmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhOdW1iZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE9wZXJhdG9y
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aFRhYmxlUm93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJs
ZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0
T2JqZWN0VHlwZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlw
dE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3QgPSAw
OworCisgICAgLy8gUm9vdCBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBt
YXRoUmFkaWNhbmRPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhS
b290SW5kZXhPYmplY3QoKSA9IDA7CisKKyAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpID0gMDsKKyAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSA9IDA7CisKKyAgICAvLyBGcmFjdGlv
biBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoTnVtZXJhdG9yT2Jq
ZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmpl
Y3QoKSA9IDA7CisKKyAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KKyAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSA9IDA7CisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpID0gMDsKKworICAgIC8vIEZlbmNl
ZCBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6
OnBhaXI8QVhDb3JlT2JqZWN0KiwgQVhDb3JlT2JqZWN0Kj4+IEFjY2Vzc2liaWxpdHlNYXRoTXVs
dGlzY3JpcHRQYWlyczsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9z
dHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgPSAwOworCisgICAg
Ly8gVmlzaWJpbGl0eS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNET01IaWRkZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzSGlkZGVuKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V3Jh
cHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQpID0gMDsKKwor
ICAgIC8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhbiBh
dHRhY2htZW50IGlzIGlnbm9yZWQKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlnbm9y
ZUF0dGFjaG1lbnQoKSBjb25zdCA9IDA7CisgICAgLy8gZ2l2ZXMgcGxhdGZvcm1zIHRoZSBvcHBv
cnR1bml0eSB0byBpbmRpY2F0ZSBpZiBhbmQgaG93IGFuIG9iamVjdCBzaG91bGQgYmUgaW5jbHVk
ZWQKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCA9IDA7CisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIHZpcnR1YWwgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVuZ3Ro
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdCA9IDA7
CisjZW5kaWYKKworICAgIC8vIGFsbG93cyBmb3IgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCB0byB1
cGRhdGUgaXRzIHJlbmRlciB0cmVlIG9yIHBlcmZvcm0KKyAgICAvLyBvdGhlciBvcGVyYXRpb25z
IHVwZGF0ZSB0eXBlIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmFja2luZ1N0
b3JlKCkgPSAwOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBib29sIHByZXZl
bnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBzcGVlY2hIaW50QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBh
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpID0gMDsKKyNpZiBQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdmlydHVhbCBib29sIGNhcmV0QnJv
d3NpbmdFbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDYXJldEJyb3dz
aW5nRW5hYmxlZChib29sKSA9IDA7CisjZW5kaWYKKworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBmb2N1c2FibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZWRp
dGFibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogaGlnaGVzdEVk
aXRhYmxlQW5jZXN0b3IoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNl
bGYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhDb3JlT2JqZWN0Kikg
PSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggNTMzNGRjNzY2ZWM1MWY1NjcxYzEyNDZjNGFmYWEwOTgzNGNiZmQ2Yy4uN2MwYmU3NDczNTUw
YjFmOTIyYWU2Yzg3M2Y2NTdlNzRmMTYxYWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC05
NzYsNyArOTc2LDcgQEAgT3B0aW9uU2V0PFNwZWFrQXM+IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxl
KCkuc3BlYWtBcygpOwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50LCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0Cit2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihB
WENvcmVPYmplY3QqIHBhcmVudCwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRV
SUVsZW1lbnRzKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQt
PmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6UmFkaW9CdXR0b24pCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikpIHsKICAgICAgICAgLy8g
c3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVCdXR0b25zIGFyZSBqdXN0IHJl
cG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQncyBpZ25vcmVkIG9uIGFuIGlu
ZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmIChwYXJlbnQgJiYgKHBhcmVudC0+aXNN
ZW51SXRlbSgpIHx8IHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUJ1dHRvbikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYXV0
byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKTsKQEAgLTE0
MzMsNyArMTQzMyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmVy
LT5pc0xpc3RNYXJrZXIoKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFy
ZW50LT5pc0xpc3RJdGVtKCk7CiAgICAgfQogCkBAIC0yMzcwLDcgKzIzNzAsNyBAQCBJbnRSZWN0
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFj
dGVyT2Zmc2V0KGNvbnN0CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAotQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFw
SGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0
eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKIHsKICAgICBpZiAoIWFyZWEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjM5Myw3ICsyMzkzLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE0KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1v
dGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRl
KTsKICAgICBpZiAoIXJlbW90ZSkKQEAgLTI0MDMsNyArMjQwMyw3IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1l
bnRIaXRUZXN0CiAgICAgcmV0dXJuIHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QoSW50UG9p
bnQob2Zmc2V0KSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIHJlbW90ZVNWR0Vs
ZW1lbnRIaXRUZXN0KHBvaW50KTsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFVzZVNoYWRvd0hvc3RGb3JIaXRUZXN0aW5nKE5vZGUqIHNoYWRvd0hvc3QpCiAgICAgcmV0
dXJuIHNoYWRvd0hvc3QgJiYgIXNoYWRvd0hvc3QtPmhhc1RhZ05hbWUodmlkZW9UYWcpOwogfQog
Ci1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwg
IW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1
MCw3ICsyNDUwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY28KICAgICBpZiAoIW9iaikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVz
dWx0ID0gb2JqLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsK
KyAgICBBWENvcmVPYmplY3QqIHJlc3VsdCA9IG9iai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKG9iaik7CiAgICAgcmVzdWx0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNz
YXJ5KCk7CiAKICAgICAvLyBBbGxvdyB0aGUgZWxlbWVudCB0byBwZXJmb3JtIGFueSBoaXQtdGVz
dGluZyBpdCBtaWdodCBuZWVkIHRvIGRvIHRvIHJlYWNoIG5vbi1yZW5kZXIgY2hpbGRyZW4uCkBA
IC0yNDU4LDcgKzI0NTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjbwogICAgIAogICAgIGlm
IChyZXN1bHQgJiYgcmVzdWx0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAg
Ly8gSWYgdGhpcyBlbGVtZW50IGlzIHRoZSBsYWJlbCBvZiBhIGNvbnRyb2wsIGEgaGl0IHRlc3Qg
c2hvdWxkIHJldHVybiB0aGUgY29udHJvbC4KLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1l
bnQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjb250cm9sT2JqZWN0ID0gcmVzdWx0LT5jb3Jy
ZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpOwogICAgICAgICBpZiAoY29udHJvbE9i
amVjdCAmJiAhY29udHJvbE9iamVjdC0+ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gY29udHJvbE9iamVjdDsKIApAQCAtMzEzNiw3ICszMTM2LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKCkKICAgICAgICAg
aWYgKCFhcmVhT2JqZWN0LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZhcmVhT2JqZWN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
YXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC5heE9iamVjdElEKCkpOworICAgICAg
ICAgICAgYXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC5vYmplY3RJRCgpKTsKICAg
ICB9CiB9CiAKQEAgLTMzMDgsNyArMzMwOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkSGlkZGVuQ2hpbGRyZW4oKQogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gRmluZCBvdXQgd2hl
cmUgdGhlIGxhc3QgcmVuZGVyIHNpYmxpbmcgaXMgbG9jYXRlZCB3aXRoaW4gbV9jaGlsZHJlbi4K
LSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkT2JqZWN0ID0gYXhPYmplY3RD
YWNoZSgpLT5nZXQoY2hpbGQtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0
KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsK
ICAgICAgICAgICAgIGlmIChjaGlsZE9iamVjdCAmJiBjaGlsZE9iamVjdC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgY2hpbGRyZW4gPSBjaGlsZE9i
amVjdC0+Y2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpKQpA
QCAtMzUyNSw3ICszNTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxl
Y3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgYXJp
YVNlbGVjdGVkUm93cyhyZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHNl
bGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3Qq
IHNlbGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHNlbGVjdGVkVGFiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDBiMTlkYTUyYWJlNmMxZjE1ODcyOTgw
YjI3NGU1ZGQ0YWFlMDJiZmMuLjM5NjE3MzA0Y2VhMzcwZjQ5N2JmMzRjNWY1MTQ3MjEwMTdkYmI3
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgcm9vdCBhY2Nlc3NpYmlsaXR5IG9i
amVjdCB0byBraWNrIG9mZiBhIGhpdCB0ZXN0LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4
dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0OworICAg
IGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCog
d2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50
VmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudExpbmtz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpAQCAtMjM1LDExICsyMzUsMTEgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3Q7CiAgICAgTGF5b3V0UmVj
dCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdy
b3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMp
IGNvbnN0OwotICAgIHZvaWQgYWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKKyAgICB2b2lk
IGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpbnRlcm5h
bExpbmtFbGVtZW50KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0OworICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1M
QXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopIGNv
bnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9i
amVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBhcmVudE9iamVjdCgpIGNvbnN0
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdS
b290KCk7CiAgICAgZW51bSBDcmVhdGlvbkNob2ljZSB7IENyZWF0ZSwgUmV0cmlldmUgfTsKICAg
ICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaG9p
Y2UgY3JlYXRlSWZOZWNlc3NhcnkpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Cisg
ICAgQVhDb3JlT2JqZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwogICAgIHZvaWQgb2Zmc2V0Qm91bmRpbmdCb3hGb3JSZW1vdGVTVkdFbGVtZW50KExh
eW91dFJlY3QmKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDUxNzhiOWZhNTNkNTQyNjJjOWZhYTc4NGZlZTQ5OGM3
NmM2ODJhM2UuLmQxMTZlZGRmZDdlNjkxMGJhOTYzOWNmNmNmNWIxYmEyMmJlNGQ4ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHdlYkFyZWEgPSB3ZWJBcmVhT2JqZWN0KCk7CiAgICAgaWYgKCF3ZWJBcmVhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oCmluZGV4IDY2ZmY1OTQ3ZDZhMWRlY2ViMGViMWExNWY4N2IyNGFkODhhZDBhM2Iu
LjliZmFmMTU1YWRiMjMyYTU2NjNmNThjYjA4YzEyYzEzM2UyYzM1MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3Jv
bGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENo
aWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2li
aWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc1Rv
VXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IG1fY2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KICAg
ICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCmluZGV4IGIzZmYwYTk3NTEwOGYxMzgz
YTk2ODJmZTAyYzE2YzY5MDk1ZjY3ZDMuLmNjNmNiODE4ZThiM2UzNmM5MTZjZmYwNGMxN2E1MGQw
NWRkOWVlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlT
bGlkZXI6OmFkZENoaWxkcmVuKCkKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2
YWx1ZSBpbmRpY2F0b3IgdG8gdGhlIGhpZXJhcmNoeSwKICAgICAvLyBhbGxvdyB0aGUgcGxhdGZv
cm0gdG8gbWFrZSBhIGZpbmFsIGRlY2lzaW9uIGFib3V0IGl0LgogICAgIGlmICh0aHVtYi5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIuYXhPYmpl
Y3RJRCgpKTsKKyAgICAgICAgY2FjaGUtPnJlbW92ZSh0aHVtYi5vYmplY3RJRCgpKTsKICAgICBl
bHNlCiAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0aHVtYik7CiB9CkBAIC0xMDAsNyArMTAw
LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gaW5wdXRFbGVtZW50KCkt
PmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
IHsKICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAgQVNTRVJUKG1fY2hpbGRy
ZW4uc2l6ZSgpID09IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaAppbmRleCA0NjlkMjE3MDFiZWM1M2FmMTlkOTdiZjQ1ZTBlZWUx
YmRjMjI2YzQ1Li45MWM3MDkyNWU2ZDkyZjUzMmVhMmEyZmJjNzcyMzlkZDc4YTJkZGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
aApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSFRNTElucHV0
RWxlbWVudCogaW5wdXRFbGVtZW50KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7
IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsK
ICAgICAKICAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdl
dEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBmbG9hdCB2YWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCmluZGV4IGMzY2MwODI2
YTkzZjYyYWNhNDZlNjZmMzI1M2IzM2Q3MzhjMzZhZWMuLjdkMGE2YTQzYWE1MTA5MTY5ZGJlYmFh
NDI0YzZkZjk0YjdmM2RhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIEFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpCiAKIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uOjp+QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKSA9IGRlZmF1bHQ7
CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5j
cmVtZW50QnV0dG9uKCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246Omlu
Y3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAgYWRk
Q2hpbGRyZW4oKTsKQEAgLTU1LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b246OmluY3JlbWVudEJ1dHRvbigpCiAgICAgcmV0dXJuIG1fY2hpbGRy
ZW5bMF0uZ2V0KCk7CiB9CiAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjpkZWNyZW1lbnRCdXR0b24oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6ZGVjcmVtZW50QnV0dG9uKCkKIHsKICAgICBpZiAoIW1faGF2ZUNoaWxkcmVu
KQogICAgICAgICBhZGRDaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCmluZGV4IDYzZDVmMzdlZWVmYWVk
M2I2NDk5N2E2MTUwZTYxZGExMTc0MjJhZGIuLjAwZTkwYTI5M2Y0NzllMDg5NTc2ZDljYThhNDE2
MzEyMWU0MWI0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTM3LDggKzM3LDggQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgc2V0U3BpbkJ1dHRvbkVsZW1lbnQoU3BpbkJ1dHRvbkVsZW1lbnQqIHNwaW5C
dXR0b24pIHsgbV9zcGluQnV0dG9uRWxlbWVudCA9IHNwaW5CdXR0b247IH0KICAgICAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBpbmNyZW1lbnRCdXR0b24oKTsKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBkZWNyZW1lbnRCdXR0b24oKTsKKyAgICBBWENvcmVPYmplY3QqIGluY3JlbWVudEJ1
dHRvbigpOworICAgIEFYQ29yZU9iamVjdCogZGVjcmVtZW50QnV0dG9uKCk7CiAKICAgICB2b2lk
IHN0ZXAoaW50IGFtb3VudCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggZjViZjViMmY2MGZmODU3YzhhNmRl
OTI1YTBiZDMwZjdjZDg2ZmUwMS4uMjczMWIwNzg4NmFlZjliYzI3NTY2YjdiMTRlOGU2NGE4YWU3
MDFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcApAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uc0NvcHkgPSBtX2NvbHVtbnM7CiAg
ICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb2x1bW4gOiBjb2x1bW5zQ29weSkgewotICAgICAg
ICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uPigqY29sdW1uKS5oZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFYQ29y
ZU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqY29s
dW1uKS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7
CiAgICAgfQogfQpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpy
b3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHkgPSBtX3Jvd3M7CiAgICAgCiAgICAgZm9y
IChjb25zdCBhdXRvJiByb3cgOiByb3dzQ29weSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93KS5o
ZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogaGVhZGVyID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93KS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAg
ICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CiAgICAgfQogfQpAQCAtNjIyLDcgKzYyMiw3IEBA
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgIC8vIGNlbGwgdG8gZGV0ZXJtaW5lIHdo
aWNoIGlzIHRoZSByaWdodCBvbmUuCiAgICAgICAgIGZvciAodW5zaWduZWQgY29sSW5kZXhDb3Vu
dGVyID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoaWxkcmVuLnNpemUoKSksIGNv
bHVtbiArIDEpOyBjb2xJbmRleENvdW50ZXIgPiAwOyAtLWNvbEluZGV4Q291bnRlcikgewogICAg
ICAgICAgICAgdW5zaWduZWQgY29sSW5kZXggPSBjb2xJbmRleENvdW50ZXIgLSAxOwotICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBjaGlsZHJlbltjb2xJbmRleF0uZ2V0
KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhd
LmdldCgpOwogICAgICAgICAgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpj
aGlsZCkpOwogICAgICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hp
bGQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXggOWJiYWQx
MTI5NmU1ZTFjNzA1OTM3MjViNjI5ODQ2ZmE5NTZiNDQwMC4uZGI1MDQxYzkzODk3OTI4ZmIxZDc0
NGQ3N2RiNWVhN2Y2OWFhZTdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgaGVhZGVycykKIAogQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpwYXJlbnRSb3coKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCog
cGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFpczxBY2Nlc3NpYmls
aXR5VGFibGVSb3c+KCpwYXJlbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihwYXJlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
Y3BwCmluZGV4IDNjYjdmMTVhMjE3NmU0NDVkZmM4NjNkOGNiMTIyZjM2ZDEyZjI0NmIuLmZkYzY3
ZjhhYzE1NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYyNzE1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAK
QEAgLTcwLDcgKzcwLDcgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmVs
ZW1lbnRSZWN0KCkgY29uc3QKICAgICByZXR1cm4gY29sdW1uUmVjdDsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQorQVhD
b3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiB7CiAg
ICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApp
bmRleCA5ZmNkYjVjZjM2ZTI3OTYzYWU4MjAwYjI0MDBjMzczYmI1ZTM5OGM1Li41Njk3Y2MxYzgy
ZjJkOGNhMDhiNzNkZWNkNzc2MjY4ZGY0NDM4NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKQEAgLTQwLDkg
KzQwLDkgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uIGZpbmFsIDogcHVibGljIEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uKCk7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0
KCk7Ci0gICAgICAgIAorCisgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKKwogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpDb2x1bW47IH0KICAgICAKICAgICB2b2lkIHNldENvbHVtbkluZGV4
KGludCBjb2x1bW5JbmRleCkgeyBtX2NvbHVtbkluZGV4ID0gY29sdW1uSW5kZXg7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcAppbmRleCBiYjlkOWUwNGM0ZGY0ODZhZGI3NTZjMzNhZGVmMWRhMDU1OTkzMjdmLi43YjQ5
YzI4YmMwY2Q2ODQxNDI2ZDY3ZGE1MzQ4MmMxMzBjM2I2NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKK0FY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogewogICAg
IGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZVJvdygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEyMCw3ICsxMjAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIC8vIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSByb3cgdG8g
c2VlIGlmIGl0IGlzIGEgVEggZWxlbWVudAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNlbGwg
PSByb3dDaGlsZHJlblswXS5nZXQoKTsKKyAgICBBWENvcmVPYmplY3QqIGNlbGwgPSByb3dDaGls
ZHJlblswXS5nZXQoKTsKICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjZWxs
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCA5ODhlMjQ1OTIx
M2U3MGQ1NGZmZWU0Y2JhYjYxMjEzYmYzNTMzMTM5Li43OWJmMDVmZmFkZDFkODQ4OWExMzNhMzUz
ODA5N2U0YWJlZjljYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZVJvdygpOwogCiAgICAgLy8gcmV0cmlldmVzIHRo
ZSAicm93IiBoZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1uKQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIGhlYWRlck9iamVjdCgpOwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRh
YmxlKiBwYXJlbnRUYWJsZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0Um93SW5kZXgoaW50
IHJvd0luZGV4KSB7IG1fcm93SW5kZXggPSByb3dJbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCAyODRl
MzZkMDhhOThhMmViMzdhZDQyZDQwZmQ0MzI2YTUwODgyMzQ1Li5kODNjMDc0NmUwYmY1YmY3OTk4
OGQzNDEyNzVhOTYwMTM5Yjc3YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1QZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAg
ICAgbV9kZWZlcnJlZERldGFjaGVkV3JhcHBlckxpc3QuY2xlYXIoKTsKIH0KIAotc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGdldExpc3RPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0KQorc3RhdGljIEFYQ29yZU9iamVjdCogZ2V0TGlzdE9iamVjdChBWENvcmVPYmplY3QqIG9i
amVjdCkKIHsKICAgICAvLyBPbmx5IGxpc3QgYm94ZXMgYW5kIG1lbnUgbGlzdHMgc3VwcG9ydGVk
IHNvIGZhci4KICAgICBpZiAoIW9iamVjdC0+aXNMaXN0Qm94KCkgJiYgIW9iamVjdC0+aXNNZW51
TGlzdCgpKQpAQCAtMTM2LDIxICsxMzYsMjEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGdldExpc3RPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKKyAgICBBWENvcmVPYmplY3Qq
IGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKICAgICBpZiAoIWxpc3RPYmplY3Qt
PmlzTWVudUxpc3RQb3B1cCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBsaXN0
T2JqZWN0OwogfQogCi1zdGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZShB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCitzdGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNl
bGVjdGlvbkNoYW5nZShBWENvcmVPYmplY3QqIG9iamVjdCkKIHsKICAgICAvLyBUaGlzIHN0YXRp
YyB2YXJpYWJsZXMgYXJlIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBvbGQKICAgICAvLyBm
b2N1c2VkIG9iamVjdCBhbmQgaXRzIGFzc29jaWF0ZWQgbGlzdCBvYmplY3QsIGFzIHBlciBwcmV2
aW91cwogICAgIC8vIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIGluIG9yZGVyIHRvIHByb3Blcmx5
IGRlY2lkZSB3aGV0aGVyIHRvCiAgICAgLy8gZW1pdCBzb21lIHNpZ25hbHMgb3Igbm90LgotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG9sZExp
c3RPYmplY3Q7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0Pj4gb2xkRm9jdXNlZE9iamVjdDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVm
UHRyPEFYQ29yZU9iamVjdD4+IG9sZExpc3RPYmplY3Q7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvbGRGb2N1c2VkT2JqZWN0OwogCiAgICAgLy8gT25s
eSBsaXN0IGJveGVzIGFuZCBtZW51IGxpc3RzIHN1cHBvcnRlZCBzbyBmYXIuCiAgICAgaWYgKCFv
YmplY3QgfHwgIShvYmplY3QtPmlzTGlzdEJveCgpIHx8IG9iamVjdC0+aXNNZW51TGlzdCgpKSkK
QEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNo
YW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQm
IHNlbGVjdCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqbm9kZSk7CiAgICAgaW50IGNo
YW5nZWRJdGVtSW5kZXggPSBzZWxlY3QuYWN0aXZlU2VsZWN0aW9uU3RhcnRMaXN0SW5kZXgoKTsK
IAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPYmplY3QgPSBnZXRMaXN0T2JqZWN0KG9i
amVjdCk7CisgICAgQVhDb3JlT2JqZWN0KiBsaXN0T2JqZWN0ID0gZ2V0TGlzdE9iamVjdChvYmpl
Y3QpOwogICAgIGlmICghbGlzdE9iamVjdCkgewogICAgICAgICBvbGRMaXN0T2JqZWN0LmdldCgp
ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2
b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCkKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGl0ZW1zID0gbGlzdE9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICBpZiAoY2hhbmdl
ZEl0ZW1JbmRleCA8IDAgfHwgY2hhbmdlZEl0ZW1JbmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+KGl0
ZW1zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBp
dGVtID0gaXRlbXMuYXQoY2hhbmdlZEl0ZW1JbmRleCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0
KiBpdGVtID0gaXRlbXMuYXQoY2hhbmdlZEl0ZW1JbmRleCkuZ2V0KCk7CiAKICAgICAvLyBFbnN1
cmUgdGhlIGN1cnJlbnQgbGlzdCBvYmplY3QgaXMgdGhlIHNhbWUgdGhhbiB0aGUgb2xkIG9uZSBz
bwogICAgIC8vIGZ1cnRoZXIgY29tcGFyaXNvbnMgbWFrZSBzZW5zZS4gT3RoZXJ3aXNlLCBqdXN0
IHJlc2V0CkBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxl
Y3Rpb25DaGFuZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIG9sZEZvY3VzZWRP
YmplY3QuZ2V0KCkgPSBpdGVtOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBWE5vdGlmaWNh
dGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlm
aWNhdGlvbihBWENvcmVPYmplY3QqIGNvcmVPYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbikKIHsKICAgICBhdXRvKiBheE9iamVjdCA9IEFUS19PQkpFQ1QoY29yZU9iamVjdC0+d3Jh
cHBlcigpKTsKICAgICBpZiAoIWF4T2JqZWN0KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcmVPYmplY3QsIEFYCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBWEFjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkOgotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogZGVzY2VuZGFu
dCA9IGNvcmVPYmplY3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKKyAgICAgICAgaWYgKEFYQ29yZU9i
amVjdCogZGVzY2VuZGFudCA9IGNvcmVPYmplY3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKICAgICAg
ICAgICAgIHBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQobnVsbHB0ciwgZGVz
Y2VuZGFudC0+bm9kZSgpKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqZQogICAgIGlmICghb2JqZWN0IHx8IHRleHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmpl
Y3QgPSBvYmplY3QtPmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSA/IG9iamVjdCA6IG9iamVjdC0+
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRPYmplY3Qg
PSBvYmplY3QtPmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSA/IG9iamVjdCA6IG9iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnRPYmplY3QpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlLmNwcAppbmRleCAxMmFlNDM1YmQxNzFlY2Y2ZTE5NDIzZTYwYjRhYTViNTE5
NDg4MDE5Li5kMzJjODIyYWUxYzQ1MjE5NjkwNmZiZmRhYWUxOTk4NDE2NzUwZDAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
LmNwcApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgc3RhdGljIGJvb2wgcm9sZUlzVGV4dFR5cGUoQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25Hcm91cDsKIH0KIAotc3RhdGljIGd1aW50MTYgaW50ZXJmYWNlTWFza0Zy
b21PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKK3N0YXRpYyBndWludDE2
IGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KEFYQ29yZU9iamVjdCogY29yZU9iamVjdCkKIHsKICAg
ICBndWludDE2IGludGVyZmFjZU1hc2sgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3Bw
CmluZGV4IDcyNDUwMjQxYTQ2YzQ4M2I3YWZlZWI2Y2EzMTg0MWQ4N2MwYmUyMDEuLmIwZjczZTZh
NGZhYTBjZmNlYzgxNDczYjY4NTU1MzA5N2U0MDFlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxp
bmsuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIGdpbnQgcmFuZ2VMZW5ndGhGb3JPYmpl
Y3QoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqLCBSYW5nZSogcmFuZ2UpCiAKICAgICAvLyBDaGVj
ayB3aGV0aGVyIHRoZSBjdXJyZW50IGh5cGVybGluayBiZWxvbmdzIHRvIGEgbGlzdCBpdGVtLgog
ICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsZW5ndGggb2YgdGhlIGl0ZW0n
cyBtYXJrZXIKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBvYmoucGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBvYmoucGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkgfHwgIXBhcmVudC0+aXNMaXN0SXRlbSgpKQogICAgICAgICByZXR1
cm4gYmFzZUxlbmd0aDsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBnaW50IHJhbmdlTGVu
Z3RoRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iaiwgUmFuZ2UqIHJhbmdlKQogICAg
IC8vIFRlY2hub2xvZ2llcywgd2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIG1lYXN1cmUgdGhlaXIg
bGVuZ3RoCiAgICAgLy8gZm9yIHRob3NlIGNhc2VzIHdoZW4gaXQncyBuZWVkZWQgdG8gdGFrZSBp
dCBpbnRvIGFjY291bnQKICAgICAvLyBzZXBhcmF0ZWx5IChhcyBpbiBnZXRBY2Nlc3NpYmlsaXR5
T2JqZWN0Rm9yT2Zmc2V0KQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hcmtlck9iaiA9IHBh
cmVudC0+Zmlyc3RDaGlsZCgpOworICAgIEFYQ29yZU9iamVjdCogbWFya2VyT2JqID0gcGFyZW50
LT5maXJzdENoaWxkKCk7CiAgICAgaWYgKCFtYXJrZXJPYmopCiAgICAgICAgIHJldHVybiBiYXNl
TGVuZ3RoOwogCkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIHJldHVyblZh
bElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5o
eXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIGF1dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3Np
YmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBl
cmxpbmtJbXBsKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRVbmlnbm9yZWQgPSBj
b3JlT2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFy
ZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBp
ZiAoIXBhcmVudFVuaWdub3JlZCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTIwNiw3ICsyMDYs
NyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgoQXRr
SHlwZXJsaW5rKiBsaW5rKQogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxp
ZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIGF1
dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChh
Y2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRVbmlnbm9yZWQgPSBjb3JlT2JqZWN0LnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5w
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudFVuaWdub3JlZCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVydGV4dC5j
cHAKaW5kZXggOGEzMzgzZDNlNDFmZmY2MTZhZjRjZWY4ZDNiZDMzODMzYTZiZGZjMC4uYTc4ZDg4
MzJhYTRkM2RlYzM4OWNlNzllN2MxYzZlY2FjZGYwNmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVydGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIEF0a0h5
cGVybGluayogd2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldExpbmsoQXRrSHlwZXJ0ZXh0KiBo
eXBlcnRleHQsIGcKIAogICAgIGdpbnQgY3VycmVudExpbmsgPSAtMTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZUNoaWxkID0gY2hpbGQuZ2V0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY29yZUNoaWxk
ID0gY2hpbGQuZ2V0KCk7CiAgICAgICAgIGlmICghY29yZUNoaWxkLT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpIHsKICAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gY29yZUNoaWxkLT53cmFw
cGVyKCk7CiAgICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFBVEtfSVNfSFlQRVJMSU5LX0lN
UEwoYXhPYmplY3QpKQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3Np
YmxlSHlwZXJ0ZXh0R2V0TkxpbmtzKEF0a0h5cGVydGV4dCogaHlwZXJ0ZXh0KQogICAgIGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRy
ZW4gPSBjb3JlKGh5cGVydGV4dCktPmNoaWxkcmVuKCk7CiAgICAgZ2ludCBsaW5rc0ZvdW5kID0g
MDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKLSAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZUNoaWxkID0gY2hpbGQuZ2V0KCk7CisgICAgICAgIEFYQ29y
ZU9iamVjdCogY29yZUNoaWxkID0gY2hpbGQuZ2V0KCk7CiAgICAgICAgIGlmICghY29yZUNoaWxk
LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0
ID0gY29yZUNoaWxkLT53cmFwcGVyKCk7CiAgICAgICAgICAgICBpZiAoYXhPYmplY3QgJiYgQVRL
X0lTX0hZUEVSTElOS19JTVBMKGF4T2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVNlbGVjdGlvbi5jcHAKaW5kZXggMTdiOTgwNjRhZGE2YzMwMjBiMDE4YTcyYWY5ODRiY2Zm
ZDY4YmVkZi4uNmVhNTcwODEzN2I0NTdhOGY1MzM1YmRmZjVjYjMyYjdkN2FmZWM5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVNlbGVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrU2VsZWN0aW9uKiBzZWxlY3Rp
b24pCiAgICAgcmV0dXJuICZ3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChX
RUJLSVRfQUNDRVNTSUJMRShzZWxlY3Rpb24pKTsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVTZWxlY3Rpb24pCitzdGF0aWMgQVhDb3JlT2JqZWN0KiBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVj
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uKQogewogICAgIC8vIE9ubHkg
bGlzdCBib3hlcyBhbmQgbWVudSBsaXN0cyBzdXBwb3J0ZWQgc28gZmFyLgogICAgIGlmICghY29y
ZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgJiYgIWNvcmVTZWxlY3Rpb24tPmlzTWVudUxpc3QoKSkK
QEAgLTY3LDIxICs2NywyMSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdE9iamVj
dEZvckNvcmVTZWxlY3Rpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZQogICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKKyAgICBBWENvcmVP
YmplY3QqIGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKICAgICBpZiAoIWxpc3RP
YmplY3QtPmlzTWVudUxpc3RQb3B1cCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IHJldHVybiBsaXN0T2JqZWN0OwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0
aW9uRnJvbUxpc3QoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCitzdGF0aWMg
QVhDb3JlT2JqZWN0KiBvcHRpb25Gcm9tTGlzdChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2lu
dCBpbmRleCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29y
ZShzZWxlY3Rpb24pOwogICAgIGlmICghY29yZVNlbGVjdGlvbiB8fCBpbmRleCA8IDApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gTmVlZCB0byBzZWxlY3QgdGhlIHByb3BlciBs
aXN0IG9iamVjdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlzdE9iamVjdCA9IGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKGNvcmVTZWxlY3Rpb24p
OworICAgIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdCA9IGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0
aW9uKGNvcmVTZWxlY3Rpb24pOwogICAgIGlmICghbGlzdE9iamVjdCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9wdGlvbkZyb21MaXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9u
RnJvbVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKK3N0YXRp
YyBBWENvcmVPYmplY3QqIG9wdGlvbkZyb21TZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rp
b24sIGdpbnQgaW5kZXgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlv
biA9IGNvcmUoc2VsZWN0aW9uKTsKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgIWNvcmVTZWxl
Y3Rpb24tPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIHx8IGluZGV4IDwgMCkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFk
ZFNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZwogICAgIGlmICghY29yZVNlbGVj
dGlvbikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b3B0aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CisgICAgQVhDb3JlT2Jq
ZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGluZGV4KTsKICAgICBpZiAo
b3B0aW9uICYmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8fCBjb3JlU2VsZWN0aW9uLT5p
c01lbnVMaXN0KCkpKSB7CiAgICAgICAgIG9wdGlvbi0+c2V0U2VsZWN0ZWQodHJ1ZSk7CiAgICAg
ICAgIHJldHVybiBvcHRpb24tPmlzU2VsZWN0ZWQoKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0
aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKEF0a1Nl
bGVjdGlvbiogc2VsZWN0aW9uLAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19TRUxFQ1RJ
T04oc2VsZWN0aW9uKSwgbnVsbHB0cik7CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbiksIG51bGxwdHIpOwogCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rp
b24sIGluZGV4KTsKKyAgICBBWENvcmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rp
b24oc2VsZWN0aW9uLCBpbmRleCk7CiAgICAgaWYgKG9wdGlvbikgewogICAgICAgICBhdXRvKiBj
aGlsZCA9IG9wdGlvbi0+d3JhcHBlcigpOwogICAgICAgICBnX29iamVjdF9yZWYoY2hpbGQpOwpA
QCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0
aW9uSXNDaGlsZFNlbGVjdGVkKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uCiAgICAgaWYgKCFjb3Jl
U2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGluZGV4KTsKKyAgICBBWENv
cmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaW5kZXgpOwogICAg
IGlmIChvcHRpb24gJiYgKGNvcmVTZWxlY3Rpb24tPmlzTGlzdEJveCgpIHx8IGNvcmVTZWxlY3Rp
b24tPmlzTWVudUxpc3QoKSkpCiAgICAgICAgIHJldHVybiBvcHRpb24tPmlzU2VsZWN0ZWQoKTsK
IApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlU2Vs
ZWN0aW9uUmVtb3ZlU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uCiAgICAgaWYgKCFj
b3JlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tU2VsZWN0aW9uKHNlbGVjdGlvbiwgaW5kZXgpOwor
ICAgIEFYQ29yZU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24s
IGluZGV4KTsKICAgICBpZiAob3B0aW9uICYmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8
fCBjb3JlU2VsZWN0aW9uLT5pc01lbnVMaXN0KCkpKSB7CiAgICAgICAgIG9wdGlvbi0+c2V0U2Vs
ZWN0ZWQoZmFsc2UpOwogICAgICAgICByZXR1cm4gIW9wdGlvbi0+aXNTZWxlY3RlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDQ5NmUyNjIyODg1Yzc4ZDUwNWJl
MDQxOGNmZmY0YzZkM2Y5MGNkMDEuLmIyNzE1YzdjNTNjYWU5ZDA0YWYzZTRjMGY5M2FmOTc1ZjYz
ZGI1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAgLTMzNCw3ICsz
MzQsNyBAQCBzdGF0aWMgSW50UmVjdCB0ZXh0RXh0ZW50cyhBdGtUZXh0KiB0ZXh0LCBnaW50IHN0
YXJ0T2Zmc2V0LCBnaW50IGxlbmd0aCwgQXRrQ29vcgogICAgIHJldHVybiBleHRlbnRzOwogfQog
Ci1zdGF0aWMgaW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmplY3QpCitzdGF0aWMgaW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRl
bShjb25zdCBBWENvcmVPYmplY3QqIG9iamVjdCkKIHsKICAgICAvLyBXZSBuZWVkIHRvIGFkanVz
dCB0aGUgb2Zmc2V0cyBmb3IgdGhlIGxpc3QgaXRlbSBtYXJrZXIgaW4KICAgICAvLyBMZWZ0LVRv
LVJpZ2h0IHRleHQsIHNpbmNlIHdlIGV4cG9zZSBpdCB0b2dldGhlciB3aXRoIHRoZSB0ZXh0LgpA
QCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBpbnQgb2Zmc2V0QWRqdXN0bWVudEZvckxpc3RJdGVt
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gMDsKIH0KIAot
c3RhdGljIGludCB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBpbnQgb2Zmc2V0KQorc3RhdGljIGludCB3ZWJDb3JlT2Zmc2V0VG9BdGtP
ZmZzZXQoY29uc3QgQVhDb3JlT2JqZWN0KiBvYmplY3QsIGludCBvZmZzZXQpCiB7CiAgICAgaWYg
KCFvYmplY3QtPmlzTGlzdEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKQEAgLTk5MCw3
ICs5OTAsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0
KEF0a1RleHQqIHRleHQpCiAKICAgICAvLyBjb3JlT2JqZWN0IGlzIHRoZSB1bmlnbm9yZWQgb2Jq
ZWN0IHdob3NlIG9mZnNldCB0aGUgY2FsbGVyIGlzIHJlcXVlc3RpbmcuCiAgICAgLy8gZm9jdXNl
ZE9iamVjdCBpcyB0aGUgb2JqZWN0IHdpdGggdGhlIGNhcmV0LiBJdCBpcyBsaWtlbHkgaWdub3Jl
ZCAtLSB1bmxlc3MgaXQncyBhIGxpbmsuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9i
amVjdCA9IGNvcmUodGV4dCk7CisgICAgQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0
ZXh0KTsKICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCmluZGV4IGEzYjg3MWI0NGNh
MDBhNmEwNzU2Yjc3ZGJjMjFkZjU0YmNkYWMzZDkuLjU2MzkyYzBiZDgzZDFhMmE3Y2I3NmE3NTRi
OWViODgzZjIwY2ZmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBi
b29sIHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0LCBWaXNpYmxlU2VsZWN0aW9uJgogICAgICAgICAmJiAoJnJhbmdlLT5zdGFydENvbnRhaW5l
cigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5zdGFydE9mZnNldCgpICE9IGxhc3RPZmZz
ZXQpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZz
ZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcmVmZXJlbmNlT2JqZWN0LCBpbnQmIG9m
ZnNldCkKK0FYQ29yZU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVk
KEFYQ29yZU9iamVjdCogcmVmZXJlbmNlT2JqZWN0LCBpbnQmIG9mZnNldCkKIHsKICAgICAvLyBJ
bmRpY2F0aW9uIHRoYXQgc29tZXRoaW5nIGJvZ3VzIGhhcyB0cmFuc3BpcmVkLgogICAgIG9mZnNl
dCA9IC0xOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZv
Y3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gTG9vayBmb3IgdGhlIGFjdHVhbCAobm90IGln
bm9yaW5nIGFjY2Vzc2liaWxpdHkpIHNlbGVjdGVkIG9iamVjdC4KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZvY3VzZWRPYmplY3Q7CisgICAgQVhDb3Jl
T2JqZWN0KiBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZvY3VzZWRPYmplY3Q7CiAgICAgaWYgKGZp
cnN0VW5pZ25vcmVkUGFyZW50LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIGZp
cnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpOwogICAgIGlmICghZmlyc3RVbmlnbm9yZWRQYXJlbnQpCkBAIC0yMjQsNyArMjI0
LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5p
Z25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHIKICAgICAgICAgLy8gYmVjYXVzZSB3ZSB3YW50
IGl0IHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBvYmplY3Qgb2YKICAgICAgICAgLy8gcmVmZXJlbmNl
LCBub3QganVzdCB0byB0aGUgZm9jdXNlZCBvYmplY3QgKHdoaWNoIGNvdWxkIGhhdmUKICAgICAg
ICAgLy8gcHJldmlvdXMgc2libGluZ3Mgd2hpY2ggc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3Vu
dCB0b28pLgotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheEZpcnN0Q2hpbGQgPSByZWZl
cmVuY2VPYmplY3QtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBheEZpcnN0
Q2hpbGQgPSByZWZlcmVuY2VPYmplY3QtPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgaWYgKGF4Rmly
c3RDaGlsZCkKICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IGF4Rmlyc3RDaGlsZC0+bm9kZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVVdGlsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlVXRpbC5oCmluZGV4IGY2YWM3NjQ2NTFjNDgyYmViZTUyZmY2NGFiMDAxMWM0
NzlhZWYzZmMuLjE3MGY1YmQzMjg5MTkyOTliZDBjY2NlMzBjNDIxMjBjOTRhYTE2OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVV
dGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuaApAQCAtNjYsNiArNjYsNiBAQCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogYm9vbCBzZWxlY3Rpb25CZWxv
bmdzVG9PYmplY3QoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mKTsKIAotV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9j
dXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Qq
LCBpbnQmIG9mZnNldCk7CitXZWJDb3JlOjpBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRD
YXJldE9mZnNldFVuaWdub3JlZChXZWJDb3JlOjpBWENvcmVPYmplY3QqLCBpbnQmIG9mZnNldCk7
CiAKICNlbmRpZiAvLyBFTkFCTEUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IDY4N2YxYWVk
Zjc4ODE2YWUzMTVhZDg2ZmRmMWU3YzczZjlkMDVlYWIuLmRmNThlZmE3NjUzZjY4MDUzMWM4Y2U5
MzkzOWU3YjA2NjMxNzM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIG9i
ai0+c2V0V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlm
aWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9u
KQogewogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpp
bmRleCA0ZGUzOTI0MDJjOTU4NzViNmQ1ZGFjZWNkOTZiMjFhZTA5NTA0NzIyLi43ZTA1YWNmZmZj
OWFlYTdmZDI0YWY2NDlkOTdhN2Q0OGE2OTJkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KQEAg
LTQ3LDcgKzQ3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaWxlVXBsb2FkQnV0dG9u
UmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmls
aXR5T2JqZWN0KikKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50
UGFyZW50KEFYQ29yZU9iamVjdCopCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCmluZGV4IGJjY2YzN2U0ZjRiNjJkNDA5MTMxNGRjNzZkYTVhZDdkZWRj
ODYzOTYuLjg3YmZiOWUxOTMwOGRhZTBjYWEwOThkYTY2OWFjOTUyMGVjZTI4MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgc3Rh
dGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5j
ZXN0b3IoQWNjZXNzaWJpbGl0eU8KICAgICAgICAgaWYgKFt3cmFwcGVyIGlzQXR0YWNobWVudF0g
JiYgIVtbd3JhcHBlciBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUlzSWdub3JlZF0pCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAg
ICAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICAgICAgYnJlYWs7
CiAKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
IEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAogICAgIC8vIFRyeSBhIGZ1enp5IGhpdCB0ZXN0IGZpcnN0IHRvIGZp
bmQgYW4gYWNjZXNzaWJsZSBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UgKmF4T2JqZWN0ID0gbnVsbHB0cjsKKyAgICBBWENvcmVPYmplY3QgKmF4T2JqZWN0ID0gbnVs
bHB0cjsKICAgICB7CiAgICAgICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hl
KG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwogICAgICAgICBheE9iamVjdCA9IG1fb2JqZWN0
LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwpAQCAtMTI0MCw3ICsxMjQw
LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpy
ZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgCiAgICAgdW5zaWduZWQgY29sdW1uUmFuZ2VJ
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW5SYW5nZS5maXJzdCk7CiAgICAgaWYg
KGNvbHVtblJhbmdlSW5kZXggPCBjb2x1bW5IZWFkZXJzLnNpemUoKSkgewotICAgICAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gY29sdW1uSGVhZGVyID0gY29sdW1uSGVhZGVyc1tjb2x1
bW5SYW5nZS5maXJzdF07CisgICAgICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNvbHVtbkhlYWRl
ciA9IGNvbHVtbkhlYWRlcnNbY29sdW1uUmFuZ2UuZmlyc3RdOwogICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IGNvbHVtbkhlYWRlci0+d3JhcHBlcigpOwogICAg
ICAgICBpZiAod3JhcHBlcikKICAgICAgICAgICAgIFtoZWFkZXJzIGFkZE9iamVjdDp3cmFwcGVy
XTsKQEAgLTE2NjQsNyArMTY2NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0
KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIEFYQXR0cmli
dXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwog
ICAgIAogICAgIC8vIEFzIGxvbmcgYXMgdGhlcmUncyBhIHBhcmVudCB3cmFwcGVyLCB0aGF0J3Mg
dGhlIGNvcnJlY3QgY2hhaW4gdG8gY2xpbWIuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOyAKKyAgICBBWENvcmVPYmpl
Y3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAo
cGFyZW50KQogICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAKQEAgLTE4MDAsNyAr
MTgwMCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmlu
ZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
Ly8gSWYgdGhpcyBzdGF0aWMgdGV4dCBpbnNpZGUgb2YgYSBsaW5rLCBpdCBzaG91bGQgdXNlIGl0
cyBwYXJlbnQncyBsaW5rZWQgZWxlbWVudC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVt
ZW50ID0gbV9vYmplY3Q7CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7CiAg
ICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGlj
VGV4dCAmJiBtX29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQogICAg
ICAgICBlbGVtZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcAppbmRleCBkOGRiYjlmMmM5N2M4YmNmZGY3ODE1OTMz
YTRhZTE5YmVmZjA3ZGIyLi43OTM5Mjk5NTFkZDJkYzZhNDAxYzQ1ODI2Njg2YWVlMjM5YTczYjIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKQEAgLTk4LDE5ICs5OCwxOSBAQCB2
b2lkIEFYSXNvbGF0ZWRUcmVlTm9kZTo6c2V0VHJlZUlkZW50aWZpZXIoQVhJc29sYXRlZFRyZWVJ
RCB0cmVlSWRlbnRpZmllcikKICAgICAgICAgbV9jYWNoZWRUcmVlID0gdHJlZTsKIH0KIAotQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlF
bGVtZW50KCkgY29uc3QKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2Vk
VUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2VkRWxlbWVudCA9IHRyZWUo
KS0+Zm9jdXNlZFVJRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZm9jdXNlZEVsZW1lbnQuZ2V0
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3Jl
ZCgpIGNvbnN0CitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0
SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJlZSgpLT5ub2RlRm9y
SUQocGFyZW50KCkpLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBB
WElzb2xhdGVkVHJlZU5vZGU6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjphY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFyZWxh
dGl2ZUZyYW1lKCkuY29udGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKaW5kZXggOTM0ZDYzZjRhOWEyMzFlOWY3MmY4M2U5YjVi
ZmM0NjBiNDQ3NzcwOS4uYzM1NDZmYmU4Mjc1MmU5OWVmYWE3ZWRkZmE2Mjc2NzZkNTQyYTYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OwogCi1jbGFzcyBBWElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0
ZWRUcmVlTm9kZT4geworY2xhc3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFY
Q29yZU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlTm9k
ZT4gewogCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4X3Qg
ewpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlTm9kZShjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlRGF0
YShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3Nh
cnkoKSBvdmVycmlkZSB7IH0KIAogICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNN
ZWRpYUNvbnRyb2xMYWJlbCk7IH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNJbWFnZSk7IH0KICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNBY2Nlc3NpYmlsaXR5SWdub3JlZCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW50ZXJmYWNlKiBwYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUcmVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWUpOyB9CiAgICAgYm9vbCBp
c1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc1RyZWVJdGVtKTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
U2Nyb2xsYmFyKTsgfQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGRl
c2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9CiAgICAgU3RyaW5n
IGhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGVscFRleHQpOyB9CiAgICAgU3RyaW5nIHRp
dGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VGl0bGUpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29y
ZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdXNpbmcg
QXR0cmlidXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBi
b29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIE9wdGlvbmFsPEZsb2F0UmVjdD4+OwogICAgIHZv
aWQgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCYmLCBi
b29sIHNob3VsZFJlbW92ZSA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDJmNzVmOTY1MDhkMDcyMWM4
NDAyMDc3NGIyMjMzMTQ3NjhmNDg2YzYuLmM5YTg5M2JjMzA5OTZkOTlmZTQ1Y2IxYjcyMTllMzZh
YzczYTBmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIEFYUG9z
dE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqb2Jq
ZWN0LCBOCiAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhv
YmplY3QsIG5vdGlmaWNhdGlvbiwgdXNlckluZm8pOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6
OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90
aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b24pCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1t
CmluZGV4IDZiOTU1MDIyZWQzY2RmZGU0ZWY5MGMyMWE2ZjUxMDA0MWQwNjRlNjIuLjJjZGJjNzNh
Yjg5OGJmYjVjMzJlZWZlYjVjN2RhYmM0NjYyMTlhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpA
QCAtNDMsNyArNDMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJl
bnQoKQogICAgICAgICBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQobnVsbHB0cik7CiB9CiAKLXZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVB
dHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KQogewogICAgIGlmICghaXNBdHRh
Y2htZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLmgKaW5kZXggZmZlZDg1NWM4NGRkYzhmYzJkOWZkNWU0MWVlYWVkZWIxMDc0NzE3ZS4u
ODg1OGJlYTNkMDg3YjFiYjYyNjVkNzg3ZmQ4ODA1OGQ3MTI2MmZmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlzaWJs
ZVBvc2l0aW9uOwogLSAoQk9PTCl1cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7CiAKIC8vIFRoaXMg
Y2FuIGJlIGVpdGhlciBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0IG9yIGFuIEFYSXNvbGF0ZWRUcmVl
Tm9kZQotLSAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhCYWNraW5n
T2JqZWN0OworLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KilheEJhY2tpbmdPYmplY3Q7CiAKIC8v
IFRoZXNlIGFyZSBwcmUtZml4ZWQgd2l0aCBiYXNlIHNvIHRoYXQgQXBwS2l0IGRvZXMgbm90IGVu
ZCB1cCBjYWxsaW5nIGludG8gdGhlc2UgZGlyZWN0bHkgKGJ5cGFzc2luZyBzYWZldHkgY2hlY2tz
KS4KIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBkYWYzNGYxNTBmNTdhMzcyMjE3MTdhNmUw
YTIyYTFhYmJjNWY1ZTY0Li5mYTg5YjZhZDk4MDkzYmRmN2ExODU3Zjk2N2IwNzAxMjlkYTYyNTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC0yNjQsNyAr
MjY0LDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGkKICAgICByZXR1cm4gYXJyYXk7CiB9CiAK
LXN0YXRpYyB2b2lkIGFkZENoaWxkVG9BcnJheShBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
JiBjaGlsZCwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBhcnJheSkKK3N0YXRpYyB2b2lkIGFk
ZENoaWxkVG9BcnJheShBWENvcmVPYmplY3QmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGFycmF5KQogewogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICp3cmFwcGVy
ID0gY2hpbGQud3JhcHBlcigpOwogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2ht
ZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVu
dCwKQEAgLTMwNiw3ICszMDYsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZAogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAgICAgbV9vYmplY3QgPSBheE9iamVjdDsKLSAgICBfaWRlbnRpZmllciA9
IG1fb2JqZWN0LT5heE9iamVjdElEKCk7CisgICAgX2lkZW50aWZpZXIgPSBtX29iamVjdC0+b2Jq
ZWN0SUQoKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzg2LDcgKzM4Niw3IEBAIE5TQXJy
YXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkCiAgICAgcmV0dXJuIF9heEJhY2tpbmdPYmplY3QtPnRpdGxlQXR0
cmlidXRlVmFsdWUoKTsKIH0KIAotLSAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZSopYXhCYWNraW5nT2JqZWN0CistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWF4QmFja2lu
Z09iamVjdAogewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAg
aWYgKF9BWFVJRWxlbWVudFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJlYWQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMDE1MGZjYWU3YWZkMTE1
Nzg1NWUwNjZhMzcwNTRjYzU2N2U4YjQ5My4uYzU3MDk0OWM1NjBiNWZhMTFiYzQ0MzAwOTBlMjI1
M2M2OTVjOGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTI2NjcsMTUgKzI2NjcsMTUgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgICAgIAogICAgICAgICAvLyBUcmVlIGl0ZW0gKGNoYW5nZWQgdG8gQVhSb3dzKSBjYW4g
b25seSByZXBvcnQgdGhlIHRyZWUgKEFYT3V0bGluZSkgYXMgaXRzIHBhcmVudC4KICAgICAgICAg
aWYgKF9heEJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgYXV0byBw
YXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQo
KTsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudC0+aXNUcmVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBw
YXJlbnQtPndyYXBwZXIoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVu
dE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpOworICAgICAgICAgICAgICAgIHBhcmVudCA9IHBh
cmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50
T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFj
a2luZ09iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmICghcGFyZW50
KQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCkBAIC0yODYxLDE0ICsyODYxLDE0
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAKICAgICAg
ICAgLy8gcmFkaW8gZ3JvdXBzIHJldHVybiB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uIGFzIHRo
ZSBBWFZhbHVlCiAgICAgICAgIGlmIChtX29iamVjdC0+aXNSYWRpb0dyb3VwKCkpIHsKLSAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJhZGlvQnV0dG9uID0gbV9vYmplY3QtPnNlbGVj
dGVkUmFkaW9CdXR0b24oKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogcmFkaW9CdXR0b24g
PSBtX29iamVjdC0+c2VsZWN0ZWRSYWRpb0J1dHRvbigpOwogICAgICAgICAgICAgaWYgKCFyYWRp
b0J1dHRvbikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJu
IHJhZGlvQnV0dG9uLT53cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChtX29iamVjdC0+aXNUYWJMaXN0KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CisgICAgICAgICAgICBB
WENvcmVPYmplY3QqIHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CiAgICAg
ICAgICAgICBpZiAoIXRhYkl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAg
ICAgICAgIHJldHVybiB0YWJJdGVtLT53cmFwcGVyKCk7CkBAIC0zMDYzLDcgKzMwNjMsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGNvbHVtbi5jaGlsZHJlbigpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0
dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGNv
bHVtbi5oZWFkZXJPYmplY3QoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogaGVhZGVyID0g
Y29sdW1uLmhlYWRlck9iamVjdCgpOwogICAgICAgICAgICAgaWYgKCFoZWFkZXIpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiBoZWFkZXItPndyYXBwZXIo
KTsKQEAgLTMxNjgsNyArMzE2OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfSBl
bHNlIGlmIChpczxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkpIHsKLSAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlB
UklBR3JpZFJvdz4oKm1fb2JqZWN0KS5kaXNjbG9zZWRCeVJvdygpOworICAgICAgICAgICAgQVhD
b3JlT2JqZWN0KiByb3cgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29i
amVjdCkuZGlzY2xvc2VkQnlSb3coKTsKICAgICAgICAgICAgIGlmICghcm93KQogICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgICAgICByZXR1cm4gcm93LT53cmFwcGVyKCk7CkBA
IC0zNTExLDcgKzM1MTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfYXhCYWNraW5nT2JqZWN0LT51cGRhdGVD
aGlsZHJlbklmTmVjZXNzYXJ5KCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSog
YXhPYmplY3QgPSBfYXhCYWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2lu
dChwb2ludCkpOworICAgIEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBfYXhCYWNraW5nT2JqZWN0
LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwogICAgIGlmIChheE9iamVj
dCkgewogICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+
d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3Qt
PndyYXBwZXIoKSBhdHRhY2htZW50Vmlld107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmlu
ZGV4IDFjZTVjOWE4MDE0ZDEyYmE4NGRmMzQ4YzdmZjQ4ZWYxMmFjNDg5MmMuLmUxZTIzYTc2YTRk
OTQ2ZjllYTI3ZjYyNmEyMmIyY2M3NzhhOTRkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKQEAgLTUzLDcgKzUzLDcgQEAgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QoSW5zcGVjdG9yQXUKIHsK
IH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2libGl0eU9iamVjdEZvck5v
ZGUoTm9kZSYgbm9kZSkKK3N0YXRpYyBBWENvcmVPYmplY3QqIGFjY2Vzc2libGl0eU9iamVjdEZv
ck5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxp
dHlFbmFibGVkKCkpCiAgICAgICAgIEFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHko
KTsKQEAgLTcxLDcgKzcxLDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IEluc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUMKICAgICBWZWN0b3I8
UmVmPE5vZGU+PiBub2RlczsKIAogICAgIGZvciAoRWxlbWVudCYgZWxlbWVudCA6IGVsZW1lbnRE
ZXNjZW5kYW50cyhpczxDb250YWluZXJOb2RlPihjb250YWluZXIpID8gZG93bmNhc3Q8Q29udGFp
bmVyTm9kZT4oKmNvbnRhaW5lcikgOiBkb2N1bWVudCkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2li
aWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShlbGVtZW50
KSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9i
amVjdEZvck5vZGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChheE9iamVjdC0+Y29tcHV0
ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQoZWxl
bWVudCk7CiAgICAgICAgIH0KQEAgLTg0LDE3ICs4NCwxNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8
Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QWN0aXZlRGVzY2Vu
ZGFudAogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2Rl
KSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCA9
IGF4T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhP
YmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgICAgIGlmIChB
WENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQgPSBheE9iamVjdC0+YWN0aXZlRGVzY2VuZGFu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZURlc2NlbmRhbnQtPm5vZGUoKTsKICAgICB9
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgYWRkQ2hpbGRyZW4oQWNj
ZXNzaWJpbGl0eU9iamVjdCYgcGFyZW50T2JqZWN0LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgY2hp
bGROb2RlcykKK3N0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFYQ29yZU9iamVjdCYgcGFyZW50T2Jq
ZWN0LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgY2hpbGROb2RlcykKIHsKLSAgICBmb3IgKGNvbnN0
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgY2hpbGRPYmplY3QgOiBwYXJlbnRPYmplY3Qu
Y2hpbGRyZW4oKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRPYmplY3QgOiBwYXJlbnRP
YmplY3QuY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoTm9kZSogY2hpbGROb2RlID0gY2hpbGRP
YmplY3QtPm5vZGUoKSkKICAgICAgICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9kZSk7
CiAgICAgICAgIGVsc2UKQEAgLTEwOCw3ICsxMDgsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxW
ZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6
ZwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5v
ZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0
eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gY2hp
bGROb2RlczsKICAgICAgICAgYWRkQ2hpbGRyZW4oKmF4T2JqZWN0LCBjaGlsZE5vZGVzKTsKICAg
ICAgICAgcmVzdWx0ID0gV1RGTW92ZShjaGlsZE5vZGVzKTsKQEAgLTEyMywxMCArMTIzLDEwIEBA
IEV4Y2VwdGlvbk9yPE9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6
Q29tcHV0ZWRQcm9wZXJ0aWVzPj4gSW5zCiAKICAgICBPcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4gcmVzdWx0OwogCi0gICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9k
ZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBDb21wdXRlZFByb3BlcnRpZXMgY29tcHV0
ZWRQcm9wZXJ0aWVzOwogCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGN1cnJlbnQgPSBh
eE9iamVjdDsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7CiAgICAg
ICAgIHdoaWxlIChjdXJyZW50ICYmICghY29tcHV0ZWRQcm9wZXJ0aWVzLmJ1c3kgfHwgIWNvbXB1
dGVkUHJvcGVydGllcy5idXN5LnZhbHVlKCkpKSB7CiAgICAgICAgICAgICBjb21wdXRlZFByb3Bl
cnRpZXMuYnVzeSA9IGN1cnJlbnQtPmlzQnVzeSgpOwogICAgICAgICAgICAgY3VycmVudCA9IGN1
cnJlbnQtPnBhcmVudE9iamVjdCgpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIEV4Y2VwdGlvbk9yPE9w
dGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0Owog
Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2Jq
ZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNj
ZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRyPE5v
ZGU+PiBjb250cm9sbGVkTm9kZXM7CiAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBjb250cm9s
bGVkRWxlbWVudHM7CkBAIC0yNjksNyArMjY5LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVj
dG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmcK
IAogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBpZiAo
QWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2Rl
KG5vZGUpKSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlP
YmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGZsb3dl
ZE5vZGVzOwogCiAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gZmxvd2VkRWxlbWVudHM7CkBAIC0y
ODksNyArMjg5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmdldE1vdXNlRXZlbnROb2RlKE4KIHsKICAgICBFUlJPUl9JRl9O
T19BQ1RJVkVfQVVESVQoKTsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3JlT2Jq
ZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAg
ICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0PihheE9iamVjdCkpCiAgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q+KGF4T2JqZWN0KS0+bW91
c2VCdXR0b25MaXN0ZW5lcihNb3VzZUJ1dHRvbkxpc3RlbmVyUmVzdWx0RmlsdGVyOjpJbmNsdWRl
Qm9keUVsZW1lbnQpOwogICAgIH0KQEAgLTMwMyw3ICszMDMsNyBAQCBFeGNlcHRpb25PcjxPcHRp
b25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdDo6ZwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAot
ICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVj
dEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vz
c2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgaWYgKGF4T2JqZWN0LT5zdXBw
b3J0c0FSSUFPd25zKCkpIHsKICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IG93bmVk
Tm9kZXM7CiAKQEAgLTMyNSw4ICszMjUsOCBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IElu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0UGFyZW50Tm9kZShOb2RlJgogewog
ICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewotICAg
ICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3QtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpKQorICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0g
YWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgICAgICBpZiAoQVhDb3JlT2Jq
ZWN0KiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcGFyZW50T2JqZWN0LT5ub2RlKCk7CiAgICAgfQogCkBAIC0zMzks
MTIgKzMzOSwxMiBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+
IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgT3B0aW9uYWw8VmVj
dG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAo
QVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gc2VsZWN0ZWRDaGlsZE5vZGVzOwogCi0g
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBz
ZWxlY3RlZENoaWxkcmVuOworICAgICAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICBheE9iamVjdC0+c2VsZWN0ZWRD
aGlsZHJlbihzZWxlY3RlZENoaWxkcmVuKTsKLSAgICAgICAgZm9yIChSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4mIHNlbGVjdGVkQ2hpbGRPYmplY3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4p
IHsKICAgICAgICAgICAgIGlmIChOb2RlKiBzZWxlY3RlZENoaWxkTm9kZSA9IHNlbGVjdGVkQ2hp
bGRPYmplY3QtPm5vZGUoKSkKICAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZXMuYXBw
ZW5kKHNlbGVjdGVkQ2hpbGROb2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MDRkYjUy
ZDk2ODE2ZDc4OWFjMGIxNjU4YmE5ZjgzNmEwNTk5NzNhLi4zZWFkMTM1YWQzNDRhNWUyYTFkYzM2
ZWZjMDRlNzQ0MTRlNzE3ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yRXYKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9i
amVjdCYgYXhPYmplY3QsIEpTT046OkFycmF5T2Y8aW50PiYgY2hpbGROb2RlSWRzKQordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0LCBKU09OOjpBcnJheU9mPGludD4mIGNoaWxkTm9kZUlkcykKIHsKICAgICBj
b25zdCBhdXRvJiBjaGlsZHJlbiA9IGF4T2JqZWN0LmNoaWxkcmVuKCk7CiAgICAgaWYgKCFjaGls
ZHJlbi5zaXplKCkpCkBAIC0xODI0LDEzICsxODI0LDEzIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpCiAgICAgdW5zaWduZWQgbGV2ZWwgPSAwOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGF4
T2JqZWN0Q2FjaGUgPSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkgewotICAgICAg
ICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBheE9iamVjdENhY2hlLT5nZXRP
ckNyZWF0ZShub2RlKSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGF4
T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUpKSB7CiAKLSAgICAgICAgICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURlc2Nl
bmRhbnQoKSkKKyAgICAgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQg
PSBheE9iamVjdC0+YWN0aXZlRGVzY2VuZGFudCgpKQogICAgICAgICAgICAgICAgIGFjdGl2ZURl
c2NlbmRhbnROb2RlID0gYWN0aXZlRGVzY2VuZGFudC0+bm9kZSgpOwogCiAgICAgICAgICAgICAv
LyBBbiBBWCBvYmplY3QgaXMgImJ1c3kiIGlmIGl0IG9yIGFueSBhbmNlc3RvciBoYXMgYXJpYS1i
dXN5PSJ0cnVlIiBzZXQuCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjdXJyZW50
ID0gYXhPYmplY3Q7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIGN1cnJlbnQgPSBheE9iamVj
dDsKICAgICAgICAgICAgIHdoaWxlICghYnVzeSAmJiBjdXJyZW50KSB7CiAgICAgICAgICAgICAg
ICAgYnVzeSA9IGN1cnJlbnQtPmlzQnVzeSgpOwogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBj
dXJyZW50LT5wYXJlbnRPYmplY3QoKTsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3QtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpKQorICAgICAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogcGFy
ZW50T2JqZWN0ID0gYXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQogICAgICAgICAg
ICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnRPYmplY3QtPm5vZGUoKTsKIAogICAgICAgICAgICAg
c3VwcG9ydHNQcmVzc2VkID0gYXhPYmplY3QtPnByZXNzZWRJc1ByZXNlbnQoKTsKQEAgLTE5ODgs
NyArMTk4OCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICByb2xlID0g
YXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwogICAgICAgICAgICAgc2VsZWN0ZWQgPSBh
eE9iamVjdC0+aXNTZWxlY3RlZCgpOwogCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKKyAgICAgICAg
ICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hp
bGRyZW47CiAgICAgICAgICAgICBheE9iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENo
aWxkcmVuKTsKICAgICAgICAgICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLnNpemUoKSkgewogICAg
ICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+Ojpj
cmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuaAppbmRleCBjYjdiZWFhMTNhYzM1NGU5NGY4MDdiNWI4MzY1OTI1MzJjOTlk
NGI1Li5kOTE3ZTUwMjE3OTE0NWM4MDBiNTIwNjhkNWYyNTM1NjZmZmMyMWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBA
IC01Miw3ICs1Miw3IEBAIGNsYXNzIEpTVmFsdWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKK2NsYXNzIEFYQ29yZU9iamVjdDsKIGNsYXNzIENo
YXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTIyNSw3
ICsyMjUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBF
bGVtZW50JiwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQm
LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGJvb2wgaGFzQnJl
YWtwb2ludCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoTm9k
ZSopOwotICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBY2Nlc3NpYmlsaXR5
T2JqZWN0JiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CisgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJp
bGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwogICAgIAog
ICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgTm9kZSogbm9k
ZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCAyNDRlNWI5NTQ4ZmZlMzlhYTU4Y2MzZWY4MTllNzZiYmNjNTI5Mjc3Li5i
OGVhZWQ5M2Y2YzIwZGFkZWEyNzc2NzU2NDI3OTlkZDc0NmY5MjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcApAQCAtNTYsNyArNTYsNyBAQAogI2luY2x1ZGUgIldlYlJlbmRlckxheWVy
LmgiCiAjaW5jbHVkZSAiV2ViUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9i
amVjdENhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTI0OCw3ICsyNDgsNyBAQCB2
b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQog
ICAgIAogICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsK
IAotICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3QgPSBjb3JlLmRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIFdlYkNvcmU6OkFYQ29yZU9i
amVjdCogcm9vdCA9IGNvcmUuZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0
KCk7CiAgICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTI3MSw3ICsy
NzEsNyBAQCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmKQogCiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJp
bGl0eSgpOwogCi0gICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNlZE9iamVj
dCA9IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2Up
OworICAgIFdlYkNvcmU6OkFYQ29yZU9iamVjdCogZm9jdXNlZE9iamVjdCA9IFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpOwogICAgIGlmICghZm9j
dXNlZE9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382298</attachid>
            <date>2019-10-30 05:49:48 -0700</date>
            <delta_ts>2019-10-30 06:30:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203408-20191030084946.patch</filename>
            <type>text/plain</type>
            <size>261318</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkOWFkMjljMmQzMzJh
ODMwMTAyYjIxMGRlZTllZmFmNjg3MDE5NC4uODc3ZjhiMmU3OGIwZmM1YWI3ODc3MzJiOTlhODVh
ZTlmZWFjYzQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxNSBAQAorMjAxOS0xMC0zMCAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJh
c2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVl
Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBuZWVkZWQgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBBWENvcmVPYmplY3QgaXMgbm93IGEgY29tbW9uIGJhc2UgY2xhc3Mg
Zm9yIGJvdGggQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQKKyAgICAgICAgQVhJc29sYXRlZFRyZWVO
b2RlLiBBbGwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSBBWENvcmVPYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBhbnkgb2YgdGhlIGRlcml2ZWQgY2xhc3Nlcy4gVGhpcyB3aWxsIGFsbG93IHRvIHNl
YW1sZXNzbHkgc3dpdGNoCisgICAgICAgIGJldHdlZW4gdXNpbmcgQVhJc29sYXRlZFRyZWVOb2Rl
IGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkIGFuZAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGluIHRoZSBtYWluIHRocmVhZCB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbworICAgICAg
ICBhbGxvd3MgZm9yIGNsZWFuZXIgY2xpZW50IGNvZGUsIGVuY2Fwc3VsYXRpbmcgdGhlIGRlY2lz
aW9uIHdoZXRoZXIKKyAgICAgICAgQVhJc29sYXRlZFRyZWVOb2RlIGNhbiByZXNwb25kIHRvIGEg
cmVxdWVzdCBvciBuZWVkIHRvIHJlc29ydCB0byBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LCBhbmQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjb21waWxlCisg
ICAgICAgIHRpbWUgZmxhZyBjaGVja3MgZm9yIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0QVhJRCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0
TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJy
ZWRDYWNoZVVwZGF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmF4Um93U3BhbldpdGhSb3dJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9t
aW5hdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb250YWluc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjpB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjppc051bGwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OlZpc2libGVQb3NpdGlvblJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjppc051bGwgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjppc051bGwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbjo6QWNjZXNzaWJpbGl0
eVRleHRPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0QVhPYmplY3RJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJ
bWFnZUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3
b3JkRmllbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNOYXRpdmVUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzUmFkaW9CdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNOYXRpdmVMaXN0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdEJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3hPcHRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNNZWRpYVRpbWVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUJhciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVCdXR0
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0lucHV0SW1hZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NsaWRlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1NsaWRlclRodW1iIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzSW5wdXRTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250cm9sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGFiZWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFi
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEYXRhVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RhYmxlQ29sdW1uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVDZWxsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRmll
bGRzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNHcm91cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FSSUFUcmVlR3JpZFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUxpc3RQb3B1
cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BpbkJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZVNwaW5CdXR0b24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGlu
QnV0dG9uUGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01vY2tPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZWRpYU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RvZ2dsZUJ1
dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RhYkxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFkaW9Hcm91cCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbWJvQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVHJlZUdy
aWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMaXN0SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDYW52YXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQ
b3BVcEJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0NvbG9yV2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwbGl0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9vbGJhciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N1bW1hcnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXND
aGVja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1NlbGVjdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRm9jdXNlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hvdmVyZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbmRldGVy
bWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTG9hZGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT2ZmU2NyZWVuIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1VudmlzaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Zpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSZXF1aXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlua2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0V4cGFuZGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25B
Y3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzQm9sZEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzSXRhbGljRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQbGFpblRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZUZvbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzU2FtZUZvbnRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNTYW1lU3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdGF0aWNUZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
YW5TZXRGb2N1c0F0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldFZhbHVl
QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5T
ZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmlidXRlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0xldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYmxlTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2YWx1ZUZv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5n
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXlvdXRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojplc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNBUklBT3ducyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBRHJvcHBpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBR3JhYmJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBUklB
R3JhYmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RDaGlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmlvdXNTaWJsaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5leHRTaWJsaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtlZFVJRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGVV
SUVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRy
b2xFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9s
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlSGFzUHJl
c2VudGF0aW9uYWxDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBUklBU3RhdGljVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4
dExlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhTGFiZWxlZEJ5QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
eHBhbmRlZFRleHRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbG9yVmFsdWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXhP
YmplY3RJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBpeGVs
U25hcHBlZEJvdW5kaW5nQm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxl
Y3RlZFRleHRSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25TdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25FbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZWxlY3RlZFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzS2V5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OndpZGdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVkVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRT
ZWxlY3RlZFJvd3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6bWFrZVJhbmdlVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtRGVmYXVsdEFjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmNyZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVjcmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhhdmVD
aGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1
YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bmVlZHNUb1VwZGF0ZUNoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGFiQ2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFu
ZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRzRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0
VmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVha3MgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdl
Rm9yTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWEJvdW5kc0Zv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ1ZhbHVl
Rm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZl
UmVnaW9uUmVsZXZhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1c3kgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlYWtBc1Byb3BlcnR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
TWF0aEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNNYXRoRnJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoRmVuY2VkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhVbmRlck92ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoUm9vdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTcXVh
cmVSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWF0aFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNl
T3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoSWRlbnRpZmllciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhU
YWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01hdGhUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUYWJsZUNlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNN
YXRoVG9rZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhS
YWRpY2FuZE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUm9vdEluZGV4T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJhdG9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGhEZW5vbWluYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoQmFzZU9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vic2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRo
RmVuY2VkT3BlblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aExpbmVUaGlja25lc3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSGlkZGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6Y2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFpblRl
eHRSYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
blJhbmdlOjpWaXNpYmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb25SYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0
dG9uR3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpkZWNyZW1l
bnRCdXR0b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkhlYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdyBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaXN0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAg
ICAgICAgKHJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtHZXRTdGFydEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRFbmRJbmRleCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJ0ZXh0R2V0TGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0Tkxp
bmtzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKToK
KyAgICAgICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24p
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVNlbGVjdGlvblJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAob2Zm
c2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKToKKyAgICAgICAgKHdlYkNvcmVPZmZzZXRUb0F0a09m
ZnNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAg
ICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IpOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVs
ZW1lbnRzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlDb250YWluZXJdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUxpbmtlZEVsZW1lbnRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAg
ICAgKGFkZENoaWxkVG9BcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBheEJhY2tpbmdPYmplY3RdKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vz
c2libGl0eU9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QWN0aXZlRGVz
Y2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENoaWxkTm9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRD
b21wdXRlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpnZXRDb250cm9sbGVkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRGbG93ZWROb2Rlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldE1vdXNl
RXZlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0
eU9iamVjdDo6Z2V0T3duZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRTZWxlY3RlZENoaWxkTm9kZXMp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKwogMjAxOS0xMC0yNiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIE1haW4gaW1wbGVtZW50YXRpb24gZm9yIGxhenkgaW1hZ2UgbG9h
ZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA4NmU2N2NkNGUwOThjMzE5MDk2MDVkYjE2NDliNzgxNjRiMDUxYWU0
Li44MzY3ODVmYzFkNmJkY2NhNDRjYzM2OGZiNmQ2YmQzOTI3ZDhlOTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE5LTEwLTMwICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFw
cGxlLmNvbT4KKworICAgICAgICBDcmVhdGUgYmFzZSBjbGFzcyBjb21tb24gdG8gQWNjZXNzaWJp
bGl0eU9iamVjdCBhbmQgQVhJc29sYXRlZFRyZWVOb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KTogVXNlcyBBWENvcmVPYmplY3QgaW5zdGVhZCBvZiBBY2Nlc3NpYmlsaXR5T2JqZWN0LgorICAg
ICAgICAoV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdCk6IFVzZXMgQVhDb3JlT2JqZWN0IGlu
c3RlYWQgb2YgQWNjZXNzaWJpbGl0eU9iamVjdC4KKwogMjAxOS0xMC0yNiAgQ2hyaXMgTG9yZCAg
PGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgUHV0IE9mZnNjcmVlbkNhbnZhcyBiZWhpbmQg
YSBidWlsZCBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCBhYWU0ZDg2MzhiNTMwMWEwZTAzMTYwYTI4M2UxYjIyODY1NGNlODAxLi45
N2FlZjZhNGI4MzZmNjM4MTNlMDA1YmVjNjc0MmYxYjBiOTExZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBA
QCBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiAgICAgZm9yIChjb25zdCBhdXRvJiBv
YmplY3QgOiBtX29iamVjdHMudmFsdWVzKCkpIHsKICAgICAgICAgZGV0YWNoV3JhcHBlcihvYmpl
Y3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOwog
ICAgICAgICBvYmplY3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hl
RGVzdHJveWVkKTsKLSAgICAgICAgb2JqZWN0LT5zZXRBWE9iamVjdElEKDApOworICAgICAgICBv
YmplY3QtPnNldE9iamVjdElEKDApOwogICAgIH0KIH0KIApAQCAtMzM2LDE1ICszMzYsMTUgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVt
ZW50KEhUTUxBcmVhRWxlbWVudCogYXIKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhS
ZW5kZXJJbWFnZS0+Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbms+KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisK
ICAgICAgICAgaWYgKGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpjaGlsZCku
YXJlYUVsZW1lbnQoKSA9PSBhcmVhRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBjaGlsZC5n
ZXQoKTsKLSAgICB9ICAgIAorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbms+KGNoaWxkLmdldCgpKTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1
c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQorQVhDb3JlT2JqZWN0KiBBWE9i
amVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogewog
ICAgIGlmICghZ0FjY2Vzc2liaWxpdHlFbmFibGVkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTM1NSwxMiArMzU1LDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6
OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgaWYgKGlzPEhU
TUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZm9jdXNlZElt
YWdlTWFwVUlFbGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQp
KTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGZvY3VzZWREb2N1bWVudC0+YXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5v
ZGUqPihmb2N1c2VkRWxlbWVudCkgOiBmb2N1c2VkRG9jdW1lbnQpOworICAgIEFYQ29yZU9iamVj
dCogb2JqID0gZm9jdXNlZERvY3VtZW50LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZv
Y3VzZWRFbGVtZW50ID8gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZvY3VzZWRFbGVtZW50KSA6IGZvY3Vz
ZWREb2N1bWVudCk7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKG9iai0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2ZURlc2NlbmRhbnQo
KSkKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogZGVzY2VuZGFudCA9IG9iai0+YWN0aXZlRGVz
Y2VuZGFudCgpKQogICAgICAgICAgICAgb2JqID0gZGVzY2VuZGFudDsKICAgICB9CiAKQEAgLTU2
MCw4ICs1NjAsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNy
ZWF0ZShXaWRnZXQqIHdpZGdldCkKIAogICAgIGdldEFYSUQobmV3T2JqLmdldCgpKTsKICAgICAK
LSAgICBtX3dpZGdldE9iamVjdE1hcHBpbmcuc2V0KHdpZGdldCwgbmV3T2JqLT5heE9iamVjdElE
KCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCksIG5ld09iaik7ICAg
IAorICAgIG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5zZXQod2lkZ2V0LCBuZXdPYmotPm9iamVjdElE
KCkpOworICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmopOwogICAg
IG5ld09iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsKICAgICBy
ZXR1cm4gbmV3T2JqLmdldCgpOwpAQCAtNjA4LDggKzYwOCw4IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKE5vZGUqIG5vZGUpCiAKICAgICBnZXRBWElE
KG5ld09iai5nZXQoKSk7CiAKLSAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdP
YmotPmF4T2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQo
KSwgbmV3T2JqKTsKKyAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdPYmotPm9i
amVjdElEKCkpOworICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmop
OwogICAgIG5ld09iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsK
ICAgICBuZXdPYmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKTsKQEAgLTYzNiw4ICs2MzYsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAg
ICAgZ2V0QVhJRChuZXdPYmouZ2V0KCkpOwogCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNl
dChyZW5kZXJlciwgbmV3T2JqLT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3
T2JqLT5heE9iamVjdElEKCksIG5ld09iaik7CisgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNl
dChyZW5kZXJlciwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09i
ai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hX
cmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgbmV3T2JqLT5zZXRMYXN0S25vd25Jc0lnbm9yZWRW
YWx1ZShuZXdPYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSk7CkBAIC03MDksNyArNzA5LDcg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZSkKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgbV9vYmplY3RzLnNldChvYmotPmF4T2JqZWN0SUQoKSwgb2JqKTsgICAgCisgICAgbV9vYmpl
Y3RzLnNldChvYmotPm9iamVjdElEKCksIG9iaik7CiAgICAgb2JqLT5pbml0KCk7CiAgICAgYXR0
YWNoV3JhcHBlcihvYmouZ2V0KCkpOwogICAgIHJldHVybiBvYmouZ2V0KCk7CkBAIC03MjYsNyAr
NzI2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoQVhJRCBheElEKQogCiAgICAgZGV0
YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxl
bWVudERlc3Ryb3llZCk7CiAgICAgb2JqZWN0LT5kZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1l
bnRUeXBlOjpFbGVtZW50RGVzdHJveWVkLCB0aGlzKTsKLSAgICBvYmplY3QtPnNldEFYT2JqZWN0
SUQoMCk7CisgICAgb2JqZWN0LT5zZXRPYmplY3RJRCgwKTsKIAogICAgIG1faWRzSW5Vc2UucmVt
b3ZlKGF4SUQpOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCkBAIC03
OTksNyArNzk5LDcgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUdlbmVyYXRlQVhJRCgp
IGNvbnN0CiBBWElEIEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQogewogICAgIC8vIGNoZWNrIGZvciBhbHJlYWR5LWFzc2lnbmVkIElECi0gICAgQVhJRCBv
YmpJRCA9IG9iai0+YXhPYmplY3RJRCgpOworICAgIEFYSUQgb2JqSUQgPSBvYmotPm9iamVjdElE
KCk7CiAgICAgaWYgKG9iaklEKSB7CiAgICAgICAgIEFTU0VSVChtX2lkc0luVXNlLmNvbnRhaW5z
KG9iaklEKSk7CiAgICAgICAgIHJldHVybiBvYmpJRDsKQEAgLTgwOCw3ICs4MDgsNyBAQCBBWElE
IEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIG9i
aklEID0gcGxhdGZvcm1HZW5lcmF0ZUFYSUQoKTsKIAogICAgIG1faWRzSW5Vc2UuYWRkKG9iaklE
KTsKLSAgICBvYmotPnNldEFYT2JqZWN0SUQob2JqSUQpOworICAgIG9iai0+c2V0T2JqZWN0SUQo
b2JqSUQpOwogICAgIAogICAgIHJldHVybiBvYmpJRDsKIH0KQEAgLTg4MSwxMiArODgxLDEyIEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFJlbmRlck9iamVjdCogbmV3Q2hpCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJl
cikpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmopCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBWENv
cmVPYmplY3QqIG9iaikKIHsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3QuYWRkKG9iaik7CisgICAgbV9kZWZlcnJlZENo
aWxkcmVuQ2hhbmdlZExpc3QuYWRkKG9iaik7CiB9CiAgICAgCiB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKQEAgLTg5OSw4ICs4OTksOCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKICAgICBhdXRvIG5vdGlm
aWNhdGlvbnMgPSBXVEZNb3ZlKG1fbm90aWZpY2F0aW9uc1RvUG9zdCk7CiAgICAgCiAgICAgZm9y
IChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0aW9ucykgewotICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgpOwotICAgICAgICBpZiAoIW9iai0+YXhP
YmplY3RJRCgpKQorICAgICAgICBBWENvcmVPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7
CisgICAgICAgIGlmICghb2JqLT5vYmplY3RJRCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKCFvYmotPmF4T2JqZWN0Q2FjaGUoKSkKQEAgLTk4OCw3ICs5ODgsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oTm9kZSogbm9kZSwgQVhOb3RpZmlj
YXRpb24gbm90aWZpY2F0aW9uLCBQbwogICAgIHBvc3ROb3RpZmljYXRpb24ob2JqZWN0LmdldCgp
LCAmbm9kZS0+ZG9jdW1lbnQoKSwgbm90aWZpY2F0aW9uLCBwb3N0VGFyZ2V0LCBwb3N0VHlwZSk7
CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQVhOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uLCBQb3N0VGFyZ2V0IHBvc3RUYXJnZXQsIFBvc3RUeXBlIHBvc3RUeXBlKQordm9pZCBB
WE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBEb2N1
bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCBw
b3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKIHsKICAgICBzdG9wQ2FjaGluZ0NvbXB1dGVk
T2JqZWN0QXR0cmlidXRlcygpOwogCkBAIC0xOTM2LDcgKzE5MzYsNyBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0
YSYgdGV4dE1hcgogICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKICAgICB9CiAgICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQo
KS0+YXhPYmplY3RJRCgpOworICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9i
amVjdElEKCk7CiAgICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CiAgICAgdGV4dE1h
cmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICB0
ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0
SW5kZXg7CkBAIC0yMjMwLDcgKzIyMzAsNyBAQCBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhP
YmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVgogICAg
IFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNfY2FzdDx2
b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7CiAgICAg
Ci0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+YXhPYmplY3RJRCgpOworICAg
IHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9iamVjdElEKCk7CiAgICAgdGV4dE1h
cmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CiAgICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVl
cFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIHRleHRNYXJrZXJEYXRhLmFmZmlu
aXR5ID0gdmlzaWJsZVBvcy5hZmZpbml0eSgpOwpAQCAtMjI2Miw3ICsyMjYyLDcgQEAgT3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQ
b3NpdGlvbkluVGV4dENvbnQKICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAg
ICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihU
ZXh0TWFya2VyRGF0YSkpOwogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0
KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5v
YmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4dENvbnRyb2w7CiAKICAg
ICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7CkBAIC0yOTA3LDkgKzI5MDcsOSBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICB9
CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZE5vZGVMaXN0LmNsZWFyKCk7CiAKLSAgICBm
b3IgKGF1dG8mIGNoaWxkIDogbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExpc3QpCisgICAgZm9y
IChhdXRvJiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0KQogICAgICAgICBj
aGlsZC0+Y2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExp
c3QuY2xlYXIoKTsKKyAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdC5jbGVhcigpOwog
CiAgICAgZm9yIChhdXRvKiBub2RlIDogbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCkKICAgICAg
ICAgdGV4dENoYW5nZWQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCmluZGV4IGU1MjIwM2JlYjE0MzAxMDQwMzc1NmM0NmMzNzNlOWU3ZGEzMTk5
YmYuLjg4NDk5ZmQxOGMyMDczOWQyZGEzNzBhMDRiYTdiZjQxYmZlM2M4NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xNDgsNyArMTQ4LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmKTsKICAgICB+
QVhPYmplY3RDYWNoZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShj
b25zdCBQYWdlKik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgdGhlIGVu
dGlyZSBkb2N1bWVudC4KICAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBy
b290T2JqZWN0KCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXR0YWNo
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Tm9kZSosIE5vZGUqIG5ld0NoaWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIpOwotICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChBWENvcmVPYmplY3QqKTsKICAgICB2b2lkIGNoZWNrZWRTdGF0ZUNoYW5n
ZWQoTm9kZSopOwogICAgIC8vIENhbGxlZCB3aGVuIGEgbm9kZSBoYXMganVzdCBiZWVuIGF0dGFj
aGVkLCBzbyB3ZSBjYW4gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IHN1YmNsYXNzIG9mIEFj
Y2Vzc2liaWxpdHlPYmplY3QuCiAgICAgdm9pZCB1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNo
ZWQoTm9kZSopOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdE5v
dGlmaWNhdGlvbihSZW5kZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRh
cmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKICAgICB2b2lkIHBv
c3ROb3RpZmljYXRpb24oTm9kZSosIEFYTm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0ID0gVGFyZ2V0
RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwotICAgIHZvaWQgcG9zdE5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgRG9jdW1lbnQqLCBBWE5vdGlmaWNhdGlv
biwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91
c2x5KTsKKyAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiwgRG9jdW1lbnQq
LCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0g
UG9zdEFzeW5jaHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dJbnRl
bnQoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgCiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOworICAgIHZvaWQgcG9z
dFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKICAg
ICB2b2lkIHBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9j
dXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKIAogICAgIHZvaWQgcGxhdGZvcm1QZXJm
b3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogCiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25Q
b3N0VGltZXI7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVj
dD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zVG9Qb3N0OworICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmUHRyPEFYQ29yZU9iamVjdD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmlj
YXRpb25zVG9Qb3N0OwogCiAgICAgVGltZXIgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1l
cjsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHByaXZhdGU6CiAgICAgTGlzdEhhc2hTZXQ8RWxlbWVu
dCo+IG1fZGVmZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PE5v
ZGUqPiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PEVsZW1lbnQq
PiBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0OwotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZENoaWxkcmVkQ2hhbmdlZExp
c3Q7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEFYQ29yZU9iamVjdD4+IG1fZGVmZXJyZWRDaGls
ZHJlbkNoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX2RlZmVycmVkQ2hpbGRy
ZW5DaGFuZ2VkTm9kZUxpc3Q7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgU3RyaW5nPiBtX2RlZmVy
cmVkVGV4dEZvcm1Db250cm9sVmFsdWU7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgUXVhbGlmaWVk
TmFtZT4gbV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBpbmxp
bmUgY29uc3QgRWxlbWVudCogQVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVFbGVtZW50KGNv
bnN0IE5vZGUqKSB7IHJldHVybgogaW5saW5lIE5vZGUqIEFYT2JqZWN0Q2FjaGU6Om1vZGFsTm9k
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6Y2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQoraW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKEFYQ29yZU9iamVjdCopIHsgfQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKE5vZGUqLCBOb2RlKikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2Jq
ZWN0KiwgUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZl
ckZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VJZk5lZWRlZChOb2RlKiwgTm9kZSopIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwCmluZGV4IGQ3MzA5ODhmODk3ZWNmYTQ5YWJiOTBkMzNlNzEyZDYwZWRlODUyOWUuLjAwMGFk
ZDRjM2FhMjI4ZjJlM2Y2MDUxODAxMDIwNTlmYWQxMTIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gQWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVuZGVyZXIpKTsKIH0KIAotYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25l
ZCYgY29sdW1uQ291bnQpCitib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxs
Q2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4m
IGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQogewogICAgIGlmICghY2hpbGQg
fHwgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpjaGlsZCkgJiYgIWlzPEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdz4oKmNoaWxkKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1LDcg
Kzg1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkg
Y29uc3QKICAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFNdWx0
aVNlbGVjdGFibGUsICJmYWxzZSIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6
YWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3dDaGlsZCwgSGFzaFNldDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50
KQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2Jq
ZWN0KiByb3dDaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93
cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQogewogICAgIGlmICghcm93Q2hpbGQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5oCmluZGV4IGI4ZTdiYWY0YTViMmU2NDU5ZWZlYTlkOGIyNjBhYTkyODEy
MDIwYjcuLmY3MmM5MDZhYTBjZTBmNGI3ODE4NWFiMTVlNWY5MTNhOWJjMzMyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
aApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIGlzQXJpYVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIAotICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNv
bHVtbkNvdW50KTsKLSAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25l
ZCYgY29sdW1uQ291bnQpOworICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBWENvcmVPYmplY3Qq
LCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYg
Y29sdW1uQ291bnQpOworICAgIGJvb2wgYWRkVGFibGVDZWxsQ2hpbGQoQVhDb3JlT2JqZWN0Kiwg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNv
bHVtbkNvdW50KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcAppbmRleCBkMDIzZjhjZTU3ZjM1NTQ3YmNhZTE1NTRkNjQwMjQyZTM4OWQyODQ3Li5mODE5
ZTlhZWU5NDZjNWQzNTUwZjczYjI0OWUxMzljOTliNGE0Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgLy8gQVJJQSBncmlkY2VsbHMgbWF5
IGhhdmUgbXVsdGlwbGUgbGV2ZWxzIG9mIHVuaWdub3JlZCBhbmNlc3RvcnMgdGhhdCBhcmUgbm90
IHRoZSBwYXJlbnQgdGFibGUsCiAgICAgLy8gaW5jbHVkaW5nIHJvd3MgYW5kIGludGVyYWN0aXZl
IHJvd2dyb3Vwcy4gSW4gYWRkaXRpb24sIHBvb3JseS1mb3JtZWQgZ3JpZHMgbWF5IGNvbnRhaW4g
ZWxlbWVudHMKICAgICAvLyB3aGljaCBwYXNzIHRoZSB0ZXN0cyBmb3IgaW5jbHVzaW9uLgotICAg
IGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVk
KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewor
ICAgIGZvciAoYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewogICAgICAgICBpZiAo
aXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHBhcmVudCk7CiAgICAg
fQpAQCAtNjUsNyArNjUsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGw6OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYg
cm93UmFuZ2UpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRP
YmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMDMsNyArMTAzLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhS
b3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4KSBjb24KICAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFuZ2Uuc2Vjb25kKSwgMSk7CiAgICAgfQogCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAg
ICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgCkBAIC0xMzQsNyArMTM0LDcg
QEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0lu
ZGV4KHVuc2lnbmVkIHJvd0luZGV4KSBjb24KIAogdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRD
ZWxsOjpjb2x1bW5JbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1
bW5SYW5nZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9i
amVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmNwcAppbmRleCBmMjk2NDY3Y2E0ZTgxMWJlZDI2MDFjN2NhMzIzMWQ4ODA4YWE1
NDMwLi4zMjgzODA3NjUyOWRkNDVjMTBmYzdkNGE3YWMwOWEwYzdmNWEzZGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAg
YXV0byYgYWxsUm93cyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkucm93
cygpOwogICAgIGludCByb3dDb3VudCA9IGFsbFJvd3Muc2l6ZSgpOwogICAgIGZvciAoaW50IGsg
PSBpbmRleCArIDE7IGsgPCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHJvdyA9IGFsbFJvd3Nba10uZ2V0KCk7CisgICAgICAgIGF1dG8qIHJvdyA9IGFsbFJv
d3Nba10uZ2V0KCk7CiAgICAgICAgIC8vIFN0b3AgYXQgdGhlIGZpcnN0IHJvdyB0aGF0IGRvZXNu
J3QgbWF0Y2ggdGhlIGNvcnJlY3QgbGV2ZWwuCiAgICAgICAgIGlmIChyb3ctPmhpZXJhcmNoaWNh
bExldmVsKCkgIT0gbGV2ZWwgKyAxKQogICAgICAgICAgICAgYnJlYWs7CkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRSb3dzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgZGlzY2xvCiAgICAgfQogfQogICAgIAotQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdygpIGNvbnN0
CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3co
KSBjb25zdAogewogICAgIC8vIFRoZSByb3cgdGhhdCBkaXNjbG9zZXMgdGhpcyBvbmUgaXMgdGhl
IHJvdyBpbiB0aGUgdGFibGUKICAgICAvLyB0aGF0IGlzIGFyaWEtbGV2ZWwgc3VidHJhY3QgMSBm
cm9tIHRoaXMgcm93LgpAQCAtMTAzLDcgKzEwMyw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBmb3IgKGludCBrID0gaW5kZXggLSAxOyBrID49IDA7
IC0taykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBhbGxSb3dzW2tdLmdl
dCgpOworICAgICAgICBhdXRvKiByb3cgPSBhbGxSb3dzW2tdLmdldCgpOwogICAgICAgICBpZiAo
cm93LT5oaWVyYXJjaGljYWxMZXZlbCgpID09IGxldmVsIC0gMSkKICAgICAgICAgICAgIHJldHVy
biByb3c7CiAgICAgfQpAQCAtMTMzLDcgKzEzMyw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dzo6aGVhZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
OjpoZWFkZXJPYmplY3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93SGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKaW5kZXggN2JhNzRmNGRkMjMxNzFm
ZTViNDgyYjZmZTc4MGEyZmY3ODY5ZDg4Ni4uODU0MDY4MzVhZmU3MWVjODRkNTlhNTYxMDQ2MDk1
MDUxOWRiNmU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCkBAIC00MCw5ICs0MCw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3coKTsKICAgICAKICAgICB2b2lkIGRp
c2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogZGlzY2xvc2VkQnlSb3coKSBjb25zdDsKKyAgICBBWENvcmVPYmplY3QqIGRp
c2Nsb3NlZEJ5Um93KCkgY29uc3Q7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVh
ZGVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKSBv
dmVycmlkZTsKICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93KFJlbmRlck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCmluZGV4IGI0NWZjNjAwMjRhNGYzMGFiMDA3NTU2
ZWI1NmIzNDlmMjM0MjJmNTguLjYzNDVmM2NkOGYzODVhMDUwZjljYWM5YjkzNzhhMDg1MzJlNzUx
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxhYmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMYWJlbC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMYWJlbDo6
Y2xlYXJDaGlsZHJlbigpCiAgICAgbV9jb250YWluc09ubHlTdGF0aWNUZXh0RGlydHkgPSBmYWxz
ZTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgaW5kZXgpCit2b2lkIEFjY2Vzc2liaWxpdHlMYWJl
bDo6aW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQogewog
ICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omluc2VydENoaWxkKG9iamVjdCwgaW5kZXgp
OwogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oCmluZGV4IGIxM2Fm
MmQ3ZDkyZGJiNTI4MGY0ZGNjZDgyMTQwMGQ0NjZjMzk0ZTAuLmI2YTQxYjlhZmYwZjg1NmViOWU5
NDg2M2RjN2Y1YmU2ZGQ4MDVjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRy
ZW5JZk5lY2Vzc2FyeSgpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIGZpbmFsOwot
ICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIHVuc2lnbmVkKSBmaW5h
bDsKKyAgICB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkKSBmaW5hbDsK
ICAgICBib29sIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5IDogMTsKICAgICBib29sIG1f
Y29udGFpbnNPbmx5U3RhdGljVGV4dCA6IDE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAppbmRleCAwN2FlZGM5NzE0
Njg0MTBiOTAxYTc4MjJkYWIwNzkyOWVlYTMwNGUwLi45NWY5NzI4NzdkMTY2OGMwMWQ3NGRiZWNj
Yjk1NTYxN2Y0ZWM2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJp
bGl0eU9iamVjdChIVE1MCiAgICAgcmV0dXJuICZsaXN0Qm94T2JqZWN0OwogfQogICAgIAotQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxl
bWVudCBtZXRob2RzIGZvciByZXR1cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CiAg
ICAgLy8gaWdub3JlIG9wdGdyb3VwIGVsZW1lbnRzLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50CiAgICAgCiAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gYm91
bmRpbmdCb3hSZWN0KCk7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9w
dGlvbiA9IG51bGxwdHI7CisgICAgQVhDb3JlT2JqZWN0KiBsaXN0Qm94T3B0aW9uID0gbnVsbHB0
cjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0
ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKm1fcmVuZGVyZXIpLml0ZW1Cb3VuZGluZ0JveFJl
Y3QocGFyZW50UmVjdC5sb2NhdGlvbigpLCBpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAppbmRleCA0N2EzOWNlOTVhNWE2MGRm
OGE5YzZhOGNkNTZjNjE1NGIzMzQxMjUwLi43NGU1OTA4MmUzYzk3ZTA1MzIxMDIxOGE2NWVmM2Fi
NmMyNjgxODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1M
RWxlbWVudCopIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29y
ZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcAppbmRleCA3YWJmZmFlNGZhMTQ5MTIzYjA1ZWMwZDUwMzM0YmI1ZmVkMzIzYjI4
Li5hYWVhZmUwODRjOGU3ZGJiYzllNmQ2MGY1NmE2MzM3YjUyZDFkZGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6OmlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVj
dFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplYwogCiBib29s
IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nl
c3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB0eXBlKSBjb25zdAogewotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAg
IEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYg
KCFwYXJlbnQgfHwgIXBhcmVudC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoUmFkaWNhbmRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKIHsKICAgICBpZiAoIWlz
TWF0aFJvb3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNTAsNyArMjUwLDcgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSYWRp
Y2FuZE9iamVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdldCgpOwogfQogCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9i
amVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUm9v
dEluZGV4T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFJvb3QoKSB8fCBpc01hdGhTcXVhcmVS
b290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjYyLDcgKzI2Miw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUm9vdEluZGV4
T2JqZWN0KCkKICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0
KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0
b3JPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzQsNyArMjc0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhOdW1lcmF0b3JPYmplY3QoKQogICAgIHJldHVybiBj
aGlsZHJlblswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU1hdGhNTEVsZW1lbnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQogewogICAg
IGlmICghaXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODYs
NyArMjg2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgp
OwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFVuZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6Om1hdGhVbmRlck9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhVbmRlck92ZXIoKSB8fCAh
bm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwMSw3ICszMDEsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFVuZGVyT2Jq
ZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KCkKK0FYQ29yZU9iamVjdCog
QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KCkKIHsKICAgICBpZiAo
IWlzTWF0aFVuZGVyT3ZlcigpIHx8ICFub2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzE4LDcgKzMxOCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9i
amVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFz
ZU9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpICYmICFp
c01hdGhVbmRlck92ZXIoKSAmJiAhaXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMzEsNyArMzMxLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhCYXNlT2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhTdWJzY3JpcHRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhTdWJzY3Jp
cHRTdXBlcnNjcmlwdCgpIHx8ICFub2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MzQ2LDcgKzM0Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50OjptYXRoU3Vic2NyaXB0T2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhTdXBl
cnNjcmlwdE9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
OjptYXRoU3VwZXJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuaAppbmRleCA1ODBiODU5Y2JjMWQwYzY3MzM1ZTJiNTA0OTQyNzY2NGJlZDExNjdhLi44
NzQ3YjA1NGVmNDM5MGFkOTIzZDYwMTdjMjVkMDc2NGY1MDUyYThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5oCkBAIC03NywyMyArNzcsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTWF0aE11bHRpc2Ny
aXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIEdlbmVyaWMgY29tcG9uZW50cy4KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0
aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIFJvb3QgY29tcG9uZW50cy4KLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZTsKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVP
YmplY3QqIG1hdGhSb290SW5kZXhPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIEZyYWN0aW9u
IGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRvck9iamVj
dCgpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5vbWluYXRvck9i
amVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgp
IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhV
bmRlck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3Qo
KSBvdmVycmlkZTsKIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlk
ZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKKyAg
ICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRmVuY2VkIGNvbXBvbmVudHMuCiAgICAgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgKaW5kZXggYzk4NWZkZGQzZGI3NWI4YTg0
YzdlMjU4MzNlMDA5OTU3NjZkNTk0OC4uZjNhZDZkOTZlMzZmODViMzc5ZTVjZjk1Y2U0YjQ1Y2Iz
ZDZmN2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaApAQCAtNjQsNyArNjQsNiBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdmFsdWVE
ZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVsaW5lKFJlbmRlck9iamVjdCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwCmluZGV4IGVmMTM3N2JmNDZjM2IyMjUwZDNjZjZlNmU5ZDM2M2IyZTYyYmI5
MWYuLmEyY2I1MTdhZmI4YmU4NjhlYWVlZTFkMzI4MTI1YzU4NjYyYjZlMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKCkKIAogICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqbGlzdCkuc2V0
UGFyZW50KHRoaXMpOwogICAgIGlmIChsaXN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsK
LSAgICAgICAgY2FjaGUtPnJlbW92ZShsaXN0LT5heE9iamVjdElEKCkpOworICAgICAgICBjYWNo
ZS0+cmVtb3ZlKGxpc3QtPm9iamVjdElEKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IGVlOTYxYjVjZjVjNjEzMjNjMjlkYmJjYmNiMzI4Zjk4
Mjg4YTQ0NGQuLjdiMDJjMjI0OWM2YTM5NDYzMTk4MzQzYTJlNDc4MGU0NGI1MTEyMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC0xMTIsMTAgKzExMiwxMCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQoKQogewogICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NoaWxkcmVu
LnNpemUoKTsgaSA+IDAgOyAtLWkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGQgPSBtX2NoaWxkcmVuW2kgLSAxXS5nZXQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjaGls
ZCA9IG1fY2hpbGRyZW5baSAtIDFdLmdldCgpOwogICAgICAgICBpZiAoY2hpbGQtPmFjdGlvbkVs
ZW1lbnQoKSAmJiAhY2hpbGQtPmFjdGlvbkVsZW1lbnQoKS0+aW5SZW5kZXJlZERvY3VtZW50KCkp
IHsKICAgICAgICAgICAgIGNoaWxkLT5kZXRhY2hGcm9tUGFyZW50KCk7Ci0gICAgICAgICAgICBj
YWNoZS0+cmVtb3ZlKGNoaWxkLT5heE9iamVjdElEKCkpOworICAgICAgICAgICAgY2FjaGUtPnJl
bW92ZShjaGlsZC0+b2JqZWN0SUQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBkYXRlQWN0
aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKICAgICBBU1NFUlRfQVJHKG9wdGlvbkluZGV4LCBv
cHRpb25JbmRleCA8IHN0YXRpY19jYXN0PGludD4obV9jaGlsZHJlbi5zaXplKCkpKTsKIAogICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpOwor
ICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNoaWxkID0gbV9jaGlsZHJlbltvcHRpb25JbmRleF0u
Z2V0KCk7CiAKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQoKSwgZG9jdW1l
bnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFyZ2V0RWxl
bWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwogICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNo
aWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVj
dGVkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmlu
ZGV4IGEyZDMyN2Y4Y2YxNzgwOGNhZjI1YTY4MDVhNDg4ZTg4ZjhkNGU1YmYuLjAzMDRlYzcyNTUw
ZjJhOWI0N2UwYTkxZTlmMTNkNGRmMDA1NmE1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC05MTIs
NyArOTEyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHcm91cCgpIGNvbnN0
CiAgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwIHx8IHJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uVGV4dEdyb3VwOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKIHsKICAgICBpZiAoIWlzUmFkaW9H
cm91cCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkyNSwxNCArOTI1LDE0IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlv
QnV0dG9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCitBWENvcmVPYmplY3Qq
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0oKQogewogICAgIGlmICgh
aXNUYWJMaXN0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRklYTUU6IElz
IHRoaXMgdmFsaWQ/IEFSSUEgdGFiIGl0ZW1zIHN1cHBvcnQgYXJpYS1zZWxlY3RlZDsgbm90IGFy
aWEtY2hlY2tlZC4KICAgICAvLyBGaW5kIHRoZSBjaGlsZCB0YWIgaXRlbSB0aGF0IGlzIHNlbGVj
dGVkIChpZS4gdGhlIGludFZhbHVlID09IDEpLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJzOworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHRhYnM7CiAgICAgdGFiQ2hpbGRyZW4odGFicyk7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4
IGE4NjdjMGNmMGFjOGNkNDA2OTRiODNjNzQ1NDk0Y2JiNmI4NmExNTMuLjM4MGQ5OTdhNTQxNDdl
YzI5ODYyZWNjMTRmZjMwNGJiZTlhZTFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKQEAgLTEwMSw4ICsxMDEs
OCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7Ci0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CisgICAgQVhD
b3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5QnV0dG9u
U3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHVuc2ln
bmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBlOGFh
NjliZWMxNzcwMjcwNjM4NzkzZTczNWNhOTI3YmQ3Yzg5OWM1Li5hMzRhNWYwOTYyNTFmZmYzNzc2
M2FkNDFmZTQ2MDczMDM4ZDQ1MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGV0YWNoZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hB
dEluZGV4KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3QgaW5kZXgpCitib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBWENvcmVPYmplY3Qq
IGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3Qg
aW5kZXgpCiB7CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsKICAg
ICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBub24t
bnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0LgpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFj
Y2Vzc2liaWxpdHlPCiAgICAgfQogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBWENvcmVPYmplY3Qq
IGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQogewogICAg
IGlmICghYXhPYmplY3QgfHwgIWNyaXRlcmlhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NzYsNyArMjc2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlP
YmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIHNpemVfdCBsZW5ndGgg
PSBjcml0ZXJpYS0+c2VhcmNoS2V5cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNo
TWF0Y2hBdEluZGV4KGF4T2JqZWN0LCBjcml0ZXJpYSwgaSkpIHsKLSAgICAgICAgICAgIGlmIChj
cml0ZXJpYS0+dmlzaWJsZU9ubHkgJiYgIWF4T2JqZWN0LT5pc09uc2NyZWVuKCkpCisgICAgICAg
ICAgICBpZiAoY3JpdGVyaWEtPnZpc2libGVPbmx5ICYmICFheE9iamVjdC0+aXNPblNjcmVlbigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0yODQsMTUgKzI4NCwxNSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3Qq
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwg
QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFYQ29yZU9iamVjdCogYXhP
YmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEpCiB7CiAgICAgaWYg
KCFheE9iamVjdCB8fCAhY3JpdGVyaWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICByZXR1cm4gYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQoJmNyaXRl
cmlhLT5zZWFyY2hUZXh0KTsKKyAgICByZXR1cm4gYXhPYmplY3QtPmNvbnRhaW5zVGV4dCgmY3Jp
dGVyaWEtPnNlYXJjaFRleHQpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vz
c2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nKiB0ZXh0KSBjb25zdAorYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojpjb250YWluc1RleHQoU3RyaW5nKiB0ZXh0KSBjb25zdAogewogICAg
IC8vIElmIHRleHQgaXMgbnVsbCBvciBlbXB0eSB3ZSByZXR1cm4gdHJ1ZS4KICAgICByZXR1cm4g
IXRleHQKQEAgLTUyMiw3ICs1MjIsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpi
bG9ja3F1b3RlTGV2ZWwoKSBjb25zdAogICAgIHJldHVybiBsZXZlbDsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkg
Y29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICFv
YmplY3QuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwpAQCAtNjI1LDcgKzYyNSw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGUpIGNvbnN0CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5k
QWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKK3N0YXRp
YyB2b2lkIGFwcGVuZEFjY2Vzc2liaWxpdHlPYmplY3QoQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykK
IHsKICAgICAvLyBGaW5kIHRoZSBuZXh0IGRlc2NlbmRhbnQgb2YgdGhpcyBhdHRhY2htZW50IG9i
amVjdCBzbyBzZWFyY2ggY2FuIGNvbnRpbnVlIHRocm91Z2ggZnJhbWVzLgogICAgIGlmIChvYmpl
Y3QtPmlzQXR0YWNobWVudCgpKSB7CkBAIC02NDQsNyArNjQ0LDcgQEAgc3RhdGljIHZvaWQgYXBw
ZW5kQWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vz
c2liaWxpdHkKICAgICAgICAgcmVzdWx0cy5hcHBlbmQob2JqZWN0KTsKIH0KICAgICAKLXZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGQsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNlcnRDaGls
ZChBWENvcmVPYmplY3QqIGNoaWxkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWNoaWxk
KQogICAgICAgICByZXR1cm47CkBAIC02ODQsMTIgKzY4NCwxMiBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNpZ25l
ZCBpbmRleAogICAgIGNoaWxkLT5jbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCk7CiB9CiAg
ICAgCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNoaWxkKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBWENvcmVPYmpl
Y3QqIGNoaWxkKQogewogICAgIGluc2VydENoaWxkKGNoaWxkLCBtX2NoaWxkcmVuLnNpemUoKSk7
CiB9CiAgICAgCi1zdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwgQWNjZXNzaWJpbGl0eU9iamVjdCogc3Rh
cnRPYmplY3QsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgcmVzdWx0cykKK3N0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBWENvcmVPYmpl
Y3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFYQ29yZU9iamVjdCogc3RhcnRPYmplY3QsIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykK
IHsKICAgICAvLyBBIHRhYmxlJ3MgY2hpbGRyZW4gaW5jbHVkZXMgZWxlbWVudHMgd2hvc2Ugb3du
IGNoaWxkcmVuIGFyZSBhbHNvIHRoZSB0YWJsZSdzIGNoaWxkcmVuIChkdWUgdG8gdGhlIHdheSB0
aGUgTWFjIGV4cG9zZXMgdGFibGVzKS4KICAgICAvLyBUaGUgcm93cyBmcm9tIHRoZSB0YWJsZSBz
aG91bGQgYmUgcXVlcmllZCwgc2luY2UgdGhvc2UgYXJlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0
aGUgdGFibGUsIGFuZCB0aGV5IGNvbnRhaW4gY29udGVudC4KQEAgLTcwMiw3ICs3MDIsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0LCBib29sIGlzRm9yd2FyZCwgQQogCiAgICAgLy8gSWYgdGhlIHN0YXJ0T2JqZWN0IGlzIGln
bm9yZWQsIHdlIHNob3VsZCB1c2UgYW4gYWNjZXNzaWJsZSBzaWJsaW5nIGFzIGEgc3RhcnQgZWxl
bWVudCBpbnN0ZWFkLgogICAgIGlmIChzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdC0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpICYmIHN0YXJ0T2JqZWN0LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChv
YmplY3QpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHN0
YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRP
YmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2JqZWN0KCk7CiAgICAgICAgIC8vIEdvIHVwIHRo
ZSBwYXJlbnQgY2hhaW4gdG8gZmluZCB0aGUgaGlnaGVzdCBhbmNlc3RvciB0aGF0J3MgYWxzbyBi
ZWluZyBpZ25vcmVkLgogICAgICAgICB3aGlsZSAocGFyZW50T2JqZWN0ICYmIHBhcmVudE9iamVj
dC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50T2Jq
ZWN0ID09IG9iamVjdCkKQEAgLTczNSw3ICs3MzUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGls
ZHJlblRvQXJyYXkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBib29sIGlzRm9yd2FyZCwg
QQogfQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG51bWJlciBvZiByZXN1bHRzIGlzIG5vdyA+
PSB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgZGVzaXJlZC4KLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6b2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHRzKQorYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEsIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKIHsKICAgICBpZiAoaXNBY2Nlc3Np
YmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2gob2JqZWN0LCBjcml0ZXJpYSkgJiYgaXNBY2Nlc3NpYmls
aXR5VGV4dFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpKSB7CiAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG9iamVjdCk7CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3Jp
dGUKICAgICAvLyBJdCBkb2VzIHRoaXMgYnkgc3RlcHBpbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBh
bmQgYXQgZWFjaCBsZXZlbCBkb2luZyBhIERGUy4KICAgICAKICAgICAvLyBJZiB0aGVyZSdzIG5v
IHN0YXJ0IG9iamVjdCwgaXQgbWVhbnMgd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZy4KLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdGFydE9iamVjdCA9IGNyaXRlcmlhLT5zdGFydE9iamVj
dDsKKyAgICBBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0ID0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0
OwogICAgIGlmICghc3RhcnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gdGhpczsKICAg
ICAKQEAgLTc3MSwxNCArNzcxLDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZE1h
dGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlCiAgICAgLy8g
VGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUgb3V0ZXIgbG9vcCB3aWxsIGV4YW1pbmUgdGhlIGNo
aWxkcmVuIG9mIHRoZSBzdGFydCBvYmplY3QgZm9yIG1hdGNoZXMuIEhvd2V2ZXIsIHdoZW4KICAg
ICAvLyBpdGVyYXRpbmcgYmFja3dhcmRzLCB0aGUgc3RhcnQgb2JqZWN0IGNoaWxkcmVuIHNob3Vs
ZCBub3QgYmUgY29uc2lkZXJlZCwgc28gdGhlIGxvb3AgaXMgc2tpcHBlZCBhaGVhZC4gV2UgbWFr
ZSBhbgogICAgIC8vIGV4Y2VwdGlvbiB3aGVuIG5vIHN0YXJ0IG9iamVjdCB3YXMgc3BlY2lmaWVk
IGJlY2F1c2Ugd2Ugd2FudCB0byBzZWFyY2ggZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIHNlYXJj
aCBkaXJlY3Rpb24uCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNPYmplY3QgPSBu
dWxscHRyOworICAgIEFYQ29yZU9iamVjdCogcHJldmlvdXNPYmplY3QgPSBudWxscHRyOwogICAg
IGlmICghaXNGb3J3YXJkICYmIHN0YXJ0T2JqZWN0ICE9IHRoaXMpIHsKICAgICAgICAgcHJldmlv
dXNPYmplY3QgPSBzdGFydE9iamVjdDsKICAgICAgICAgc3RhcnRPYmplY3QgPSBzdGFydE9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZSBvdXRl
ciBsb29wIHN0ZXBzIHVwIHRoZSBwYXJlbnQgY2hhaW4gZWFjaCB0aW1lICh1bmlnbm9yZWQgaXMg
aW1wb3J0YW50IGhlcmUgYmVjYXVzZSBvdGhlcndpc2UgZWxlbWVudHMgd291bGQgYmUgc2VhcmNo
ZWQgdHdpY2UpCi0gICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdG9wU2VhcmNoRWxlbWVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdCAh
PSBzdG9wU2VhcmNoRWxlbWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCkpIHsKKyAgICBmb3IgKGF1dG8qIHN0b3BTZWFyY2hFbGVtZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7IHN0YXJ0T2JqZWN0ICYmIHN0YXJ0T2JqZWN0ICE9IHN0b3BT
ZWFyY2hFbGVtZW50OyBzdGFydE9iamVjdCA9IHN0YXJ0T2JqZWN0LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKSkgewogCiAgICAgICAgIC8vIE9ubHkgYXBwZW5kIHRoZSBjaGlsZHJlbiBhZnRlci9i
ZWZvcmUgdGhlIHByZXZpb3VzIGVsZW1lbnQsIHNvIHRoYXQgdGhlIHNlYXJjaCBkb2VzIG5vdCBj
aGVjayBlbGVtZW50cyB0aGF0IGFyZSAKICAgICAgICAgLy8gYWxyZWFkeSBiZWhpbmQvYWhlYWQg
b2Ygc3RhcnQgZWxlbWVudC4KQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBj
cml0ZQogCiAgICAgICAgIC8vIFRoaXMgbm93IGRvZXMgYSBERlMgYXQgdGhlIGN1cnJlbnQgbGV2
ZWwgb2YgdGhlIHBhcmVudC4KICAgICAgICAgd2hpbGUgKCFzZWFyY2hTdGFjay5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlYXJjaE9iamVjdCA9IHNlYXJj
aFN0YWNrLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogc2VhcmNoT2Jq
ZWN0ID0gc2VhcmNoU3RhY2subGFzdCgpLmdldCgpOwogICAgICAgICAgICAgc2VhcmNoU3RhY2su
cmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAob2JqZWN0TWF0Y2hl
c1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KHNlYXJjaE9iamVjdCwgY3JpdGVyaWEsIHJl
c3VsdHMpKQpAQCAtMjAzMSwxMyArMjAzMSwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5nRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIHsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJPYmplY3QgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
T2JqZWN0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGF4T2JqZWN0ID0gcmVuZGVyT2JqZWN0LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyT2JqZWN0KTsKLSAgICAKKwogICAgIHJldHVybiBjb25z
dF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCpheE9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpIZWFkaW5nOwogICAgIH0pKTsKQEAgLTIzNjAsMTcgKzIzNjAsMTcgQEAgQWNjZXNz
aWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiB9ICAg
IAogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0KSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqIGF4T2JqZWN0
KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5oYXNDaGlsZHJlbigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtheE9iamVjdF0gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gJm9iamVjdCA9PSBh
eE9iamVjdDsKICAgICB9KSAhPSBudWxscHRyOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KGNv
bnN0IEFYQ29yZU9iamVjdCogYXhPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFheE9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc3OCw3ICsyNzc4LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYpIGNvbnN0
CiAgICAgcmV0dXJuIGV4Y2x1ZGVJZk9mZiA/IGxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2
ZVJlZ2lvblN0YXR1c1ZhbHVlKSA6ICFsaXZlUmVnaW9uU3RhdHVzVmFsdWUuaXNFbXB0eSgpOwog
fQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
bGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogeyAKICAgICAvLyBTZW5kIHRoZSBo
aXQgdGVzdCBiYWNrIGludG8gdGhlIHN1Yi1mcmFtZSBpZiBuZWNlc3NhcnkuCiAgICAgaWYgKGlz
QXR0YWNobWVudCgpKSB7CkBAIC0yODA1LDcgKzI4MDUsNyBAQCBBWE9iamVjdENhY2hlKiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1l
bnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzZWRVSUVs
ZW1lbnQoKSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2Vk
VUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAg
IHJldHVybiBwYWdlID8gQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UocGFn
ZSkgOiBudWxscHRyOwpAQCAtMjk2Myw3ICsyOTYzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc0V4cGFuZGVkKCkgY29uc3QKICAgICAgICAgfSkpCiAgICAgICAgICAgICByZXR1cm4g
cGFyZW50LT5pc0V4cGFuZGVkKCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOyAg
CiB9CiAKQEAgLTMxMDMsNyArMzEwMyw3IEBAIHN0YXRpYyBpbnQgY29tcHV0ZUJlc3RTY3JvbGxP
ZmZzZXQoaW50IGN1cnJlbnRTY3JvbGxPZmZzZXQsIGludCBzdWJmb2N1c01pbiwgaW50CiAgICAg
cmV0dXJuIChvYmplY3RNaW4gKyBvYmplY3RNYXggLSB2aWV3cG9ydE1pbiAtIHZpZXdwb3J0TWF4
KSAvIDI7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbigpIGNvbnN0
Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25TY3JlZW4oKSBjb25zdAogeyAgIAogICAg
IGJvb2wgaXNPbnNjcmVlbiA9IHRydWU7CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAg
IGF0dHJpYnV0ZUNhY2hlID0gY2FjaGUtPmNvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUoKTsK
ICAgICAKICAgICBpZiAoYXR0cmlidXRlQ2FjaGUpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBpZ25vcmVkID0gYXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQoYXhPYmpl
Y3RJRCgpKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkID0g
YXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQob2JqZWN0SUQoKSk7CiAgICAgICAgIHN3aXRjaCAo
aWdub3JlZCkgewogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Okln
bm9yZU9iamVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzQ5NSw3ICszNDk1LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIAogICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJp
YnV0ZSBjYWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBl
eGlzdHMuCiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdu
b3JlZChheE9iamVjdElEKCksIHJlc3VsdCA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmpl
Y3QpOworICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChvYmplY3RJRCgpLCByZXN1
bHQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0zNjIwLDcgKzM2MjAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
Q29udGFpbmVkQnlQYXNzd29yZEZpZWxkKCkgY29uc3QKICAgICByZXR1cm4gaXM8SFRNTElucHV0
RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQp
LmlzUGFzc3dvcmRGaWVsZCgpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQogewogICAgIGZvciAoY29uc3QgYXV0byYg
Y2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNMaXN0SXRlbSgpICYm
IChjaGlsZC0+aXNTZWxlY3RlZCgpIHx8IGNoaWxkLT5pc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3Vz
ZWRDb250YWluZXIoKSkpCkBAIC0zNzUyLDcgKzM3NTIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0bwogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShvd25lcnMsIGFyaWFf
b3duc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZy
b21QYXJlbnREYXRhRm9yQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQpCit2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhD
b3JlT2JqZWN0KiBjaGlsZCkKIHsKICAgICBpZiAoIWNoaWxkKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CmluZGV4IDNmZjBjMzYwMWI0MTJhMjllODI4ZWJhNjM4MzZjZmQxNjI0OGRjODUuLjM4M2RkZWM4
ZjM4NzAyZGZlNDg5YTA1MWFkNWQzZTg1YjcwMTU3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0zMSwxMyArMzEsOSBA
QAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgotI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCi0jaW5jbHVkZSAiVmlzaWJs
ZVBvc2l0aW9uLmgiCi0jaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTMsOCArNDksNiBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLXR5cGVk
ZWYgc3RydWN0IF9OU1JhbmdlIE5TUmFuZ2U7Ci0KIE9CSkNfQ0xBU1MgTlNBcnJheTsKIE9CSkNf
Q0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOwogT0JKQ19DTEFTUyBOU0RhdGE7CkBAIC02OCwyMCAr
NjIsOSBAQCBPQkpDX0NMQVNTIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QWNjZXNzaWJpbGl0eU9iamVjdDsKLWNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OwotY2xh
c3MgQVhPYmplY3RDYWNoZTsKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIEZy
YW1lVmlldzsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIE5vZGU7Ci1j
bGFzcyBQYWdlOwotY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7Ci1j
bGFzcyBTY3JvbGxWaWV3OwotY2xhc3MgV2lkZ2V0Owotc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2li
bGVPcHRpb25zOwogCiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHsKICAgICBB
bHRlcm5hdGl2ZSwKQEAgLTEyMSw0OTYgKzEwNCwyNzIgQEAgc3RydWN0IEFjY2Vzc2liaWxpdHlU
ZXh0IHsKICAgICB9CiB9OwogCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRN
b2RlIHsKLSAgICBlbnVtIENoaWxkcmVuSW5jbHVzaW9uIHsKLSAgICAgICAgVGV4dFVuZGVyRWxl
bWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLAotICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9k
ZUluY2x1ZGVBbGxDaGlsZHJlbiwKLSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRl
TmFtZUZyb21Db250ZW50c0NoaWxkcmVuLCAvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIEFSSUEgY29u
Y2VwdDogbmFtZUZyb20KLSAgICB9OwotICAgIAotICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxk
cmVuSW5jbHVzaW9uOwotICAgIGJvb2wgaW5jbHVkZUZvY3VzYWJsZUNvbnRlbnQ7Ci0gICAgTm9k
ZSogaWdub3JlZENoaWxkTm9kZTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9IFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcEln
bm9yZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2UsIE5vZGUqIGlnbm9yZWQgPSBudWxscHRyKQot
ICAgICAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMpCi0gICAgICAgICwgaW5jbHVkZUZvY3VzYWJs
ZUNvbnRlbnQoaSkKLSAgICAgICAgLCBpZ25vcmVkQ2hpbGROb2RlKGlnbm9yZWQpCi0gICAgeyB9
Ci19OwotCi0vLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gc3RvcmUgdGhlIGlzSWdub3JlZCBkYXRhIHRo
YXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28gdGhhdCBpbiBhZGRDaGlsZHJlbigpCi0vLyB3
ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNoYWluIGZvciBlYWNoIGVsZW1lbnQgd2hpbGUg
dHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1bCBpbmZvcm1hdGlvbiBhbHJlYWR5Lgotc3Ry
dWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSB7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50IHsgbnVsbHB0ciB9OwotICAgIGJvb2wgaXNBWEhpZGRlbiB7IGZh
bHNlIH07Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIHsgZmFsc2Ug
fTsKLSAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50IHsgZmFsc2UgfTsKLSAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gbnVsbHB0cikKLSAgICAgICAgOiBwYXJlbnQocGFyZW50KQotICAgIHsg
fQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFyZW50OyB9Ci19OwotICAg
IAotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewotICAgIFZlcnRpY2FsLAot
ICAgIEhvcml6b250YWwsCi0gICAgVW5kZWZpbmVkLAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiB7Ci0gICAgSW5jbHVkZU9iamVjdCwKLSAgICBJZ25v
cmVPYmplY3QsCi0gICAgRGVmYXVsdEJlaGF2aW9yLAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlIHsKLSAgICBPZmYgPSAwLAotICAgIE9uLAotICAgIE1peGVk
LAotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gewotICAg
IE5vbmUsCi0gICAgQXNjZW5kaW5nLAotICAgIERlc2NlbmRpbmcsCi0gICAgT3RoZXIsCi0gICAg
SW52YWxpZCwKLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiB7
Ci0gICAgTmV4dCA9IDEsCi0gICAgUHJldmlvdXMsCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXkgewotICAgIEFueVR5cGUgPSAxLAotICAgIEFydGljbGUsCi0gICAgQmxv
Y2txdW90ZVNhbWVMZXZlbCwKLSAgICBCbG9ja3F1b3RlLAotICAgIEJvbGRGb250LAotICAgIEJ1
dHRvbiwKLSAgICBDaGVja0JveCwKLSAgICBDb250cm9sLAotICAgIERpZmZlcmVudFR5cGUsCi0g
ICAgRm9udENoYW5nZSwKLSAgICBGb250Q29sb3JDaGFuZ2UsCi0gICAgRnJhbWUsCi0gICAgR3Jh
cGhpYywKLSAgICBIZWFkaW5nTGV2ZWwxLAotICAgIEhlYWRpbmdMZXZlbDIsCi0gICAgSGVhZGlu
Z0xldmVsMywKLSAgICBIZWFkaW5nTGV2ZWw0LAotICAgIEhlYWRpbmdMZXZlbDUsCi0gICAgSGVh
ZGluZ0xldmVsNiwKLSAgICBIZWFkaW5nU2FtZUxldmVsLAotICAgIEhlYWRpbmcsCi0gICAgSGln
aGxpZ2h0ZWQsCi0gICAgSXRhbGljRm9udCwKLSAgICBLZXlib2FyZEZvY3VzYWJsZSwKLSAgICBM
YW5kbWFyaywKLSAgICBMaW5rLAotICAgIExpc3QsCi0gICAgTGl2ZVJlZ2lvbiwKLSAgICBNaXNz
cGVsbGVkV29yZCwKLSAgICBPdXRsaW5lLAotICAgIFBsYWluVGV4dCwKLSAgICBSYWRpb0dyb3Vw
LAotICAgIFNhbWVUeXBlLAotICAgIFN0YXRpY1RleHQsCi0gICAgU3R5bGVDaGFuZ2UsCi0gICAg
VGFibGVTYW1lTGV2ZWwsCi0gICAgVGFibGUsCi0gICAgVGV4dEZpZWxkLAotICAgIFVuZGVybGlu
ZSwKLSAgICBVbnZpc2l0ZWRMaW5rLAotICAgIFZpc2l0ZWRMaW5rLAotfTsKLQotZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzIHsKLSAgICBGaXJzdCwKLSAg
ICBMYXN0LAotfTsKLQotc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7Ci0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3Q7Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247Ci0gICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk+IHNlYXJjaEtleXM7Ci0gICAgU3RyaW5nIHNlYXJjaFRleHQ7Ci0gICAgdW5zaWduZWQg
cmVzdWx0c0xpbWl0OwotICAgIGJvb2wgdmlzaWJsZU9ubHk7Ci0gICAgYm9vbCBpbW1lZGlhdGVE
ZXNjZW5kYW50c09ubHk7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0
aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRleHQsIHVuc2lnbmVkIHJlc3VsdHNM
aW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCi0g
ICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCi0gICAgICAgICwgc2VhcmNoRGlyZWN0
aW9uKHNlYXJjaERpcmVjdGlvbikKLSAgICAgICAgLCBzZWFyY2hUZXh0KHNlYXJjaFRleHQpCi0g
ICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkKLSAgICAgICAgLCB2aXNpYmxlT25s
eSh2aXNpYmxlT25seSkKLSAgICAgICAgLCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkoaW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5KQotICAgIHsgfQotfTsKLSAgICAKLWVudW0gY2xhc3MgQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQg
fTsKLQotc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKLQotICAgIFZpc2libGVQb3NpdGlv
biBzdGFydDsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kOwotCi0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoKSB7fQotCi0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBzLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCi0gICAgICAgIDogc3RhcnQocykKLSAg
ICAgICAgLCBlbmQoZSkKLSAgICB7IH0KLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKLSAgICAgICAgOiBzdGFydChzZWxlY3Rpb24u
c3RhcnQoKSkKLSAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQotICAgIHsgfQotCi0gICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxs
KCk7IH0KLX07Ci0KLXN0cnVjdCBQbGFpblRleHRSYW5nZSB7Ci0gICAgICAgIAotICAgIHVuc2ln
bmVkIHN0YXJ0IHsgMCB9OwotICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKLSAgICAKLSAgICBQ
bGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKLSAgICAKLSAgICBQbGFpblRleHRSYW5nZSh1bnNp
Z25lZCBzLCB1bnNpZ25lZCBsKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAgICAgICwgbGVuZ3Ro
KGwpCi0gICAgeyB9Ci0gICAgCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUGxhaW5UZXh0UmFu
Z2UoTlNSYW5nZSk7Ci0jZW5kaWYKLSAgICAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0U3RhcnRGcm9tIHsKLSAgICBCZWdpbiwgLy8gU2VhcmNoIGZyb20gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZWxlbWVudC4KLSAgICBTZWxlY3Rpb24sIC8vIFNlYXJjaCBmcm9tIHRoZSBw
b3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCi0gICAgRW5kIC8vIFNlYXJjaCBmcm9t
IHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0RGlyZWN0aW9uIHsKLSAgICBGb3J3YXJkLCAvLyBPY2N1cnJlbmNlIGFmdGVyIHRo
ZSBzdGFydGluZyByYW5nZS4KLSAgICBCYWNrd2FyZCwgLy8gT2NjdXJyZW5jZSBiZWZvcmUgdGhl
IHN0YXJ0aW5nIHJhbmdlLgotICAgIENsb3Nlc3QsIC8vIENsb3Nlc3Qgb2NjdXJyZW5jZSB0byB0
aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIgb3IgYmVmb3JlLgotICAgIEFsbCAvLyBB
bGwgb2NjdXJyZW5jZXMKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRl
cmlhIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hTdHJpbmdzOyAvLyBUZXh0IHN0cmluZ3Mg
dG8gc2VhcmNoIGZvci4KLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSBzdGFy
dDsKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247Ci0KLSAg
ICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhKCkKLSAgICAgICAgOiBzdGFydChBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2VsZWN0aW9uKQotICAgICAgICAsIGRpcmVj
dGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6Rm9yd2FyZCkKLSAgICB7IH0K
LX07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb25UeXBlIHsKLSAgICBT
ZWxlY3QsCi0gICAgUmVwbGFjZSwKLSAgICBDYXBpdGFsaXplLAotICAgIExvd2VyY2FzZSwKLSAg
ICBVcHBlcmNhc2UKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiB7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZXM7IC8vIHRleHQgb24gd2hpY2ggcGVy
Zm9ybSB0aGUgb3BlcmF0aW9uLgotICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB0
eXBlOwotICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7IC8vIEZvciB0eXBlID0gcmVwbGFjZS4K
LQotICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uKCkKLSAgICAgICAgOiB0eXBlKEFjY2Vz
c2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0KQotICAgIHsgfQotfTsKLQotZW51bSBj
bGFzcyBBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3JpcHQsIFN1cGVy
c2NyaXB0IH07Ci1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RU
eXBlIHsgUHJlU3Vic2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlwdCwgUG9zdFN1
cGVyc2NyaXB0IH07Ci0KLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSB7IEZh
bHNlLCBUcnVlLCBQYWdlLCBTdGVwLCBMb2NhdGlvbiwgRGF0ZSwgVGltZSB9OwotZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlIHsgU2NyZWVuLCBQYWdlIH07Ci0KIGJvb2wg
bm9kZUhhc1ByZXNlbnRhdGlvblJvbGUoTm9kZSopOwotICAgIAotY2xhc3MgQWNjZXNzaWJpbGl0
eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3Q+LCBwdWJsaWMg
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgOiBwdWJsaWMgQVhDb3JlT2JqZWN0IHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KCkgPSBkZWZhdWx0OwotICAgIAorCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNz
aWJpbGl0eU9iamVjdCgpOwogCiAgICAgLy8gQWZ0ZXIgY29uc3RydWN0aW5nIGFuIEFjY2Vzc2li
aWxpdHlPYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQogICAgIC8vIHVuaXF1ZSBJRCwgdGhlbiBh
ZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBpbml0KCkgbXVzdAogICAgIC8vIGJl
IGNhbGxlZCBsYXN0LgotICAgIHZvaWQgc2V0QVhPYmplY3RJRChBWElEIGF4T2JqZWN0SUQpIHsg
bV9pZCA9IGF4T2JqZWN0SUQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIHsgfQorICAgIHZv
aWQgc2V0T2JqZWN0SUQoQVhJRCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KKyAgICB2b2lk
IGluaXQoKSBvdmVycmlkZSB7IH0KIAogICAgIC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
Q29yZSBvYmplY3QgdGhhdCB0aGlzIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICAvLyB3cmFwcyBp
cyBkZWxldGVkLCBpdCBtdXN0IGJlIGRldGFjaGVkLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
QWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG51bGxw
dHIpOwotICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Q7CisgICAgdm9pZCBkZXRh
Y2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKiA9IG51bGxwdHIp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3I7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNW
R1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlTVkdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQo
U3RyaW5nICopIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQo
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZp
ZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQ2hlY2tib3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRp
b0J1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0J1dHRvbjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzSW1hZ2VNYXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KKyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDb250YWluZWRC
eVBhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXNzd29yZEZpZWxkT3JDb250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsg
fQorICAgIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsgfQorICAgIGJvb2wgaXNSYWRpb0J1
dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpSYWRpb0J1dHRvbjsgfQorICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94
OyB9CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNNZW51KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWVudUJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTGFiZWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzR3JvdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0lucHV0SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc1NsaWRlclRodW1iKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
VGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNEYXRh
VGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJs
ZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxl
Q29sdW1uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFi
bGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRmll
bGRzZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNHcm91
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FSSUFUcmVl
R3JpZFJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0lt
YWdlTWFwTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWVudUxpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRp
dmVTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTW9ja09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01l
bnVMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWVu
dUxpc3RQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01lbnVMaXN0T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CisgICAgYm9vbCBpc05hdGl2ZVNwaW5C
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTcGlu
QnV0dG9uUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzTWVkaWFPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0K
LSAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKLSAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdDsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQotICAgIGJvb2wgaXNS
YWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvR3JvdXA7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KKyAgICBib29sIGlz
TWVkaWFPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNTd2l0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVC
dXR0b247IH0KKyAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc05vbk5h
dGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RhYkxpc3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFiTGlzdDsgfQorICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQorICAgIGJvb2wgaXNSYWRp
b0dyb3VwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0KKyAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7
IH0KICAgICBib29sIGlzVHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9Ci0gICAgYm9vbCBpc1RyZWVHcmlkKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9
CisgICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVt
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtOyB9CiAgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KLSAg
ICBib29sIGlzQnV0dG9uKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9Ci0gICAg
Ym9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hlY2tib3goKSB8fCBp
c1JhZGlvQnV0dG9uKCk7IH0KLSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAgYm9v
bCBpc0NhbnZhcygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDYW52YXM7IH0KLSAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KLSAgICBib29s
IGlzQmxvY2txdW90ZSgpIGNvbnN0OwotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0OwotICAg
IGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q29sb3JXZWxsOyB9Ci0gICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0
OwotICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0OwotICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQot
ICAgIGJvb2wgaXNUb29sYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KLSAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNv
bnN0OwotICAgIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0tleWJv
YXJkRm9jdXNhYmxlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQotICAgIGJvb2wg
aXNPdXRwdXQoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSG92ZXJlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgeyB9CisgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQorICAgIGJvb2wg
aXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0NoZWNrYm94KCkg
fHwgaXNSYWRpb0J1dHRvbigpOyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJl
YTsgfQorICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOyB9CisgICAgYm9vbCBpc1BvcFVwQnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlBvcFVwQnV0dG9uOyB9CisgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
Q29sb3JXZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQorICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzU3BsaXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KKyAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFy
OyB9CisgICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2Fy
ZEZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1h
cnk7IH0KKyAgICBib29sIGlzT3V0cHV0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGlz
Q2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWxl
Y3RlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZvY3Vz
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIb3ZlcmVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5kZXRlcm1p
bmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xvYWRl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc011bHRpU2Vs
ZWN0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09m
ZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1By
ZXNzZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNVbnZp
c2l0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUmVxdWly
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNS
ZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0xpbmtlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wp
IG92ZXJyaWRlIHsgfQogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0Jiwg
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGNvbnZl
cnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBt
YW55IGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGlt
ZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzUGxhaW5UZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0Kikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3RhdGljVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdDsKLQotICAgIGJvb2wgc3VwcG9ydHNEYXRl
dGltZUF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0
cmlidXRlVmFsdWUoKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5B
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBib29sIGlzU2VsZWN0ZWRP
cHRpb25BY3RpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9v
bCBoYXNCb2xkRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBoYXNJdGFsaWNGb250KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFJhbmdlPiBn
ZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BsYWluVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTYW1lRm9u
dChSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGlj
VGV4dDsgfQorICAgIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldE51bWVy
aWNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5T
ZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRl
ZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdDsKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRCeURlZmF1bHQoKSBjb25zdDsKLSAgICAKLSAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7
Ci0gICAgCi0gICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgaW50
IHRhYmxlTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9Ci0g
ICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsg
fQotICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAu
MGY7IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1
cm4gMC4wZjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRp
b0J1dHRvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCk7Ci0gICAgdmlydHVhbCBpbnQgbGF5b3V0
Q291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
dW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGhlYWRp
bmdMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBpbnQgdGFibGVMZXZl
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5QnV0dG9u
U3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0K
KyAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4w
ZjsgfQorICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwLjBmOyB9CisgICAgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwLjBmOyB9CisgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRU
YWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
c2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOworICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzQVJJQUNvbnRyb2woQWNjZXNzaWJpbGl0eVJvbGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlSb2xlKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigpIGNvbnN0Owot
ICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAg
ICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJp
YUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBo
YXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIHBvcHVwVmFsdWUo
KSBjb25zdDsKLSAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0
c0hhc1BvcHVwKCkgY29uc3Q7Ci0gICAgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3Q7Ci0g
ICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdDsKLSAgICBTdHJpbmcgaW52YWxpZFN0YXR1
cygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Q7Ci0gICAgYm9vbCBz
dXBwb3J0c0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdDsKLSAgICBj
b25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Q7Ci0gICAgY29uc3Qg
QXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBjbGFzc0xpc3QoVmVj
dG9yPFN0cmluZz4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24o
KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNv
bnN0OwotICAgIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRz
Q3VycmVudCgpIGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNv
bnN0OwotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250
YWluZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUxh
YmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFPd25z
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaGFzRGF0YWxpc3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHByZXNzZWRJc1By
ZXNlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFyaWFJc011bHRpbGluZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyBpbnZhbGlkU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBv
cnRzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzQ2hlY2tlZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJl
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c1Jh
bmdlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlm
aWVyQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGlu
a1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0
cmluZz4mKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25z
dCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIFRo
aXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiB0
aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KLSAgICBib29sIGlnbm9yZWRGcm9tTW9k
YWxQcmVzZW5jZSgpIGNvbnN0OwotICAgIGJvb2wgaXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNv
bnN0OwotICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25zdDsKLSAgICAKLSAgICBib29sIHN1cHBv
cnRzU2V0U2l6ZSgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0Owot
ICAgIGludCBzZXRTaXplKCkgY29uc3Q7Ci0gICAgaW50IHBvc0luU2V0KCkgY29uc3Q7Ci0gICAg
CisgICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIHN1cHBvcnRzU2V0U2l6
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGludCBzZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHBvc0lu
U2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQVJJQUdyYWJiZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSB7IH0KLSAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0cygpIHsgcmV0dXJuIHsg
fTsgfQotICAgIAorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBR3JhYmJlZCgpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBv
dmVycmlkZSB7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMo
KSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKwogICAgIC8vIENhbGxlZCBvbiB0aGUgcm9vdCBB
WCBvYmplY3QgdG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0
ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
LQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGZvY3VzZWRVSUVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RD
aGlsZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG5leHRTaWJsaW5n
KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdDsKLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3JlZChpbnQgbGltaXQp
IGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSogcGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IH0KLSAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBWENvcmVPYmplY3QqIGZvY3Vz
ZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGZpcnN0Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBu
ZXh0U2libGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZ1VuaWdub3Jl
ZChpbnQgbGltaXQpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENv
cmVPYmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJz
dEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2RlKik7Ci0gICAgdm9pZCBmaW5kTWF0
Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBh
cmVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBmaW5kTWF0Y2hpbmdPYmpl
Y3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZlJvbGUoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0OworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRleHQgc2Vs
ZWN0aW9uCiBwcml2YXRlOgpAQCAtNjE4LDM5NyArMzc3LDM5NSBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsKICAgICBSZWZQdHI8UmFuZ2U+IGZp
bmRUZXh0UmFuZ2UoVmVjdG9yPFN0cmluZz4gY29uc3QmIHNlYXJjaFN0cmluZ3MsIFJlZlB0cjxS
YW5nZT4gY29uc3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbikgY29u
c3Q7CiBwdWJsaWM6Ci0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFj
Y2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdDsKLSAgICBWZWN0b3I8
U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBj
b25zdCYpOwotCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZhYmxlT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRV
SUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IHsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRy
b2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9s
ZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJv
bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhh
c1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2li
aWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlv
biBjb25zdCYpIG92ZXJyaWRlOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJs
ZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGxp
bmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGUgeyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgQWNjZXNzaWJp
bGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6VW5rbm93bjsgfQorICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBh
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0Ci0g
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4
dD4mKSBjb25zdCB7IH07CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNz
aWJpbGl0eVRleHQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9OwogICAgIC8vIEEgc2luZ2xlIG1ldGhv
ZCBmb3IgZ2V0dGluZyBhIGNvbXB1dGVkIGxhYmVsIGZvciBhbiBBWE9iamVjdC4gSXQgY29uZGVu
c2VzIHRoZSBudWFuY2VzIG9mIGFjY2Vzc2liaWxpdHlUZXh0LiBVc2VkIGJ5IEluc3BlY3Rvci4K
LSAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgpOwotICAgIAorICAgIFN0cmluZyBjb21wdXRlZExh
YmVsKCkgb3ZlcnJpZGU7CisKICAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFt
ZSBvbiBhbiBBY2Nlc3NpYmxlT2JqZWN0LgotICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxl
TmFtZShjb25zdCBBdG9tU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0
ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0OworICAgIHZvaWQgc2V0QWNjZXNzaWJsZU5h
bWUoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaGFzQXR0cmlidXRl
c1JlcXVpcmVkRm9ySW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBY2Nlc3Np
YmlsaXR5IFRleHQgLSAoVG8gYmUgZGVwcmVjYXRlZCkuCi0gICAgdmlydHVhbCBTdHJpbmcgYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmly
dHVhbCBTdHJpbmcgaGVscFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0
cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0
cmluZygpOyB9CisgICAgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KIAogICAgIC8vIE1ldGhvZHMgZm9yIGRldGVybWluaW5nIGFjY2Vzc2liaWxp
dHkgdGV4dC4KLSAgICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBhcmlh
Um9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRl
ckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3Jp
YmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIGNvbnN0IFN0
cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURl
cml2ZXNGcm9tQ29udGVudCgpIGNvbnN0OwotICAgIAorICAgIGJvb2wgaXNBUklBU3RhdGljVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7IH0KKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFN0cmluZyB0ZXh0VW5kZXJFbGVt
ZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0
VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIFN0cmluZyB0ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAg
ICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBTdHJp
bmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFs
dWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21D
b250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBBYmJyZXZpYXRpb25zCi0gICAgdmly
dHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0
b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFN0cmluZyBl
eHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVt
ZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBP
bmx5IGlmIGlzQ29sb3JXZWxsKCkKLSAgICB2aXJ0dWFsIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIs
IGludCYgZywgaW50JiBiKSBjb25zdCB7IHIgPSAwOyBnID0gMDsgYiA9IDA7IH0KKyAgICB2b2lk
IGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3Qgb3ZlcnJpZGUgeyByID0g
MDsgZyA9IDA7IGIgPSAwOyB9CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvbGU7IH0KIAotICAgIHZpcnR1YWwgQVhPYmplY3RD
YWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0OwotICAgIEFYSUQgYXhPYmplY3RJRCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KLSAgICAKKyAgICBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faWQ7IH0KKwogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhbmNob3JF
bGVtZW50Rm9yTm9kZShOb2RlKik7CiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhl
YWRpbmdFbGVtZW50Rm9yTm9kZShOb2RlKik7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIGJvb2wgc3VwcG9ydHNQcmVz
c0FjdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdC
b3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBzbmFwcGVkSW50UmVjdChi
b3VuZGluZ0JveFJlY3QoKSk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3Qo
KSBjb25zdCA9IDA7Ci0gICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVu
dFJlY3QoKS5zaXplKCk7IH0KLSAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKTsKKyAg
ICBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIGJvb2wgc3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAg
IEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94
UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94
UmVjdCgpKTsgfQorICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSA9
IDA7CisgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZWxlbWVu
dFJlY3QoKS5zaXplKCk7IH0KKyAgICBJbnRQb2ludCBjbGlja1BvaW50KCkgb3ZlcnJpZGU7CiAg
ICAgc3RhdGljIEludFJlY3QgYm91bmRpbmdCb3hGb3JRdWFkcyhSZW5kZXJPYmplY3QqLCBjb25z
dCBWZWN0b3I8RmxvYXRRdWFkPiYpOwotICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIFBhdGgoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BhdGgoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRl
eHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQbGFp
blRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFBsYWluVGV4dFJh
bmdlKCk7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHNl
bGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBj
b25zdCB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgpLmxlbmd0aDsgfQotICAgIAotICAgIHZp
cnR1YWwgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIFVSTCgpOyB9Ci0gICAgdmlydHVhbCBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24o
KTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25z
dCB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUGFnZSogcGFnZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBGcmFtZVZpZXcqIGRv
Y3VtZW50RnJhbWVWaWV3KCkgY29uc3Q7Ci0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7Ci0gICAg
RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0OwotICAgIERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNv
bnN0OwotICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3RvcigpIGNvbnN0OwotICAgIFN0
cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQYXRoKCk7IH0KKyAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0
SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWlu
VGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxh
aW5UZXh0UmFuZ2UoKTsgfQorICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsgfQorICAgIHVuc2lnbmVk
IHNlbGVjdGlvbkVuZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdl
KCkubGVuZ3RoOyB9CisKKyAgICBVUkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJM
KCk7IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQorICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcm
IGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXaWRnZXQqIHdp
ZGdldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBXaWRnZXQqIHdp
ZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiB0b3BEb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3Rv
cigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNwZWMuCi0gICAgdmly
dHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNlZChib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSB7IH0KLSAgICBib29sIHJlcGxhY2VUZXh0
SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpOwotICAgIGJvb2wg
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShm
bG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
eyB9Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKTsKLSAgICBib29sIHBlcmZv
cm1EZWZhdWx0QWN0aW9uKCkgeyByZXR1cm4gcHJlc3MoKTsgfQotICAgIAotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGluY3JlbWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSB7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dENoYW5nZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0
eVJvbGUoKSB7IH0KLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpOwotICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZHJlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmls
aXR5T2JqZWN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqLCB1bnNpZ25lZCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29s
IGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsgfQorICAgIHVu
c2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQor
CisgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2Vs
ZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0
ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgcmVwbGFjZVRl
eHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGU7
CisgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgcHJlc3MoKSBvdmVy
cmlkZTsKKyAgICBib29sIHBlcmZvcm1EZWZhdWx0QWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4g
cHJlc3MoKTsgfQorCisgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHRleHRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlIHsgfQorICAgIGNvbnN0IEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklm
TmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faGF2ZUNoaWxkcmVuOyB9CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlU3VidHJlZSgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCBib29sIG5lZWRzVG9V
cGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldE5lZWRzVG9VcGRh
dGVTdWJ0cmVlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hGcm9tUGFyZW50KCk7CisgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGU7CiAj
ZWxzZQotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyB9CisgICAgdm9pZCBk
ZXRhY2hGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGJvb2wg
aXNEZXRhY2hlZEZyb21QYXJlbnQoKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBi
b29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9jdXNB
Y3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSB7IH0KLSAg
ICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqKSBj
b25zdDsKLSAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KikgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9j
a0NoaWxkKCkgY29uc3Q7CisgICAgYm9vbCBpc0RldGFjaGVkRnJvbVBhcmVudCgpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNlbGVjdGVkQ2hpbGRy
ZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB2
aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVy
cmlkZSB7IH0KKyAgICBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZl
RGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lk
IGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBo
YW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0Rlc2Nl
bmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
Um9sZSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgYm9vbCBo
YXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgCi0gICAgUmVmUHRyPFJhbmdlPiBlbGVt
ZW50UmFuZ2UoKSBjb25zdDsKKyAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1RhZ05h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugdmlz
aWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisKKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0YXRpYyBib29sIHJlcGxhY2VkTm9kZU5lZWRz
Q2hhcmFjdGVyKE5vZGUqIHJlcGxhY2VkTm9kZSk7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVm
dExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsK
LSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBz
ZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
Y29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Q7CisKKyAgICBW
aXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0
aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mTGVmdFdvcmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgcG9zaXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsZWZ0TGluZVZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHNlbnRlbmNlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2Ugc3R5bGVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9y
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRS
YW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGlj
IFN0cmluZyBzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYpOwotICAgIFN0cmluZyBzdHJpbmdGb3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25z
dDsKLSAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAg
ICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikgY29u
c3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKSBjb25zdCB7IH0KLQotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JC
b3VuZHMpIGNvbnN0OwotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MubmV4dCgp
OyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3QgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2
aW91cygpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
U2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAg
IFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3Rh
cnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxh
c3RJbmRleE9LICovKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIAot
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCkg
Y29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICB2aXJ0dWFsIGludCBpbmRl
eEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCB7IHJldHVy
biAwOyB9Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9y
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgaW50IGxpbmVGb3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBQbGFpblRleHRSYW5n
ZSBwbGFpblRleHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBsaW5lQnJl
YWtzKFZlY3RvcjxpbnQ+JikgY29uc3QgeyB9Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBk
b0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgp
OyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4
KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9Ci0gICAgUGxhaW5U
ZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB2
aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBkb0FYQm91bmRz
Rm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7
IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0K
KyAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSW50UmVjdCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAg
IEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBv
c2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5uZXh0KCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gcHJl
dmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlUG9zLnByZXZpb3VzKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFN0YXJ0KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0TGlu
ZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVu
Y2VFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQ
YXJhZ3JhcGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICov
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorCisgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBpbnQgaW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQorCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBsaW5l
Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBpbmRleChj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAtMTsgfQorCisg
ICAgdm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAg
UGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQorICAgIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5n
ZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhaW5U
ZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5n
ZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZTsKKworICAgIFN0cmluZyBkb0FYU3Ry
aW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQorICAgIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgSW50
UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQogICAgIHN0YXRp
YyBTdHJpbmcgbGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oTm9kZSosIGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwogCi0gICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25l
ZCk7CisgICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGU7CiAK
LSAgICBTdHJpbmcgY29tcHV0ZWRSb2xlU3RyaW5nKCkgY29uc3Q7CisgICAgU3RyaW5nIGNvbXB1
dGVkUm9sZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nVmFsdWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IFN0cmluZyBzdHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0g
ICAgdmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JN
U0FBKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCk7IH0KKyAgICBTdHJpbmcgc3RyaW5nVmFs
dWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQorICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNB
QSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisKKyAgICBTdHJpbmcg
cGFzc3dvcmRGaWVsZFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBib29sIGlzVmFsdWVBdXRvZmlsbGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBdXRvRmlsbEJ1
dHRvblR5cGUgdmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci0gICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0OwotICAgIGJvb2wgaXNW
YWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZh
bHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Q7Ci0gICAgCiAgICAgLy8gVXNlZCBieSBhbiBB
UklBIHRyZWUgdG8gZ2V0IGFsbCBpdHMgcm93cy4KLSAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKyAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKICAgICAvLyBVc2VkIGJ5IGFuIEFSSUEg
dHJlZSBpdGVtIHRvIGdldCBhbGwgb2YgaXRzIGRpcmVjdCByb3dzIHRoYXQgaXQgY2FuIGRpc2Ns
b3NlLgotICAgIHZvaWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKTsKLSAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRvIGdldCBv
bmx5IGl0cyBjb250ZW50LCBhbmQgbm90IGl0cyBjaGlsZCB0cmVlIGl0ZW1zIGFuZCBncm91cHMu
IAotICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKTsKLSAgICAKKyAgICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRy
ZWUgaXRlbSB0byBnZXQgb25seSBpdHMgY29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBp
dGVtcyBhbmQgZ3JvdXBzLgorICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKKwogICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24g
ZmVhdHVyZXMuCi0gICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYg
PSB0cnVlKSBjb25zdDsKLSAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJ
Zk9mZiA9IHRydWUpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpdmVSZWdpb25B
bmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQnVzeSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRl
SWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lv
bihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUp
IGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJl
Z2lvblJlbGV2YW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAg
IGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcgZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JSb2xlKEFjY2Vz
c2liaWxpdHlSb2xlKTsKICAgICBzdGF0aWMgYm9vbCBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVk
KGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBjb250ZW50RWRpdGFibGVBdHRy
aWJ1dGVJc0VuYWJsZWQoRWxlbWVudCopOwotICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0
cmlidXRlU2V0KCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVT
ZXQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdDsKKyAgICBib29sIHN1
cHBvcnRzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcmVhZE9ubHlWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGF1
dG9Db21wbGV0ZVZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRy
aWJ1dGVzKCkgY29uc3Q7Ci0gICAgCiAgICAgLy8gQ1NTMyBTcGVlY2ggcHJvcGVydGllcy4KLSAg
ICB2aXJ0dWFsIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJvcGVydHkoKSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8U3BlYWtBcz4geyB9OyB9CisgICAgT3B0aW9uU2V0PFNwZWFrQXM+IHNw
ZWFrQXNQcm9wZXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE9wdGlvblNldDxTcGVha0Fz
PiB7IH07IH0KIAogICAgIC8vIE1ha2UgdGhpcyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxpbmcg
YXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQuCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZp
c2libGUoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBTYW1lLCBidXQgaWYgdGhlIHdob2xlIG9i
amVjdCBjYW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2Nh
bCBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBT
Y3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMg
b2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFs
UG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICAKLSAgICBlbnVtIGNsYXNzIFNjcm9s
bEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9OwotICAgIGJvb2wgc2Ny
b2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Q7Ci0gICAgSW50UG9pbnQgc2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICBJbnRTaXplIHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNv
bnN0OyAgICAKLSAgICBJbnRSZWN0IHNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0Owot
ICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0
aW9ucyYpIGNvbnN0OwotICAgIAotICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKTsK
LSAgICB2b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpOworICAgIHZvaWQgc2Ny
b2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
Ym9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsK
KyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFNp
emUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBzY3Jv
bGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbFRv
TWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRmlyZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlm
IHRoZSBpc0lnbm9yZWQgdmFsdWUgY2hhbmdlZC4KLSAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZh
bHVlQ2hhbmdlZCgpOworICAgIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBmb3IgaXNNYXRo
RWxlbWVudCgpLgotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFJvdygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVyT3Zl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFJvb3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVS
b290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aE9wZXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVu
Y2VPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRva2VuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRo
U2NyaXB0T2JqZWN0VHlwZSkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9i
amVjdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZyYWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aEZl
bmNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhT
dWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc01hdGhSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzTWF0aE51bWJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aElkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVD
ZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aE11
bHRpc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFRva2VuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9i
amVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFJvb3QgY29tcG9uZW50cy4KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSb290SW5kZXhP
YmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgCisgICAgQVhDb3JlT2JqZWN0KiBtYXRo
UmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3Jl
T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorCiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEZyYWN0aW9uIGNvbXBvbmVudHMuCi0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aERl
bm9taW5hdG9yT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
bWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBB
WENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgotICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0
T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAor
ICAgIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgLy8gRmVuY2VkIGNvbXBv
bmVudHMuCi0gICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBpbnQgbWF0aExp
bmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQW5v
bnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKyAgICBT
dHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9y
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIE11bHRpc2NyaXB0
cyBjb21wb25lbnRzLgotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0UGFpcnM7Ci0gICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlw
dHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgeyB9Ci0gICAgCisgICAgdm9p
ZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7IH0KKwogICAgIC8vIFZpc2liaWxpdHkuCi0gICAgYm9v
bCBpc0FYSGlkZGVuKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0RPTUhpZGRlbigpIGNvbnN0OwotICAg
IGJvb2wgaXNIaWRkZW4oKSBjb25zdCB7IHJldHVybiBpc0FYSGlkZGVuKCkgfHwgaXNET01IaWRk
ZW4oKTsgfQorICAgIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNET01IaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSGlkZGVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVuKCk7IH0KIAogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3
cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKSB7IG1f
d3JhcHBlciA9IHdyYXBwZXI7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIpIG92ZXJyaWRlIHsgbV93cmFwcGVyID0gd3JhcHBlcjsgfQog
I2Vsc2UKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50KTsKKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3Qq
IHBhcmVudCkgb3ZlcnJpZGU7CiAjZWxzZQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFy
ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVu
dFBhcmVudChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0KICNlbmRpZgotICAgIAorCiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFkpCiAgICAgLy8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBtZXRob2Qg
Zm9yIGRldGVybWluaW5nIGlmIGFuIGF0dGFjaG1lbnQgaXMgaWdub3JlZAotICAgIGJvb2wgYWNj
ZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBib29sIGFjY2Vzc2liaWxp
dHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gZ2l2ZXMgcGxhdGZv
cm1zIHRoZSBvcHBvcnR1bml0eSB0byBpbmRpY2F0ZSBpZiBhbmQgaG93IGFuIG9iamVjdCBzaG91
bGQgYmUgaW5jbHVkZWQKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogI2Vsc2UKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KKyAgICBib29s
IGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBs
YXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmllbGRMZW5n
dGgoKTsKLSAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0OwotICAgIGJvb2wg
aXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0OworICAgIGludCBhY2Nlc3NpYmlsaXR5UGFz
c3dvcmRGaWVsZExlbmd0aCgpIG92ZXJyaWRlOworICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3Rl
bmVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIGFsbG93cyBmb3IgYW4gQWNj
ZXNzaWJpbGl0eU9iamVjdCB0byB1cGRhdGUgaXRzIHJlbmRlciB0cmVlIG9yIHBlcmZvcm0KICAg
ICAvLyBvdGhlciBvcGVyYXRpb25zIHVwZGF0ZSB0eXBlIG9wZXJhdGlvbnMKLSAgICB2b2lkIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIAorICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCkg
b3ZlcnJpZGU7CisKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHByZXZlbnRLZXlib2Fy
ZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdDsKLSAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2goYm9vbCk7Ci0gICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1Zh
bHVlSW5UaXRsZSgpIGNvbnN0OworICAgIGJvb2wgcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sKSBvdmVycmlkZTsKKyAgICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1
cm5zVmFsdWVJblRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNwZWVjaEhpbnRB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBkZXNjcmlwdGlvbkF0
dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGhlbHBUZXh0QXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdGl0bGVBdHRyaWJ1dGVWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgp
IGNvbnN0OwotICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CisgICAgYm9v
bCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q2Fy
ZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGZvY3VzYWJsZUFuY2VzdG9yKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZWRpdGFibGVBbmNlc3RvcigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RF
ZGl0YWJsZUFuY2VzdG9yKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNhYmxlQW5j
ZXN0b3IoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlZGl0YWJsZUFuY2Vz
dG9yKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGlnaGVzdEVkaXRhYmxl
QW5jZXN0b3IoKSBvdmVycmlkZTsKIAotICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0
OworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0YXRp
YyBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRjaGVkUGFyZW50KGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmLCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wo
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYpPiYpOwotICAgIAotICAgIHZvaWQgY2xlYXJJc0ln
bm9yZWRGcm9tUGFyZW50RGF0YSgpIHsgbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YSA9IEFjY2Vz
c2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOyB9Ci0gICAgdm9pZCBzZXRJc0lnbm9y
ZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICAKKwor
ICAgIHZvaWQgY2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpIG92ZXJyaWRlIHsgbV9pc0ln
bm9yZWRGcm9tUGFyZW50RGF0YSA9IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0
YSgpOyB9CisgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29y
ZU9iamVjdCopIG92ZXJyaWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgQVhJRCBtX2lkIHsgMCB9Owog
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwpAQCAtMTAyMSwyNCAr
Nzc4LDI0IEBAIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9U
UkVFKQogICAgIGJvb2wgbV9pc29sYXRlZFRyZWVOb2RlSW5pdGlhbGl6ZWQgeyBmYWxzZSB9Owog
I2VuZGlmCi0gICAgCi0gICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmIGRhdGEpIHsgbV9pc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YSA9IGRhdGE7IH0KKworICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEo
QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSBvdmVycmlkZSB7IG1f
aXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgCisKICAgICAvLyBJZiB0aGlzIG9iamVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJu
IGl0cyBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3Jv
bGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdCB7IH0KICAgICBTY3Jv
bGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFBbmNlc3RvcigpIGNvbnN0OwogICAgIHZvaWQgc2Ny
b2xsQXJlYUFuZEFuY2VzdG9yKHN0ZDo6cGFpcjxTY3JvbGxhYmxlQXJlYSosIEFjY2Vzc2liaWxp
dHlPYmplY3QqPiYpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJp
bGl0eVNlYXJjaENyaXRlcmlhKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2li
aWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0
eVNlYXJjaENyaXRlcmlhKik7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNl
YXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWEqKTsKLSAgICBzdGF0aWMgYm9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVz
dWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJp
YSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOworCisgICAgc3RhdGljIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFYQ29yZU9iamVjdCosIEFjY2Vz
c2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNl
YXJjaENyaXRlcmlhKik7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJj
aE1hdGNoKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOworICAg
IHN0YXRpYyBib29sIG9iamVjdE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChB
WENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGJ1dHRvblJv
bGVUeXBlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc09uc2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBp
c09uU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXNwYXRjaFRvdWNoRXZlbnQo
KTsKIAogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xMDY0LDEwICs4
MjEsMTAgQEAgcHJvdGVjdGVkOgogfTsKIAogI2lmICFFTkFCTEUoQUNDRVNTSUJJTElUWSkKLWlu
bGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIHsgcmV0dXJuIG1fY2hpbGRy
ZW47IH0KK2lubGluZSBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKGJvb2wpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KIGlubGluZSBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiBp
bmxpbmUgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCB7IHJldHVybiAtMTsgfQotaW5saW5lIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgeyB9CitpbmxpbmUgdm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVycmlkZSB7IH0KICNlbmRpZgog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25z
dCBOb2RlKiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmKT4mIGlzQWNjZXNzaWJsZSk7CkBAIC0xMDc2LDkgKzgzMyw5IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqLCBjb25zdCBX
VEY6OkZ1bmN0CiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZ
KFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVj
dC5wcmVkaWNhdGU7IH0gXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpB
WENvcmVPYmplY3QmIG9iamVjdCkgeyByZXR1cm4gb2JqZWN0LnByZWRpY2F0ZTsgfSBcCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCkKLXN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlJiBjb250ZXh0KSB7IHJldHVybiBj
b250ZXh0LmlzQWNjZXNzaWJpbGl0eU9iamVjdCgpOyB9CitzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0JiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzQWNj
ZXNzaWJpbGl0eU9iamVjdCgpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCmluZGV4IDk4ZmZiMzE1ZTIxMGIwY2IzNWRiZTc5YmNjMjBmOTExMDIx
NzhiYmMuLjI5MDNkZTE5ODhjNjVkNTJiNWIyMDdiMDA2MDUxMWVkZjUzODE3N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCkBAIC0yNSw3ICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3Iu
aCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbmNsdWRlICJWaXNpYmxlU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKFdJTikK
QEAgLTQ1LDYgKzUwLDIzIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE5vZGU7CitjbGFzcyBFbGVtZW50OworY2xhc3Mg
UmVuZGVyT2JqZWN0OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNzIFBhdGg7CitjbGFzcyBX
aWRnZXQ7CitjbGFzcyBQYWdlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNz
IEZyYW1lVmlldzsKK2NsYXNzIFNjcm9sbFZpZXc7CitjbGFzcyBBWE9iamVjdENhY2hlOworY2xh
c3MgQVhDb3JlT2JqZWN0OworY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc7CitzdHJ1Y3Qg
QWNjZXNzaWJpbGl0eVRleHQ7CitzdHJ1Y3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnM7CisK
IHR5cGVkZWYgdW5zaWduZWQgQVhJRDsKIGV4dGVybiBjb25zdCBBWElEIEludmFsaWRBWElEOwog
dHlwZWRlZiB1bnNpZ25lZCBBWElzb2xhdGVkVHJlZUlEOyAgICAKQEAgLTIwMywzNiArMjI1LDg1
NiBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBXaW5kb3csCiB9OwogCi1j
bGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlIHsKK2VudW0gY2xhc3MgQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQsIEVs
ZW1lbnRDaGFuZ2UgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNl
IHsgU2NyZWVuLCBQYWdlIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVj
dGlvbiB7CisgICAgTmV4dCA9IDEsCisgICAgUHJldmlvdXMsCit9OworCitlbnVtIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXkgeworICAgIEFueVR5cGUgPSAxLAorICAgIEFydGljbGUsCisg
ICAgQmxvY2txdW90ZVNhbWVMZXZlbCwKKyAgICBCbG9ja3F1b3RlLAorICAgIEJvbGRGb250LAor
ICAgIEJ1dHRvbiwKKyAgICBDaGVja0JveCwKKyAgICBDb250cm9sLAorICAgIERpZmZlcmVudFR5
cGUsCisgICAgRm9udENoYW5nZSwKKyAgICBGb250Q29sb3JDaGFuZ2UsCisgICAgRnJhbWUsCisg
ICAgR3JhcGhpYywKKyAgICBIZWFkaW5nTGV2ZWwxLAorICAgIEhlYWRpbmdMZXZlbDIsCisgICAg
SGVhZGluZ0xldmVsMywKKyAgICBIZWFkaW5nTGV2ZWw0LAorICAgIEhlYWRpbmdMZXZlbDUsCisg
ICAgSGVhZGluZ0xldmVsNiwKKyAgICBIZWFkaW5nU2FtZUxldmVsLAorICAgIEhlYWRpbmcsCisg
ICAgSGlnaGxpZ2h0ZWQsCisgICAgSXRhbGljRm9udCwKKyAgICBLZXlib2FyZEZvY3VzYWJsZSwK
KyAgICBMYW5kbWFyaywKKyAgICBMaW5rLAorICAgIExpc3QsCisgICAgTGl2ZVJlZ2lvbiwKKyAg
ICBNaXNzcGVsbGVkV29yZCwKKyAgICBPdXRsaW5lLAorICAgIFBsYWluVGV4dCwKKyAgICBSYWRp
b0dyb3VwLAorICAgIFNhbWVUeXBlLAorICAgIFN0YXRpY1RleHQsCisgICAgU3R5bGVDaGFuZ2Us
CisgICAgVGFibGVTYW1lTGV2ZWwsCisgICAgVGFibGUsCisgICAgVGV4dEZpZWxkLAorICAgIFVu
ZGVybGluZSwKKyAgICBVbnZpc2l0ZWRMaW5rLAorICAgIFZpc2l0ZWRMaW5rLAorfTsKKworc3Ry
dWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7CisgICAgQVhDb3JlT2JqZWN0KiBzdGFy
dE9iamVjdDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlv
bjsKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4gc2VhcmNoS2V5czsKKyAgICBT
dHJpbmcgc2VhcmNoVGV4dDsKKyAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQ7CisgICAgYm9vbCB2
aXNpYmxlT25seTsKKyAgICBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seTsKKworICAgIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgU3RyaW5nIHNlYXJjaFRl
eHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlh
dGVEZXNjZW5kYW50c09ubHkpCisgICAgICAgIDogc3RhcnRPYmplY3Qoc3RhcnRPYmplY3QpCisg
ICAgICAgICwgc2VhcmNoRGlyZWN0aW9uKHNlYXJjaERpcmVjdGlvbikKKyAgICAgICAgLCBzZWFy
Y2hUZXh0KHNlYXJjaFRleHQpCisgICAgICAgICwgcmVzdWx0c0xpbWl0KHJlc3VsdHNMaW1pdCkK
KyAgICAgICAgLCB2aXNpYmxlT25seSh2aXNpYmxlT25seSkKKyAgICAgICAgLCBpbW1lZGlhdGVE
ZXNjZW5kYW50c09ubHkoaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorICAgIHsgfQorfTsKKwor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIHsKKyAgICBJbmNsdWRlT2Jq
ZWN0LAorICAgIElnbm9yZU9iamVjdCwKKyAgICBEZWZhdWx0QmVoYXZpb3IsCit9OworCitlbnVt
IGNsYXNzIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3Rl
cCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGUgeworICAgIE9mZiA9IDAsCisgICAgT24sCisgICAgTWl4ZWQsCit9OworCitlbnVt
IGNsYXNzIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKKyAgICBOb25lLAorICAgIEFzY2Vu
ZGluZywKKyAgICBEZXNjZW5kaW5nLAorICAgIE90aGVyLAorICAgIEludmFsaWQsCit9OworCitl
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tIHsKKyAgICBCZWdpbiwg
Ly8gU2VhcmNoIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZWxlbWVudC4KKyAgICBTZWxlY3Rp
b24sIC8vIFNlYXJjaCBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24u
CisgICAgRW5kIC8vIFNlYXJjaCBmcm9tIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCit9OworCitl
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIHsKKyAgICBGb3J3YXJk
LCAvLyBPY2N1cnJlbmNlIGFmdGVyIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBCYWNrd2FyZCwg
Ly8gT2NjdXJyZW5jZSBiZWZvcmUgdGhlIHN0YXJ0aW5nIHJhbmdlLgorICAgIENsb3Nlc3QsIC8v
IENsb3Nlc3Qgb2NjdXJyZW5jZSB0byB0aGUgc3RhcnRpbmcgcmFuZ2UsIHdoZXRoZXIgYWZ0ZXIg
b3IgYmVmb3JlLgorICAgIEFsbCAvLyBBbGwgb2NjdXJyZW5jZXMKK307CisKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWFyY2hT
dHJpbmdzOyAvLyBUZXh0IHN0cmluZ3MgdG8gc2VhcmNoIGZvci4KKyAgICBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dFN0YXJ0RnJvbSBzdGFydDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb247CisKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlh
KCkKKyAgICAgICAgOiBzdGFydChBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbTo6U2Vs
ZWN0aW9uKQorICAgICAgICAsIGRpcmVjdGlvbihBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVj
dGlvbjo6Rm9yd2FyZCkKKyAgICB7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb25UeXBlIHsKKyAgICBTZWxlY3QsCisgICAgUmVwbGFjZSwKKyAgICBDYXBpdGFs
aXplLAorICAgIExvd2VyY2FzZSwKKyAgICBVcHBlcmNhc2UKK307CisKK3N0cnVjdCBBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbiB7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5n
ZXM7IC8vIHRleHQgb24gd2hpY2ggcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgorICAgIEFjY2Vzc2li
aWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB0eXBlOworICAgIFN0cmluZyByZXBsYWNlbWVudFRleHQ7
IC8vIEZvciB0eXBlID0gcmVwbGFjZS4KKworICAgIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KCkKKyAgICAgICAgOiB0eXBlKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZTo6U2VsZWN0
KQorICAgIHsgfQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewor
ICAgIFZlcnRpY2FsLAorICAgIEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAorfTsKKworc3Ry
dWN0IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7CisgICAgZW51bSBDaGlsZHJl
bkluY2x1c2lvbiB7CisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGls
ZHJlbiwKKyAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4sCisg
ICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9tQ29udGVudHNDaGlsZHJl
biwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5hbWVGcm9tCisgICAgfTsK
KworICAgIENoaWxkcmVuSW5jbHVzaW9uIGNoaWxkcmVuSW5jbHVzaW9uOworICAgIGJvb2wgaW5j
bHVkZUZvY3VzYWJsZUNvbnRlbnQ7CisgICAgTm9kZSogaWdub3JlZENoaWxkTm9kZTsKKworICAg
IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZShDaGlsZHJlbkluY2x1c2lvbiBjID0g
VGV4dFVuZGVyRWxlbWVudE1vZGVTa2lwSWdub3JlZENoaWxkcmVuLCBib29sIGkgPSBmYWxzZSwg
Tm9kZSogaWdub3JlZCA9IG51bGxwdHIpCisgICAgICAgIDogY2hpbGRyZW5JbmNsdXNpb24oYykK
KyAgICAgICAgLCBpbmNsdWRlRm9jdXNhYmxlQ29udGVudChpKQorICAgICAgICAsIGlnbm9yZWRD
aGlsZE5vZGUoaWdub3JlZCkKKyAgICB7IH0KK307CisKKyNpZiBQTEFURk9STShDT0NPQSkKK3R5
cGVkZWYgc3RydWN0IF9OU1JhbmdlIE5TUmFuZ2U7CisjZW5kaWYKKworc3RydWN0IFBsYWluVGV4
dFJhbmdlIHsKKyAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
eyAwIH07CisKKyAgICBQbGFpblRleHRSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIFBsYWluVGV4
dFJhbmdlKHVuc2lnbmVkIHMsIHVuc2lnbmVkIGwpCisgICAgICAgIDogc3RhcnQocykKKyAgICAg
ICAgLCBsZW5ndGgobCkKKyAgICB7IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWlu
VGV4dFJhbmdlKE5TUmFuZ2UpOworI2VuZGlmCisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlWaXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMgeworICAgIEZpcnN0LAorICAgIExhc3QsCit9Owor
CitzdHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgeworICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dDsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kOworCisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSA9IGRlZmF1bHQ7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBzLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGUpCisgICAgICAgIDogc3RhcnQocykKKyAg
ICAgICAgLCBlbmQoZSkKKyAgICB7IH0KKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKKyAgICAgICAgOiBzdGFydChzZWxlY3Rpb24u
c3RhcnQoKSkKKyAgICAgICAgLCBlbmQoc2VsZWN0aW9uLmVuZCgpKQorICAgIHsgfQorCisgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxs
KCk7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBl
IHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0
aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBv
c3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9OworCisvLyBVc2UgdGhpcyBzdHJ1Y3QgdG8g
c3RvcmUgdGhlIGlzSWdub3JlZCBkYXRhIHRoYXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28g
dGhhdCBpbiBhZGRDaGlsZHJlbigpCisvLyB3ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNo
YWluIGZvciBlYWNoIGVsZW1lbnQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1
bCBpbmZvcm1hdGlvbiBhbHJlYWR5Lgorc3RydWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YSB7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgeyBudWxscHRyIH07CisgICAg
Ym9vbCBpc0FYSGlkZGVuIHsgZmFsc2UgfTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGls
ZE9mQXJpYVJvbGUgeyBmYWxzZSB9OworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJl
bnQgeyBmYWxzZSB9OworCisgICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRh
KEFYQ29yZU9iamVjdCogcGFyZW50ID0gbnVsbHB0cikKKyAgICAgICAgOiBwYXJlbnQocGFyZW50
KQorICAgIHsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFyZW50OyB9
Cit9OworCitjbGFzcyBBWENvcmVPYmplY3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
QVhDb3JlT2JqZWN0PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5BWENvcmVPYmplY3QoKSA9IGRl
ZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIC8vIEFmdGVy
IGNvbnN0cnVjdGluZyBhbiBhY2Nlc3NpYmxlIG9iamVjdCwgaXQgbXVzdCBiZSBnaXZlbiBhCisg
ICAgLy8gdW5pcXVlIElELCB0aGVuIGFkZGVkIHRvIEFYT2JqZWN0Q2FjaGUsIGFuZCBmaW5hbGx5
IGluaXQoKSBtdXN0CisgICAgLy8gYmUgY2FsbGVkIGxhc3QuCisgICAgdmlydHVhbCB2b2lkIHNl
dE9iamVjdElEKEFYSUQpID0gMDsKKyAgICB2aXJ0dWFsIEFYSUQgb2JqZWN0SUQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGluaXQoKSA9IDA7CisKKyAgICAvLyBXaGVuIHRoZSBjb3Jy
ZXNwb25kaW5nIFdlYkNvcmUgb2JqZWN0IHRoYXQgdGhpcyBhY2Nlc3NpYmxlIG9iamVjdAorICAg
IC8vIHJlcHJlc2VudHMgaXMgZGVsZXRlZCwgaXQgbXVzdCBiZSBkZXRhY2hlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNo
ZSogPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCA9
IDA7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yOworCisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAq
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFw
TGluaygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFp
bmluZ1Bhc3N3b3JkRmllbGQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENv
bnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzV2ViQXJlYSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSYWRp
b0J1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGlt
ZWxpbmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNZW51QmFyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0
b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRl
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVs
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGF0
YVRhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNG
aWVsZHNldCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcm91cCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc01lbnVMaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01v
Y2tPYmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFi
ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFPYmplY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzU3dpdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
Q29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVGV4dENvbnRyb2wo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGFiTGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Jh
ZGlvR3JvdXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29tYm9Cb3goKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVHJlZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlSXRl
bSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzQnV0dG9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0xpc3RJdGVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94T3JSYWRp
bygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NhbnZhcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNCbG9ja3F1
b3RlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWV0
ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzVG9vbGJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Zp
Z3VyZUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3VtbWFyeSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPdXRwdXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNDaGVja2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNIb3ZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBGSVhN
RSBzaG91bGQgbmVlZCBqdXN0IG9uZSBzaW5jZSBvbnNjcmVlbiBzaG91bGQgYmUgIW9mZnNjcmVl
bi4KKyAgICB2aXJ0dWFsIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUHJlc3Nl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZXF1aXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1
aXJlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXND
b2xsYXBzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5kZWQoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBwYXJlbnRPYmplY3RJ
bnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIAorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxv
YXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOworCisgICAg
Ly8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0
IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUuCisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0
ZWRPcHRpb25BY3RpdmUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZv
bnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29u
c3QmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBo
YXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNVbmRlcmxp
bmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IGhlYWRpbmdMZXZlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94
T3JSYWRpb1ZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3Jp
cHRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBzZWxlY3RlZExpc3RJdGVtKCkgPSAwOworICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWlu
ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWls
c1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFG
bG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFM
YWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhT3du
c1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIGhhc1BvcHVwKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0Rh
dGFsaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNQcmVzc2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4
cGFuZGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGly
ZWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0Nv
bnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXJBdHRy
aWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBsaW5rUmVs
VmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsYXNzTGlzdChWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRT
dGF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ3VycmVudCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBrZXlTaG9ydGN1dHNWYWx1ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9y
ZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KKyAgICB2aXJ0dWFsIGJv
b2wgaWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01vZGFsTm9kZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NldFNp
emUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgc2V0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCBwb3NJblNldCgpIGNvbnN0ID0gMDsKKworICAgIC8vIEFSSUEgZHJhZyBhbmQgZHJvcAor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcm9wcGluZygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzQVJJQUdyYWJiZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFSSUFHcmFi
YmVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFE
cm9wRWZmZWN0cygpID0gMDsKKworICAgIC8vIENhbGxlZCBvbiB0aGUgcm9vdCBBWCBvYmplY3Qg
dG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgorICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKKyAgICAvLyBDYWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUgcmVuZGVyIHRyZWUg
ZGV0ZXJtaW5lcyB3aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4K
KyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGZv
Y3VzZWRVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCog
Zmlyc3RDaGlsZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbGFzdENo
aWxkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1NpYmxp
bmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG5leHRTaWJsaW5nKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3Jl
ZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcHJldmlv
dXNTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVP
YmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFY
Q29yZU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rl
c2NlbmRhbnRPZkJhcnJlblBhcmVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNE
ZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCA9IDA7CisKKyAgICAvLyBU
ZXh0IHNlbGVjdGlvbgorICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0
UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYpID0gMDsKKworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsaW5r
ZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9s
Rm9yTGFiZWxFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBz
Y3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Qg
PSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0CisgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCA9IDA7CisgICAg
Ly8gQSBzaW5nbGUgbWV0aG9kIGZvciBnZXR0aW5nIGEgY29tcHV0ZWQgbGFiZWwgZm9yIGFuIEFY
T2JqZWN0LiBJdCBjb25kZW5zZXMgdGhlIG51YW5jZXMgb2YgYWNjZXNzaWJpbGl0eVRleHQuIFVz
ZWQgYnkgSW5zcGVjdG9yLgorICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSA9IDA7
CisKKyAgICAvLyBBIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgbmFtZSBvbiBhbiBBY2Nlc3Np
YmxlT2JqZWN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9t
U3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJ
bmNsdXNpb24oKSBjb25zdCA9IDA7CisKKyAgICAvLyBBY2Nlc3NpYmlsaXR5IFRleHQgLSAoVG8g
YmUgZGVwcmVjYXRlZCkuCisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gTWV0aG9k
cyBmb3IgZGV0ZXJtaW5pbmcgYWNjZXNzaWJpbGl0eSB0ZXh0LgorICAgIHZpcnR1YWwgYm9vbCBp
c0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1Zh
bHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlKCkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdCA9IDA7CisKKyAg
ICAvLyBBYmJyZXZpYXRpb25zCisgICAgdmlydHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworCisgICAg
Ly8gT25seSBpZiBpc0NvbG9yV2VsbCgpCisgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50
JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGFu
Y2hvckVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUHJlc3NB
Y3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBJbnRQb2ludCBjbGlja1BvaW50KCkgPSAwOworICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0
aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0b3JCZWhhdmlv
ckZvclRleHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHNl
bGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2VsZWN0
aW9uU3RhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
U3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcm
IGFjdGlvblZlcmIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBQYWdlKiBwYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRnJhbWVWaWV3
KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBmcmFt
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCA9IDA7CisgICAgLy8gMS1iYXNlZCwgdG8gbWF0
Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNoaWNh
bExldmVsKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRS
YW5nZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGluc2VydFRleHQoY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVy
Zm9ybURlZmF1bHRBY3Rpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVt
ZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hh
bmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFYQ29y
ZU9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0
KiwgdW5zaWduZWQpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVSb2xlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCBib29sIG5lZWRzVG9VcGRhdGVDaGlsZHJlbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogYWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2Vu
ZGFudENoYW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENo
YW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0
IEFYQ29yZU9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbmNlc3Rvck9m
T2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VG
b3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
cG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
blJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
bGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdG
b3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJv
dW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JSYW5nZShjb25zdCBSZWZQ
dHI8UmFuZ2U+KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGVuZ3RoRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMoY29uc3QgSW50UmVjdCYsIEFjY2Vzc2liaWxpdHlW
aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJsZVBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzV29yZFN0YXJ0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xp
bmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VFbmRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJl
dmlvdXNTZW50ZW5jZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKmxhc3RJbmRleE9LICovKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChp
bnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgcGxh
aW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25S
YW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpbmRleChjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8
aW50PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZv
ckxpbmUodW5zaWduZWQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRv
QVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWdu
ZWQpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGRvQVhTdHJpbmdGb3JSYW5nZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZG9B
WEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChjb25z
dCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgZG9B
WExpbmVGb3JJbmRleCh1bnNpZ25lZCkgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgY29tcHV0
ZWRSb2xlU3RyaW5nKCkgY29uc3QgPSAwOworCisgICAgLy8gTVNBQQorICAgIHZpcnR1YWwgU3Ry
aW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBz
dHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lRm9y
TVNBQSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JN
U0FBKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgcGFzc3dvcmRGaWVsZFZhbHVl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgQXV0b0ZpbGxCdXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25U
eXBlKCkgY29uc3QgPSAwOworCisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgdG8gZ2V0IGFs
bCBpdHMgcm93cy4KKyAgICB2aXJ0dWFsIHZvaWQgYXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpID0gMDsKKyAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRv
IGdldCBhbGwgb2YgaXRzIGRpcmVjdCByb3dzIHRoYXQgaXQgY2FuIGRpc2Nsb3NlLgorICAgIHZp
cnR1YWwgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpID0gMDsKKyAgICAvLyBVc2VkIGJ5IGFuIEFSSUEgdHJlZSBpdGVtIHRvIGdldCBv
bmx5IGl0cyBjb250ZW50LCBhbmQgbm90IGl0cyBjaGlsZCB0cmVlIGl0ZW1zIGFuZCBncm91cHMu
CisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgPSAwOworCisgICAgLy8gQVJJQSBsaXZlLXJlZ2lvbiBmZWF0dXJlcy4KKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1
ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBl
eGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNCdXN5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0NvbnRl
bnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1JlYWRPbmx5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRPbmx5
VmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxl
dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0ID0gMDsKKworICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCisgICAgdmlydHVhbCBP
cHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgPSAwOworCisgICAgLy8g
TWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9sbGluZyBhcyBtYW55IG5lc3RlZCBzY3Jv
bGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBTYW1lLCBidXQgaWYgdGhlIHdob2xlIG9iamVjdCBj
YW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2NhbCBjb29y
ZGluYXRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1
cyhjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOworICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0
byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdp
bmRvdy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0ID0gMDsKKworICAgIGVudW0gY2xhc3MgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uIHsg
VXAsIERvd24sIExlZnQsIFJpZ2h0IH07CisgICAgdmlydHVhbCBib29sIHNjcm9sbEJ5UGFnZShT
Y3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBzY3JvbGxDb250
ZW50c1NpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbFZpc2libGVD
b250ZW50UmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUoYm9vbCkgPSAwOworCisgICAgLy8gRmly
ZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlmIHRoZSBp
c0lnbm9yZWQgdmFsdWUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SWZJZ25vcmVk
VmFsdWVDaGFuZ2VkKCkgPSAwOworCisgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRy
dWUgZm9yIGlzTWF0aEVsZW1lbnQoKS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFJvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVW5k
ZXJPdmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhOdW1iZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE9wZXJhdG9y
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aFRhYmxlUm93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJs
ZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0
T2JqZWN0VHlwZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlw
dE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3QgPSAw
OworCisgICAgLy8gUm9vdCBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBt
YXRoUmFkaWNhbmRPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhS
b290SW5kZXhPYmplY3QoKSA9IDA7CisKKyAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpID0gMDsKKyAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSA9IDA7CisKKyAgICAvLyBGcmFjdGlv
biBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoTnVtZXJhdG9yT2Jq
ZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmpl
Y3QoKSA9IDA7CisKKyAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KKyAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSA9IDA7CisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpID0gMDsKKworICAgIC8vIEZlbmNl
ZCBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6
OnBhaXI8QVhDb3JlT2JqZWN0KiwgQVhDb3JlT2JqZWN0Kj4+IEFjY2Vzc2liaWxpdHlNYXRoTXVs
dGlzY3JpcHRQYWlyczsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9z
dHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgPSAwOworCisgICAg
Ly8gVmlzaWJpbGl0eS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNBWEhpZGRlbigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNET01IaWRkZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzSGlkZGVuKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V3Jh
cHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQpID0gMDsKKwor
ICAgIC8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhbiBh
dHRhY2htZW50IGlzIGlnbm9yZWQKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlnbm9y
ZUF0dGFjaG1lbnQoKSBjb25zdCA9IDA7CisgICAgLy8gZ2l2ZXMgcGxhdGZvcm1zIHRoZSBvcHBv
cnR1bml0eSB0byBpbmRpY2F0ZSBpZiBhbmQgaG93IGFuIG9iamVjdCBzaG91bGQgYmUgaW5jbHVk
ZWQKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCA9IDA7CisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIHZpcnR1YWwgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVuZ3Ro
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdCA9IDA7
CisjZW5kaWYKKworICAgIC8vIGFsbG93cyBmb3IgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCB0byB1
cGRhdGUgaXRzIHJlbmRlciB0cmVlIG9yIHBlcmZvcm0KKyAgICAvLyBvdGhlciBvcGVyYXRpb25z
IHVwZGF0ZSB0eXBlIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmFja2luZ1N0
b3JlKCkgPSAwOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBib29sIHByZXZl
bnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBzcGVlY2hIaW50QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBh
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpID0gMDsKKyNpZiBQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdmlydHVhbCBib29sIGNhcmV0QnJv
d3NpbmdFbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDYXJldEJyb3dz
aW5nRW5hYmxlZChib29sKSA9IDA7CisjZW5kaWYKKworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBmb2N1c2FibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZWRp
dGFibGVBbmNlc3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogaGlnaGVzdEVk
aXRhYmxlQW5jZXN0b3IoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNl
bGYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhDb3JlT2JqZWN0Kikg
PSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggNTMzNGRjNzY2ZWM1MWY1NjcxYzEyNDZjNGFmYWEwOTgzNGNiZmQ2Yy4uN2MwYmU3NDczNTUw
YjFmOTIyYWU2Yzg3M2Y2NTdlNzRmMTYxYWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC05
NzYsNyArOTc2LDcgQEAgT3B0aW9uU2V0PFNwZWFrQXM+IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxl
KCkuc3BlYWtBcygpOwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50LCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0Cit2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihB
WENvcmVPYmplY3QqIHBhcmVudCwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRV
SUVsZW1lbnRzKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQt
PmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6UmFkaW9CdXR0b24pCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikpIHsKICAgICAgICAgLy8g
c3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVCdXR0b25zIGFyZSBqdXN0IHJl
cG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQncyBpZ25vcmVkIG9uIGFuIGlu
ZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmIChwYXJlbnQgJiYgKHBhcmVudC0+aXNN
ZW51SXRlbSgpIHx8IHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUJ1dHRvbikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYXV0
byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKTsKQEAgLTE0
MzMsNyArMTQzMyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmVy
LT5pc0xpc3RNYXJrZXIoKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFy
ZW50LT5pc0xpc3RJdGVtKCk7CiAgICAgfQogCkBAIC0yMzcwLDcgKzIzNzAsNyBAQCBJbnRSZWN0
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFj
dGVyT2Zmc2V0KGNvbnN0CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAotQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFw
SGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0
eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKIHsKICAgICBpZiAoIWFyZWEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjM5Myw3ICsyMzkzLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE0KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1v
dGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRl
KTsKICAgICBpZiAoIXJlbW90ZSkKQEAgLTI0MDMsNyArMjQwMyw3IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1l
bnRIaXRUZXN0CiAgICAgcmV0dXJuIHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QoSW50UG9p
bnQob2Zmc2V0KSk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIHJlbW90ZVNWR0Vs
ZW1lbnRIaXRUZXN0KHBvaW50KTsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFVzZVNoYWRvd0hvc3RGb3JIaXRUZXN0aW5nKE5vZGUqIHNoYWRvd0hvc3QpCiAgICAgcmV0
dXJuIHNoYWRvd0hvc3QgJiYgIXNoYWRvd0hvc3QtPmhhc1RhZ05hbWUodmlkZW9UYWcpOwogfQog
Ci1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwg
IW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ1
MCw3ICsyNDUwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY28KICAgICBpZiAoIW9iaikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVz
dWx0ID0gb2JqLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsK
KyAgICBBWENvcmVPYmplY3QqIHJlc3VsdCA9IG9iai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKG9iaik7CiAgICAgcmVzdWx0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNz
YXJ5KCk7CiAKICAgICAvLyBBbGxvdyB0aGUgZWxlbWVudCB0byBwZXJmb3JtIGFueSBoaXQtdGVz
dGluZyBpdCBtaWdodCBuZWVkIHRvIGRvIHRvIHJlYWNoIG5vbi1yZW5kZXIgY2hpbGRyZW4uCkBA
IC0yNDU4LDcgKzI0NTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjbwogICAgIAogICAgIGlm
IChyZXN1bHQgJiYgcmVzdWx0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAg
Ly8gSWYgdGhpcyBlbGVtZW50IGlzIHRoZSBsYWJlbCBvZiBhIGNvbnRyb2wsIGEgaGl0IHRlc3Qg
c2hvdWxkIHJldHVybiB0aGUgY29udHJvbC4KLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1l
bnQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBjb250cm9sT2JqZWN0ID0gcmVzdWx0LT5jb3Jy
ZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpOwogICAgICAgICBpZiAoY29udHJvbE9i
amVjdCAmJiAhY29udHJvbE9iamVjdC0+ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gY29udHJvbE9iamVjdDsKIApAQCAtMzEzNiw3ICszMTM2LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKCkKICAgICAgICAg
aWYgKCFhcmVhT2JqZWN0LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZhcmVhT2JqZWN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
YXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC5heE9iamVjdElEKCkpOworICAgICAg
ICAgICAgYXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC5vYmplY3RJRCgpKTsKICAg
ICB9CiB9CiAKQEAgLTMzMDgsNyArMzMwOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkSGlkZGVuQ2hpbGRyZW4oKQogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gRmluZCBvdXQgd2hl
cmUgdGhlIGxhc3QgcmVuZGVyIHNpYmxpbmcgaXMgbG9jYXRlZCB3aXRoaW4gbV9jaGlsZHJlbi4K
LSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkT2JqZWN0ID0gYXhPYmplY3RD
YWNoZSgpLT5nZXQoY2hpbGQtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0
KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsK
ICAgICAgICAgICAgIGlmIChjaGlsZE9iamVjdCAmJiBjaGlsZE9iamVjdC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgY2hpbGRyZW4gPSBjaGlsZE9i
amVjdC0+Y2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpKQpA
QCAtMzUyNSw3ICszNTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxl
Y3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgYXJp
YVNlbGVjdGVkUm93cyhyZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHNl
bGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3Qq
IHNlbGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHNlbGVjdGVkVGFiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDBiMTlkYTUyYWJlNmMxZjE1ODcyOTgw
YjI3NGU1ZGQ0YWFlMDJiZmMuLjM5NjE3MzA0Y2VhMzcwZjQ5N2JmMzRjNWY1MTQ3MjEwMTdkYmI3
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgcm9vdCBhY2Nlc3NpYmlsaXR5IG9i
amVjdCB0byBraWNrIG9mZiBhIGhpdCB0ZXN0LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4
dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0OworICAg
IGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCog
d2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50
VmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudExpbmtz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpAQCAtMjM1LDExICsyMzUsMTEgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3Q7CiAgICAgTGF5b3V0UmVj
dCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdy
b3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMp
IGNvbnN0OwotICAgIHZvaWQgYWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKKyAgICB2b2lk
IGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpbnRlcm5h
bExpbmtFbGVtZW50KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0OworICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1M
QXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopIGNv
bnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9i
amVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBhcmVudE9iamVjdCgpIGNvbnN0
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdS
b290KCk7CiAgICAgZW51bSBDcmVhdGlvbkNob2ljZSB7IENyZWF0ZSwgUmV0cmlldmUgfTsKICAg
ICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaG9p
Y2UgY3JlYXRlSWZOZWNlc3NhcnkpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Cisg
ICAgQVhDb3JlT2JqZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwogICAgIHZvaWQgb2Zmc2V0Qm91bmRpbmdCb3hGb3JSZW1vdGVTVkdFbGVtZW50KExh
eW91dFJlY3QmKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDUxNzhiOWZhNTNkNTQyNjJjOWZhYTc4NGZlZTQ5OGM3
NmM2ODJhM2UuLmQxMTZlZGRmZDdlNjkxMGJhOTYzOWNmNmNmNWIxYmEyMmJlNGQ4ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHdlYkFyZWEgPSB3ZWJBcmVhT2JqZWN0KCk7CiAgICAgaWYgKCF3ZWJBcmVhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oCmluZGV4IDY2ZmY1OTQ3ZDZhMWRlY2ViMGViMWExNWY4N2IyNGFkODhhZDBhM2Iu
LjliZmFmMTU1YWRiMjMyYTU2NjNmNThjYjA4YzEyYzEzM2UyYzM1MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3Jv
bGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENo
aWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2li
aWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc1Rv
VXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IG1fY2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KICAg
ICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCmluZGV4IGIzZmYwYTk3NTEwOGYxMzgz
YTk2ODJmZTAyYzE2YzY5MDk1ZjY3ZDMuLmNjNmNiODE4ZThiM2UzNmM5MTZjZmYwNGMxN2E1MGQw
NWRkOWVlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlT
bGlkZXI6OmFkZENoaWxkcmVuKCkKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2
YWx1ZSBpbmRpY2F0b3IgdG8gdGhlIGhpZXJhcmNoeSwKICAgICAvLyBhbGxvdyB0aGUgcGxhdGZv
cm0gdG8gbWFrZSBhIGZpbmFsIGRlY2lzaW9uIGFib3V0IGl0LgogICAgIGlmICh0aHVtYi5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIuYXhPYmpl
Y3RJRCgpKTsKKyAgICAgICAgY2FjaGUtPnJlbW92ZSh0aHVtYi5vYmplY3RJRCgpKTsKICAgICBl
bHNlCiAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZ0aHVtYik7CiB9CkBAIC0xMDAsNyArMTAw
LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnUKICAgICByZXR1cm4gaW5wdXRFbGVtZW50KCkt
PmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
IHsKICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAgQVNTRVJUKG1fY2hpbGRy
ZW4uc2l6ZSgpID09IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaAppbmRleCA0NjlkMjE3MDFiZWM1M2FmMTlkOTdiZjQ1ZTBlZWUx
YmRjMjI2YzQ1Li45MWM3MDkyNWU2ZDkyZjUzMmVhMmEyZmJjNzcyMzlkZDc4YTJkZGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
aApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSFRNTElucHV0
RWxlbWVudCogaW5wdXRFbGVtZW50KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7
IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsK
ICAgICAKICAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdl
dEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBmbG9hdCB2YWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCmluZGV4IGMzY2MwODI2
YTkzZjYyYWNhNDZlNjZmMzI1M2IzM2Q3MzhjMzZhZWMuLjdkMGE2YTQzYWE1MTA5MTY5ZGJlYmFh
NDI0YzZkZjk0YjdmM2RhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIEFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpCiAKIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uOjp+QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKSA9IGRlZmF1bHQ7
CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5j
cmVtZW50QnV0dG9uKCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246Omlu
Y3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAgYWRk
Q2hpbGRyZW4oKTsKQEAgLTU1LDcgKzU1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b246OmluY3JlbWVudEJ1dHRvbigpCiAgICAgcmV0dXJuIG1fY2hpbGRy
ZW5bMF0uZ2V0KCk7CiB9CiAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjpkZWNyZW1lbnRCdXR0b24oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6ZGVjcmVtZW50QnV0dG9uKCkKIHsKICAgICBpZiAoIW1faGF2ZUNoaWxkcmVu
KQogICAgICAgICBhZGRDaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCmluZGV4IDYzZDVmMzdlZWVmYWVk
M2I2NDk5N2E2MTUwZTYxZGExMTc0MjJhZGIuLjAwZTkwYTI5M2Y0NzllMDg5NTc2ZDljYThhNDE2
MzEyMWU0MWI0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTM3LDggKzM3LDggQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgc2V0U3BpbkJ1dHRvbkVsZW1lbnQoU3BpbkJ1dHRvbkVsZW1lbnQqIHNwaW5C
dXR0b24pIHsgbV9zcGluQnV0dG9uRWxlbWVudCA9IHNwaW5CdXR0b247IH0KICAgICAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBpbmNyZW1lbnRCdXR0b24oKTsKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBkZWNyZW1lbnRCdXR0b24oKTsKKyAgICBBWENvcmVPYmplY3QqIGluY3JlbWVudEJ1
dHRvbigpOworICAgIEFYQ29yZU9iamVjdCogZGVjcmVtZW50QnV0dG9uKCk7CiAKICAgICB2b2lk
IHN0ZXAoaW50IGFtb3VudCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggZjViZjViMmY2MGZmODU3YzhhNmRl
OTI1YTBiZDMwZjdjZDg2ZmUwMS4uMjczMWIwNzg4NmFlZjliYzI3NTY2YjdiMTRlOGU2NGE4YWU3
MDFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcApAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uc0NvcHkgPSBtX2NvbHVtbnM7CiAg
ICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb2x1bW4gOiBjb2x1bW5zQ29weSkgewotICAgICAg
ICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uPigqY29sdW1uKS5oZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFYQ29y
ZU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqY29s
dW1uKS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7
CiAgICAgfQogfQpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpy
b3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHkgPSBtX3Jvd3M7CiAgICAgCiAgICAgZm9y
IChjb25zdCBhdXRvJiByb3cgOiByb3dzQ29weSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogaGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93KS5o
ZWFkZXJPYmplY3QoKSkKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogaGVhZGVyID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93KS5oZWFkZXJPYmplY3QoKSkKICAgICAgICAg
ICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CiAgICAgfQogfQpAQCAtNjIyLDcgKzYyMiw3IEBA
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgIC8vIGNlbGwgdG8gZGV0ZXJtaW5lIHdo
aWNoIGlzIHRoZSByaWdodCBvbmUuCiAgICAgICAgIGZvciAodW5zaWduZWQgY29sSW5kZXhDb3Vu
dGVyID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoaWxkcmVuLnNpemUoKSksIGNv
bHVtbiArIDEpOyBjb2xJbmRleENvdW50ZXIgPiAwOyAtLWNvbEluZGV4Q291bnRlcikgewogICAg
ICAgICAgICAgdW5zaWduZWQgY29sSW5kZXggPSBjb2xJbmRleENvdW50ZXIgLSAxOwotICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBjaGlsZHJlbltjb2xJbmRleF0uZ2V0
KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhd
LmdldCgpOwogICAgICAgICAgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpj
aGlsZCkpOwogICAgICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hp
bGQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXggOWJiYWQx
MTI5NmU1ZTFjNzA1OTM3MjViNjI5ODQ2ZmE5NTZiNDQwMC4uZGI1MDQxYzkzODk3OTI4ZmIxZDc0
NGQ3N2RiNWVhN2Y2OWFhZTdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgaGVhZGVycykKIAogQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpwYXJlbnRSb3coKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCog
cGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFpczxBY2Nlc3NpYmls
aXR5VGFibGVSb3c+KCpwYXJlbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihwYXJlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
Y3BwCmluZGV4IDNjYjdmMTVhMjE3NmU0NDVkZmM4NjNkOGNiMTIyZjM2ZDEyZjI0NmIuLmZkYzY3
ZjhhYzE1NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYyNzE1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAK
QEAgLTcwLDcgKzcwLDcgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmVs
ZW1lbnRSZWN0KCkgY29uc3QKICAgICByZXR1cm4gY29sdW1uUmVjdDsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQorQVhD
b3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiB7CiAg
ICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApp
bmRleCA5ZmNkYjVjZjM2ZTI3OTYzYWU4MjAwYjI0MDBjMzczYmI1ZTM5OGM1Li41Njk3Y2MxYzgy
ZjJkOGNhMDhiNzNkZWNkNzc2MjY4ZGY0NDM4NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKQEAgLTQwLDkg
KzQwLDkgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uIGZpbmFsIDogcHVibGljIEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uKCk7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0
KCk7Ci0gICAgICAgIAorCisgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKKwogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpDb2x1bW47IH0KICAgICAKICAgICB2b2lkIHNldENvbHVtbkluZGV4
KGludCBjb2x1bW5JbmRleCkgeyBtX2NvbHVtbkluZGV4ID0gY29sdW1uSW5kZXg7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcAppbmRleCBiYjlkOWUwNGM0ZGY0ODZhZGI3NTZjMzNhZGVmMWRhMDU1OTkzMjdmLi43YjQ5
YzI4YmMwY2Q2ODQxNDI2ZDY3ZGE1MzQ4MmMxMzBjM2I2NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OnBhcmVudFRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKK0FY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogewogICAg
IGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZVJvdygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEyMCw3ICsxMjAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIC8vIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSByb3cgdG8g
c2VlIGlmIGl0IGlzIGEgVEggZWxlbWVudAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNlbGwg
PSByb3dDaGlsZHJlblswXS5nZXQoKTsKKyAgICBBWENvcmVPYmplY3QqIGNlbGwgPSByb3dDaGls
ZHJlblswXS5nZXQoKTsKICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjZWxs
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCA5ODhlMjQ1OTIx
M2U3MGQ1NGZmZWU0Y2JhYjYxMjEzYmYzNTMzMTM5Li43OWJmMDVmZmFkZDFkODQ4OWExMzNhMzUz
ODA5N2U0YWJlZjljYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZVJvdygpOwogCiAgICAgLy8gcmV0cmlldmVzIHRo
ZSAicm93IiBoZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1uKQotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIGhlYWRlck9iamVjdCgpOwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRh
YmxlKiBwYXJlbnRUYWJsZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0Um93SW5kZXgoaW50
IHJvd0luZGV4KSB7IG1fcm93SW5kZXggPSByb3dJbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCAyODRl
MzZkMDhhOThhMmViMzdhZDQyZDQwZmQ0MzI2YTUwODgyMzQ1Li5kODNjMDc0NmUwYmY1YmY3OTk4
OGQzNDEyNzVhOTYwMTM5Yjc3YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1QZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAg
ICAgbV9kZWZlcnJlZERldGFjaGVkV3JhcHBlckxpc3QuY2xlYXIoKTsKIH0KIAotc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGdldExpc3RPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0KQorc3RhdGljIEFYQ29yZU9iamVjdCogZ2V0TGlzdE9iamVjdChBWENvcmVPYmplY3QqIG9i
amVjdCkKIHsKICAgICAvLyBPbmx5IGxpc3QgYm94ZXMgYW5kIG1lbnUgbGlzdHMgc3VwcG9ydGVk
IHNvIGZhci4KICAgICBpZiAoIW9iamVjdC0+aXNMaXN0Qm94KCkgJiYgIW9iamVjdC0+aXNNZW51
TGlzdCgpKQpAQCAtMTM2LDIxICsxMzYsMjEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGdldExpc3RPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKKyAgICBBWENvcmVPYmplY3Qq
IGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKICAgICBpZiAoIWxpc3RPYmplY3Qt
PmlzTWVudUxpc3RQb3B1cCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBsaXN0
T2JqZWN0OwogfQogCi1zdGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZShB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCitzdGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNl
bGVjdGlvbkNoYW5nZShBWENvcmVPYmplY3QqIG9iamVjdCkKIHsKICAgICAvLyBUaGlzIHN0YXRp
YyB2YXJpYWJsZXMgYXJlIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBvbGQKICAgICAvLyBm
b2N1c2VkIG9iamVjdCBhbmQgaXRzIGFzc29jaWF0ZWQgbGlzdCBvYmplY3QsIGFzIHBlciBwcmV2
aW91cwogICAgIC8vIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIGluIG9yZGVyIHRvIHByb3Blcmx5
IGRlY2lkZSB3aGV0aGVyIHRvCiAgICAgLy8gZW1pdCBzb21lIHNpZ25hbHMgb3Igbm90LgotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG9sZExp
c3RPYmplY3Q7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0Pj4gb2xkRm9jdXNlZE9iamVjdDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVm
UHRyPEFYQ29yZU9iamVjdD4+IG9sZExpc3RPYmplY3Q7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvbGRGb2N1c2VkT2JqZWN0OwogCiAgICAgLy8gT25s
eSBsaXN0IGJveGVzIGFuZCBtZW51IGxpc3RzIHN1cHBvcnRlZCBzbyBmYXIuCiAgICAgaWYgKCFv
YmplY3QgfHwgIShvYmplY3QtPmlzTGlzdEJveCgpIHx8IG9iamVjdC0+aXNNZW51TGlzdCgpKSkK
QEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNo
YW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQm
IHNlbGVjdCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqbm9kZSk7CiAgICAgaW50IGNo
YW5nZWRJdGVtSW5kZXggPSBzZWxlY3QuYWN0aXZlU2VsZWN0aW9uU3RhcnRMaXN0SW5kZXgoKTsK
IAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPYmplY3QgPSBnZXRMaXN0T2JqZWN0KG9i
amVjdCk7CisgICAgQVhDb3JlT2JqZWN0KiBsaXN0T2JqZWN0ID0gZ2V0TGlzdE9iamVjdChvYmpl
Y3QpOwogICAgIGlmICghbGlzdE9iamVjdCkgewogICAgICAgICBvbGRMaXN0T2JqZWN0LmdldCgp
ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2
b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCkKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGl0ZW1zID0gbGlzdE9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICBpZiAoY2hhbmdl
ZEl0ZW1JbmRleCA8IDAgfHwgY2hhbmdlZEl0ZW1JbmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+KGl0
ZW1zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBp
dGVtID0gaXRlbXMuYXQoY2hhbmdlZEl0ZW1JbmRleCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0
KiBpdGVtID0gaXRlbXMuYXQoY2hhbmdlZEl0ZW1JbmRleCkuZ2V0KCk7CiAKICAgICAvLyBFbnN1
cmUgdGhlIGN1cnJlbnQgbGlzdCBvYmplY3QgaXMgdGhlIHNhbWUgdGhhbiB0aGUgb2xkIG9uZSBz
bwogICAgIC8vIGZ1cnRoZXIgY29tcGFyaXNvbnMgbWFrZSBzZW5zZS4gT3RoZXJ3aXNlLCBqdXN0
IHJlc2V0CkBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxl
Y3Rpb25DaGFuZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIG9sZEZvY3VzZWRP
YmplY3QuZ2V0KCkgPSBpdGVtOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBWE5vdGlmaWNh
dGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlm
aWNhdGlvbihBWENvcmVPYmplY3QqIGNvcmVPYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbikKIHsKICAgICBhdXRvKiBheE9iamVjdCA9IEFUS19PQkpFQ1QoY29yZU9iamVjdC0+d3Jh
cHBlcigpKTsKICAgICBpZiAoIWF4T2JqZWN0KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcmVPYmplY3QsIEFYCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBWEFjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkOgotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogZGVzY2VuZGFu
dCA9IGNvcmVPYmplY3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKKyAgICAgICAgaWYgKEFYQ29yZU9i
amVjdCogZGVzY2VuZGFudCA9IGNvcmVPYmplY3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKICAgICAg
ICAgICAgIHBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQobnVsbHB0ciwgZGVz
Y2VuZGFudC0+bm9kZSgpKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqZQogICAgIGlmICghb2JqZWN0IHx8IHRleHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmpl
Y3QgPSBvYmplY3QtPmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSA/IG9iamVjdCA6IG9iamVjdC0+
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRPYmplY3Qg
PSBvYmplY3QtPmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSA/IG9iamVjdCA6IG9iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnRPYmplY3QpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlLmNwcAppbmRleCAxMmFlNDM1YmQxNzFlY2Y2ZTE5NDIzZTYwYjRhYTViNTE5
NDg4MDE5Li5kMzJjODIyYWUxYzQ1MjE5NjkwNmZiZmRhYWUxOTk4NDE2NzUwZDAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
LmNwcApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgc3RhdGljIGJvb2wgcm9sZUlzVGV4dFR5cGUoQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25Hcm91cDsKIH0KIAotc3RhdGljIGd1aW50MTYgaW50ZXJmYWNlTWFza0Zy
b21PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKK3N0YXRpYyBndWludDE2
IGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KEFYQ29yZU9iamVjdCogY29yZU9iamVjdCkKIHsKICAg
ICBndWludDE2IGludGVyZmFjZU1hc2sgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3Bw
CmluZGV4IDcyNDUwMjQxYTQ2YzQ4M2I3YWZlZWI2Y2EzMTg0MWQ4N2MwYmUyMDEuLmIwZjczZTZh
NGZhYTBjZmNlYzgxNDczYjY4NTU1MzA5N2U0MDFlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxp
bmsuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIGdpbnQgcmFuZ2VMZW5ndGhGb3JPYmpl
Y3QoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqLCBSYW5nZSogcmFuZ2UpCiAKICAgICAvLyBDaGVj
ayB3aGV0aGVyIHRoZSBjdXJyZW50IGh5cGVybGluayBiZWxvbmdzIHRvIGEgbGlzdCBpdGVtLgog
ICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsZW5ndGggb2YgdGhlIGl0ZW0n
cyBtYXJrZXIKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBvYmoucGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBvYmoucGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkgfHwgIXBhcmVudC0+aXNMaXN0SXRlbSgpKQogICAgICAgICByZXR1
cm4gYmFzZUxlbmd0aDsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBnaW50IHJhbmdlTGVu
Z3RoRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iaiwgUmFuZ2UqIHJhbmdlKQogICAg
IC8vIFRlY2hub2xvZ2llcywgd2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIG1lYXN1cmUgdGhlaXIg
bGVuZ3RoCiAgICAgLy8gZm9yIHRob3NlIGNhc2VzIHdoZW4gaXQncyBuZWVkZWQgdG8gdGFrZSBp
dCBpbnRvIGFjY291bnQKICAgICAvLyBzZXBhcmF0ZWx5IChhcyBpbiBnZXRBY2Nlc3NpYmlsaXR5
T2JqZWN0Rm9yT2Zmc2V0KQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hcmtlck9iaiA9IHBh
cmVudC0+Zmlyc3RDaGlsZCgpOworICAgIEFYQ29yZU9iamVjdCogbWFya2VyT2JqID0gcGFyZW50
LT5maXJzdENoaWxkKCk7CiAgICAgaWYgKCFtYXJrZXJPYmopCiAgICAgICAgIHJldHVybiBiYXNl
TGVuZ3RoOwogCkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIHJldHVyblZh
bElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5o
eXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIGF1dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3Np
YmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBl
cmxpbmtJbXBsKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRVbmlnbm9yZWQgPSBj
b3JlT2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFy
ZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBp
ZiAoIXBhcmVudFVuaWdub3JlZCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTIwNiw3ICsyMDYs
NyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgoQXRr
SHlwZXJsaW5rKiBsaW5rKQogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxp
ZChhY2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsLCAwKTsKIAogICAgIGF1
dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChh
Y2Nlc3NpYmxlSHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRVbmlnbm9yZWQgPSBjb3JlT2JqZWN0LnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5w
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudFVuaWdub3JlZCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVydGV4dC5j
cHAKaW5kZXggOGEzMzgzZDNlNDFmZmY2MTZhZjRjZWY4ZDNiZDMzODMzYTZiZGZjMC4uYTc4ZDg4
MzJhYTRkM2RlYzM4OWNlNzllN2MxYzZlY2FjZGYwNmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVydGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIEF0a0h5
cGVybGluayogd2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldExpbmsoQXRrSHlwZXJ0ZXh0KiBo
eXBlcnRleHQsIGcKIAogICAgIGdpbnQgY3VycmVudExpbmsgPSAtMTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZUNoaWxkID0gY2hpbGQuZ2V0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY29yZUNoaWxk
ID0gY2hpbGQuZ2V0KCk7CiAgICAgICAgIGlmICghY29yZUNoaWxkLT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpIHsKICAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gY29yZUNoaWxkLT53cmFw
cGVyKCk7CiAgICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFBVEtfSVNfSFlQRVJMSU5LX0lN
UEwoYXhPYmplY3QpKQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3Np
YmxlSHlwZXJ0ZXh0R2V0TkxpbmtzKEF0a0h5cGVydGV4dCogaHlwZXJ0ZXh0KQogICAgIGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRy
ZW4gPSBjb3JlKGh5cGVydGV4dCktPmNoaWxkcmVuKCk7CiAgICAgZ2ludCBsaW5rc0ZvdW5kID0g
MDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKLSAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZUNoaWxkID0gY2hpbGQuZ2V0KCk7CisgICAgICAgIEFYQ29y
ZU9iamVjdCogY29yZUNoaWxkID0gY2hpbGQuZ2V0KCk7CiAgICAgICAgIGlmICghY29yZUNoaWxk
LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0
ID0gY29yZUNoaWxkLT53cmFwcGVyKCk7CiAgICAgICAgICAgICBpZiAoYXhPYmplY3QgJiYgQVRL
X0lTX0hZUEVSTElOS19JTVBMKGF4T2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVNlbGVjdGlvbi5jcHAKaW5kZXggMTdiOTgwNjRhZGE2YzMwMjBiMDE4YTcyYWY5ODRiY2Zm
ZDY4YmVkZi4uNmVhNTcwODEzN2I0NTdhOGY1MzM1YmRmZjVjYjMyYjdkN2FmZWM5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVNlbGVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrU2VsZWN0aW9uKiBzZWxlY3Rp
b24pCiAgICAgcmV0dXJuICZ3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChX
RUJLSVRfQUNDRVNTSUJMRShzZWxlY3Rpb24pKTsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVTZWxlY3Rpb24pCitzdGF0aWMgQVhDb3JlT2JqZWN0KiBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVj
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uKQogewogICAgIC8vIE9ubHkg
bGlzdCBib3hlcyBhbmQgbWVudSBsaXN0cyBzdXBwb3J0ZWQgc28gZmFyLgogICAgIGlmICghY29y
ZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgJiYgIWNvcmVTZWxlY3Rpb24tPmlzTWVudUxpc3QoKSkK
QEAgLTY3LDIxICs2NywyMSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdE9iamVj
dEZvckNvcmVTZWxlY3Rpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZQogICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKKyAgICBBWENvcmVP
YmplY3QqIGxpc3RPYmplY3QgPSBjaGlsZHJlbi5hdCgwKS5nZXQoKTsKICAgICBpZiAoIWxpc3RP
YmplY3QtPmlzTWVudUxpc3RQb3B1cCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IHJldHVybiBsaXN0T2JqZWN0OwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0
aW9uRnJvbUxpc3QoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCitzdGF0aWMg
QVhDb3JlT2JqZWN0KiBvcHRpb25Gcm9tTGlzdChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2lu
dCBpbmRleCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29y
ZShzZWxlY3Rpb24pOwogICAgIGlmICghY29yZVNlbGVjdGlvbiB8fCBpbmRleCA8IDApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gTmVlZCB0byBzZWxlY3QgdGhlIHByb3BlciBs
aXN0IG9iamVjdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlzdE9iamVjdCA9IGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKGNvcmVTZWxlY3Rpb24p
OworICAgIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdCA9IGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0
aW9uKGNvcmVTZWxlY3Rpb24pOwogICAgIGlmICghbGlzdE9iamVjdCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9wdGlvbkZyb21MaXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9u
RnJvbVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKK3N0YXRp
YyBBWENvcmVPYmplY3QqIG9wdGlvbkZyb21TZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rp
b24sIGdpbnQgaW5kZXgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlv
biA9IGNvcmUoc2VsZWN0aW9uKTsKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgIWNvcmVTZWxl
Y3Rpb24tPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIHx8IGluZGV4IDwgMCkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFk
ZFNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZwogICAgIGlmICghY29yZVNlbGVj
dGlvbikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b3B0aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CisgICAgQVhDb3JlT2Jq
ZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGluZGV4KTsKICAgICBpZiAo
b3B0aW9uICYmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8fCBjb3JlU2VsZWN0aW9uLT5p
c01lbnVMaXN0KCkpKSB7CiAgICAgICAgIG9wdGlvbi0+c2V0U2VsZWN0ZWQodHJ1ZSk7CiAgICAg
ICAgIHJldHVybiBvcHRpb24tPmlzU2VsZWN0ZWQoKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0
aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKEF0a1Nl
bGVjdGlvbiogc2VsZWN0aW9uLAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19TRUxFQ1RJ
T04oc2VsZWN0aW9uKSwgbnVsbHB0cik7CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbiksIG51bGxwdHIpOwogCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rp
b24sIGluZGV4KTsKKyAgICBBWENvcmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rp
b24oc2VsZWN0aW9uLCBpbmRleCk7CiAgICAgaWYgKG9wdGlvbikgewogICAgICAgICBhdXRvKiBj
aGlsZCA9IG9wdGlvbi0+d3JhcHBlcigpOwogICAgICAgICBnX29iamVjdF9yZWYoY2hpbGQpOwpA
QCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0
aW9uSXNDaGlsZFNlbGVjdGVkKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uCiAgICAgaWYgKCFjb3Jl
U2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGluZGV4KTsKKyAgICBBWENv
cmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaW5kZXgpOwogICAg
IGlmIChvcHRpb24gJiYgKGNvcmVTZWxlY3Rpb24tPmlzTGlzdEJveCgpIHx8IGNvcmVTZWxlY3Rp
b24tPmlzTWVudUxpc3QoKSkpCiAgICAgICAgIHJldHVybiBvcHRpb24tPmlzU2VsZWN0ZWQoKTsK
IApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlU2Vs
ZWN0aW9uUmVtb3ZlU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uCiAgICAgaWYgKCFj
b3JlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tU2VsZWN0aW9uKHNlbGVjdGlvbiwgaW5kZXgpOwor
ICAgIEFYQ29yZU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24s
IGluZGV4KTsKICAgICBpZiAob3B0aW9uICYmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8
fCBjb3JlU2VsZWN0aW9uLT5pc01lbnVMaXN0KCkpKSB7CiAgICAgICAgIG9wdGlvbi0+c2V0U2Vs
ZWN0ZWQoZmFsc2UpOwogICAgICAgICByZXR1cm4gIW9wdGlvbi0+aXNTZWxlY3RlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDQ5NmUyNjIyODg1Yzc4ZDUwNWJl
MDQxOGNmZmY0YzZkM2Y5MGNkMDEuLmIyNzE1YzdjNTNjYWU5ZDA0YWYzZTRjMGY5M2FmOTc1ZjYz
ZGI1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAgLTMzNCw3ICsz
MzQsNyBAQCBzdGF0aWMgSW50UmVjdCB0ZXh0RXh0ZW50cyhBdGtUZXh0KiB0ZXh0LCBnaW50IHN0
YXJ0T2Zmc2V0LCBnaW50IGxlbmd0aCwgQXRrQ29vcgogICAgIHJldHVybiBleHRlbnRzOwogfQog
Ci1zdGF0aWMgaW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmplY3QpCitzdGF0aWMgaW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRl
bShjb25zdCBBWENvcmVPYmplY3QqIG9iamVjdCkKIHsKICAgICAvLyBXZSBuZWVkIHRvIGFkanVz
dCB0aGUgb2Zmc2V0cyBmb3IgdGhlIGxpc3QgaXRlbSBtYXJrZXIgaW4KICAgICAvLyBMZWZ0LVRv
LVJpZ2h0IHRleHQsIHNpbmNlIHdlIGV4cG9zZSBpdCB0b2dldGhlciB3aXRoIHRoZSB0ZXh0LgpA
QCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBpbnQgb2Zmc2V0QWRqdXN0bWVudEZvckxpc3RJdGVt
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gMDsKIH0KIAot
c3RhdGljIGludCB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBpbnQgb2Zmc2V0KQorc3RhdGljIGludCB3ZWJDb3JlT2Zmc2V0VG9BdGtP
ZmZzZXQoY29uc3QgQVhDb3JlT2JqZWN0KiBvYmplY3QsIGludCBvZmZzZXQpCiB7CiAgICAgaWYg
KCFvYmplY3QtPmlzTGlzdEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKQEAgLTk5MCw3
ICs5OTAsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0
KEF0a1RleHQqIHRleHQpCiAKICAgICAvLyBjb3JlT2JqZWN0IGlzIHRoZSB1bmlnbm9yZWQgb2Jq
ZWN0IHdob3NlIG9mZnNldCB0aGUgY2FsbGVyIGlzIHJlcXVlc3RpbmcuCiAgICAgLy8gZm9jdXNl
ZE9iamVjdCBpcyB0aGUgb2JqZWN0IHdpdGggdGhlIGNhcmV0LiBJdCBpcyBsaWtlbHkgaWdub3Jl
ZCAtLSB1bmxlc3MgaXQncyBhIGxpbmsuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9i
amVjdCA9IGNvcmUodGV4dCk7CisgICAgQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0
ZXh0KTsKICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCmluZGV4IGEzYjg3MWI0NGNh
MDBhNmEwNzU2Yjc3ZGJjMjFkZjU0YmNkYWMzZDkuLjU2MzkyYzBiZDgzZDFhMmE3Y2I3NmE3NTRi
OWViODgzZjIwY2ZmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBi
b29sIHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0LCBWaXNpYmxlU2VsZWN0aW9uJgogICAgICAgICAmJiAoJnJhbmdlLT5zdGFydENvbnRhaW5l
cigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5zdGFydE9mZnNldCgpICE9IGxhc3RPZmZz
ZXQpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZz
ZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcmVmZXJlbmNlT2JqZWN0LCBpbnQmIG9m
ZnNldCkKK0FYQ29yZU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVk
KEFYQ29yZU9iamVjdCogcmVmZXJlbmNlT2JqZWN0LCBpbnQmIG9mZnNldCkKIHsKICAgICAvLyBJ
bmRpY2F0aW9uIHRoYXQgc29tZXRoaW5nIGJvZ3VzIGhhcyB0cmFuc3BpcmVkLgogICAgIG9mZnNl
dCA9IC0xOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZv
Y3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gTG9vayBmb3IgdGhlIGFjdHVhbCAobm90IGln
bm9yaW5nIGFjY2Vzc2liaWxpdHkpIHNlbGVjdGVkIG9iamVjdC4KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZvY3VzZWRPYmplY3Q7CisgICAgQVhDb3Jl
T2JqZWN0KiBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZvY3VzZWRPYmplY3Q7CiAgICAgaWYgKGZp
cnN0VW5pZ25vcmVkUGFyZW50LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIGZp
cnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpOwogICAgIGlmICghZmlyc3RVbmlnbm9yZWRQYXJlbnQpCkBAIC0yMjQsNyArMjI0
LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5p
Z25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHIKICAgICAgICAgLy8gYmVjYXVzZSB3ZSB3YW50
IGl0IHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBvYmplY3Qgb2YKICAgICAgICAgLy8gcmVmZXJlbmNl
LCBub3QganVzdCB0byB0aGUgZm9jdXNlZCBvYmplY3QgKHdoaWNoIGNvdWxkIGhhdmUKICAgICAg
ICAgLy8gcHJldmlvdXMgc2libGluZ3Mgd2hpY2ggc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3Vu
dCB0b28pLgotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheEZpcnN0Q2hpbGQgPSByZWZl
cmVuY2VPYmplY3QtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBheEZpcnN0
Q2hpbGQgPSByZWZlcmVuY2VPYmplY3QtPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgaWYgKGF4Rmly
c3RDaGlsZCkKICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IGF4Rmlyc3RDaGlsZC0+bm9kZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVVdGlsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlVXRpbC5oCmluZGV4IGY2YWM3NjQ2NTFjNDgyYmViZTUyZmY2NGFiMDAxMWM0
NzlhZWYzZmMuLmEyZmFjYWY4NTI4ZGE0NzVjZjlmN2Q1N2ZmNDFmODczYzQ2Mzg1OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVV
dGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBWENvcmVPYmplY3Q7CiBjbGFzcyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFZpc2libGVTZWxlY3Rp
b247CkBAIC02Niw2ICs2Nyw2IEBAIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiBib29sIHNlbGVjdGlvbkJlbG9uZ3NUb09i
amVjdChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiYpOwogCi1XZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5k
Q2FyZXRPZmZzZXRVbmlnbm9yZWQoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIGludCYg
b2Zmc2V0KTsKK1dlYkNvcmU6OkFYQ29yZU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zm
c2V0VW5pZ25vcmVkKFdlYkNvcmU6OkFYQ29yZU9iamVjdCosIGludCYgb2Zmc2V0KTsKIAogI2Vu
ZGlmIC8vIEVOQUJMRShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggNjg3ZjFhZWRmNzg4MTZh
ZTMxNWFkODZmZGYxZTdjNzNmOWQwNWVhYi4uZGY1OGVmYTc2NTNmNjgwNTMxYzhjZTkzOTM5ZTdi
MDY2MzE3MzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QVhPYmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9BWE9iamVjdENhY2hlSU9TLm1tCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRX
cmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9u
IG5vdGlmaWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0
aW9uKEFYQ29yZU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAg
ICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmluZGV4IDRk
ZTM5MjQwMmM5NTg3NWI2ZDVkYWNlY2Q5NmIyMWFlMDk1MDQ3MjIuLjdlMDVhY2ZmZmM5YWVhN2Zk
MjRhZjY0OWQ5N2E3ZDQ4YTY5MmRhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpAQCAtNDcsNyAr
NDcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbGVVcGxvYWRCdXR0b25SZXR1cm5z
VmFsdWVJblRpdGxlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQo
QVhDb3JlT2JqZWN0KikKIHsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KaW5kZXggYmNjZjM3ZTRmNGI2MmQ0MDkxMzE0ZGM3NmRhNWFkN2RlZGM4NjM5Ni4u
ODdiZmI5ZTE5MzA4ZGFlMGNhYTA5OGRhNjY5YWM5NTIwZWNlMjgzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihB
Y2Nlc3NpYmlsaXR5TwogICAgICAgICBpZiAoW3dyYXBwZXIgaXNBdHRhY2htZW50XSAmJiAhW1t3
cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFY
Q29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0gb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKICAgICAgICAgaWYgKCFwYXJlbnRPYmplY3QpCiAgICAgICAgICAgICBicmVhazsKIApAQCAt
Mzg4LDcgKzM4OCw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNz
aWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKEFjY2Vzc2liaWxpdHlPCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgCiAgICAgLy8gVHJ5IGEgZnV6enkgaGl0IHRlc3QgZmlyc3QgdG8gZmluZCBhbiBh
Y2Nlc3NpYmxlIGVsZW1lbnQuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSAqYXhP
YmplY3QgPSBudWxscHRyOworICAgIEFYQ29yZU9iamVjdCAqYXhPYmplY3QgPSBudWxscHRyOwog
ICAgIHsKICAgICAgICAgQVhBdHRyaWJ1dGVDYWNoZUVuYWJsZXIgZW5hYmxlQ2FjaGUobV9vYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKSk7CiAgICAgICAgIGF4T2JqZWN0ID0gbV9vYmplY3QtPmFjY2Vz
c2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7CkBAIC0xMjQwLDcgKzEyNDAsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwg
TlNTdHJpbmcgKnN0cmluZykKICAgICAKICAgICB1bnNpZ25lZCBjb2x1bW5SYW5nZUluZGV4ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbHVtblJhbmdlLmZpcnN0KTsKICAgICBpZiAoY29sdW1u
UmFuZ2VJbmRleCA8IGNvbHVtbkhlYWRlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBjb2x1bW5IZWFkZXIgPSBjb2x1bW5IZWFkZXJzW2NvbHVtblJhbmdl
LmZpcnN0XTsKKyAgICAgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gY29sdW1uSGVhZGVyID0gY29s
dW1uSGVhZGVyc1tjb2x1bW5SYW5nZS5maXJzdF07CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKiB3cmFwcGVyID0gY29sdW1uSGVhZGVyLT53cmFwcGVyKCk7CiAgICAgICAgIGlm
ICh3cmFwcGVyKQogICAgICAgICAgICAgW2hlYWRlcnMgYWRkT2JqZWN0OndyYXBwZXJdOwpAQCAt
MTY2NCw3ICsxNjY0LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRh
YmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgQVhBdHRyaWJ1dGVDYWNo
ZUVuYWJsZXIgZW5hYmxlQ2FjaGUobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSk7CiAgICAgCiAg
ICAgLy8gQXMgbG9uZyBhcyB0aGVyZSdzIGEgcGFyZW50IHdyYXBwZXIsIHRoYXQncyB0aGUgY29y
cmVjdCBjaGFpbiB0byBjbGltYi4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBt
X29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IAorICAgIEFYQ29yZU9iamVjdCogcGFy
ZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmIChwYXJlbnQp
CiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKIApAQCAtMTgwMCw3ICsxODAwLDcg
QEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1
bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBJZiB0
aGlzIHN0YXRpYyB0ZXh0IGluc2lkZSBvZiBhIGxpbmssIGl0IHNob3VsZCB1c2UgaXRzIHBhcmVu
dCdzIGxpbmtlZCBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnQgPSBt
X29iamVjdDsKKyAgICBBWENvcmVPYmplY3QqIGVsZW1lbnQgPSBtX29iamVjdDsKICAgICBpZiAo
bV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0ICYm
IG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+aXNMaW5rKCkpCiAgICAgICAgIGVs
ZW1lbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IGQ4ZGJiOWYyYzk3YzhiY2ZkZjc4MTU5MzNhNGFlMTli
ZWZmMDdkYjIuLjc5MzkyOTk1MWRkMmRjNmE0MDFjNDU4MjY2ODZhZWUyMzlhNzNiMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcApAQCAtOTgsMTkgKzk4LDE5IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRlbnRpZmllcihBWElzb2xhdGVkVHJlZUlEIHRyZWVJ
ZGVudGlmaWVyKQogICAgICAgICBtX2NhY2hlZFRyZWUgPSB0cmVlOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5vZGU6OmZvY3VzZWRVSUVsZW1lbnQo
KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkVHJlZU5vZGU6OmZvY3VzZWRVSUVsZW1l
bnQoKSBjb25zdAogewogICAgIGlmIChhdXRvIGZvY3VzZWRFbGVtZW50ID0gdHJlZSgpLT5mb2N1
c2VkVUlFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmb2N1c2VkRWxlbWVudC5nZXQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uq
IEFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjpwYXJlbnRPYmplY3RJbnRlcmZh
Y2VVbmlnbm9yZWQoKSBjb25zdAogewogICAgIHJldHVybiB0cmVlKCktPm5vZGVGb3JJRChwYXJl
bnQoKSkuZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0
ZWRUcmVlTm9kZTo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkVHJlZU5vZGU6OmFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIXJlbGF0aXZlRnJh
bWUoKS5jb250YWlucyhwb2ludCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZU5vZGUuaAppbmRleCA5MzRkNjNmNGE5YTIzMWU5ZjcyZjgzZTliNWJmYzQ2MGI0
NDc3NzA5Li5jMzU0NmZiZTgyNzUyZTk5ZWZhYTdlZGRmYTYyNzY3NmQ1NDJhNjBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZU5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBWElzb2xhdGVkVHJlZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiAK
LWNsYXNzIEFYSXNvbGF0ZWRUcmVlTm9kZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29sYXRlZFRyZWVO
b2RlPiB7CitjbGFzcyBBWElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMgQVhDb3JlT2Jq
ZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29sYXRlZFRyZWVOb2RlPiB7CiAK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDhfdCB7CkBAIC05
NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgQVhJc29sYXRlZFRyZWVOb2RlKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QmKTsKICAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92
ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBpc01lZGlhQ29udHJvbExhYmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01lZGlhQ29u
dHJvbExhYmVsKTsgfQpAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0lt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0ltYWdlKTsgfQogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0Zp
bGVVcGxvYWRCdXR0b24pOyB9CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c0FjY2Vzc2liaWxpdHlJZ25vcmVkKTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVHJlZSk7IH0KICAgICBib29sIGlzVHJlZUl0
ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OklzVHJlZUl0ZW0pOyB9CiAgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTY3JvbGxi
YXIpOyB9CkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZGVzY3JpcHRp
b25BdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpEZXNjcmlwdGlvbik7IH0KICAgICBTdHJpbmcgaGVscFRl
eHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIZWxwVGV4dCk7IH0KICAgICBTdHJpbmcgdGl0bGVBdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpUaXRsZSk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0
KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBBdHRyaWJ1
dGVWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGlu
dCwgdW5zaWduZWQsIGRvdWJsZSwgT3B0aW9uYWw8RmxvYXRSZWN0Pj47CiAgICAgdm9pZCBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hv
dWxkUmVtb3ZlID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggMmY3NWY5NjUwOGQwNzIxYzg0MDIwNzc0
YjIyMzMxNDc2OGY0ODZjNi4uYzlhODkzYmMzMDk5NmQ5OWZlNDVjYjFiNzIxOWUzNmFjNzNhMGZk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RD
YWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVj
dENhY2hlTWFjLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIHZvaWQgQVhQb3N0Tm90aWZp
Y2F0aW9uV2l0aFVzZXJJbmZvKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICpvYmplY3QsIE4K
ICAgICBOU0FjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKG9iamVjdCwg
bm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRp
b24gbm90aWZpY2F0aW9uKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsK
ICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXgg
NmI5NTUwMjJlZDNjZGZkZTRlZjkwYzIxYTZmNTEwMDQxZDA2NGU2Mi4uMmNkYmM3M2FiODk4YmZi
NWMzMmVlZmViNWM3ZGFiYzQ2NjIxOWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC00Myw3
ICs0Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoRnJvbVBhcmVudCgpCiAg
ICAgICAgIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChudWxscHRyKTsKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50KQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1l
bnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQpCiB7CiAgICAgaWYgKCFpc0F0dGFjaG1lbnQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
aAppbmRleCBmZmVkODU1Yzg0ZGRjOGZjMmQ5ZmQ1ZTQxZWVhZWRlYjEwNzQ3MTdlLi44ODU4YmVh
M2QwODdiMWJiNjI2NWQ3ODdmZDg4MDU4ZDcxMjYyZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UuaApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBWaXNpYmxlUG9zaXRp
b247CiAtIChCT09MKXVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsKIAogLy8gVGhpcyBjYW4gYmUg
ZWl0aGVyIGFuIEFjY2Vzc2liaWxpdHlPYmplY3Qgb3IgYW4gQVhJc29sYXRlZFRyZWVOb2RlCi0t
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKilheEJhY2tpbmdPYmplY3Q7
CistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWF4QmFja2luZ09iamVjdDsKIAogLy8gVGhlc2Ug
YXJlIHByZS1maXhlZCB3aXRoIGJhc2Ugc28gdGhhdCBBcHBLaXQgZG9lcyBub3QgZW5kIHVwIGNh
bGxpbmcgaW50byB0aGVzZSBkaXJlY3RseSAoYnlwYXNzaW5nIHNhZmV0eSBjaGVja3MpLgogLSAo
TlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eVRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IGRhZjM0ZjE1MGY1N2EzNzIyMTcxN2E2ZTBhMjJhMWFi
YmM1ZjVlNjQuLmZhODliNmFkOTgwOTNiZGY3YTE4NTdmOTY3YjA3MDEyOWRhNjI1MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTI2NCw3ICsyNjQsNyBA
QCBzdGF0aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaQogICAgIHJldHVybiBhcnJheTsKIH0KIAotc3RhdGlj
IHZvaWQgYWRkQ2hpbGRUb0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UmIGNoaWxk
LCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5KQorc3RhdGljIHZvaWQgYWRkQ2hpbGRU
b0FycmF5KEFYQ29yZU9iamVjdCYgY2hpbGQsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYXJy
YXkpCiB7CiAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKndyYXBwZXIgPSBjaGls
ZC53cmFwcGVyKCk7CiAgICAgLy8gV2Ugd2FudCB0byByZXR1cm4gdGhlIGF0dGFjaG1lbnQgdmll
dyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdHRhY2htZW50LApAQCAt
MzA2LDcgKzMwNiw3IEBAIE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkCiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICBtX29iamVjdCA9IGF4T2JqZWN0OwotICAgIF9pZGVudGlmaWVyID0gbV9vYmpl
Y3QtPmF4T2JqZWN0SUQoKTsKKyAgICBfaWRlbnRpZmllciA9IG1fb2JqZWN0LT5vYmplY3RJRCgp
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zODYsNyArMzg2LDcgQEAgTlNBcnJheSAqY29u
dmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGQKICAgICByZXR1cm4gX2F4QmFja2luZ09iamVjdC0+dGl0bGVBdHRyaWJ1dGVW
YWx1ZSgpOwogfQogCi0tIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKilh
eEJhY2tpbmdPYmplY3QKKy0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopYXhCYWNraW5nT2JqZWN0
CiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBpZiAoX0FY
VUlFbGVtZW50UmVxdWVzdFNlcnZpY2VkQnlTZWNvbmRhcnlBWFRocmVhZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAwMTUwZmNhZTdhZmQxMTU3ODU1ZTA2
NmEzNzA1NGNjNTY3ZThiNDkzLi5jNTcwOTQ5YzU2MGI1ZmExMWJjNDQzMDA5MGUyMjUzYzY5NWM4
ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjY2Nywx
NSArMjY2NywxNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgCiAgICAgICAgIC8vIFRyZWUgaXRlbSAoY2hhbmdlZCB0byBBWFJvd3MpIGNhbiBvbmx5IHJl
cG9ydCB0aGUgdHJlZSAoQVhPdXRsaW5lKSBhcyBpdHMgcGFyZW50LgogICAgICAgICBpZiAoX2F4
QmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudCA9
IF9heEJhY2tpbmdPYmplY3QtPnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpOworICAg
ICAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsKICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQpIHsKICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50LT5pc1RyZWUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+
d3JhcHBlcigpOwotICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0
SW50ZXJmYWNlVW5pZ25vcmVkKCk7CisgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5w
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJ
bnRlcmZhY2VVbmlnbm9yZWQoKTsKKyAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNraW5nT2Jq
ZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAg
ICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAKQEAgLTI4NjEsMTQgKzI4NjEsMTQgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIAogICAgICAgICAvLyBy
YWRpbyBncm91cHMgcmV0dXJuIHRoZSBzZWxlY3RlZCByYWRpbyBidXR0b24gYXMgdGhlIEFYVmFs
dWUKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1JhZGlvR3JvdXAoKSkgewotICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcmFkaW9CdXR0b24gPSBtX29iamVjdC0+c2VsZWN0ZWRSYWRp
b0J1dHRvbigpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0KiByYWRpb0J1dHRvbiA9IG1fb2Jq
ZWN0LT5zZWxlY3RlZFJhZGlvQnV0dG9uKCk7CiAgICAgICAgICAgICBpZiAoIXJhZGlvQnV0dG9u
KQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgICAgICByZXR1cm4gcmFkaW9C
dXR0b24tPndyYXBwZXIoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1fb2Jq
ZWN0LT5pc1RhYkxpc3QoKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFi
SXRlbSA9IG1fb2JqZWN0LT5zZWxlY3RlZFRhYkl0ZW0oKTsKKyAgICAgICAgICAgIEFYQ29yZU9i
amVjdCogdGFiSXRlbSA9IG1fb2JqZWN0LT5zZWxlY3RlZFRhYkl0ZW0oKTsKICAgICAgICAgICAg
IGlmICghdGFiSXRlbSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAg
cmV0dXJuIHRhYkl0ZW0tPndyYXBwZXIoKTsKQEAgLTMwNjMsNyArMzA2Myw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoY29sdW1uLmNoaWxkcmVuKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRl
XSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gY29sdW1uLmhl
YWRlck9iamVjdCgpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXIgPSBjb2x1bW4u
aGVhZGVyT2JqZWN0KCk7CiAgICAgICAgICAgICBpZiAoIWhlYWRlcikKICAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJuIGhlYWRlci0+d3JhcHBlcigpOwpAQCAt
MzE2OCw3ICszMTY4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9IGVsc2UgaWYg
KGlzPEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdz4oKm1fb2JqZWN0KSkgewotICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93PigqbV9vYmplY3QpLmRpc2Nsb3NlZEJ5Um93KCk7CisgICAgICAgICAgICBBWENvcmVPYmpl
Y3QqIHJvdyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdz4oKm1fb2JqZWN0KS5k
aXNjbG9zZWRCeVJvdygpOwogICAgICAgICAgICAgaWYgKCFyb3cpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiByb3ctPndyYXBwZXIoKTsKQEAgLTM1MTEs
NyArMzUxMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIAogICAgIF9heEJhY2tpbmdPYmplY3QtPnVwZGF0ZUNoaWxkcmVu
SWZOZWNlc3NhcnkoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBheE9iamVj
dCA9IF9heEJhY2tpbmdPYmplY3QtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50
KSk7CisgICAgQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IF9heEJhY2tpbmdPYmplY3QtPmFjY2Vz
c2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7CiAgICAgaWYgKGF4T2JqZWN0KSB7CiAg
ICAgICAgIGlmIChheE9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW2F4T2JqZWN0LT53cmFwcGVy
KCkgYXR0YWNobWVudFZpZXddKQogICAgICAgICAgICAgcmV0dXJuIFtheE9iamVjdC0+d3JhcHBl
cigpIGF0dGFjaG1lbnRWaWV3XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWNl
NWM5YTgwMTRkMTJiYTg0ZGYzNDhjN2ZmNDhlZjEyYWM0ODkyYy4uZTFlMjNhNzZhNGQ5NDZmOWVh
MjdmNjI2YTIyYjJjYzc3OGE5NGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
Q29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgpAQCAtNTMsNyArNTMsNyBAQCBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdChJbnNwZWN0b3JBdQogewogfQogCi1z
dGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShOb2Rl
JiBub2RlKQorc3RhdGljIEFYQ29yZU9iamVjdCogYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShO
b2RlJiBub2RlKQogewogICAgIGlmICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJs
ZWQoKSkKICAgICAgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwpAQCAt
NzEsNyArNzEsNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPE5vZGU+Pj4gSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRFbGVtZW50c0J5QwogICAgIFZlY3RvcjxSZWY8Tm9k
ZT4+IG5vZGVzOwogCiAgICAgZm9yIChFbGVtZW50JiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRh
bnRzKGlzPENvbnRhaW5lck5vZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2Rl
PigqY29udGFpbmVyKSA6IGRvY3VtZW50KSkgewotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9i
amVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKGVsZW1lbnQpKSB7Cisg
ICAgICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9y
Tm9kZShlbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVT
dHJpbmcoKSA9PSByb2xlKQogICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChlbGVtZW50KTsK
ICAgICAgICAgfQpAQCAtODQsMTcgKzg0LDE3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4g
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRBY3RpdmVEZXNjZW5kYW50CiB7
CiAgICAgRVJST1JfSUZfTk9fQUNUSVZFX0FVRElUKCk7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7Ci0g
ICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50ID0gYXhPYmpl
Y3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9
IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICAgICAgaWYgKEFYQ29yZU9i
amVjdCogYWN0aXZlRGVzY2VuZGFudCA9IGF4T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gYWN0aXZlRGVzY2VuZGFudC0+bm9kZSgpOwogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgdm9pZCBhZGRDaGlsZHJlbihBY2Nlc3NpYmls
aXR5T2JqZWN0JiBwYXJlbnRPYmplY3QsIFZlY3RvcjxSZWZQdHI8Tm9kZT4+JiBjaGlsZE5vZGVz
KQorc3RhdGljIHZvaWQgYWRkQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBwYXJlbnRPYmplY3QsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+JiBjaGlsZE5vZGVzKQogewotICAgIGZvciAoY29uc3QgUmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBjaGlsZE9iamVjdCA6IHBhcmVudE9iamVjdC5jaGlsZHJl
bigpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZE9iamVjdCA6IHBhcmVudE9iamVjdC5j
aGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChOb2RlKiBjaGlsZE5vZGUgPSBjaGlsZE9iamVjdC0+
bm9kZSgpKQogICAgICAgICAgICAgY2hpbGROb2Rlcy5hcHBlbmQoY2hpbGROb2RlKTsKICAgICAg
ICAgZWxzZQpAQCAtMTA4LDcgKzEwOCw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxS
ZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAKICAg
ICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2Rl
KSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0
Rm9yTm9kZShub2RlKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBjaGlsZE5vZGVz
OwogICAgICAgICBhZGRDaGlsZHJlbigqYXhPYmplY3QsIGNoaWxkTm9kZXMpOwogICAgICAgICBy
ZXN1bHQgPSBXVEZNb3ZlKGNoaWxkTm9kZXMpOwpAQCAtMTIzLDEwICsxMjMsMTAgQEAgRXhjZXB0
aW9uT3I8T3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRl
ZFByb3BlcnRpZXM+PiBJbnMKIAogICAgIE9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdDo6Q29tcHV0ZWRQcm9wZXJ0aWVzPiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUp
KSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RG
b3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIENvbXB1dGVkUHJvcGVydGllcyBjb21wdXRlZFByb3Bl
cnRpZXM7CiAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0
OworICAgICAgICBBWENvcmVPYmplY3QqIGN1cnJlbnQgPSBheE9iamVjdDsKICAgICAgICAgd2hp
bGUgKGN1cnJlbnQgJiYgKCFjb21wdXRlZFByb3BlcnRpZXMuYnVzeSB8fCAhY29tcHV0ZWRQcm9w
ZXJ0aWVzLmJ1c3kudmFsdWUoKSkpIHsKICAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVydGllcy5i
dXN5ID0gY3VycmVudC0+aXNCdXN5KCk7CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+
cGFyZW50T2JqZWN0KCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8
VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmcKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JO
b2RlKG5vZGUpKSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxp
dHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNv
bnRyb2xsZWROb2RlczsKIAogICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGNvbnRyb2xsZWRFbGVt
ZW50czsKQEAgLTI2OSw3ICsyNjksNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVm
UHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAg
T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkp
IHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZv
ck5vZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gZmxvd2VkTm9kZXM7
CiAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBmbG93ZWRFbGVtZW50czsKQEAgLTI4OSw3ICsy
ODksNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0TW91c2VFdmVudE5vZGUoTgogewogICAgIEVSUk9SX0lGX05PX0FDVElW
RV9BVURJVCgpOwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNj
ZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4
T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBpZiAo
aXM8QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q+KGF4T2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdD4oYXhPYmplY3QpLT5tb3VzZUJ1dHRv
bkxpc3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJSZXN1bHRGaWx0ZXI6OkluY2x1ZGVCb2R5RWxl
bWVudCk7CiAgICAgfQpAQCAtMzAzLDcgKzMwMyw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpn
CiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9k
ZShub2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBpZiAoYXhPYmplY3QtPnN1cHBvcnRzQVJJ
QU93bnMoKSkgewogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gb3duZWROb2RlczsK
IApAQCAtMzI1LDggKzMyNSw4IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRQYXJlbnROb2RlKE5vZGUmCiB7CiAgICAgRVJS
T1JfSUZfTk9fQUNUSVZFX0FVRElUKCk7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCog
YXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7Ci0gICAgICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCkpCisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3Np
YmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIHBh
cmVudE9iamVjdCA9IGF4T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBwYXJlbnRPYmplY3QtPm5vZGUoKTsKICAgICB9CiAKQEAgLTMzOSwxMiArMzM5
LDEyIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVm
UHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChBWENvcmVP
YmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAg
ICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBzZWxlY3RlZENoaWxkTm9kZXM7CiAKLSAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVk
Q2hpbGRyZW47CisgICAgICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIHNlbGVjdGVkQ2hpbGRyZW47CiAgICAgICAgIGF4T2JqZWN0LT5zZWxlY3RlZENoaWxkcmVu
KHNlbGVjdGVkQ2hpbGRyZW4pOwotICAgICAgICBmb3IgKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4pIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBzZWxlY3RlZENoaWxkT2JqZWN0IDogc2VsZWN0ZWRDaGlsZHJlbikgewogICAg
ICAgICAgICAgaWYgKE5vZGUqIHNlbGVjdGVkQ2hpbGROb2RlID0gc2VsZWN0ZWRDaGlsZE9iamVj
dC0+bm9kZSgpKQogICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2Rlcy5hcHBlbmQoc2Vs
ZWN0ZWRDaGlsZE5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDYwNGRiNTJkOTY4MTZk
Nzg5YWMwYjE2NThiYTlmODM2YTA1OTk3M2EuLjNlYWQxMzVhZDM0NGE1ZTJhMWRjMzZlZmMwNGU3
NDQxNGU3MTdmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRPYmplY3RGb3JFdgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiBh
eE9iamVjdCwgSlNPTjo6QXJyYXlPZjxpbnQ+JiBjaGlsZE5vZGVJZHMpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50Ojpwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhP
YmplY3QsIEpTT046OkFycmF5T2Y8aW50PiYgY2hpbGROb2RlSWRzKQogewogICAgIGNvbnN0IGF1
dG8mIGNoaWxkcmVuID0gYXhPYmplY3QuY2hpbGRyZW4oKTsKICAgICBpZiAoIWNoaWxkcmVuLnNp
emUoKSkKQEAgLTE4MjQsMTMgKzE4MjQsMTMgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAg
ICB1bnNpZ25lZCBsZXZlbCA9IDA7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogYXhPYmplY3RD
YWNoZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpKSB7Ci0gICAgICAgIGlmIChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRl
KG5vZGUpKSB7CisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYXhPYmplY3RD
YWNoZS0+Z2V0T3JDcmVhdGUobm9kZSkpIHsKIAotICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQgPSBheE9iamVjdC0+YWN0aXZlRGVzY2VuZGFudCgp
KQorICAgICAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCA9IGF4T2Jq
ZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICAgICAgYWN0aXZlRGVzY2VuZGFu
dE5vZGUgPSBhY3RpdmVEZXNjZW5kYW50LT5ub2RlKCk7CiAKICAgICAgICAgICAgIC8vIEFuIEFY
IG9iamVjdCBpcyAiYnVzeSIgaWYgaXQgb3IgYW55IGFuY2VzdG9yIGhhcyBhcmlhLWJ1c3k9InRy
dWUiIHNldC4KLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGN1cnJlbnQgPSBheE9i
amVjdDsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0OwogICAg
ICAgICAgICAgd2hpbGUgKCFidXN5ICYmIGN1cnJlbnQpIHsKICAgICAgICAgICAgICAgICBidXN5
ID0gY3VycmVudC0+aXNCdXN5KCk7CiAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQt
PnBhcmVudE9iamVjdCgpOwpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50
OjpidWkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBheE9iamVjdC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCkpCisgICAgICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBwYXJlbnRPYmpl
Y3QgPSBheE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpCiAgICAgICAgICAgICAgICAg
cGFyZW50Tm9kZSA9IHBhcmVudE9iamVjdC0+bm9kZSgpOwogCiAgICAgICAgICAgICBzdXBwb3J0
c1ByZXNzZWQgPSBheE9iamVjdC0+cHJlc3NlZElzUHJlc2VudCgpOwpAQCAtMTk4OCw3ICsxOTg4
LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgIHJvbGUgPSBheE9iamVj
dC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgICAgICAgICBzZWxlY3RlZCA9IGF4T2JqZWN0
LT5pc1NlbGVjdGVkKCk7CiAKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOworICAgICAgICAgICAgQVhD
b3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsK
ICAgICAgICAgICAgIGF4T2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4p
OwogICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVJZHMgPSBKU09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5oCmluZGV4IGNiN2JlYWExM2FjMzU0ZTk0ZjgwN2I1YjgzNjU5MjUzMmM5OWQ0YjUuLmQ5
MTdlNTAyMTc5MTQ1YzgwMGI1MjA2OGQ1ZjI1MzU2NmZmYzIxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTUyLDcg
KzUyLDcgQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OworY2xhc3MgQVhDb3JlT2JqZWN0OwogY2xhc3MgQ2hhcmFjdGVy
RGF0YTsKIGNsYXNzIERPTUVkaXRvcjsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjI1LDcgKzIyNSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQm
LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lciYsIGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYsIGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgYm9vbCBoYXNCcmVha3BvaW50
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKik7Ci0g
ICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3Qm
LCBKU09OOjpBcnJheU9mPGludD4mKTsKKyAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW4oQVhDb3JlT2JqZWN0JiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CiAgICAgCiAgICAgTm9k
ZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICBOb2RlKiBub2RlRm9yT2Jq
ZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CmluZGV4IDI0NGU1Yjk1NDhmZmUzOWFhNThjYzNlZjgxOWU3NmJiY2M1MjkyNzcuLmI4ZWFlZDkz
ZjZjMjBkYWRlYTI3NzY3NTY0Mjc5OWRkNzQ2ZjkyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAjaW5jbHVkZSAiV2ViUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJXZWJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2Fj
aGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vzc2liaWxpdHlPYmplY3QuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQqIFdL
QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiAgICAgCiAg
ICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwogCi0gICAg
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdCA9IGNvcmUuZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAgV2ViQ29yZTo6QVhDb3JlT2JqZWN0KiBy
b290ID0gY29yZS5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKICAg
ICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiAwOwogICAgIApAQCAtMjcxLDcgKzI3MSw3IEBA
IHZvaWQqIFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYpCiAKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7
CiAKLSAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkT2JqZWN0ID0gV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UocGFnZSk7CisgICAg
V2ViQ29yZTo6QVhDb3JlT2JqZWN0KiBmb2N1c2VkT2JqZWN0ID0gV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UocGFnZSk7CiAgICAgaWYgKCFmb2N1c2VkT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gMDsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382302</attachid>
            <date>2019-10-30 06:30:04 -0700</date>
            <delta_ts>2019-10-30 07:38:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203408-20191030093003.patch</filename>
            <type>text/plain</type>
            <size>263251</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkOWFkMjljMmQzMzJh
ODMwMTAyYjIxMGRlZTllZmFmNjg3MDE5NC4uNjE0Njk4NWUxMDZjMmY0OTk3Y2Y1MWQyODFlNjQ2
ZjFjMjJmYjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxOSBAQAorMjAxOS0xMC0zMCAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJh
c2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVl
Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBuZWVkZWQgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBBWENvcmVPYmplY3QgaXMgbm93IGEgY29tbW9uIGJhc2UgY2xhc3Mg
Zm9yIGJvdGggQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQKKyAgICAgICAgQVhJc29sYXRlZFRyZWVO
b2RlLiBBbGwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSBBWENvcmVPYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBhbnkgb2YgdGhlIGRlcml2ZWQgY2xhc3Nlcy4gVGhpcyB3aWxsIGFsbG93IHRvIHNl
YW1sZXNzbHkgc3dpdGNoCisgICAgICAgIGJldHdlZW4gdXNpbmcgQVhJc29sYXRlZFRyZWVOb2Rl
IGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkIGFuZAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGluIHRoZSBtYWluIHRocmVhZCB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbworICAgICAg
ICBhbGxvd3MgZm9yIGNsZWFuZXIgY2xpZW50IGNvZGUsIGVuY2Fwc3VsYXRpbmcgdGhlIGRlY2lz
aW9uIHdoZXRoZXIKKyAgICAgICAgQVhJc29sYXRlZFRyZWVOb2RlIGNhbiByZXNwb25kIHRvIGEg
cmVxdWVzdCBvciBuZWVkIHRvIHJlc29ydCB0byBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LCBhbmQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjb21waWxlCisg
ICAgICAgIHRpbWUgZmxhZyBjaGVja3MgZm9yIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0QVhJRCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0
TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJy
ZWRDYWNoZVVwZGF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmF4Um93U3BhbldpdGhSb3dJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9t
aW5hdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb250YWluc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjpB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjppc051bGwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OlZpc2libGVQb3NpdGlvblJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjppc051bGwgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjppc051bGwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbjo6QWNjZXNzaWJpbGl0
eVRleHRPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0QVhPYmplY3RJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJ
bWFnZUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3
b3JkRmllbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNOYXRpdmVUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzUmFkaW9CdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNOYXRpdmVMaXN0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdEJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3hPcHRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNNZWRpYVRpbWVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUJhciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVCdXR0
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0lucHV0SW1hZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NsaWRlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1NsaWRlclRodW1iIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzSW5wdXRTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250cm9sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGFiZWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFi
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEYXRhVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RhYmxlQ29sdW1uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVDZWxsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRmll
bGRzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNHcm91cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FSSUFUcmVlR3JpZFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUxpc3RQb3B1
cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BpbkJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZVNwaW5CdXR0b24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGlu
QnV0dG9uUGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01vY2tPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZWRpYU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RvZ2dsZUJ1
dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RhYkxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFkaW9Hcm91cCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbWJvQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVHJlZUdy
aWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMaXN0SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDYW52YXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQ
b3BVcEJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0NvbG9yV2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwbGl0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9vbGJhciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N1bW1hcnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXND
aGVja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1NlbGVjdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRm9jdXNlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hvdmVyZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbmRldGVy
bWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTG9hZGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT2ZmU2NyZWVuIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1VudmlzaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Zpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSZXF1aXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlua2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0V4cGFuZGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25B
Y3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzQm9sZEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzSXRhbGljRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQbGFpblRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZUZvbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzU2FtZUZvbnRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNTYW1lU3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdGF0aWNUZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
YW5TZXRGb2N1c0F0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldFZhbHVl
QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5T
ZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmlidXRlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0xldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYmxlTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2YWx1ZUZv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5n
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXlvdXRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojplc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNBUklBT3ducyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBRHJvcHBpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBR3JhYmJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBUklB
R3JhYmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RDaGlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmlvdXNTaWJsaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5leHRTaWJsaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtlZFVJRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGVV
SUVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRy
b2xFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9s
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlSGFzUHJl
c2VudGF0aW9uYWxDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBUklBU3RhdGljVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4
dExlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhTGFiZWxlZEJ5QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
eHBhbmRlZFRleHRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbG9yVmFsdWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXhP
YmplY3RJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBpeGVs
U25hcHBlZEJvdW5kaW5nQm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxl
Y3RlZFRleHRSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25TdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25FbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZWxlY3RlZFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzS2V5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OndpZGdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVkVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRT
ZWxlY3RlZFJvd3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6bWFrZVJhbmdlVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtRGVmYXVsdEFjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmNyZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVjcmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhhdmVD
aGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1
YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bmVlZHNUb1VwZGF0ZUNoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGFiQ2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFu
ZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRzRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0
VmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVha3MgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdl
Rm9yTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWEJvdW5kc0Zv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ1ZhbHVl
Rm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZl
UmVnaW9uUmVsZXZhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1c3kgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlYWtBc1Byb3BlcnR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
TWF0aEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNNYXRoRnJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoRmVuY2VkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhVbmRlck92ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoUm9vdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTcXVh
cmVSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWF0aFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNl
T3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoSWRlbnRpZmllciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhU
YWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01hdGhUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUYWJsZUNlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNN
YXRoVG9rZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhS
YWRpY2FuZE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUm9vdEluZGV4T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJhdG9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGhEZW5vbWluYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoQmFzZU9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vic2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRo
RmVuY2VkT3BlblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aExpbmVUaGlja25lc3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSGlkZGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6Y2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFpblRl
eHRSYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
blJhbmdlOjpWaXNpYmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb25SYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0
dG9uR3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpkZWNyZW1l
bnRCdXR0b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkhlYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdyBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaXN0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAg
ICAgICAgKHJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtHZXRTdGFydEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRFbmRJbmRleCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJ0ZXh0R2V0TGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0Tkxp
bmtzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKToK
KyAgICAgICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24p
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVNlbGVjdGlvblJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAob2Zm
c2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKToKKyAgICAgICAgKHdlYkNvcmVPZmZzZXRUb0F0a09m
ZnNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAg
ICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IpOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVs
ZW1lbnRzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlDb250YWluZXJdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUxpbmtlZEVsZW1lbnRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAg
ICAgKGFkZENoaWxkVG9BcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBheEJhY2tpbmdPYmplY3RdKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgKiBlZGl0aW5nL2F0ay9GcmFt
ZVNlbGVjdGlvbkF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbWl0VGV4dFNlbGVjdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjptYXliZUVtaXRUZXh0Rm9jdXNDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxl
Y3Rpb25DaGFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsaXR5T2JqZWN0Rm9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRBY3RpdmVEZXNjZW5kYW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q2hpbGROb2Rlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmdldENvbnRyb2xsZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmdldEZsb3dlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TW91c2VFdmVudE5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRPd25l
ZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdDo6Z2V0UGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmdldFNlbGVjdGVkQ2hpbGROb2Rlcyk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5
UHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oOgorCiAyMDE5LTEwLTI2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgTWFpbiBpbXBsZW1lbnRhdGlvbiBmb3IgbGF6eSBpbWFnZSBsb2FkaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDg2ZTY3Y2Q0ZTA5OGMzMTkwOTYwNWRiMTY0OWI3ODE2NGIwNTFhZTQuLjI5MGY3YjYyM2ExYWM1
N2U5ODYyOTQwNjViZTMxNjg1ZDVlMWIwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTktMTAtMzAgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgorCisgICAg
ICAgIENyZWF0ZSBiYXNlIGNsYXNzIGNvbW1vbiB0byBBY2Nlc3NpYmlsaXR5T2JqZWN0IGFuZCBB
WElzb2xhdGVkVHJlZU5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDM0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcDoKKyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QpOgorICAgICAgICAoV0tB
Y2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdCk6CisKIDIwMTktMTAtMjYgIENocmlzIExvcmQgIDxj
bG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFB1dCBPZmZzY3JlZW5DYW52YXMgYmVoaW5kIGEg
YnVpbGQgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggYWFlNGQ4NjM4YjUzMDFhMGUwMzE2MGEyODNlMWIyMjg2NTRjZTgwMS4uOTdh
ZWY2YTRiODM2ZjYzODEzZTAwNWJlYzY3NDJmMWIwYjkxMWViNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAg
QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgIGZvciAoY29uc3QgYXV0byYgb2Jq
ZWN0IDogbV9vYmplY3RzLnZhbHVlcygpKSB7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2JqZWN0
LmdldCgpLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsKICAg
ICAgICAgb2JqZWN0LT5kZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURl
c3Ryb3llZCk7Ci0gICAgICAgIG9iamVjdC0+c2V0QVhPYmplY3RJRCgwKTsKKyAgICAgICAgb2Jq
ZWN0LT5zZXRPYmplY3RJRCgwKTsKICAgICB9CiB9CiAKQEAgLTMzNiwxNSArMzM2LDE1IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVu
dChIVE1MQXJlYUVsZW1lbnQqIGFyCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGF4UmVu
ZGVySW1hZ2UtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rPigqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAg
ICAgICAgIGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqY2hpbGQpLmFy
ZWFFbGVtZW50KCkgPT0gYXJlYUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0
KCk7Ci0gICAgfSAgICAKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rPihjaGlsZC5nZXQoKSk7CisgICAgfQogICAgIAogICAgIHJldHVybiBudWxs
cHRyOwogfQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNl
ZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKK0FYQ29yZU9iamVjdCogQVhPYmpl
Y3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKIHsKICAg
ICBpZiAoIWdBY2Nlc3NpYmlsaXR5RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zNTUsMTIgKzM1NSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpm
b2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogICAgIGlmIChpczxIVE1M
QXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJbWFn
ZU1hcFVJRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSk7
CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4T2Jq
ZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxOb2Rl
Kj4oZm9jdXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAgICBBWENvcmVPYmplY3Qq
IG9iaiA9IGZvY3VzZWREb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1
c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1c2VkRWxlbWVudCkgOiBmb2N1c2Vk
RG9jdW1lbnQpOwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmIChvYmotPnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpKSB7Ci0gICAgICAgIGlmIChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBkZXNjZW5kYW50ID0gb2JqLT5hY3RpdmVEZXNjZW5kYW50KCkp
CisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2ZURlc2Nl
bmRhbnQoKSkKICAgICAgICAgICAgIG9iaiA9IGRlc2NlbmRhbnQ7CiAgICAgfQogCkBAIC01NjAs
OCArNTYwLDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVh
dGUoV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBnZXRBWElEKG5ld09iai5nZXQoKSk7CiAgICAgCi0g
ICAgbV93aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3aWRnZXQsIG5ld09iai0+YXhPYmplY3RJRCgp
KTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOyAgICAK
KyAgICBtX3dpZGdldE9iamVjdE1hcHBpbmcuc2V0KHdpZGdldCwgbmV3T2JqLT5vYmplY3RJRCgp
KTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBu
ZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgcmV0
dXJuIG5ld09iai5nZXQoKTsKQEAgLTYwOCw4ICs2MDgsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgZ2V0QVhJRChu
ZXdPYmouZ2V0KCkpOwogCi0gICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2Jq
LT5heE9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCks
IG5ld09iaik7CisgICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2JqLT5vYmpl
Y3RJRCgpKTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsK
ICAgICBuZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAg
ICAgbmV3T2JqLT5zZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShuZXdPYmotPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSk7CkBAIC02MzYsOCArNjM2LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogICAg
IGdldEFYSUQobmV3T2JqLmdldCgpKTsKIAotICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQo
cmVuZGVyZXIsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09i
ai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOworICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQo
cmVuZGVyZXIsIG5ld09iai0+b2JqZWN0SUQoKSk7CisgICAgbV9vYmplY3RzLnNldChuZXdPYmot
Pm9iamVjdElEKCksIG5ld09iaik7CiAgICAgbmV3T2JqLT5pbml0KCk7CiAgICAgYXR0YWNoV3Jh
cHBlcihuZXdPYmouZ2V0KCkpOwogICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25vcmVkVmFs
dWUobmV3T2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpOwpAQCAtNzA5LDcgKzcwOSw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGUpCiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IG1fb2JqZWN0cy5zZXQob2JqLT5heE9iamVjdElEKCksIG9iaik7ICAgIAorICAgIG1fb2JqZWN0
cy5zZXQob2JqLT5vYmplY3RJRCgpLCBvYmopOwogICAgIG9iai0+aW5pdCgpOwogICAgIGF0dGFj
aFdyYXBwZXIob2JqLmdldCgpKTsKICAgICByZXR1cm4gb2JqLmdldCgpOwpAQCAtNzI2LDcgKzcy
Niw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFYSUQgYXhJRCkKIAogICAgIGRldGFj
aFdyYXBwZXIob2JqZWN0LmdldCgpLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1l
bnREZXN0cm95ZWQpOwogICAgIG9iamVjdC0+ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZTo6RWxlbWVudERlc3Ryb3llZCwgdGhpcyk7Ci0gICAgb2JqZWN0LT5zZXRBWE9iamVjdElE
KDApOworICAgIG9iamVjdC0+c2V0T2JqZWN0SUQoMCk7CiAKICAgICBtX2lkc0luVXNlLnJlbW92
ZShheElEKTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQpAQCAtNzk5
LDcgKzc5OSw3IEBAIEFYSUQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1HZW5lcmF0ZUFYSUQoKSBj
b25zdAogQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
aikKIHsKICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeS1hc3NpZ25lZCBJRAotICAgIEFYSUQgb2Jq
SUQgPSBvYmotPmF4T2JqZWN0SUQoKTsKKyAgICBBWElEIG9iaklEID0gb2JqLT5vYmplY3RJRCgp
OwogICAgIGlmIChvYmpJRCkgewogICAgICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlucyhv
YmpJRCkpOwogICAgICAgICByZXR1cm4gb2JqSUQ7CkBAIC04MDgsNyArODA4LDcgQEAgQVhJRCBB
WE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKICAgICBvYmpJ
RCA9IHBsYXRmb3JtR2VuZXJhdGVBWElEKCk7CiAKICAgICBtX2lkc0luVXNlLmFkZChvYmpJRCk7
Ci0gICAgb2JqLT5zZXRBWE9iamVjdElEKG9iaklEKTsKKyAgICBvYmotPnNldE9iamVjdElEKG9i
aklEKTsKICAgICAKICAgICByZXR1cm4gb2JqSUQ7CiB9CkBAIC04ODEsMTIgKzg4MSwxMiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBSZW5kZXJPYmplY3QqIG5ld0NoaQogICAgIGNoaWxkcmVuQ2hhbmdlZChnZXQocmVuZGVyZXIp
KTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqKQordm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQVhDb3Jl
T2JqZWN0KiBvYmopCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0LmFkZChvYmopOworICAgIG1fZGVmZXJyZWRDaGls
ZHJlbkNoYW5nZWRMaXN0LmFkZChvYmopOwogfQogICAgIAogdm9pZCBBWE9iamVjdENhY2hlOjpu
b3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCkBAIC04OTksOCArODk5LDggQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgYXV0byBub3RpZmlj
YXRpb25zID0gV1RGTW92ZShtX25vdGlmaWNhdGlvbnNUb1Bvc3QpOwogICAgIAogICAgIGZvciAo
Y29uc3QgYXV0byYgbm90ZSA6IG5vdGlmaWNhdGlvbnMpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmotPmF4T2Jq
ZWN0SUQoKSkKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgpOwor
ICAgICAgICBpZiAoIW9iai0+b2JqZWN0SUQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGlmICghb2JqLT5heE9iamVjdENhY2hlKCkpCkBAIC05ODgsNyArOTg4LDcgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKE5vZGUqIG5vZGUsIEFYTm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbiwgUG8KICAgICBwb3N0Tm90aWZpY2F0aW9uKG9iamVjdC5nZXQoKSwg
Jm5vZGUtPmRvY3VtZW50KCksIG5vdGlmaWNhdGlvbiwgcG9zdFRhcmdldCwgcG9zdFR5cGUpOwog
fQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbiwgUG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKK3ZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgRG9jdW1l
bnQqIGRvY3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9z
dFRhcmdldCwgUG9zdFR5cGUgcG9zdFR5cGUpCiB7CiAgICAgc3RvcENhY2hpbmdDb21wdXRlZE9i
amVjdEF0dHJpYnV0ZXMoKTsKIApAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEm
IHRleHRNYXIKICAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CiAgICAgfQogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCkt
PmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmpl
Y3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJr
ZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4
dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydElu
ZGV4OwpAQCAtMjIzMCw3ICsyMjMwLDcgQEAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2Jq
ZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFYKICAgICBU
ZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9p
ZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwogICAgIAot
ICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0
ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgpOwogICAgIHRleHRNYXJr
ZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQ
b3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0
eSA9IHZpc2libGVQb3MuYWZmaW5pdHkoKTsKQEAgLTIyNjIsNyArMjI2Miw3IEBAIE9wdGlvbmFs
PFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9z
aXRpb25JblRleHRDb250CiAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CiAgICAg
bWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4
dE1hcmtlckRhdGEpKTsKICAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgp
LT5heE9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+b2Jq
ZWN0SUQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRleHRDb250cm9sOwogCiAgICAg
Y2FjaGUtPnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwpAQCAtMjkwNyw5ICsyOTA3LDkgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAgfQog
ICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWROb2RlTGlzdC5jbGVhcigpOwogCi0gICAgZm9y
IChhdXRvJiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0KQorICAgIGZvciAo
YXV0byYgY2hpbGQgOiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdCkKICAgICAgICAgY2hp
bGQtPmNoaWxkcmVuQ2hhbmdlZCgpOwotICAgIG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0
LmNsZWFyKCk7CisgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAog
ICAgIGZvciAoYXV0byogbm9kZSA6IG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3QpCiAgICAgICAg
IHRleHRDaGFuZ2VkKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAppbmRleCBlNTIyMDNiZWIxNDMwMTA0MDM3NTZjNDZjMzczZTllN2RhMzE5OWJm
Li44ODQ5OWZkMThjMjA3MzlkMmRhMzcwYTA0YmE3YmY0MWJmZTNjODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFY
T2JqZWN0Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29u
c3QgUGFnZSopOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcm9vdCBvYmplY3QgZm9yIHRoZSBlbnRp
cmUgZG9jdW1lbnQuCiAgICAgV0VCQ09SRV9FWFBPUlQgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9v
dE9iamVjdCgpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGFjaFdy
YXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKE5v
ZGUqLCBOb2RlKiBuZXdDaGlsZCA9IG51bGxwdHIpOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCogbmV3Q2hpbGQgPSBudWxscHRyKTsKLSAgICB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2Vk
KE5vZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hl
ZCwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nl
c3NpYmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVk
KE5vZGUqKTsKQEAgLTMwNyw3ICszMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvc3ROb3Rp
ZmljYXRpb24oUmVuZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJn
ZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBwb3N0
Tm90aWZpY2F0aW9uKE5vZGUqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVs
ZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKLSAgICB2b2lkIHBvc3ROb3Rp
ZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhOb3RpZmljYXRpb24s
IFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNs
eSk7CisgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIERvY3VtZW50Kiwg
QVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBv
c3RBc3luY2hyb25vdXNseSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzaG93SW50ZW50
KGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jik7CkBAIC0zNTYsNyArMzU2LDcgQEAgcHVi
bGljOgogICAgIAogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHBvc3RQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBBWE5vdGlmaWNhdGlvbik7CiAgICAg
dm9pZCBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3Vz
ZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7CiAKICAgICB2b2lkIHBsYXRmb3JtUGVyZm9y
bURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBwcml2YXRlOgogICAg
IEhhc2hTZXQ8QVhJRD4gbV9pZHNJblVzZTsKIAogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uUG9z
dFRpbWVyOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
LCBBWE5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uc1RvUG9zdDsKKyAgICBWZWN0b3I8c3Rk
OjpwYWlyPFJlZlB0cjxBWENvcmVPYmplY3Q+LCBBWE5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0
aW9uc1RvUG9zdDsKIAogICAgIFRpbWVyIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXI7
CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBwcml2YXRlOgogICAgIExpc3RIYXNoU2V0PEVsZW1lbnQq
PiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2Rl
Kj4gbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxFbGVtZW50Kj4g
bV9kZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKLSAgICBMaXN0SGFzaFNldDxS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0
OworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBtX2RlZmVycmVkQ2hpbGRy
ZW5DaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZENoaWxkcmVu
Q2hhbmdlZE5vZGVMaXN0OwogICAgIEhhc2hNYXA8RWxlbWVudCosIFN0cmluZz4gbV9kZWZlcnJl
ZFRleHRGb3JtQ29udHJvbFZhbHVlOwogICAgIEhhc2hNYXA8RWxlbWVudCosIFF1YWxpZmllZE5h
bWU+IG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2U7CkBAIC01MzIsNyArNTMyLDcgQEAgaW5saW5l
IGNvbnN0IEVsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OnJvb3RBWEVkaXRhYmxlRWxlbWVudChjb25z
dCBOb2RlKikgeyByZXR1cm4KIGlubGluZSBOb2RlKiBBWE9iamVjdENhY2hlOjptb2RhbE5vZGUo
KSB7IHJldHVybiBudWxscHRyOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hX
cmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmNoZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopIHsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KK2lubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBWENvcmVPYmplY3QqKSB7IH0KIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2RlKiwgTm9kZSopIHsg
fQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVj
dCosIFJlbmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJG
b2N1c2VkVUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSosIE5vZGUqKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNw
cAppbmRleCBkNzMwOTg4Zjg5N2VjZmE0OWFiYjkwZDMzZTcxMmQ2MGVkZTg1MjllLi4wMDBhZGQ0
YzNhYTIyOGYyZTNmNjA1MTgwMTAyMDU5ZmFkMTEyMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC01MSw3
ICs1MSw3IEBAIFJlZjxBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQWNjZXNzaWJpbGl0eUFSSUFHcmlkKHJlbmRlcmVyKSk7CiB9CiAKLWJvb2wgQWNjZXNzaWJp
bGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGls
ZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQm
IGNvbHVtbkNvdW50KQorYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENo
aWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBh
cHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIWNoaWxkIHx8
ICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFpczxBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3c+KCpjaGlsZCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NSw3ICs4
NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjppc011bHRpU2VsZWN0YWJsZSgpIGNv
bnN0CiAgICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhTXVsdGlT
ZWxlY3RhYmxlLCAiZmFsc2UiKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFk
ZFJvd0Rlc2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcm93Q2hpbGQsIEhhc2hTZXQ8QWNj
ZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkK
K3ZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KEFYQ29yZU9iamVj
dCogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3Ms
IHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIXJvd0NoaWxkKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuaAppbmRleCBiOGU3YmFmNGE1YjJlNjQ1OWVmZWE5ZDhiMjYwYWE5MjgxMjAy
MGI3Li5mNzJjOTA2YWEwY2UwZjRiNzgxODVhYjE1ZTVmOTEzYTliYzMzMjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgK
QEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgYm9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICAKLSAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhh
c2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1
bW5Db3VudCk7Ci0gICAgYm9vbCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQm
IGNvbHVtbkNvdW50KTsKKyAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0Kiwg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNv
bHVtbkNvdW50KTsKKyAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCosIEhh
c2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1
bW5Db3VudCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5j
cHAKaW5kZXggZDAyM2Y4Y2U1N2YzNTU0N2JjYWUxNTU0ZDY0MDI0MmUzODlkMjg0Ny4uZjgxOWU5
YWVlOTQ2YzVkMzU1MGY3M2IyNDllMTM5Yzk5YjRhNDI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIC8vIEFSSUEgZ3JpZGNlbGxzIG1heSBo
YXZlIG11bHRpcGxlIGxldmVscyBvZiB1bmlnbm9yZWQgYW5jZXN0b3JzIHRoYXQgYXJlIG5vdCB0
aGUgcGFyZW50IHRhYmxlLAogICAgIC8vIGluY2x1ZGluZyByb3dzIGFuZCBpbnRlcmFjdGl2ZSBy
b3dncm91cHMuIEluIGFkZGl0aW9uLCBwb29ybHktZm9ybWVkIGdyaWRzIG1heSBjb250YWluIGVs
ZW1lbnRzCiAgICAgLy8gd2hpY2ggcGFzcyB0aGUgdGVzdHMgZm9yIGluY2x1c2lvbi4KLSAgICBm
b3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKKyAg
ICBmb3IgKGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBwYXJlbnQ7IHBh
cmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKICAgICAgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpOwogICAgIH0K
QEAgLTY1LDcgKzY1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJv
d1JhbmdlKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTAzLDcgKzEwMyw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93
U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAgICAgICAgIHJldHVybiBz
dGQ6Om1heChzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLnNlY29uZCksIDEpOwogICAgIH0KIAotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwor
ICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAg
aWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiAxOwogICAgIApAQCAtMTM0LDcgKzEzNCw3IEBA
IHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRl
eCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAKIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1u
UmFuZ2UpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5jcHAKaW5kZXggZjI5NjQ2N2NhNGU4MTFiZWQyNjAxYzdjYTMyMzFkODgwOGFhNTQz
MC4uMzI4MzgwNzY1MjlkZDQ1YzEwZmM3ZDRhN2FjMDlhMGM3ZjVhM2RmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93LmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6
ZGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIGF1
dG8mIGFsbFJvd3MgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLnJvd3Mo
KTsKICAgICBpbnQgcm93Q291bnQgPSBhbGxSb3dzLnNpemUoKTsKICAgICBmb3IgKGludCBrID0g
aW5kZXggKyAxOyBrIDwgcm93Q291bnQ7ICsraykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiByb3cgPSBhbGxSb3dzW2tdLmdldCgpOworICAgICAgICBhdXRvKiByb3cgPSBhbGxSb3dz
W2tdLmdldCgpOwogICAgICAgICAvLyBTdG9wIGF0IHRoZSBmaXJzdCByb3cgdGhhdCBkb2Vzbid0
IG1hdGNoIHRoZSBjb3JyZWN0IGxldmVsLgogICAgICAgICBpZiAocm93LT5oaWVyYXJjaGljYWxM
ZXZlbCgpICE9IGxldmVsICsgMSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIsNyArODIsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkUm93cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIH0KIH0KICAgICAKLUFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkg
Y29uc3QKIHsKICAgICAvLyBUaGUgcm93IHRoYXQgZGlzY2xvc2VzIHRoaXMgb25lIGlzIHRoZSBy
b3cgaW4gdGhlIHRhYmxlCiAgICAgLy8gdGhhdCBpcyBhcmlhLWxldmVsIHN1YnRyYWN0IDEgZnJv
bSB0aGlzIHJvdy4KQEAgLTEwMyw3ICsxMDMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkgY29uc3QKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgCiAgICAgZm9yIChpbnQgayA9IGluZGV4IC0gMTsgayA+PSAwOyAt
LWspIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93ID0gYWxsUm93c1trXS5nZXQo
KTsKKyAgICAgICAgYXV0byogcm93ID0gYWxsUm93c1trXS5nZXQoKTsKICAgICAgICAgaWYgKHJv
dy0+aGllcmFyY2hpY2FsTGV2ZWwoKSA9PSBsZXZlbCAtIDEpCiAgICAgICAgICAgICByZXR1cm4g
cm93OwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vz
c2liaWxpdHlBUklBR3JpZFJvdzo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6
OmhlYWRlck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6
aGVhZGVyT2JqZWN0KCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4o
KSkgewogICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlJvd0hlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCmluZGV4IDdiYTc0ZjRkZDIzMTcxZmU1
YjQ4MmI2ZmU3ODBhMmZmNzg2OWQ4ODYuLjg1NDA2ODM1YWZlNzFlYzg0ZDU5YTU2MTA0NjA5NTA1
MTlkYjZlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaApAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93KCk7CiAgICAgCiAgICAgdm9pZCBkaXNj
bG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGRpc2Nsb3NlZEJ5Um93KCkgY29uc3Q7CisgICAgQVhDb3JlT2JqZWN0KiBkaXNj
bG9zZWRCeVJvdygpIGNvbnN0OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCkgb3Zl
cnJpZGU7CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdyhSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcAppbmRleCBiNDVmYzYwMDI0YTRmMzBhYjAwNzU1NmVi
NTZiMzQ5ZjIzNDIyZjU4Li42MzQ1ZjNjZDhmMzg1YTA1MGY5Y2FjOWI5Mzc4YTA4NTMyZTc1MTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlM
YWJlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGFiZWwuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6OmNs
ZWFyQ2hpbGRyZW4oKQogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gZmFsc2U7
CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eUxhYmVsOjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6
Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKIHsKICAg
ICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnNlcnRDaGlsZChvYmplY3QsIGluZGV4KTsK
ICAgICBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaAppbmRleCBiMTNhZjJk
N2Q5MmRiYjUyODBmNGRjY2Q4MjE0MDBkNDY2YzM5NGUwLi5iNmE0MWI5YWZmMGY4NTZlYjllOTQ4
NjNkYzdmNWJlNmRkODA1YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVu
SWZOZWNlc3NhcnkoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBmaW5hbDsKLSAg
ICB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCB1bnNpZ25lZCkgZmluYWw7
CisgICAgdm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgZmluYWw7CiAg
ICAgYm9vbCBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2Nv
bnRhaW5zT25seVN0YXRpY1RleHQgOiAxOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggMDdhZWRjOTcxNDY4
NDEwYjkwMWE3ODIyZGFiMDc5MjllZWEzMDRlMC4uOTVmOTcyODc3ZDE2NjhjMDFkNzRkYmVjY2I5
NTU2MTdmNGVjNjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxp
dHlPYmplY3QoSFRNTAogICAgIHJldHVybiAmbGlzdEJveE9iamVjdDsKIH0KICAgICAKLUFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nl
c3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBv
aW50JiBwb2ludCkgY29uc3QKIHsKICAgICAvLyB0aGUgaW50ZXJuYWwgSFRNTFNlbGVjdEVsZW1l
bnQgbWV0aG9kcyBmb3IgcmV0dXJuaW5nIGEgbGlzdGJveCBvcHRpb24gYXQgYSBwb2ludAogICAg
IC8vIGlnbm9yZSBvcHRncm91cCBlbGVtZW50cy4KQEAgLTE1NSw3ICsxNTUsNyBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludAogICAgIAogICAgIExheW91dFJlY3QgcGFyZW50UmVjdCA9IGJvdW5k
aW5nQm94UmVjdCgpOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RCb3hPcHRp
b24gPSBudWxscHRyOworICAgIEFYQ29yZU9iamVjdCogbGlzdEJveE9wdGlvbiA9IG51bGxwdHI7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIExheW91dFJlY3QgcmVjdCA9
IGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KCptX3JlbmRlcmVyKS5pdGVtQm91bmRpbmdCb3hSZWN0
KHBhcmVudFJlY3QubG9jYXRpb24oKSwgaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKaW5kZXggNDdhMzljZTk1YTVhNjBkZjhh
OWM2YThjZDU2YzYxNTRiMzM0MTI1MC4uNzRlNTkwODJlM2M5N2UwNTMyMTAyMThhNjVlZjNhYjZj
MjY4MTg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3guaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBp
c05hdGl2ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVs
ZW1lbnQqKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVP
YmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudC5jcHAKaW5kZXggN2FiZmZhZTRmYTE0OTEyM2IwNWVjMGQ1MDMzNGJiNWZlZDMyM2IyOC4u
YWFlYWZlMDg0YzhlN2RiYmM5ZTZkNjBmNTZhNjMzN2I1MmQxZGRhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50Ojppc01hdGhUYWJsZUNlbGwoKSBjb25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RU
eXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRP
YmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWMKIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNz
aWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBB
WENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICgh
cGFyZW50IHx8ICFwYXJlbnQtPmlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQ6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0
aE1MRWxlbWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJp
bGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01h
dGhSb290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjUwLDcgKzI1MCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFkaWNh
bmRPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJlblswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSb290SW5kZXhPYmpl
Y3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJ
bmRleE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhSb290KCkgfHwgaXNNYXRoU3F1YXJlUm9v
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2Miw3ICsyNjIsNyBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9i
amVjdCgpCiAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCgp
CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9y
T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0KCkKICAgICByZXR1cm4gY2hp
bGRyZW5bMF0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKIHsKICAgICBp
ZiAoIWlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg2LDcg
KzI4Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQoKTsK
IH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1h
dGhVbmRlck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
OjptYXRoVW5kZXJPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoVW5kZXJPdmVyKCkgfHwgIW5v
ZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDEsNyArMzAxLDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhVbmRlck9iamVj
dCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiB7CiAgICAgaWYgKCFp
c01hdGhVbmRlck92ZXIoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTMxOCw3ICszMTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6bWF0aE92ZXJPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJhc2VPYmpl
Y3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJhc2VP
YmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSAmJiAhaXNN
YXRoVW5kZXJPdmVyKCkgJiYgIWlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMzMxLDcgKzMzMSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Ojpt
YXRoU3Vic2NyaXB0T2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6Om1hdGhTdWJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0
Niw3ICszNDYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3VwZXJz
Y3JpcHRPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVy
c2NyaXB0KCkgfHwgIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmgKaW5kZXggNTgwYjg1OWNiYzFkMGM2NzMzNWUyYjUwNDk0Mjc2NjRiZWQxMTY3YS4uODc0
N2IwNTRlZjQzOTBhZDkyM2Q2MDE3YzI1ZDA3NjRmNTA1MmE4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQu
aApAQCAtNzcsMjMgKzc3LDIzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlw
dE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhC
YXNlT2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlOworICAgIEFY
Q29yZU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGcmFjdGlvbiBj
b21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3Qo
KSBvdmVycmlkZTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmpl
Y3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBv
dmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJy
aWRlOwogCiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhVbmRlck9iamVjdCgpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5k
ZXJPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7Ci0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7
CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8v
IEZlbmNlZCBjb21wb25lbnRzLgogICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCmluZGV4IGM5ODVmZGRkM2RiNzViOGE4NGM3
ZTI1ODMzZTAwOTk1NzY2ZDU5NDguLmYzYWQ2ZDk2ZTM2Zjg1YjM3OWU1Y2Y5NWNlNGI0NWNiM2Q2
ZjdjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlRGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3QqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmNwcAppbmRleCBlZjEzNzdiZjQ2YzNiMjI1MGQzY2Y2ZTZlOWQzNjNiMmU2MmJiOTFm
Li5hMmNiNTE3YWZiOGJlODY4ZWFlZWUxZDMyODEyNWM1ODY2MmI2ZTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3Bw
CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJl
bigpCiAKICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TW9ja09iamVjdD4oKmxpc3QpLnNldFBh
cmVudCh0aGlzKTsKICAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7Ci0g
ICAgICAgIGNhY2hlLT5yZW1vdmUobGlzdC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgY2FjaGUt
PnJlbW92ZShsaXN0LT5vYmplY3RJRCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcAppbmRleCBlZTk2MWI1Y2Y1YzYxMzIzYzI5ZGJiY2JjYjMyOGY5ODI4
OGE0NDRkLi43YjAyYzIyNDljNmEzOTQ2MzE5ODM0M2EyZTQ3ODBlNDRiNTExMjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcApAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cDo6Y2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBBWE9iamVjdENhY2hlKiBj
YWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gbV9jaGlsZHJlbi5z
aXplKCk7IGkgPiAwIDsgLS1pKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxk
ID0gbV9jaGlsZHJlbltpIC0gMV0uZ2V0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY2hpbGQg
PSBtX2NoaWxkcmVuW2kgLSAxXS5nZXQoKTsKICAgICAgICAgaWYgKGNoaWxkLT5hY3Rpb25FbGVt
ZW50KCkgJiYgIWNoaWxkLT5hY3Rpb25FbGVtZW50KCktPmluUmVuZGVyZWREb2N1bWVudCgpKSB7
CiAgICAgICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVBhcmVudCgpOwotICAgICAgICAgICAgY2Fj
aGUtPnJlbW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZW1v
dmUoY2hpbGQtPm9iamVjdElEKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMwLDcg
KzEzMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2
ZU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpCiAgICAgQVNTRVJUX0FSRyhvcHRpb25JbmRleCwgb3B0
aW9uSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2hpbGRyZW4uc2l6ZSgpKSk7CiAKICAgICBB
WE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gY2hpbGQgPSBtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKTsKKyAg
ICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdl
dCgpOwogCiAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3VtZW50
KCksIEFYT2JqZWN0Q2FjaGU6OkFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQsIFRhcmdldEVsZW1l
bnQsIFBvc3RTeW5jaHJvbm91c2x5KTsKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGls
ZC5nZXQoKSwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlzdEl0ZW1TZWxlY3Rl
ZCwgVGFyZ2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRl
eCBhMmQzMjdmOGNmMTc4MDhjYWYyNWE2ODA1YTQ4OGU4OGY4ZDRlNWJmLi4wMzA0ZWM3MjU1MGYy
YTliNDdlMGE5MWU5ZjEzZDRkZjAwNTZhNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtOTEyLDcg
KzkxMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR3JvdXAoKSBjb25zdAog
ICAgIHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25Hcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
blRleHRHcm91cDsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCiB7CiAgICAgaWYgKCFpc1JhZGlvR3Jv
dXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MjUsMTQgKzkyNSwxNCBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1
dHRvbigpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0oKQorQVhDb3JlT2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKCkKIHsKICAgICBpZiAoIWlz
VGFiTGlzdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEZJWE1FOiBJcyB0
aGlzIHZhbGlkPyBBUklBIHRhYiBpdGVtcyBzdXBwb3J0IGFyaWEtc2VsZWN0ZWQ7IG5vdCBhcmlh
LWNoZWNrZWQuCiAgICAgLy8gRmluZCB0aGUgY2hpbGQgdGFiIGl0ZW0gdGhhdCBpcyBzZWxlY3Rl
ZCAoaWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKKyAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciB0YWJzOwogICAgIHRhYkNoaWxkcmVuKHRhYnMpOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAppbmRleCBh
ODY3YzBjZjBhYzhjZDQwNjk0YjgzYzc0NTQ5NGNiYjZiODZhMTUzLi4zODBkOTk3YTU0MTQ3ZWMy
OTg2MmVjYzE0ZmYzMDRiYmU5YWUxYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xMDEsOCArMTAxLDgg
QEAgcHVibGljOgogICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlOworICAgIEFYQ29y
ZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVj
dCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25l
ZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZThhYTY5
YmVjMTc3MDI3MDYzODc5M2U3MzVjYTkyN2JkN2M4OTljNS4uYTM0YTVmMDk2MjUxZmZmMzc3NjNh
ZDQxZmU0NjA3MzAzOGQ0NTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RldGFjaGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1ib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJ
bmRleChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhKiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQVhDb3JlT2JqZWN0KiBh
eE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwgc2l6ZV90IGlu
ZGV4KQogewogICAgIHN3aXRjaCAoY3JpdGVyaWEtPnNlYXJjaEtleXNbaW5kZXhdKSB7CiAgICAg
Ly8gVGhlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGUgbWF0Y2hlcyBhbnkgbm9uLW51
bGwgQWNjZXNzaWJpbGl0eU9iamVjdC4KQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nl
c3NpYmlsaXR5TwogICAgIH0KIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwg
QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQVhDb3JlT2JqZWN0KiBh
eE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKIHsKICAgICBp
ZiAoIWF4T2JqZWN0IHx8ICFjcml0ZXJpYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2
LDcgKzI3Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2Jq
ZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBzaXplX3QgbGVuZ3RoID0g
Y3JpdGVyaWEtPnNlYXJjaEtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1h
dGNoQXRJbmRleChheE9iamVjdCwgY3JpdGVyaWEsIGkpKSB7Ci0gICAgICAgICAgICBpZiAoY3Jp
dGVyaWEtPnZpc2libGVPbmx5ICYmICFheE9iamVjdC0+aXNPbnNjcmVlbigpKQorICAgICAgICAg
ICAgaWYgKGNyaXRlcmlhLT52aXNpYmxlT25seSAmJiAhYXhPYmplY3QtPmlzT25TY3JlZW4oKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQpAQCAtMjg0LDE1ICsyODQsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0Kgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vz
c2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QsIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEpCitib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBWENvcmVPYmplY3QqIGF4T2Jq
ZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQogewogICAgIGlmICgh
YXhPYmplY3QgfHwgIWNyaXRlcmlhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
cmV0dXJuIGF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KCZjcml0ZXJp
YS0+c2VhcmNoVGV4dCk7CisgICAgcmV0dXJuIGF4T2JqZWN0LT5jb250YWluc1RleHQoJmNyaXRl
cmlhLT5zZWFyY2hUZXh0KTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3Np
YmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKK2Jvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6Y29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKIHsKICAgICAv
LyBJZiB0ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2UgcmV0dXJuIHRydWUuCiAgICAgcmV0dXJuICF0
ZXh0CkBAIC01MjIsNyArNTIyLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Ymxv
Y2txdW90ZUxldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNv
bnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbXSAo
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAhb2Jq
ZWN0LmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKQEAgLTYyNSw3ICs2MjUsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlKSBjb25zdAogICAgIH0pICE9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEFj
Y2Vzc2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCitzdGF0aWMg
dm9pZCBhcHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7
CiAgICAgLy8gRmluZCB0aGUgbmV4dCBkZXNjZW5kYW50IG9mIHRoaXMgYXR0YWNobWVudCBvYmpl
Y3Qgc28gc2VhcmNoIGNhbiBjb250aW51ZSB0aHJvdWdoIGZyYW1lcy4KICAgICBpZiAob2JqZWN0
LT5pc0F0dGFjaG1lbnQoKSkgewpAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVu
ZEFjY2Vzc2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3Np
YmlsaXR5CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9CiAgICAgCi12b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxk
LCB1bnNpZ25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQo
QVhDb3JlT2JqZWN0KiBjaGlsZCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFjaGlsZCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjg0LDEyICs2ODQsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCwgdW5zaWduZWQg
aW5kZXgKICAgICBjaGlsZC0+Y2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOwogfQogICAg
IAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBjaGlsZCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWRkQ2hpbGQoQVhDb3JlT2JqZWN0
KiBjaGlsZCkKIHsKICAgICBpbnNlcnRDaGlsZChjaGlsZCwgbV9jaGlsZHJlbi5zaXplKCkpOwog
fQogICAgIAotc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0
T2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IHJlc3VsdHMpCitzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQVhDb3JlT2JqZWN0
KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7
CiAgICAgLy8gQSB0YWJsZSdzIGNoaWxkcmVuIGluY2x1ZGVzIGVsZW1lbnRzIHdob3NlIG93biBj
aGlsZHJlbiBhcmUgYWxzbyB0aGUgdGFibGUncyBjaGlsZHJlbiAoZHVlIHRvIHRoZSB3YXkgdGhl
IE1hYyBleHBvc2VzIHRhYmxlcykuCiAgICAgLy8gVGhlIHJvd3MgZnJvbSB0aGUgdGFibGUgc2hv
dWxkIGJlIHF1ZXJpZWQsIHNpbmNlIHRob3NlIGFyZSBkaXJlY3QgZGVzY2VuZGFudHMgb2YgdGhl
IHRhYmxlLCBhbmQgdGhleSBjb250YWluIGNvbnRlbnQuCkBAIC03MDIsNyArNzAyLDcgQEAgc3Rh
dGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVj
dCwgYm9vbCBpc0ZvcndhcmQsIEEKIAogICAgIC8vIElmIHRoZSBzdGFydE9iamVjdCBpcyBpZ25v
cmVkLCB3ZSBzaG91bGQgdXNlIGFuIGFjY2Vzc2libGUgc2libGluZyBhcyBhIHN0YXJ0IGVsZW1l
bnQgaW5zdGVhZC4KICAgICBpZiAoc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QtPmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSAmJiBzdGFydE9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3Qob2Jq
ZWN0KSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBzdGFy
dE9iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2Jq
ZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdCgpOwogICAgICAgICAvLyBHbyB1cCB0aGUg
cGFyZW50IGNoYWluIHRvIGZpbmQgdGhlIGhpZ2hlc3QgYW5jZXN0b3IgdGhhdCdzIGFsc28gYmVp
bmcgaWdub3JlZC4KICAgICAgICAgd2hpbGUgKHBhcmVudE9iamVjdCAmJiBwYXJlbnRPYmplY3Qt
PmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICAgICAgaWYgKHBhcmVudE9iamVj
dCA9PSBvYmplY3QpCkBAIC03MzUsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRy
ZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEEK
IH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBpcyBub3cgPj0g
dGhlIG51bWJlciBvZiByZXN1bHRzIGRlc2lyZWQuCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om9iamVjdE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEsIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKK2Jvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6b2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFYQ29yZU9i
amVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAgaWYgKGlzQWNjZXNzaWJp
bGl0eU9iamVjdFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpICYmIGlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaChvYmplY3QsIGNyaXRlcmlhKSkgewogICAgICAgICByZXN1bHRzLmFw
cGVuZChvYmplY3QpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dDo6ZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRl
CiAgICAgLy8gSXQgZG9lcyB0aGlzIGJ5IHN0ZXBwaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4gYW5k
IGF0IGVhY2ggbGV2ZWwgZG9pbmcgYSBERlMuCiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBubyBz
dGFydCBvYmplY3QsIGl0IG1lYW5zIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcuCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSBjcml0ZXJpYS0+c3RhcnRPYmplY3Q7
CisgICAgQVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCA9IGNyaXRlcmlhLT5zdGFydE9iamVjdDsK
ICAgICBpZiAoIXN0YXJ0T2JqZWN0KQogICAgICAgICBzdGFydE9iamVjdCA9IHRoaXM7CiAgICAg
CkBAIC03NzEsMTQgKzc3MSwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRNYXRj
aGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZQogICAgIC8vIFRo
ZSBmaXJzdCBpdGVyYXRpb24gb2YgdGhlIG91dGVyIGxvb3Agd2lsbCBleGFtaW5lIHRoZSBjaGls
ZHJlbiBvZiB0aGUgc3RhcnQgb2JqZWN0IGZvciBtYXRjaGVzLiBIb3dldmVyLCB3aGVuCiAgICAg
Ly8gaXRlcmF0aW5nIGJhY2t3YXJkcywgdGhlIHN0YXJ0IG9iamVjdCBjaGlsZHJlbiBzaG91bGQg
bm90IGJlIGNvbnNpZGVyZWQsIHNvIHRoZSBsb29wIGlzIHNraXBwZWQgYWhlYWQuIFdlIG1ha2Ug
YW4KICAgICAvLyBleGNlcHRpb24gd2hlbiBubyBzdGFydCBvYmplY3Qgd2FzIHNwZWNpZmllZCBi
ZWNhdXNlIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBzZWFyY2gg
ZGlyZWN0aW9uLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gbnVs
bHB0cjsKKyAgICBBWENvcmVPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gbnVsbHB0cjsKICAgICBp
ZiAoIWlzRm9yd2FyZCAmJiBzdGFydE9iamVjdCAhPSB0aGlzKSB7CiAgICAgICAgIHByZXZpb3Vz
T2JqZWN0ID0gc3RhcnRPYmplY3Q7CiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIH0KICAgICAKICAgICAvLyBUaGUgb3V0ZXIg
bG9vcCBzdGVwcyB1cCB0aGUgcGFyZW50IGNoYWluIGVhY2ggdGltZSAodW5pZ25vcmVkIGlzIGlt
cG9ydGFudCBoZXJlIGJlY2F1c2Ugb3RoZXJ3aXNlIGVsZW1lbnRzIHdvdWxkIGJlIHNlYXJjaGVk
IHR3aWNlKQotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogc3RvcFNlYXJjaEVsZW1lbnQg
PSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsgc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QgIT0g
c3RvcFNlYXJjaEVsZW1lbnQ7IHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVj
dFVuaWdub3JlZCgpKSB7CisgICAgZm9yIChhdXRvKiBzdG9wU2VhcmNoRWxlbWVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdCAhPSBzdG9wU2Vh
cmNoRWxlbWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25v
cmVkKCkpIHsKIAogICAgICAgICAvLyBPbmx5IGFwcGVuZCB0aGUgY2hpbGRyZW4gYWZ0ZXIvYmVm
b3JlIHRoZSBwcmV2aW91cyBlbGVtZW50LCBzbyB0aGF0IHRoZSBzZWFyY2ggZG9lcyBub3QgY2hl
Y2sgZWxlbWVudHMgdGhhdCBhcmUgCiAgICAgICAgIC8vIGFscmVhZHkgYmVoaW5kL2FoZWFkIG9m
IHN0YXJ0IGVsZW1lbnQuCkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3Jp
dGUKIAogICAgICAgICAvLyBUaGlzIG5vdyBkb2VzIGEgREZTIGF0IHRoZSBjdXJyZW50IGxldmVs
IG9mIHRoZSBwYXJlbnQuCiAgICAgICAgIHdoaWxlICghc2VhcmNoU3RhY2suaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWFyY2hPYmplY3QgPSBzZWFyY2hT
dGFjay5sYXN0KCkuZ2V0KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIHNlYXJjaE9iamVj
dCA9IHNlYXJjaFN0YWNrLmxhc3QoKS5nZXQoKTsKICAgICAgICAgICAgIHNlYXJjaFN0YWNrLnJl
bW92ZUxhc3QoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChzZWFyY2hPYmplY3QsIGNyaXRlcmlhLCByZXN1
bHRzKSkKQEAgLTIwMzEsMTMgKzIwMzEsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAg
aWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIFJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9i
amVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBheE9iamVjdCA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKHJlbmRlck9iamVjdCk7Ci0gICAgCisKICAgICByZXR1cm4gY29uc3Rf
Y2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBh
cmVudCgqYXhPYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmpl
Y3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6SGVhZGluZzsKICAgICB9KSk7CkBAIC0yMzYwLDE3ICsyMzYwLDE3IEBAIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0
CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwogfSAgICAK
IAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KiBheE9iamVjdCkg
Y29uc3QKIHsKICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aGFzQ2hpbGRyZW4oKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbYXhPYmplY3RdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICZvYmplY3QgPT0gYXhP
YmplY3Q7CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3Qp
IGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdChjb25z
dCBBWENvcmVPYmplY3QqIGF4T2JqZWN0KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NzgsNyArMjc3OCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAog
ICAgIHJldHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVS
ZWdpb25TdGF0dXNWYWx1ZSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsKIH0K
IAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsgCiAgICAgLy8gU2VuZCB0aGUgaGl0
IHRlc3QgYmFjayBpbnRvIHRoZSBzdWItZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIGlmIChpc0F0
dGFjaG1lbnQoKSkgewpAQCAtMjgwNSw3ICsyODA1LDcgQEAgQVhPYmplY3RDYWNoZSogQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50
ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2VkVUlFbGVt
ZW50KCkgY29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6Zm9jdXNlZFVJ
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBy
ZXR1cm4gcGFnZSA/IEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2Up
IDogbnVsbHB0cjsKQEAgLTI5NjMsNyArMjk2Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNFeHBhbmRlZCgpIGNvbnN0CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJuIHBh
cmVudC0+aXNFeHBhbmRlZCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsgIAog
fQogCkBAIC0zMTAzLDcgKzMxMDMsNyBAQCBzdGF0aWMgaW50IGNvbXB1dGVCZXN0U2Nyb2xsT2Zm
c2V0KGludCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCBpbnQgc3ViZm9jdXNNaW4sIGludAogICAgIHJl
dHVybiAob2JqZWN0TWluICsgb2JqZWN0TWF4IC0gdmlld3BvcnRNaW4gLSB2aWV3cG9ydE1heCkg
LyAyOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAor
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuKCkgY29uc3QKIHsgICAKICAgICBi
b29sIGlzT25zY3JlZW4gPSB0cnVlOwogCkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgICAgICBh
dHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCk7CiAg
ICAgCiAgICAgaWYgKGF0dHJpYnV0ZUNhY2hlKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gaWdub3JlZCA9IGF0dHJpYnV0ZUNhY2hlLT5nZXRJZ25vcmVkKGF4T2JqZWN0
SUQoKSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gaWdub3JlZCA9IGF0
dHJpYnV0ZUNhY2hlLT5nZXRJZ25vcmVkKG9iamVjdElEKCkpOwogICAgICAgICBzd2l0Y2ggKGln
bm9yZWQpIHsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25v
cmVPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM0OTUsNyArMzQ5NSw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiAKICAgICAvLyBJbiBjYXNlIGNvbXB1dGluZyBheElzSWdub3JlZCBkaXNhYmxlcyBhdHRyaWJ1
dGUgY2FjaGluZywgd2Ugc2hvdWxkIHJlZmV0Y2ggdGhlIG9iamVjdCB0byBzZWUgaWYgaXQgZXhp
c3RzLgogICAgIGlmIChjYWNoZSAmJiAoYXR0cmlidXRlQ2FjaGUgPSBjYWNoZS0+Y29tcHV0ZWRP
YmplY3RBdHRyaWJ1dGVDYWNoZSgpKSkKLSAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9y
ZWQoYXhPYmplY3RJRCgpLCByZXN1bHQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3QgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0
KTsKKyAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9yZWQob2JqZWN0SUQoKSwgcmVzdWx0
ID8gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0IDogQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtMzYyMCw3ICszNjIwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Nv
bnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KS5p
c1Bhc3N3b3JkRmllbGQoKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzZWxlY3RlZExpc3RJdGVtKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdEl0ZW0oKSAmJiAo
Y2hpbGQtPmlzU2VsZWN0ZWQoKSB8fCBjaGlsZC0+aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2Vk
Q29udGFpbmVyKCkpKQpAQCAtMzc1Miw3ICszNzUyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG8KICAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUob3duZXJzLCBhcmlhX293
bnNBdHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkKQordm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29y
ZU9iamVjdCogY2hpbGQpCiB7CiAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApp
bmRleCAzZmYwYzM2MDFiNDEyYTI5ZTgyOGViYTYzODM2Y2ZkMTYyNDhkYzg1Li4zODNkZGVjOGYz
ODcwMmRmZTQ4OWEwNTFhZDVkM2U4NWI3MDE1Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzEsMTMgKzMxLDkgQEAK
IAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJG
bG9hdFF1YWQuaCIKLSNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgotI2luY2x1ZGUgIlZpc2libGVQ
b3NpdGlvbi5oIgotI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTUzLDggKzQ5LDYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCi10eXBlZGVm
IHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOwotCiBPQkpDX0NMQVNTIE5TQXJyYXk7CiBPQkpDX0NM
QVNTIE5TQXR0cmlidXRlZFN0cmluZzsKIE9CSkNfQ0xBU1MgTlNEYXRhOwpAQCAtNjgsMjAgKzYy
LDkgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFj
Y2Vzc2liaWxpdHlPYmplY3Q7Ci1jbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzsKLWNsYXNz
IEFYT2JqZWN0Q2FjaGU7Ci1jbGFzcyBFbGVtZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFzcyBGcmFt
ZVZpZXc7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBOb2RlOwotY2xh
c3MgUGFnZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwotY2xh
c3MgU2Nyb2xsVmlldzsKLWNsYXNzIFdpZGdldDsKLXN0cnVjdCBTY3JvbGxSZWN0VG9WaXNpYmxl
T3B0aW9uczsKIAogZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7CiAgICAgQWx0
ZXJuYXRpdmUsCkBAIC0xMjEsNDk2ICsxMDQsMjcyIEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4
dCB7CiAgICAgfQogfTsKIAotc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZSB7Ci0gICAgZW51bSBDaGlsZHJlbkluY2x1c2lvbiB7Ci0gICAgICAgIFRleHRVbmRlckVsZW1l
bnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwKLSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJ
bmNsdWRlQWxsQ2hpbGRyZW4sCi0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5h
bWVGcm9tQ29udGVudHNDaGlsZHJlbiwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNl
cHQ6IG5hbWVGcm9tCi0gICAgfTsKLSAgICAKLSAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGlsZHJl
bkluY2x1c2lvbjsKLSAgICBib29sIGluY2x1ZGVGb2N1c2FibGVDb250ZW50OwotICAgIE5vZGUq
IGlnbm9yZWRDaGlsZE5vZGU7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1l
bnRNb2RlKENoaWxkcmVuSW5jbHVzaW9uIGMgPSBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25v
cmVkQ2hpbGRyZW4sIGJvb2wgaSA9IGZhbHNlLCBOb2RlKiBpZ25vcmVkID0gbnVsbHB0cikKLSAg
ICAgICAgOiBjaGlsZHJlbkluY2x1c2lvbihjKQotICAgICAgICAsIGluY2x1ZGVGb2N1c2FibGVD
b250ZW50KGkpCi0gICAgICAgICwgaWdub3JlZENoaWxkTm9kZShpZ25vcmVkKQotICAgIHsgfQot
fTsKLQotLy8gVXNlIHRoaXMgc3RydWN0IHRvIHN0b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0aGF0
IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNvIHRoYXQgaW4gYWRkQ2hpbGRyZW4oKQotLy8gd2Ug
YXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBmb3IgZWFjaCBlbGVtZW50IHdoaWxlIHRy
YXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwgaW5mb3JtYXRpb24gYWxyZWFkeS4KLXN0cnVj
dCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgewotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCB7IG51bGxwdHIgfTsKLSAgICBib29sIGlzQVhIaWRkZW4geyBmYWxz
ZSB9OwotICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCB7IGZhbHNlIH07Ci0gICAgCi0g
ICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IG51bGxwdHIpCi0gICAgICAgIDogcGFyZW50KHBhcmVudCkKLSAgICB7IH0K
LQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsgfQotfTsKLSAgICAK
LWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKLSAgICBWZXJ0aWNhbCwKLSAg
ICBIb3Jpem9udGFsLAotICAgIFVuZGVmaW5lZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb24gewotICAgIEluY2x1ZGVPYmplY3QsCi0gICAgSWdub3Jl
T2JqZWN0LAotICAgIERlZmF1bHRCZWhhdmlvciwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vz
c2liaWxpdHlCdXR0b25TdGF0ZSB7Ci0gICAgT2ZmID0gMCwKLSAgICBPbiwKLSAgICBNaXhlZCwK
LX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKLSAgICBO
b25lLAotICAgIEFzY2VuZGluZywKLSAgICBEZXNjZW5kaW5nLAotICAgIE90aGVyLAotICAgIElu
dmFsaWQsCi19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewot
ICAgIE5leHQgPSAxLAotICAgIFByZXZpb3VzLAotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5IHsKLSAgICBBbnlUeXBlID0gMSwKLSAgICBBcnRpY2xlLAotICAgIEJsb2Nr
cXVvdGVTYW1lTGV2ZWwsCi0gICAgQmxvY2txdW90ZSwKLSAgICBCb2xkRm9udCwKLSAgICBCdXR0
b24sCi0gICAgQ2hlY2tCb3gsCi0gICAgQ29udHJvbCwKLSAgICBEaWZmZXJlbnRUeXBlLAotICAg
IEZvbnRDaGFuZ2UsCi0gICAgRm9udENvbG9yQ2hhbmdlLAotICAgIEZyYW1lLAotICAgIEdyYXBo
aWMsCi0gICAgSGVhZGluZ0xldmVsMSwKLSAgICBIZWFkaW5nTGV2ZWwyLAotICAgIEhlYWRpbmdM
ZXZlbDMsCi0gICAgSGVhZGluZ0xldmVsNCwKLSAgICBIZWFkaW5nTGV2ZWw1LAotICAgIEhlYWRp
bmdMZXZlbDYsCi0gICAgSGVhZGluZ1NhbWVMZXZlbCwKLSAgICBIZWFkaW5nLAotICAgIEhpZ2hs
aWdodGVkLAotICAgIEl0YWxpY0ZvbnQsCi0gICAgS2V5Ym9hcmRGb2N1c2FibGUsCi0gICAgTGFu
ZG1hcmssCi0gICAgTGluaywKLSAgICBMaXN0LAotICAgIExpdmVSZWdpb24sCi0gICAgTWlzc3Bl
bGxlZFdvcmQsCi0gICAgT3V0bGluZSwKLSAgICBQbGFpblRleHQsCi0gICAgUmFkaW9Hcm91cCwK
LSAgICBTYW1lVHlwZSwKLSAgICBTdGF0aWNUZXh0LAotICAgIFN0eWxlQ2hhbmdlLAotICAgIFRh
YmxlU2FtZUxldmVsLAotICAgIFRhYmxlLAotICAgIFRleHRGaWVsZCwKLSAgICBVbmRlcmxpbmUs
Ci0gICAgVW52aXNpdGVkTGluaywKLSAgICBWaXNpdGVkTGluaywKLX07Ci0KLWVudW0gY2xhc3Mg
QWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcyB7Ci0gICAgRmlyc3QsCi0gICAg
TGFzdCwKLX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgewotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0OwotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hE
aXJlY3Rpb24gc2VhcmNoRGlyZWN0aW9uOwotICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5PiBzZWFyY2hLZXlzOwotICAgIFN0cmluZyBzZWFyY2hUZXh0OwotICAgIHVuc2lnbmVkIHJl
c3VsdHNMaW1pdDsKLSAgICBib29sIHZpc2libGVPbmx5OwotICAgIGJvb2wgaW1tZWRpYXRlRGVz
Y2VuZGFudHNPbmx5OwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlv
biBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hUZXh0LCB1bnNpZ25lZCByZXN1bHRzTGlt
aXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQotICAg
ICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQotICAgICAgICAsIHNlYXJjaERpcmVjdGlv
bihzZWFyY2hEaXJlY3Rpb24pCi0gICAgICAgICwgc2VhcmNoVGV4dChzZWFyY2hUZXh0KQotICAg
ICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQpCi0gICAgICAgICwgdmlzaWJsZU9ubHko
dmlzaWJsZU9ubHkpCi0gICAgICAgICwgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KGltbWVkaWF0
ZURlc2NlbmRhbnRzT25seSkKLSAgICB7IH0KLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlEZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkIH07
Ci0KLXN0cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnQ7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZDsKLQotICAgIFZpc2libGVQb3NpdGlvblJh
bmdlKCkge30KLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcywgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAg
ICAgICwgZW5kKGUpCi0gICAgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCi0gICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0
YXJ0KCkpCi0gICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKLSAgICB7IH0KLQotICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgp
OyB9Ci19OwotCi1zdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewotICAgICAgICAKLSAgICB1bnNpZ25l
ZCBzdGFydCB7IDAgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07Ci0gICAgCi0gICAgUGxh
aW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7Ci0gICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UodW5zaWdu
ZWQgcywgdW5zaWduZWQgbCkKLSAgICAgICAgOiBzdGFydChzKQotICAgICAgICAsIGxlbmd0aChs
KQotICAgIHsgfQotICAgIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBsYWluVGV4dFJhbmdl
KE5TUmFuZ2UpOwotI2VuZGlmCi0gICAgCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhc3RhcnQgJiYgIWxlbmd0aDsgfQotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Vh
cmNoVGV4dFN0YXJ0RnJvbSB7Ci0gICAgQmVnaW4sIC8vIFNlYXJjaCBmcm9tIHRoZSBiZWdpbm5p
bmcgb2YgdGhlIGVsZW1lbnQuCi0gICAgU2VsZWN0aW9uLCAvLyBTZWFyY2ggZnJvbSB0aGUgcG9z
aXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgotICAgIEVuZCAvLyBTZWFyY2ggZnJvbSB0
aGUgZW5kIG9mIHRoZSBlbGVtZW50LgotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Vh
cmNoVGV4dERpcmVjdGlvbiB7Ci0gICAgRm9yd2FyZCwgLy8gT2NjdXJyZW5jZSBhZnRlciB0aGUg
c3RhcnRpbmcgcmFuZ2UuCi0gICAgQmFja3dhcmQsIC8vIE9jY3VycmVuY2UgYmVmb3JlIHRoZSBz
dGFydGluZyByYW5nZS4KLSAgICBDbG9zZXN0LCAvLyBDbG9zZXN0IG9jY3VycmVuY2UgdG8gdGhl
IHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVyIG9yIGJlZm9yZS4KLSAgICBBbGwgLy8gQWxs
IG9jY3VycmVuY2VzCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJp
YSB7Ci0gICAgVmVjdG9yPFN0cmluZz4gc2VhcmNoU3RyaW5nczsgLy8gVGV4dCBzdHJpbmdzIHRv
IHNlYXJjaCBmb3IuCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb20gc3RhcnQ7
Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwotCi0gICAg
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSgpCi0gICAgICAgIDogc3RhcnQoQWNjZXNz
aWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206OlNlbGVjdGlvbikKLSAgICAgICAgLCBkaXJlY3Rp
b24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb246OkZvcndhcmQpCi0gICAgeyB9Ci19
OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB7Ci0gICAgU2Vs
ZWN0LAotICAgIFJlcGxhY2UsCi0gICAgQ2FwaXRhbGl6ZSwKLSAgICBMb3dlcmNhc2UsCi0gICAg
VXBwZXJjYXNlCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gewotICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2VzOyAvLyB0ZXh0IG9uIHdoaWNoIHBlcmZv
cm0gdGhlIG9wZXJhdGlvbi4KLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGUgdHlw
ZTsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0OyAvLyBGb3IgdHlwZSA9IHJlcGxhY2UuCi0K
LSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbigpCi0gICAgICAgIDogdHlwZShBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVjdCkKLSAgICB7IH0KLX07Ci0KLWVudW0gY2xh
c3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBlcnNj
cmlwdCB9OwotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlw
ZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RTdXBl
cnNjcmlwdCB9OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxz
ZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKLWVudW0gY2xhc3Mg
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSB7IFNjcmVlbiwgUGFnZSB9OwotCiBib29sIG5v
ZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKLSAgICAKLWNsYXNzIEFjY2Vzc2liaWxpdHlP
YmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgcHVibGljIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0
IDogcHVibGljIEFYQ29yZU9iamVjdCB7CiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCgpID0gZGVmYXVsdDsKLSAgICAKKwogcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2li
aWxpdHlPYmplY3QoKTsKIAogICAgIC8vIEFmdGVyIGNvbnN0cnVjdGluZyBhbiBBY2Nlc3NpYmls
aXR5T2JqZWN0LCBpdCBtdXN0IGJlIGdpdmVuIGEKICAgICAvLyB1bmlxdWUgSUQsIHRoZW4gYWRk
ZWQgdG8gQVhPYmplY3RDYWNoZSwgYW5kIGZpbmFsbHkgaW5pdCgpIG11c3QKICAgICAvLyBiZSBj
YWxsZWQgbGFzdC4KLSAgICB2b2lkIHNldEFYT2JqZWN0SUQoQVhJRCBheE9iamVjdElEKSB7IG1f
aWQgPSBheE9iamVjdElEOyB9Ci0gICAgdmlydHVhbCB2b2lkIGluaXQoKSB7IH0KKyAgICB2b2lk
IHNldE9iamVjdElEKEFYSUQgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CisgICAgdm9pZCBp
bml0KCkgb3ZlcnJpZGUgeyB9CiAKICAgICAvLyBXaGVuIHRoZSBjb3JyZXNwb25kaW5nIFdlYkNv
cmUgb2JqZWN0IHRoYXQgdGhpcyBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgLy8gd3JhcHMgaXMg
ZGVsZXRlZCwgaXQgbXVzdCBiZSBkZXRhY2hlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBudWxscHRy
KTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0OworICAgIHZvaWQgZGV0YWNo
KEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogPSBudWxscHRyKSBv
dmVycmlkZTsKKyAgICBib29sIGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgCi0gICAgdmlydHVhbCBib29sIGlz
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdS
b290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0
cmluZyAqKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50RWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9s
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVs
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmFkaW9C
dXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UmFkaW9CdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0ltYWdlTWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CisgICAgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29udGFpbmVkQnlQ
YXNzd29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSBvdmVycmlkZSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNXZWJBcmVhKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWE7IH0K
KyAgICBib29sIGlzQ2hlY2tib3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7IH0KKyAgICBib29sIGlzUmFkaW9CdXR0
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UmFkaW9CdXR0b247IH0KKyAgICBib29sIGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsg
fQorICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzRGF0YVRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzRmllbGRzZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0dyb3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJ
bnB1dEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
UHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0lucHV0U2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0xhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Rh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRGF0YVRh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGVS
b3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJsZUNv
bHVtbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxl
Q2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZpZWxk
c2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzR3JvdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBVHJlZUdy
aWRSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJbWFn
ZU1hcExpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZl
U3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
U3BpbkJ1dHRvblBhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc01vY2tPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51
TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVM
aXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNN
ZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc1NwaW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjsgfQorICAgIGJvb2wgaXNOYXRpdmVTcGluQnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3BpbkJ1
dHRvblBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNN
b2NrT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
TWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICBib29sIGlzU3dpdGNoKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlN3aXRjaDsgfQotICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9Ci0g
ICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0FSSUFUZXh0Q29udHJv
bCgpIGNvbnN0OwotICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0OwotICAg
IGJvb2wgaXNUYWJMaXN0KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRhYkxpc3Q7IH0KLSAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KLSAgICBib29sIGlzUmFk
aW9Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0dyb3VwOyB9Ci0gICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OyB9CisgICAgYm9vbCBpc01l
ZGlhT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
U3dpdGNoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlN3aXRjaDsgfQorICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0
dG9uOyB9CisgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOb25OYXRp
dmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUYWJMaXN0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRh
Ykxpc3Q7IH0KKyAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KKyAgICBib29sIGlzUmFkaW9H
cm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpSYWRpb0dyb3VwOyB9CisgICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OyB9
CiAgICAgYm9vbCBpc1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZTsgfQotICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsgfQor
ICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpUcmVlSXRlbTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOyB9Ci0gICAg
Ym9vbCBpc0J1dHRvbigpIGNvbnN0OwotICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQotICAgIGJv
b2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJldHVybiBpc0NoZWNrYm94KCkgfHwgaXNS
YWRpb0J1dHRvbigpOyB9Ci0gICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsgfQotICAgIGJvb2wg
aXNDYW52YXMoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q2FudmFzOyB9Ci0gICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOyB9Ci0gICAgYm9vbCBp
c0Jsb2NrcXVvdGUoKSBjb25zdDsKLSAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdDsKLSAgICBi
b29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbG9yV2VsbDsgfQotICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdDsK
LSAgICBib29sIGlzTWV0ZXIoKSBjb25zdDsKLSAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KLSAg
ICBib29sIGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpUb29sYmFyOyB9Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25z
dDsKLSAgICBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNLZXlib2Fy
ZEZvY3VzYWJsZSgpIGNvbnN0OwotICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7IH0KLSAgICBib29sIGlz
T3V0cHV0KCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQorICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW07IH0KKyAgICBib29sIGlz
Q2hlY2tib3hPclJhZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNDaGVja2JveCgpIHx8
IGlzUmFkaW9CdXR0b24oKTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7
IH0KKyAgICBib29sIGlzQ2FudmFzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhczsgfQorICAgIGJvb2wgaXNQb3BVcEJ1dHRv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjsgfQorICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Nv
bG9yV2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDb2xvcldlbGw7IH0KKyAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1NwbGl0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlNwbGl0dGVyOyB9CisgICAgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjsg
fQorICAgIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRG
b2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5
OyB9CisgICAgYm9vbCBpc091dHB1dCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0No
ZWNrZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNFbmFi
bGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VsZWN0
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNGb2N1c2Vk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSG92ZXJlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0luZGV0ZXJtaW5h
dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMb2FkZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNdWx0aVNlbGVj
dGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPZmZT
Y3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQcmVz
c2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVW52aXNp
dGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVmlzaXRl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1JlcXVpcmVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzUmVx
dWlyZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNMaW5rZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNFeHBhbmRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBv
dmVycmlkZSB7IH0KICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0OworICAgIEZsb2F0UmVjdCBjb252ZXJ0
RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3Bh
Y2UpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFu
eSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUu
Ci0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0OwotICAgIFJlZlB0
cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFydCwg
QWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhh
c1BsYWluVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhh
c1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Q7Ci0KLSAgICBib29sIHN1cHBvcnRzRGF0ZXRp
bWVBdHRyaWJ1dGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZUF0dHJp
YnV0ZVZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNhblNldEZvY3VzQXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZp
cnR1YWwgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBpc1NlbGVjdGVkT3B0
aW9uQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wg
aGFzQm9sZEZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aGFzSXRhbGljRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBoYXNNaXNzcGVsbGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxSYW5nZT4gZ2V0
TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0
eVNlYXJjaERpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNQbGFpblRleHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZUZvbnQo
UmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1Rl
eHQ7IH0KKyAgICBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNv
bnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXROdW1lcmlj
VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0
U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZh
dWx0T2JqZWN0SW5jbHVzaW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkQnlEZWZhdWx0KCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9u
TWVzc2FnZSgpIGNvbnN0OwotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Owot
ICAgIAotICAgIHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
aW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGludCB0
YWJsZUxldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBT
dHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAg
dmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAg
IHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0K
LSAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBm
OyB9Ci0gICAgdmlydHVhbCBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IDAuMGY7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkUmFkaW9C
dXR0b24oKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpOwotICAgIHZpcnR1YWwgaW50IGxheW91dENv
dW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIGJvb2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHVu
c2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBoZWFkaW5n
TGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgaW50IHRhYmxlTGV2ZWwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHZh
bHVlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9Cisg
ICAgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7
IH0KKyAgICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MC4wZjsgfQorICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMC4wZjsgfQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFi
SXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIHNl
bGVjdGVkTGlzdEl0ZW0oKSBvdmVycmlkZTsKKyAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc0FSSUFDb250cm9sKEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdDsKLSAg
ICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUNvbnRy
b2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dDsKLSAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFE
ZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAg
dm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdl
UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsK
LSAgICB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdDsKLSAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFM
YWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdDsKLSAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFz
UG9wdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBwb3B1cFZhbHVlKCkg
Y29uc3Q7Ci0gICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNI
YXNQb3B1cCgpIGNvbnN0OwotICAgIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0OwotICAg
IGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGludmFsaWRTdGF0dXMo
KSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzUHJlc3NlZCgpIGNvbnN0OwotICAgIGJvb2wgc3Vw
cG9ydHNFeHBhbmRlZCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29uc3Q7
Ci0gICAgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Q7Ci0gICAgY29u
c3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0
b21TdHJpbmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgY2xhc3NMaXN0KFZlY3Rv
cjxTdHJpbmc+JikgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkg
Y29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUoKSBjb25z
dDsKLSAgICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0N1
cnJlbnQoKSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25z
dDsKLSAgICAKKyAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFp
bmVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVy
ZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJl
bGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3duc0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBoYXNQb3B1cCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBz
dXBwb3J0c0hhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwcmVzc2VkSXNQcmVz
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSYW5n
ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmll
ckF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxpbmtS
ZWxWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJp
bmc+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3Qg
U3RyaW5nIGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gdGhl
cmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCi0gICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFs
UHJlc2VuY2UoKSBjb25zdDsKLSAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25z
dDsKLSAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0
c1NldFNpemUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdDsKLSAg
ICBpbnQgc2V0U2l6ZSgpIGNvbnN0OwotICAgIGludCBwb3NJblNldCgpIGNvbnN0OwotICAgIAor
ICAgIGJvb2wgaWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c01vZGFsTm9kZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c1NldFNpemUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBpbnQgc2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBwb3NJblNl
dCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gQVJJQSBkcmFnIGFuZCBkcm9wCi0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKSB7IHJldHVybiB7IH07
IH0KLSAgICAKKyAgICBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVJJQUdyYWJiZWQoKSBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3Zl
cnJpZGUgeyB9CisgICAgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkg
b3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CisKICAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVgg
b2JqZWN0IHRvIHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIC8vIENhbGxlZCBvbiB0aGUgQVggb2JqZWN0IGFmdGVy
IHRoZSByZW5kZXIgdHJlZSBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSByaWdodCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZSogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0K
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG5leHRTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Q7Ci0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBj
b25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgQVhDb3JlT2JqZWN0KiBmb2N1c2Vk
VUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBm
aXJzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4
dFNpYmxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdCBvdmVy
cmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQo
aW50IGxpbWl0KSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3Jl
T2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RB
Y2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSopOwotICAgIHZvaWQgZmluZE1hdGNo
aW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJl
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0
cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBvdmVycmlkZTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mUm9s
ZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBUZXh0IHNlbGVj
dGlvbgogcHJpdmF0ZToKQEAgLTYxOCwzOTcgKzM3NywzOTUgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJhbmdlPiBmaW5k
VGV4dFJhbmdlKFZlY3RvcjxTdHJpbmc+IGNvbnN0JiBzZWFyY2hTdHJpbmdzLCBSZWZQdHI8UmFu
Z2U+IGNvbnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24pIGNvbnN0
OwogcHVibGljOgotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Q7Ci0gICAgVmVjdG9yPFN0
cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29u
c3QmKTsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCB7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jy
ZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9s
Rm9yTGFiZWxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
YXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQ
cmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmls
aXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24g
Y29uc3QmKSBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVP
YmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBsaW5r
ZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
IHsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRp
bmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb24pIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIEFjY2Vzc2liaWxp
dHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6OlVua25vd247IH0KKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9m
QXJpYVJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgYXJp
YVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAotICAg
IHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+
JikgY29uc3QgeyB9OworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2li
aWxpdHlUZXh0PiYpIGNvbnN0IG92ZXJyaWRlIHsgfTsKICAgICAvLyBBIHNpbmdsZSBtZXRob2Qg
Zm9yIGdldHRpbmcgYSBjb21wdXRlZCBsYWJlbCBmb3IgYW4gQVhPYmplY3QuIEl0IGNvbmRlbnNl
cyB0aGUgbnVhbmNlcyBvZiBhY2Nlc3NpYmlsaXR5VGV4dC4gVXNlZCBieSBJbnNwZWN0b3IuCi0g
ICAgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKTsKLSAgICAKKyAgICBTdHJpbmcgY29tcHV0ZWRMYWJl
bCgpIG92ZXJyaWRlOworCiAgICAgLy8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5hbWUg
b24gYW4gQWNjZXNzaWJsZU9iamVjdC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5h
bWUoY29uc3QgQXRvbVN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVz
UmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1l
KGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGhhc0F0dHJpYnV0ZXNS
ZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzaWJp
bGl0eSBUZXh0IC0gKFRvIGJlIGRlcHJlY2F0ZWQpLgotICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmly
dHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0
cmluZygpOyB9CiAKICAgICAvLyBNZXRob2RzIGZvciBkZXRlcm1pbmluZyBhY2Nlc3NpYmlsaXR5
IHRleHQuCi0gICAgYm9vbCBpc0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgeyByZXR1cm4gYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQotICAgIHZp
cnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJF
bGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJl
ZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBTdHJp
bmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0OwotICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJp
dmVzRnJvbUNvbnRlbnQoKSBjb25zdDsKLSAgICAKKyAgICBib29sIGlzQVJJQVN0YXRpY1RleHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0OyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgdGV4dFVuZGVyRWxlbWVu
dChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVu
ZGVyRWxlbWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAg
ICBTdHJpbmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAg
aW50IHRleHRMZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgU3RyaW5n
IGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmco
KTsgfQorICAgIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29u
dGVudCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gQWJicmV2aWF0aW9ucwotICAgIHZpcnR1
YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9y
PEVsZW1lbnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBTdHJpbmcgZXhw
YW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVu
dCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gT25s
eSBpZiBpc0NvbG9yV2VsbCgpCi0gICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBp
bnQmIGcsIGludCYgYikgY29uc3QgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CisgICAgdm9pZCBj
b2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0IG92ZXJyaWRlIHsgciA9IDA7
IGcgPSAwOyBiID0gMDsgfQogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yb2xlOyB9CiAKLSAgICB2aXJ0dWFsIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKLSAgICBBWElEIGF4T2JqZWN0SUQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9Ci0gICAgCisgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lkOyB9CisKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogYW5jaG9yRWxl
bWVudEZvck5vZGUoTm9kZSopOwogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFk
aW5nRWxlbWVudEZvck5vZGUoTm9kZSopOwotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBib29sIHN1cHBvcnRzUHJlc3NB
Y3Rpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIEludFJlY3QgcGl4ZWxT
bmFwcGVkQm91bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3QoYm91
bmRpbmdCb3hSZWN0KCkpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkg
Y29uc3QgPSAwOwotICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRS
ZWN0KCkuc2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCk7CisgICAg
RWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBib29sIHN1cHBvcnRzUHJlc3NBY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBF
bGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJl
Y3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzbmFwcGVkSW50UmVjdChib3VuZGluZ0JveFJl
Y3QoKSk7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgPSAw
OworICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVsZW1lbnRS
ZWN0KCkuc2l6ZSgpOyB9CisgICAgSW50UG9pbnQgY2xpY2tQb2ludCgpIG92ZXJyaWRlOwogICAg
IHN0YXRpYyBJbnRSZWN0IGJvdW5kaW5nQm94Rm9yUXVhZHMoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
VmVjdG9yPEZsb2F0UXVhZD4mKTsKLSAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBhdGgoKSBjb25z
dCB7IHJldHVybiBQYXRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0
SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGxhaW5U
ZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5n
ZSgpOyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJldHVybiBzZWxl
Y3RlZFRleHRSYW5nZSgpLnN0YXJ0OyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkgY29u
c3QgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5sZW5ndGg7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBVUkwoKTsgfQotICAgIHZpcnR1YWwgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7
IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3Qg
eyByZXR1cm4gbnVsbEF0b20oKTsgfQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNv
bnN0OwotICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1
bWVudEZyYW1lVmlldygpIGNvbnN0OwotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgIEZy
YW1lKiBtYWluRnJhbWUoKSBjb25zdDsKLSAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25z
dDsKLSAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdDsKLSAgICBTdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdDsKKyAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUGF0aCgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0
ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGFpblRl
eHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWlu
VGV4dFJhbmdlKCk7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KKyAgICB1bnNpZ25lZCBz
ZWxlY3Rpb25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgp
Lmxlbmd0aDsgfQorCisgICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFVSTCgp
OyB9CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBh
Y2Nlc3NLZXkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAgY29u
c3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3aWRn
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgV2lkZ2V0KiB3aWRn
ZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNv
bnN0IG92ZXJyaWRlOworICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZy
YW1lKiBtYWluRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogdG9wRG9jdW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3Io
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAvLyAxLWJhc2VkLCB0byBtYXRjaCB0aGUgYXJpYS1sZXZlbCBzcGVjLgotICAgIHZpcnR1
YWwgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgYm9vbCByZXBsYWNlVGV4dElu
UmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKTsKLSAgICBib29sIGlu
c2VydFRleHQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxv
YXQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIHsg
fQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4
dFJhbmdlJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHByZXNzKCk7Ci0gICAgYm9vbCBwZXJmb3Jt
RGVmYXVsdEFjdGlvbigpIHsgcmV0dXJuIHByZXNzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBpbmNyZW1lbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgeyB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHRleHRDaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlS
b2xlKCkgeyB9Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGRyZW4oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoQWNjZXNzaWJpbGl0
eU9iamVjdCopOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgdW5zaWduZWQpOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0
ZVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZpcnR1YWwgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29s
IGhhc0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlQ2hpbGRyZW47IH0KKyAgICB1bnNp
Z25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKwor
ICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVj
dGVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVk
VGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHJlcGxhY2VUZXh0
SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQg
c2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHByZXNzKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBwZXJmb3JtRGVmYXVsdEFjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIHBy
ZXNzKCk7IH0KKworICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW5jcmVtZW50KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBkZWNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZSB7IH0KKyAgICBjb25zdCBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5l
ZWRlZCA9IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQg
aW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgYm9v
bCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2hhdmVDaGlsZHJlbjsgfQogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgYm9vbCBuZWVkc1RvVXBk
YXRlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0TmVlZHNU
b1VwZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRl
U3VidHJlZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRl
OworICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
RnJvbVBhcmVudCgpOworICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlOwogI2Vs
c2UKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIHsgfQorICAgIHZvaWQgZGV0
YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCBib29sIGlz
RGV0YWNoZWRGcm9tUGFyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0
aXZlRGVzY2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgeyB9Ci0gICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KikgY29u
c3Q7Ci0gICAgYm9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCopIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tD
aGlsZCgpIGNvbnN0OworICAgIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdmlz
aWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJp
ZGUgeyB9CisgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURl
c2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBo
YW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgaGFu
ZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaXNEZXNjZW5k
YW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNzaWJpbGl0eVJv
bGUgYXJpYVJvbGVUb1dlYkNvcmVSb2xlKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgaGFzQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5n
JiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGJvb2wgaGFz
VGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gZWxlbWVu
dFJhbmdlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUYWdOYW1l
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQorCisgICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFu
Z2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVkc0No
YXJhY3RlcihOb2RlKiByZXBsYWNlZE5vZGUpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQ
b3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxlZnRM
aW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2Vu
dGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNp
YmxlUG9zaXRpb25SYW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNv
bnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VG
b3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OworCisgICAgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlv
bnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHBvc2l0aW9uT2ZSaWdodFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRp
b25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNp
YmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBz
ZW50ZW5jZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHN0eWxlUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFu
Z2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBT
dHJpbmcgc3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKTsKLSAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Q7
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAg
dmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0
IHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25S
YW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJh
bmdlJikgY29uc3QgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
Qm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91
bmRzKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zKSBjb25zdCB7IHJldHVybiB2aXNpYmxlUG9zLm5leHQoKTsg
fQotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MucHJldmlv
dXMoKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEVuZChjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5l
RW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Nl
bnRlbmNlU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBW
aXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0
SW5kZXhPSyAqLykgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNv
bnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgdmlydHVhbCBpbnQgaW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4g
MDsgfQotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIGludCBsaW5lRm9yUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgUGxhaW5UZXh0UmFuZ2Ug
cGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFr
cyhWZWN0b3I8aW50PiYpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9B
WFJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsg
fQotICAgIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50
JikgY29uc3Q7Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRleCh1
bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBsYWluVGV4
dFJhbmdlIGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdmly
dHVhbCBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0Zv
clJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zm
c2V0KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Cisg
ICAgU3RyaW5nIHN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJ
bnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25S
YW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25S
YW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgQWNjZXNzaWJpbGl0eVZpc2libGVQb3Np
dGlvbkZvckJvdW5kcykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHZpc2libGVQb3MubmV4dCgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2aW91cygpOyB9CisgICAgVmlzaWJs
ZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlOworICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVF
bmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNl
RW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFy
YWdyYXBoRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKworICAgIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
KworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGluZUZv
clBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBs
YWluVGV4dFJhbmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXgoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KKworICAg
IHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIFBs
YWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VG
b3JQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4
dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VG
b3JJbmRleCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgZG9BWFN0cmlu
Z0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KKyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIEludFJl
Y3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5UZXh0
UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KICAgICBzdGF0aWMg
U3RyaW5nIGxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mKTsKIAotICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQp
OworICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpIG92ZXJyaWRlOwogCi0g
ICAgU3RyaW5nIGNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBjb21wdXRl
ZFJvbGVTdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z1ZhbHVlRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBT
dHJpbmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LSAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNB
QSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVl
Rm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5n
IHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmco
KTsgfQorICAgIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBTdHJpbmcoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKTsgfQorCisgICAgU3RyaW5nIHBh
c3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Cisg
ICAgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNW
YWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXV0b0ZpbGxCdXR0
b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQotICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdDsKLSAgICBib29sIGlzVmFs
dWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0OwotICAgIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1
ZUF1dG9maWxsQnV0dG9uVHlwZSgpIGNvbnN0OwotICAgIAogICAgIC8vIFVzZWQgYnkgYW4gQVJJ
QSB0cmVlIHRvIGdldCBhbGwgaXRzIHJvd3MuCi0gICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgLy8gVXNlZCBieSBhbiBBUklBIHRy
ZWUgaXRlbSB0byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9z
ZS4KLSAgICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJik7Ci0gICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25s
eSBpdHMgY29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLiAK
LSAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jik7Ci0gICAgCisgICAgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVl
IGl0ZW0gdG8gZ2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxkIHRyZWUgaXRl
bXMgYW5kIGdyb3Vwcy4KKyAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGxpdmUtcmVnaW9uIGZl
YXR1cmVzLgotICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0g
dHJ1ZSkgY29uc3Q7Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZP
ZmYgPSB0cnVlKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5j
ZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCB7IHJldHVy
biBudWxsQXRvbSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlm
T2ZmID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24o
Ym9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdp
b25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBi
b29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBz
dGF0aWMgY29uc3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nlc3Np
YmlsaXR5Um9sZSk7CiAgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChj
b25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY29udGVudEVkaXRhYmxlQXR0cmli
dXRlSXNFbmFibGVkKEVsZW1lbnQqKTsKLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJp
YnV0ZVNldCgpIGNvbnN0OworICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Q7CisgICAgYm9vbCBzdXBw
b3J0c1JlYWRPbmx5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUo
KSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgYm9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBhdXRv
Q29tcGxldGVWYWx1ZSgpIGNvbnN0OwotICAgIAotICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmli
dXRlcygpIGNvbnN0OwotICAgIAogICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCi0gICAg
dmlydHVhbCBPcHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1
cm4gT3B0aW9uU2V0PFNwZWFrQXM+IHsgfTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBzcGVh
a0FzUHJvcGVydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcHRpb25TZXQ8U3BlYWtBcz4g
eyB9OyB9CiAKICAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xsaW5nIGFz
IG1hbnkgbmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmpl
Y3QgY2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwg
Y29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3Vi
Rm9jdXMoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJs
ZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2Ny
b2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9m
IHRoZSB0b3AtbGV2ZWwgd2luZG93LgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBv
aW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgCi0gICAgZW51bSBjbGFzcyBTY3JvbGxC
eVBhZ2VEaXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsKLSAgICBib29sIHNjcm9s
bEJ5UGFnZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0OwotICAgIEludFBvaW50IHNjcm9s
bFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBzY3JvbGxDb250ZW50c1NpemUoKSBjb25z
dDsgICAgCi0gICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKLSAg
ICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlv
bnMmKSBjb25zdDsKLSAgICAKLSAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCk7Ci0g
ICAgdm9pZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKTsKKyAgICB2b2lkIHNjcm9s
bFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJv
b2wgc2Nyb2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXpl
IHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3Qgc2Nyb2xs
VmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUb01h
a2VWaXNpYmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKIAogICAgIC8v
IEZpcmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0
aGUgaXNJZ25vcmVkIHZhbHVlIGNoYW5nZWQuCi0gICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1
ZUNoYW5nZWQoKTsKKyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJy
aWRlOwogCiAgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0aEVs
ZW1lbnQoKS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9v
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRleHQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1iZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRv
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNl
T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01h
dGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNj
cmlwdE9iamVjdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmpl
Y3RUeXBlKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoRWxlbWVudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5j
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoU3Vi
c2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlUm93KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlQ2Vs
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0
aXNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01h
dGhUb2tlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01h
dGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmpl
Y3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2Jq
ZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAorICAgIEFYQ29yZU9iamVjdCogbWF0aFJh
ZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9i
amVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
KwogICAgIC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBGcmFjdGlvbiBjb21wb25lbnRzLgotICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5v
bWluYXRvck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIG1h
dGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhD
b3JlT2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9i
amVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKKyAg
ICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVj
dCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIC8vIEZlbmNlZCBjb21wb25l
bnRzLgotICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJp
bmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IG1hdGhMaW5l
VGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Fub255
bW91c01hdGhPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCisgICAgU3Ry
aW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5n
KCk7IH0KKyAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBNdWx0aXNjcmlwdHMg
Y29tcG9uZW50cy4KLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0eU9i
amVjdCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dFBhaXJzOwotICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0
aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRz
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQotICAgIAorICAgIHZvaWQg
bWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9CisKICAgICAvLyBWaXNpYmlsaXR5LgotICAgIGJvb2wg
aXNBWEhpZGRlbigpIGNvbnN0OwotICAgIGJvb2wgaXNET01IaWRkZW4oKSBjb25zdDsKLSAgICBi
b29sIGlzSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVu
KCk7IH0KKyAgICBib29sIGlzQVhIaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
RE9NSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGlzQVhIaWRkZW4oKSB8fCBpc0RPTUhpZGRlbigpOyB9CiAKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWSkKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3Jh
cHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAgIHZv
aWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgeyBtX3dy
YXBwZXIgPSB3cmFwcGVyOyB9CisgICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKiB3cmFwcGVyKSBvdmVycmlkZSB7IG1fd3JhcHBlciA9IHdyYXBwZXI7IH0KICNl
bHNlCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCk7CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBw
YXJlbnQpIG92ZXJyaWRlOwogI2Vsc2UKLSAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVu
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQ
YXJlbnQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIEVO
QUJMRShBQ0NFU1NJQklMSVRZKQogICAgIC8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWV0aG9kIGZv
ciBkZXRlcm1pbmluZyBpZiBhbiBhdHRhY2htZW50IGlzIGlnbm9yZWQKLSAgICBib29sIGFjY2Vz
c2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Q7CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5
SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIC8vIGdpdmVzIHBsYXRmb3Jt
cyB0aGUgb3Bwb3J0dW5pdHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxk
IGJlIGluY2x1ZGVkCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmls
aXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBv
dmVycmlkZTsKICNlbHNlCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
IGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CisgICAgYm9vbCBh
Y2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVuZ3Ro
KCk7Ci0gICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdDsKLSAgICBib29sIGlz
SW5wdXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdDsKKyAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3
b3JkRmllbGRMZW5ndGgoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5l
cigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgCisKICAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vz
c2liaWxpdHlPYmplY3QgdG8gdXBkYXRlIGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCiAgICAg
Ly8gb3RoZXIgb3BlcmF0aW9ucyB1cGRhdGUgdHlwZSBvcGVyYXRpb25zCi0gICAgdm9pZCB1cGRh
dGVCYWNraW5nU3RvcmUoKTsKLSAgICAKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG92
ZXJyaWRlOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoKGJvb2wpOwotICAgIGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1
ZUluVGl0bGUoKSBjb25zdDsKKyAgICBib29sIHByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0
Y2goKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50
RGlzcGF0Y2goYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJu
c1ZhbHVlSW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzcGVlY2hIaW50QXR0
cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgZGVzY3JpcHRpb25BdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0
ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUo
KSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBj
b25zdDsKLSAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIGJvb2wg
Y2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENhcmV0
QnJvd3NpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBmb2N1c2FibGVBbmNlc3RvcigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGVkaXRhYmxlQW5jZXN0b3IoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoaWdoZXN0RWRp
dGFibGVBbmNlc3RvcigpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzYWJsZUFuY2Vz
dG9yKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWRpdGFibGVBbmNlc3Rv
cigpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RFZGl0YWJsZUFu
Y2VzdG9yKCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyog
YW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdDsK
KyAgICBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGF0aWMg
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0Y2hlZFBhcmVudChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0JiwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKT4mKTsKLSAgICAKLSAgICB2b2lkIGNsZWFySXNJZ25v
cmVkRnJvbVBhcmVudERhdGEoKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsgfQotICAgIHZvaWQgc2V0SXNJZ25vcmVk
RnJvbVBhcmVudERhdGFGb3JDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7Ci0gICAgCisKKyAg
ICB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlkZSB7IG1faXNJZ25v
cmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEo
KTsgfQorICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVP
YmplY3QqKSBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIEFYSUQgbV9pZCB7IDAgfTsKICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKQEAgLTEwMjEsMjQgKzc3
OCwyNCBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKICAgICBib29sIG1faXNvbGF0ZWRUcmVlTm9kZUluaXRpYWxpemVkIHsgZmFsc2UgfTsKICNl
bmRpZgotICAgIAotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJp
bGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEgPSBkYXRhOyB9CisKKyAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSYgZGF0YSkgb3ZlcnJpZGUgeyBtX2lz
SWdub3JlZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCiAgICAgdmlydHVhbCBib29sIGNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIAorCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBp
dHMgU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xs
YWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgeyB9CiAgICAgU2Nyb2xs
YWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhQW5jZXN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNjcm9s
bEFyZWFBbmRBbmNlc3RvcihzdGQ6OnBhaXI8U2Nyb2xsYWJsZUFyZWEqLCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4mKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlP
YmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxp
dHlTZWFyY2hDcml0ZXJpYSosIHNpemVfdCk7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmls
aXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYSopOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFy
Y2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
Kik7Ci0gICAgc3RhdGljIGJvb2wgb2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3Vs
dExpbWl0KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEq
LCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKworICAgIHN0YXRpYyBib29sIGlzQWNj
ZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBWENvcmVPYmplY3QqLCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBzaXplX3QpOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNz
aWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFy
Y2hDcml0ZXJpYSopOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hN
YXRjaChBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAgICBz
dGF0aWMgYm9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQVhD
b3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJik7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBidXR0b25Sb2xl
VHlwZSgpIGNvbnN0OwotICAgIGJvb2wgaXNPbnNjcmVlbigpIGNvbnN0OworICAgIGJvb2wgaXNP
blNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZGlzcGF0Y2hUb3VjaEV2ZW50KCk7
CiAKICAgICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwpAQCAtMTA2NCwxMCArODIx
LDEwIEBAIHByb3RlY3RlZDoKIH07CiAKICNpZiAhRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCi1pbmxp
bmUgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSB7IHJldHVybiBtX2NoaWxkcmVu
OyB9CitpbmxpbmUgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSBvdmVycmlkZSB7
IHJldHVybiBtX2NoaWxkcmVuOyB9CiBpbmxpbmUgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogaW5s
aW5lIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KLWlubGluZSB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpIHsgfQoraW5saW5lIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAog
QWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3Qg
Tm9kZSosIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Jik+JiBpc0FjY2Vzc2libGUpOwpAQCAtMTA3Niw5ICs4MzMsOSBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2RlKiwgY29uc3QgV1RG
OjpGdW5jdAogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShU
b1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVybiBvYmplY3Qu
cHJlZGljYXRlOyB9IFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QVhD
b3JlT2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5wcmVkaWNhdGU7IH0gXAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QpCi1zdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSYgY29udGV4dCkgeyByZXR1cm4gY29u
dGV4dC5pc0FjY2Vzc2liaWxpdHlPYmplY3QoKTsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkFYQ29yZU9iamVjdCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0FjY2Vz
c2liaWxpdHlPYmplY3QoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaAppbmRleCA5OGZmYjMxNWUyMTBiMGNiMzVkYmU3OWJjYzIwZjkxMTAyMTc4
YmJjLi4yOTAzZGUxOTg4YzY1ZDUyYjViMjA3YjAwNjA1MTFlZGY1MzgxNzdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaApAQCAtMjUsNyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3Qu
aCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgi
CisjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFURk9STShXSU4pCkBA
IC00NSw2ICs1MCwyMyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBOb2RlOworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFJl
bmRlck9iamVjdDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBQYXRoOworY2xhc3MgV2lk
Z2V0OworY2xhc3MgUGFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRnJhbWU7CitjbGFzcyBG
cmFtZVZpZXc7CitjbGFzcyBTY3JvbGxWaWV3OworY2xhc3MgQVhPYmplY3RDYWNoZTsKK2NsYXNz
IEFYQ29yZU9iamVjdDsKK2NsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Oworc3RydWN0IEFj
Y2Vzc2liaWxpdHlUZXh0Oworc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zOworCiB0
eXBlZGVmIHVuc2lnbmVkIEFYSUQ7CiBleHRlcm4gY29uc3QgQVhJRCBJbnZhbGlkQVhJRDsKIHR5
cGVkZWYgdW5zaWduZWQgQVhJc29sYXRlZFRyZWVJRDsgICAgCkBAIC0yMDMsMzYgKzIyNSw4NTYg
QEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgV2luZG93LAogfTsKIAotY2xh
c3MgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSB7CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlEZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkLCBFbGVt
ZW50Q2hhbmdlIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSB7
IFNjcmVlbiwgUGFnZSB9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rp
b24geworICAgIE5leHQgPSAxLAorICAgIFByZXZpb3VzLAorfTsKKworZW51bSBjbGFzcyBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5IHsKKyAgICBBbnlUeXBlID0gMSwKKyAgICBBcnRpY2xlLAorICAg
IEJsb2NrcXVvdGVTYW1lTGV2ZWwsCisgICAgQmxvY2txdW90ZSwKKyAgICBCb2xkRm9udCwKKyAg
ICBCdXR0b24sCisgICAgQ2hlY2tCb3gsCisgICAgQ29udHJvbCwKKyAgICBEaWZmZXJlbnRUeXBl
LAorICAgIEZvbnRDaGFuZ2UsCisgICAgRm9udENvbG9yQ2hhbmdlLAorICAgIEZyYW1lLAorICAg
IEdyYXBoaWMsCisgICAgSGVhZGluZ0xldmVsMSwKKyAgICBIZWFkaW5nTGV2ZWwyLAorICAgIEhl
YWRpbmdMZXZlbDMsCisgICAgSGVhZGluZ0xldmVsNCwKKyAgICBIZWFkaW5nTGV2ZWw1LAorICAg
IEhlYWRpbmdMZXZlbDYsCisgICAgSGVhZGluZ1NhbWVMZXZlbCwKKyAgICBIZWFkaW5nLAorICAg
IEhpZ2hsaWdodGVkLAorICAgIEl0YWxpY0ZvbnQsCisgICAgS2V5Ym9hcmRGb2N1c2FibGUsCisg
ICAgTGFuZG1hcmssCisgICAgTGluaywKKyAgICBMaXN0LAorICAgIExpdmVSZWdpb24sCisgICAg
TWlzc3BlbGxlZFdvcmQsCisgICAgT3V0bGluZSwKKyAgICBQbGFpblRleHQsCisgICAgUmFkaW9H
cm91cCwKKyAgICBTYW1lVHlwZSwKKyAgICBTdGF0aWNUZXh0LAorICAgIFN0eWxlQ2hhbmdlLAor
ICAgIFRhYmxlU2FtZUxldmVsLAorICAgIFRhYmxlLAorICAgIFRleHRGaWVsZCwKKyAgICBVbmRl
cmxpbmUsCisgICAgVW52aXNpdGVkTGluaywKKyAgICBWaXNpdGVkTGluaywKK307CisKK3N0cnVj
dCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgeworICAgIEFYQ29yZU9iamVjdCogc3RhcnRP
YmplY3Q7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247
CisgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IHNlYXJjaEtleXM7CisgICAgU3Ry
aW5nIHNlYXJjaFRleHQ7CisgICAgdW5zaWduZWQgcmVzdWx0c0xpbWl0OworICAgIGJvb2wgdmlz
aWJsZU9ubHk7CisgICAgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHk7CisKKyAgICBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEoQVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hUZXh0
LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRl
RGVzY2VuZGFudHNPbmx5KQorICAgICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQorICAg
ICAgICAsIHNlYXJjaERpcmVjdGlvbihzZWFyY2hEaXJlY3Rpb24pCisgICAgICAgICwgc2VhcmNo
VGV4dChzZWFyY2hUZXh0KQorICAgICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQpCisg
ICAgICAgICwgdmlzaWJsZU9ubHkodmlzaWJsZU9ubHkpCisgICAgICAgICwgaW1tZWRpYXRlRGVz
Y2VuZGFudHNPbmx5KGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKKyAgICB7IH0KK307CisKK2Vu
dW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiB7CisgICAgSW5jbHVkZU9iamVj
dCwKKyAgICBJZ25vcmVPYmplY3QsCisgICAgRGVmYXVsdEJlaGF2aW9yLAorfTsKKworZW51bSBj
bGFzcyBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIHsgRmFsc2UsIFRydWUsIFBhZ2UsIFN0ZXAs
IExvY2F0aW9uLCBEYXRlLCBUaW1lIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlIHsKKyAgICBPZmYgPSAwLAorICAgIE9uLAorICAgIE1peGVkLAorfTsKKworZW51bSBj
bGFzcyBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiB7CisgICAgTm9uZSwKKyAgICBBc2NlbmRp
bmcsCisgICAgRGVzY2VuZGluZywKKyAgICBPdGhlciwKKyAgICBJbnZhbGlkLAorfTsKKworZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSB7CisgICAgQmVnaW4sIC8v
IFNlYXJjaCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVsZW1lbnQuCisgICAgU2VsZWN0aW9u
LCAvLyBTZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgor
ICAgIEVuZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorfTsKKworZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiB7CisgICAgRm9yd2FyZCwg
Ly8gT2NjdXJyZW5jZSBhZnRlciB0aGUgc3RhcnRpbmcgcmFuZ2UuCisgICAgQmFja3dhcmQsIC8v
IE9jY3VycmVuY2UgYmVmb3JlIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBDbG9zZXN0LCAvLyBD
bG9zZXN0IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVyIG9y
IGJlZm9yZS4KKyAgICBBbGwgLy8gQWxsIG9jY3VycmVuY2VzCit9OworCitzdHJ1Y3QgQWNjZXNz
aWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSB7CisgICAgVmVjdG9yPFN0cmluZz4gc2VhcmNoU3Ry
aW5nczsgLy8gVGV4dCBzdHJpbmdzIHRvIHNlYXJjaCBmb3IuCisgICAgQWNjZXNzaWJpbGl0eVNl
YXJjaFRleHRTdGFydEZyb20gc3RhcnQ7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uOworCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSgp
CisgICAgICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206OlNlbGVj
dGlvbikKKyAgICAgICAgLCBkaXJlY3Rpb24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rp
b246OkZvcndhcmQpCisgICAgeyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0
T3BlcmF0aW9uVHlwZSB7CisgICAgU2VsZWN0LAorICAgIFJlcGxhY2UsCisgICAgQ2FwaXRhbGl6
ZSwKKyAgICBMb3dlcmNhc2UsCisgICAgVXBwZXJjYXNlCit9OworCitzdHJ1Y3QgQWNjZXNzaWJp
bGl0eVRleHRPcGVyYXRpb24geworICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2Vz
OyAvLyB0ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4KKyAgICBBY2Nlc3NpYmls
aXR5VGV4dE9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0OyAv
LyBGb3IgdHlwZSA9IHJlcGxhY2UuCisKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbigp
CisgICAgICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVjdCkK
KyAgICB7IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKKyAg
ICBWZXJ0aWNhbCwKKyAgICBIb3Jpem9udGFsLAorICAgIFVuZGVmaW5lZCwKK307CisKK3N0cnVj
dCBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgeworICAgIGVudW0gQ2hpbGRyZW5J
bmNsdXNpb24geworICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hpbGRy
ZW4sCisgICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZUFsbENoaWxkcmVuLAorICAg
ICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4s
IC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gQVJJQSBjb25jZXB0OiBuYW1lRnJvbQorICAgIH07CisK
KyAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1c2lvbjsKKyAgICBib29sIGluY2x1
ZGVGb2N1c2FibGVDb250ZW50OworICAgIE5vZGUqIGlnbm9yZWRDaGlsZE5vZGU7CisKKyAgICBB
Y2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9IFRl
eHRVbmRlckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2UsIE5v
ZGUqIGlnbm9yZWQgPSBudWxscHRyKQorICAgICAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMpCisg
ICAgICAgICwgaW5jbHVkZUZvY3VzYWJsZUNvbnRlbnQoaSkKKyAgICAgICAgLCBpZ25vcmVkQ2hp
bGROb2RlKGlnbm9yZWQpCisgICAgeyB9Cit9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCit0eXBl
ZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOworI2VuZGlmCisKK3N0cnVjdCBQbGFpblRleHRS
YW5nZSB7CisgICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CisgICAgdW5zaWduZWQgbGVuZ3RoIHsg
MCB9OworCisgICAgUGxhaW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBQbGFpblRleHRS
YW5nZSh1bnNpZ25lZCBzLCB1bnNpZ25lZCBsKQorICAgICAgICA6IHN0YXJ0KHMpCisgICAgICAg
ICwgbGVuZ3RoKGwpCisgICAgeyB9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGFpblRl
eHRSYW5nZShOU1JhbmdlKTsKKyNlbmRpZgorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzIHsKKyAgICBGaXJzdCwKKyAgICBMYXN0LAorfTsKKwor
c3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQ7
CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZDsKKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKCkg
PSBkZWZhdWx0OworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcywgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQorICAgICAgICA6IHN0YXJ0KHMpCisgICAg
ICAgICwgZW5kKGUpCisgICAgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCisgICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0
YXJ0KCkpCisgICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKKyAgICB7IH0KKworICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgp
OyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7
IFN1YnNjcmlwdCwgU3VwZXJzY3JpcHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhN
dWx0aXNjcmlwdE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0
U3Vic2NyaXB0LCBQb3N0U3VwZXJzY3JpcHQgfTsKKworLy8gVXNlIHRoaXMgc3RydWN0IHRvIHN0
b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNvIHRo
YXQgaW4gYWRkQ2hpbGRyZW4oKQorLy8gd2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBjaGFp
biBmb3IgZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwg
aW5mb3JtYXRpb24gYWxyZWFkeS4KK3N0cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBh
cmVudERhdGEgeworICAgIEFYQ29yZU9iamVjdCogcGFyZW50IHsgbnVsbHB0ciB9OworICAgIGJv
b2wgaXNBWEhpZGRlbiB7IGZhbHNlIH07CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRP
ZkFyaWFSb2xlIHsgZmFsc2UgfTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50
IHsgZmFsc2UgfTsKKworICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShB
WENvcmVPYmplY3QqIHBhcmVudCA9IG51bGxwdHIpCisgICAgICAgIDogcGFyZW50KHBhcmVudCkK
KyAgICB7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsgfQor
fTsKKworY2xhc3MgQVhDb3JlT2JqZWN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFY
Q29yZU9iamVjdD4gewogcHVibGljOgotICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QVhDb3JlT2JqZWN0KCkgPSBkZWZh
dWx0OwogCi0gICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICAvLyBBZnRlciBj
b25zdHJ1Y3RpbmcgYW4gYWNjZXNzaWJsZSBvYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQorICAg
IC8vIHVuaXF1ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBp
bml0KCkgbXVzdAorICAgIC8vIGJlIGNhbGxlZCBsYXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRP
YmplY3RJRChBWElEKSA9IDA7CisgICAgdmlydHVhbCBBWElEIG9iamVjdElEKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBpbml0KCkgPSAwOworCisgICAgLy8gV2hlbiB0aGUgY29ycmVz
cG9uZGluZyBXZWJDb3JlIG9iamVjdCB0aGF0IHRoaXMgYWNjZXNzaWJsZSBvYmplY3QKKyAgICAv
LyByZXByZXNlbnRzIGlzIGRlbGV0ZWQsIGl0IG11c3QgYmUgZGV0YWNoZWQuCisgICAgdmlydHVh
bCB2b2lkIGRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0Q2FjaGUq
ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgPSAw
OworCisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvcjsKKworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmpl
Y3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGlzTGluaygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExp
bmsoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzTmF0aXZlSW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VCdXR0
b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5p
bmdQYXNzd29yZEZpZWxkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250
cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzQ2hlY2tib3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmFkaW9C
dXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlTGlzdEJveCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVs
aW5lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTWVudUJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QnV0dG9u
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQ
cm9ncmVzc0luZGljYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzQ29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1RhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFU
YWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRmll
bGRzZXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVw
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2Nr
T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbExhYmVs
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGV4dENv
bnRyb2woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRleHRDb250cm9sKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzVGFiSXRlbSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSYWRp
b0dyb3VwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbWJvQm94KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1RyZWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzVHJlZUdyaWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVHJlZUl0ZW0o
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0J1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNM
aXN0SXRlbSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveE9yUmFkaW8o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzUG9wVXBCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQmxvY2txdW90
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01ldGVy
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwbGl0dGVyKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaWd1
cmVFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNh
YmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzT3V0cHV0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBi
b29sIGlzQ2hlY2tlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
SG92ZXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWluYXRlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCA9IDA7CisgICAgLy8gRklYTUUg
c2hvdWxkIG5lZWQganVzdCBvbmUgc2luY2Ugb25zY3JlZW4gc2hvdWxkIGJlICFvZmZzY3JlZW4u
CisgICAgdmlydHVhbCBib29sIGlzT25TY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzT2ZmU2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzUmVxdWlyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWly
ZWRBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29s
bGFwc2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wp
ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogcGFyZW50T2JqZWN0SW50
ZXJmYWNlVW5pZ25vcmVkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICAKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0
UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKKworICAgIC8v
IEluIGEgbXVsdGktc2VsZWN0IGxpc3QsIG1hbnkgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ1dCBv
bmx5IG9uZSBpcyBhY3RpdmUgYXQgYSB0aW1lLgorICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVk
T3B0aW9uQWN0aXZlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0
JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
c1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
U2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzU3RhdGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5l
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFs
dWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIE5vZGUqIG5vZGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBo
ZWFkaW5nTGV2ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdGFibGVMZXZlbCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBjaGVja2JveE9y
UmFkaW9WYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZURlc2NyaXB0
aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVP
YmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCog
c2VsZWN0ZWRMaXN0SXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIGludCBsYXlvdXRDb3VudCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVy
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVy
ZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc1JlZmVy
ZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURldGFpbHNS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUVycm9y
TWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxv
d1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhTGFi
ZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNQb3B1cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBwb3B1cFZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRh
bGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU3RyaW5nIGludmFsaWRTdGF0dXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzUHJlc3NlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBh
bmRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVj
dGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250
ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmli
dXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZh
bHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0cmlu
Zz4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3Rh
dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCA9IDA7CisKKyAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVk
IHdoZW4gdGhlcmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCisgICAgdmlydHVhbCBib29s
IGlnbm9yZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
b2RhbE5vZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXRTaXpl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgaW50IHNldFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBp
bnQgcG9zSW5TZXQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0FSSUFHcmFiYmVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJl
ZChib29sKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJv
cEVmZmVjdHMoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0IHRv
IHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7
CisgICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRl
dGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBmb2N1
c2VkVUlFbGVtZW50KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGZp
cnN0Q2hpbGQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGxhc3RDaGls
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcHJldmlvdXNTaWJsaW5n
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQo
aW50IGxpbWl0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHByZXZpb3Vz
U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29y
ZU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXNj
ZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGVz
Y2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QgPSAwOworCisgICAgLy8gVGV4
dCBzZWxlY3Rpb24KKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJh
bmdlcyhBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJp
bGl0eVRleHRPcGVyYXRpb24gY29uc3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVj
dCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbGlua2Vk
VUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBBWENvcmVPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZv
ckxhYmVsRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogc2Ny
b2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgPSAwOworCisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0ID0g
MDsKKworICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAorICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3Np
YmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3QgPSAwOworICAgIC8v
IEEgc2luZ2xlIG1ldGhvZCBmb3IgZ2V0dGluZyBhIGNvbXB1dGVkIGxhYmVsIGZvciBhbiBBWE9i
amVjdC4gSXQgY29uZGVuc2VzIHRoZSBudWFuY2VzIG9mIGFjY2Vzc2liaWxpdHlUZXh0LiBVc2Vk
IGJ5IEluc3BlY3Rvci4KKyAgICB2aXJ0dWFsIFN0cmluZyBjb21wdXRlZExhYmVsKCkgPSAwOwor
CisgICAgLy8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5hbWUgb24gYW4gQWNjZXNzaWJs
ZU9iamVjdC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRvbVN0
cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5j
bHVzaW9uKCkgY29uc3QgPSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0IC0gKFRvIGJl
IGRlcHJlY2F0ZWQpLgorICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ldGhvZHMg
Zm9yIGRldGVybWluaW5nIGFjY2Vzc2liaWxpdHkgdGV4dC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNB
UklBU3RhdGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vz
c2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVt
ZW50TW9kZSgpKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Y29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3QgPSAwOworCisgICAg
Ly8gQWJicmV2aWF0aW9ucworICAgIHZpcnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0
b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIC8v
IE9ubHkgaWYgaXNDb2xvcldlbGwoKQorICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGludCYg
ciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWE9iamVjdENhY2hl
KiBheE9iamVjdENhY2hlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBFbGVtZW50KiBhbmNo
b3JFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ByZXNzQWN0
aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
SW50UG9pbnQgY2xpY2tQb2ludCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBhdGgo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JG
b3JUZXh0UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBzZWxl
Y3RlZFRleHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNlbGVjdGlv
blN0YXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0
cmluZyYgYWNjZXNzS2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBh
Y3Rpb25WZXJiKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgUGFnZSogcGFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lVmlldyog
ZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogZnJhbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOworICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNo
IHRoZSBhcmlhLWxldmVsIHNwZWMuCisgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxM
ZXZlbCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRUZXh0KGNvbnN0
IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShjb25zdCBQbGFpblRleHRSYW5nZSYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBlcmZv
cm1EZWZhdWx0QWN0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVu
dCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dENoYW5n
ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgPSAw
OworICAgIHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBWENvcmVP
YmplY3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCos
IHVuc2lnbmVkKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRl
Um9sZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNo
aWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgPSAwOworCisgICAgdmlydHVhbCBi
b29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2Nl
bmRhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFjdGl2ZURlc2Nl
bmRhbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRh
bnRDaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFu
Z2VkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBB
WENvcmVPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQW5jZXN0b3JPZk9i
amVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVP
YmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdl
IHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9y
VW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBv
c2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJh
bmdlIGxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlz
aWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25S
YW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIGxp
bmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBs
YWluVGV4dFJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9y
UmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3Vu
ZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRy
PFJhbmdlPikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGxlbmd0aEZvclZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5Vmlz
aWJsZVBvc2l0aW9uRm9yQm91bmRzKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwcmV2aW91
c1dvcmRTdGFydChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5l
U3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHBsYWlu
VGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGlu
dD4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JM
aW5lKHVuc2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FY
UmFuZ2VGb3JQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2lnbmVk
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGRvQVhC
b3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGRvQVhM
aW5lRm9ySW5kZXgodW5zaWduZWQpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVk
Um9sZVN0cmluZygpIGNvbnN0ID0gMDsKKworICAgIC8vIE1TQUEKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBzdHJpbmdWYWx1ZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nUm9sZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZUZvck1T
QUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25Gb3JNU0FBKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNB
QSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9uVHlw
ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRvIGdldCBhbGwg
aXRzIHJvd3MuCisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBn
ZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KKyAgICB2aXJ0
dWFsIHZvaWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25s
eSBpdHMgY29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLgor
ICAgIHZpcnR1YWwgdm9pZCBhcmlhVHJlZUl0ZW1Db250ZW50KEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpID0gMDsKKworICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24gZmVhdHVyZXMuCisgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhj
bHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBs
aXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzQnVzeSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZW50
RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNSZWFkT25seSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25seVZh
bHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25z
dCA9IDA7CisKKyAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgorICAgIHZpcnR1YWwgT3B0
aW9uU2V0PFNwZWFrQXM+IHNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1h
a2UgdGhpcyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxpbmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xs
YWJsZSB2aWV3cyBhcyBuZWVkZWQuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2li
bGUoKSBjb25zdCA9IDA7CisgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2Fu
J3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRp
bmF0ZXMuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMo
Y29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8g
YSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5k
b3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQm
KSBjb25zdCA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVw
LCBEb3duLCBMZWZ0LCBSaWdodCB9OworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxCeVBhZ2UoU2Ny
b2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsQ29udGVu
dHNTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29u
dGVudFJlY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2li
bGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpID0gMDsKKworICAgIC8vIEZpcmVz
IGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJ
Z25vcmVkIHZhbHVlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlmSWdub3JlZFZh
bHVlQ2hhbmdlZCgpID0gMDsKKworICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVl
IGZvciBpc01hdGhFbGVtZW50KCkuCisgICAgdmlydHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc01hdGhSb3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVy
T3ZlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
YXRoTnVtYmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhUYWJsZVJvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVD
ZWxsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9i
amVjdFR5cGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0gMDsK
KworICAgIC8vIFJvb3QgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0
aFJhZGljYW5kT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoUm9v
dEluZGV4T2JqZWN0KCkgPSAwOworCisgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgorICAg
IHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSA9IDA7CisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgPSAwOworCisgICAgLy8gRnJhY3Rpb24g
Y29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVj
dCgpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0
KCkgPSAwOworCisgICAgLy8gU3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAg
dmlydHVhbCBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwg
QVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSA9IDA7CisKKyAgICAvLyBGZW5jZWQg
Y29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3QgPSAwOworCisg
ICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpw
YWlyPEFYQ29yZU9iamVjdCosIEFYQ29yZU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0UGFpcnM7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3Rz
Y3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKworICAgIC8v
IFZpc2liaWxpdHkuCisgICAgdmlydHVhbCBib29sIGlzQVhIaWRkZW4oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzRE9NSGlkZGVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0hpZGRlbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFdyYXBw
ZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KSA9IDA7CisKKyAg
ICAvLyBhIHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgaWYgYW4gYXR0
YWNobWVudCBpcyBpZ25vcmVkCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVB
dHRhY2htZW50KCkgY29uc3QgPSAwOworICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUgb3Bwb3J0
dW5pdHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluY2x1ZGVk
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQ
bGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgPSAwOworCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICB2aXJ0dWFsIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0aCgp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3QgPSAwOwor
I2VuZGlmCisKKyAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgdG8gdXBk
YXRlIGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCisgICAgLy8gb3RoZXIgb3BlcmF0aW9ucyB1
cGRhdGUgdHlwZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9y
ZSgpID0gMDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgYm9vbCBwcmV2ZW50
S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogI2Vu
ZGlmCiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisjaWYgUExBVEZPUk0oQ09D
T0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZpcnR1YWwgYm9vbCBjYXJldEJyb3dz
aW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2lu
Z0VuYWJsZWQoYm9vbCkgPSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCog
Zm9jdXNhYmxlQW5jZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGVkaXRh
YmxlQW5jZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGhpZ2hlc3RFZGl0
YWJsZUFuY2VzdG9yKCkgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxm
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCopID0g
MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDUzMzRkYzc2NmVjNTFmNTY3MWMxMjQ2YzRhZmFhMDk4MzRjYmZkNmMuLjdjMGJlNzQ3MzU1MGIx
ZjkyMmFlNmM4NzNmNjU3ZTc0ZjE2MWFjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtOTc2
LDcgKzk3Niw3IEBAIE9wdGlvblNldDxTcGVha0FzPiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzcGVha0FzUHJvcGVydHkoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgp
LnNwZWFrQXMoKTsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRk
UmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCwgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdAordm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQVhD
b3JlT2JqZWN0KiBwYXJlbnQsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGlua2VkVUlF
bGVtZW50cykgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50LT5j
aGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlJhZGlvQnV0dG9uKQpAQCAtMTI4MSw3ICsxMjgxLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIHN0
YXRpYyB0ZXh0IGJlbmVhdGggTWVudUl0ZW1zIGFuZCBNZW51QnV0dG9ucyBhcmUganVzdCByZXBv
cnRlZCBhbG9uZyB3aXRoIHRoZSBtZW51IGl0ZW0sIHNvIGl0J3MgaWdub3JlZCBvbiBhbiBpbmRp
dmlkdWFsIGxldmVsCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQtPmlzTWVu
dUl0ZW0oKSB8fCBwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnVCdXR0b24pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8m
IHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcik7CkBAIC0xNDMz
LDcgKzE0MzMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJlci0+
aXNMaXN0TWFya2VyKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0g
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVu
dC0+aXNMaXN0SXRlbSgpOwogICAgIH0KIApAQCAtMjM3MCw3ICsyMzcwLDcgQEAgSW50UmVjdCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rl
ck9mZnNldChjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhp
dFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0
CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJ
bWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9p
bnQpIGNvbnN0CiB7CiAgICAgaWYgKCFhcmVhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTIzOTMsNyArMjM5Myw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2lu
dCkgY29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3Rl
U1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHJlbW90ZSA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0ZSk7
CiAgICAgaWYgKCFyZW1vdGUpCkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50
SGl0VGVzdAogICAgIHJldHVybiByZW1vdGUtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50
KG9mZnNldCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAogewogICAgIGlmIChpc1NWR0ltYWdlKCkpCiAgICAgICAgIHJldHVybiByZW1vdGVTVkdFbGVt
ZW50SGl0VGVzdChwb2ludCk7CkBAIC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgYm9vbCBzaG91
bGRVc2VTaGFkb3dIb3N0Rm9ySGl0VGVzdGluZyhOb2RlKiBzaGFkb3dIb3N0KQogICAgIHJldHVy
biBzaGFkb3dIb3N0ICYmICFzaGFkb3dIb3N0LT5oYXNUYWdOYW1lKHZpZGVvVGFnKTsKIH0KIAot
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3Jl
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChj
b25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFt
X3JlbmRlcmVyLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NTAs
NyArMjQ1MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvCiAgICAgaWYgKCFvYmopCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlc3Vs
dCA9IG9iai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG9iaik7Cisg
ICAgQVhDb3JlT2JqZWN0KiByZXN1bHQgPSBvYmotPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShvYmopOwogICAgIHJlc3VsdC0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2Fy
eSgpOwogCiAgICAgLy8gQWxsb3cgdGhlIGVsZW1lbnQgdG8gcGVyZm9ybSBhbnkgaGl0LXRlc3Rp
bmcgaXQgbWlnaHQgbmVlZCB0byBkbyB0byByZWFjaCBub24tcmVuZGVyIGNoaWxkcmVuLgpAQCAt
MjQ1OCw3ICsyNDU4LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY28KICAgICAKICAgICBpZiAo
cmVzdWx0ICYmIHJlc3VsdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgIC8v
IElmIHRoaXMgZWxlbWVudCBpcyB0aGUgbGFiZWwgb2YgYSBjb250cm9sLCBhIGhpdCB0ZXN0IHNo
b3VsZCByZXR1cm4gdGhlIGNvbnRyb2wuCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
bnRyb2xPYmplY3QgPSByZXN1bHQtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50
KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVz
cG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRyb2xPYmpl
Y3QgJiYgIWNvbnRyb2xPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGNvbnRyb2xPYmplY3Q7CiAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAgIGlm
ICghYXJlYU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBtX2No
aWxkcmVuLmFwcGVuZCgmYXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGF4
T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3QuYXhPYmplY3RJRCgpKTsKKyAgICAgICAg
ICAgIGF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAgICAg
fQogfQogCkBAIC0zMzA4LDcgKzMzMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZEhpZGRlbkNoaWxkcmVuKCkKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAg
ICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdoZXJl
IHRoZSBsYXN0IHJlbmRlciBzaWJsaW5nIGlzIGxvY2F0ZWQgd2l0aGluIG1fY2hpbGRyZW4uCi0g
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCog
Y2hpbGRPYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldChjaGlsZC0+cmVuZGVyZXIoKSk7CiAg
ICAgICAgICAgICBpZiAoY2hpbGRPYmplY3QgJiYgY2hpbGRPYmplY3QtPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkcmVuID0gY2hpbGRPYmpl
Y3QtPmNoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUoKSkKQEAg
LTM1MjUsNyArMzUyNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0
ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlCiAgICAgICAgIGFyaWFT
ZWxlY3RlZFJvd3MocmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlRhYkxpc3Q6Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxl
Y3RlZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQorICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBz
ZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChzZWxlY3RlZFRhYik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAwYjE5ZGE1MmFiZTZjMWYxNTg3Mjk4MGIy
NzRlNWRkNGFhZTAyYmZjLi4zOTYxNzMwNGNlYTM3MGY0OTdiZjM0YzVmNTE0NzIxMDE3ZGJiNzAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29s
IGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwogICAg
IAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBvYmpl
Y3QgdG8ga2ljayBvZmYgYSBoaXQgdGVzdC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZTsKICAgICAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHRleHRM
ZW5ndGgoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdDsKKyAgICBj
b25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdp
ZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZp
ZXcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTIzNSwxMSArMjM1LDExIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0OwogICAgIExheW91dFJlY3Qg
Y2hlY2tib3hPclJhZGlvUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgYWRkUmFkaW9CdXR0b25Hcm91
cE1lbWJlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBj
b25zdDsKLSAgICB2b2lkIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CisgICAgdm9pZCBh
ZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJuYWxM
aW5rRWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxp
dHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKKyAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFy
ZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBjb25z
dDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmpl
Y3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2JqZWN0
JikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25zdDsK
QEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoUmVtb3RlU1ZHUm9v
dCgpOwogICAgIGVudW0gQ3JlYXRpb25DaG9pY2UgeyBDcmVhdGUsIFJldHJpZXZlIH07CiAgICAg
QWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0aW9uQ2hvaWNl
IGNyZWF0ZUlmTmVjZXNzYXJ5KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlKiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAg
IEFYQ29yZU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBj
b25zdDsKICAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChMYXlv
dXRSZWN0JikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcAppbmRleCA1MTc4YjlmYTUzZDU0MjYyYzlmYWE3ODRmZWU0OThjNzZj
NjgyYTNlLi5kMTE2ZWRkZmQ3ZTY5MTBiYTk2MzljZjZjZjViMWJhMjJiZTRkOGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwogICAgIGlmICghd2ViQXJlYSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcuaAppbmRleCA2NmZmNTk0N2Q2YTFkZWNlYjBlYjFhMTVmODdiMjRhZDg4YWQwYTNiLi45
YmZhZjE1NWFkYjIzMmE1NjYzZjU4Y2IwOGMxMmMxMzNlMmMzNTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBA
IC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xs
QmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGls
ZHJlbigpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOwotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBk
YXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNUb1Vw
ZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAg
dm9pZCB1cGRhdGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBiM2ZmMGE5NzUxMDhmMTM4M2E5
NjgyZmUwMmMxNmM2OTA5NWY2N2QzLi5jYzZjYjgxOGU4YjNlMzZjOTE2Y2ZmMDRjMTdhNTBkMDVk
ZDllZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTbGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2xp
ZGVyOjphZGRDaGlsZHJlbigpCiAgICAgLy8gQmVmb3JlIGFjdHVhbGx5IGFkZGluZyB0aGUgdmFs
dWUgaW5kaWNhdG9yIHRvIHRoZSBoaWVyYXJjaHksCiAgICAgLy8gYWxsb3cgdGhlIHBsYXRmb3Jt
IHRvIG1ha2UgYSBmaW5hbCBkZWNpc2lvbiBhYm91dCBpdC4KICAgICBpZiAodGh1bWIuYWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICBjYWNoZS0+cmVtb3ZlKHRodW1iLmF4T2JqZWN0
SUQoKSk7CisgICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIub2JqZWN0SUQoKSk7CiAgICAgZWxz
ZQogICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmdGh1bWIpOwogfQpAQCAtMTAwLDcgKzEwMCw3
IEBAIGNvbnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmdldEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1CiAgICAgcmV0dXJuIGlucHV0RWxlbWVudCgpLT5n
ZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYgcG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmVs
ZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7
CiAgICAgaWYgKG1fY2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVChtX2NoaWxkcmVu
LnNpemUoKSA9PSAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmgKaW5kZXggNDY5ZDIxNzAxYmVjNTNhZjE5ZDk3YmY0NWUwZWVlMWJk
YzIyNmM0NS4uOTFjNzA5MjVlNmQ5MmY1MzJlYTJhMmZiYzc3MjM5ZGQ3OGEyZGRjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVs
ZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9
CiAgICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAg
IHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgZmxvYXQgdmFsdWVG
b3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAppbmRleCBjM2NjMDgyNmE5
M2Y2MmFjYTQ2ZTY2ZjMyNTNiMzNkNzM4YzM2YWVjLi43ZDBhNmE0M2FhNTEwOTE2OWRiZWJhYTQy
NGM2ZGY5NGI3ZjNkYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbjo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKQogCiBBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbjo6fkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCkgPSBkZWZhdWx0Owog
ICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmluY3Jl
bWVudEJ1dHRvbigpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjppbmNy
ZW1lbnRCdXR0b24oKQogewogICAgIGlmICghbV9oYXZlQ2hpbGRyZW4pCiAgICAgICAgIGFkZENo
aWxkcmVuKCk7CkBAIC01NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRCdXR0b24oKQogICAgIHJldHVybiBtX2NoaWxkcmVu
WzBdLmdldCgpOwogfQogICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3Bp
bkJ1dHRvbjo6ZGVjcmVtZW50QnV0dG9uKCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b246OmRlY3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikK
ICAgICAgICAgYWRkQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAppbmRleCA2M2Q1ZjM3ZWVlZmFlZDNi
NjQ5OTdhNjE1MGU2MWRhMTE3NDIyYWRiLi4wMGU5MGEyOTNmNDc5ZTA4OTU3NmQ5Y2E4YTQxNjMx
MjFlNDFiNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCkBAIC0zNyw4ICszNyw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIHNldFNwaW5CdXR0b25FbGVtZW50KFNwaW5CdXR0b25FbGVtZW50KiBzcGluQnV0
dG9uKSB7IG1fc3BpbkJ1dHRvbkVsZW1lbnQgPSBzcGluQnV0dG9uOyB9CiAgICAgCi0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogaW5jcmVtZW50QnV0dG9uKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZGVjcmVtZW50QnV0dG9uKCk7CisgICAgQVhDb3JlT2JqZWN0KiBpbmNyZW1lbnRCdXR0
b24oKTsKKyAgICBBWENvcmVPYmplY3QqIGRlY3JlbWVudEJ1dHRvbigpOwogCiAgICAgdm9pZCBz
dGVwKGludCBhbW91bnQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGY1YmY1YjJmNjBmZjg1N2M4YTZkZTky
NWEwYmQzMGY3Y2Q4NmZlMDEuLjI3MzFiMDc4ODZhZWY5YmMyNzU2NmI3YjE0ZThlNjRhOGFlNzAx
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
Y29sdW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnNDb3B5ID0gbV9jb2x1bW5zOwogICAg
IAogICAgIGZvciAoY29uc3QgYXV0byYgY29sdW1uIDogY29sdW1uc0NvcHkpIHsKLSAgICAgICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbj4oKmNvbHVtbikuaGVhZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBWENvcmVP
YmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmNvbHVt
bikuaGVhZGVyT2JqZWN0KCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOwog
ICAgIH0KIH0KQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm93
SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5ID0gbV9yb3dzOwogICAgIAogICAgIGZvciAo
Y29uc3QgYXV0byYgcm93IDogcm93c0NvcHkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvdykuaGVh
ZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvdykuaGVhZGVyT2JqZWN0KCkpCiAgICAgICAgICAg
ICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOwogICAgIH0KIH0KQEAgLTYyMiw3ICs2MjIsNyBAQCBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1bW5B
bmRSb3codW5zaWduZWQgY29sdW1uLAogICAgICAgICAvLyBjZWxsIHRvIGRldGVybWluZSB3aGlj
aCBpcyB0aGUgcmlnaHQgb25lLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbEluZGV4Q291bnRl
ciA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGlsZHJlbi5zaXplKCkpLCBjb2x1
bW4gKyAxKTsgY29sSW5kZXhDb3VudGVyID4gMDsgLS1jb2xJbmRleENvdW50ZXIpIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGNvbEluZGV4ID0gY29sSW5kZXhDb3VudGVyIC0gMTsKLSAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhdLmdldCgp
OworICAgICAgICAgICAgQVhDb3JlT2JqZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5n
ZXQoKTsKICAgICAgICAgICAgIEFTU0VSVChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hp
bGQpKTsKICAgICAgICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNoaWxk
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDliYmFkMTEy
OTZlNWUxYzcwNTkzNzI1YjYyOTg0NmZhOTU2YjQ0MDAuLmRiNTA0MWM5Mzg5NzkyOGZiMWQ3NDRk
NzdkYjVlYTdmNjlhYWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGhlYWRlcnMpCiAKIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6cGFyZW50Um93KCkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBh
cmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0
eVRhYmxlUm93PigqcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cAppbmRleCAzY2I3ZjE1YTIxNzZlNDQ1ZGZjODYzZDhjYjEyMmYzNmQxMmYyNDZiLi5mZGM2N2Y4
YWMxNTZhNWFkYmJhYTYxMzU3NmI4NjgyYWU2MjcxNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBA
IC03MCw3ICs3MCw3IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjplbGVt
ZW50UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbHVtblJlY3Q7CiB9CiAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKK0FYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQogewogICAg
IGlmICghbV9wYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKaW5k
ZXggOWZjZGI1Y2YzNmUyNzk2M2FlODIwMGIyNDAwYzM3M2JiNWUzOThjNS4uNTY5N2NjMWM4MmYy
ZDhjYTA4YjczZGVjZDc3NjI2OGRmNDQzODYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCkBAIC00MCw5ICs0
MCw5IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbiBmaW5hbCA6IHB1YmxpYyBBY2Nl
c3NpYmlsaXR5TW9ja09iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW4+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbigpOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgp
OwotICAgICAgICAKKworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisKICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRleChp
bnQgY29sdW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5j
cHAKaW5kZXggYmI5ZDllMDRjNGRmNDg2YWRiNzU2YzMzYWRlZjFkYTA1NTk5MzI3Zi4uN2I0OWMy
OGJjMGNkNjg0MTQyNmQ2N2RhNTM0ODJjMTMwYzNiNjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojpw
YXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBp
ZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVSb3coKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMjAsNyArMTIwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKICAgICAvLyBjaGVjayB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcm93IHRvIHNl
ZSBpZiBpdCBpcyBhIFRIIGVsZW1lbnQKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0g
cm93Q2hpbGRyZW5bMF0uZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBjZWxsID0gcm93Q2hpbGRy
ZW5bMF0uZ2V0KCk7CiAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2VsbCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggOTg4ZTI0NTkyMTNl
NzBkNTRmZmVlNGNiYWI2MTIxM2JmMzUzMzEzOS4uNzliZjA1ZmZhZGQxZDg0ODlhMTMzYTM1Mzgw
OTdlNGFiZWY5Y2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKTsKIAogICAgIC8vIHJldHJpZXZlcyB0aGUg
InJvdyIgaGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikKLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOworICAgIHZpcnR1YWwgQVhD
b3JlT2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJs
ZSogcGFyZW50VGFibGUoKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldFJvd0luZGV4KGludCBy
b3dJbmRleCkgeyBtX3Jvd0luZGV4ID0gcm93SW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggMjg0ZTM2
ZDA4YTk4YTJlYjM3YWQ0MmQ0MGZkNDMyNmE1MDg4MjM0NS4uZDgzYzA3NDZlMGJmNWJmNzk5ODhk
MzQxMjc1YTk2MDEzOWI3N2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IEFYT2JqZWN0Q2FjaGU6OnBsYXRmb3JtUGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQogICAg
IG1fZGVmZXJyZWREZXRhY2hlZFdyYXBwZXJMaXN0LmNsZWFyKCk7CiB9CiAKLXN0YXRpYyBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBnZXRMaXN0T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVj
dCkKK3N0YXRpYyBBWENvcmVPYmplY3QqIGdldExpc3RPYmplY3QoQVhDb3JlT2JqZWN0KiBvYmpl
Y3QpCiB7CiAgICAgLy8gT25seSBsaXN0IGJveGVzIGFuZCBtZW51IGxpc3RzIHN1cHBvcnRlZCBz
byBmYXIuCiAgICAgaWYgKCFvYmplY3QtPmlzTGlzdEJveCgpICYmICFvYmplY3QtPmlzTWVudUxp
c3QoKSkKQEAgLTEzNiwyMSArMTM2LDIxIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBn
ZXRMaXN0T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIWNoaWxk
cmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBs
aXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0T2JqZWN0LT5p
c01lbnVMaXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbGlzdE9i
amVjdDsKIH0KIAotc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxl
Y3Rpb25DaGFuZ2UoQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhpcyBzdGF0aWMg
dmFyaWFibGVzIGFyZSBuZWVkZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgb2xkCiAgICAgLy8gZm9j
dXNlZCBvYmplY3QgYW5kIGl0cyBhc3NvY2lhdGVkIGxpc3Qgb2JqZWN0LCBhcyBwZXIgcHJldmlv
dXMKICAgICAvLyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBpbiBvcmRlciB0byBwcm9wZXJseSBk
ZWNpZGUgd2hldGhlciB0bwogICAgIC8vIGVtaXQgc29tZSBzaWduYWxzIG9yIG5vdC4KLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBvbGRMaXN0
T2JqZWN0OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9i
amVjdD4+IG9sZEZvY3VzZWRPYmplY3Q7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0
cjxBWENvcmVPYmplY3Q+PiBvbGRMaXN0T2JqZWN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gb2xkRm9jdXNlZE9iamVjdDsKIAogICAgIC8vIE9ubHkg
bGlzdCBib3hlcyBhbmQgbWVudSBsaXN0cyBzdXBwb3J0ZWQgc28gZmFyLgogICAgIGlmICghb2Jq
ZWN0IHx8ICEob2JqZWN0LT5pc0xpc3RCb3goKSB8fCBvYmplY3QtPmlzTWVudUxpc3QoKSkpCkBA
IC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFu
Z2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBz
ZWxlY3QgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpOwogICAgIGludCBjaGFu
Z2VkSXRlbUluZGV4ID0gc2VsZWN0LmFjdGl2ZVNlbGVjdGlvblN0YXJ0TGlzdEluZGV4KCk7CiAK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0T2JqZWN0ID0gZ2V0TGlzdE9iamVjdChvYmpl
Y3QpOworICAgIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdCA9IGdldExpc3RPYmplY3Qob2JqZWN0
KTsKICAgICBpZiAoIWxpc3RPYmplY3QpIHsKICAgICAgICAgb2xkTGlzdE9iamVjdC5nZXQoKSA9
IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9p
ZCBub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmpl
Y3QpCiAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJiBpdGVtcyA9IGxpc3RPYmplY3QtPmNoaWxkcmVuKCk7CiAgICAgaWYgKGNoYW5nZWRJ
dGVtSW5kZXggPCAwIHx8IGNoYW5nZWRJdGVtSW5kZXggPj0gc3RhdGljX2Nhc3Q8aW50PihpdGVt
cy5zaXplKCkpKQogICAgICAgICByZXR1cm47Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaXRl
bSA9IGl0ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOworICAgIEFYQ29yZU9iamVjdCog
aXRlbSA9IGl0ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOwogCiAgICAgLy8gRW5zdXJl
IHRoZSBjdXJyZW50IGxpc3Qgb2JqZWN0IGlzIHRoZSBzYW1lIHRoYW4gdGhlIG9sZCBvbmUgc28K
ICAgICAvLyBmdXJ0aGVyIGNvbXBhcmlzb25zIG1ha2Ugc2Vuc2UuIE90aGVyd2lzZSwganVzdCBy
ZXNldApAQCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0
aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBvbGRGb2N1c2VkT2Jq
ZWN0LmdldCgpID0gaXRlbTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1O
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVhOb3RpZmljYXRp
b24gbm90aWZpY2F0aW9uKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b24pCiB7CiAgICAgYXV0byogYXhPYmplY3QgPSBBVEtfT0JKRUNUKGNvcmVPYmplY3QtPndyYXBw
ZXIoKSk7CiAgICAgaWYgKCFheE9iamVjdCkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JlT2JqZWN0LCBBWAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQg
PSBjb3JlT2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgICAgIGlmIChBWENvcmVPYmpl
Y3QqIGRlc2NlbmRhbnQgPSBjb3JlT2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAg
ICAgICBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKG51bGxwdHIsIGRlc2Nl
bmRhbnQtPm5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iamUKICAgICBpZiAoIW9iamVjdCB8fCB0ZXh0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0
ID0gb2JqZWN0LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBvYmplY3QtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0g
b2JqZWN0LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBvYmplY3QtPnBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZS5jcHAKaW5kZXggMTJhZTQzNWJkMTcxZWNmNmUxOTQyM2U2MGI0YWE1YjUxOTQ4
ODAxOS4uZDMyYzgyMmFlMWM0NTIxOTY5MDZmYmZkYWFlMTk5ODQxNjc1MGQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5j
cHAKQEAgLTExNjUsNyArMTE2NSw3IEBAIHN0YXRpYyBib29sIHJvbGVJc1RleHRUeXBlKEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uR3JvdXA7CiB9CiAKLXN0YXRpYyBndWludDE2IGludGVyZmFjZU1hc2tGcm9t
T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCitzdGF0aWMgZ3VpbnQxNiBp
bnRlcmZhY2VNYXNrRnJvbU9iamVjdChBWENvcmVPYmplY3QqIGNvcmVPYmplY3QpCiB7CiAgICAg
Z3VpbnQxNiBpbnRlcmZhY2VNYXNrID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApp
bmRleCA3MjQ1MDI0MWE0NmM0ODNiN2FmZWViNmNhMzE4NDFkODdjMGJlMjAxLi5iMGY3M2U2YTRm
YWEwY2ZjZWM4MTQ3M2I2ODU1NTMwOTdlNDAxZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBnaW50IHJhbmdlTGVuZ3RoRm9yT2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iaiwgUmFuZ2UqIHJhbmdlKQogCiAgICAgLy8gQ2hlY2sg
d2hldGhlciB0aGUgY3VycmVudCBoeXBlcmxpbmsgYmVsb25ncyB0byBhIGxpc3QgaXRlbS4KICAg
ICAvLyBJZiBzbywgd2UgbmVlZCB0byBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBpdGVtJ3Mg
bWFya2VyCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gb2JqLnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gb2JqLnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCgpIHx8ICFwYXJlbnQtPmlzTGlzdEl0ZW0oKSkKICAgICAgICAgcmV0dXJu
IGJhc2VMZW5ndGg7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgZ2ludCByYW5nZUxlbmd0
aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIFJhbmdlKiByYW5nZSkKICAgICAv
LyBUZWNobm9sb2dpZXMsIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBtZWFzdXJlIHRoZWlyIGxl
bmd0aAogICAgIC8vIGZvciB0aG9zZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkIHRvIHRha2UgaXQg
aW50byBhY2NvdW50CiAgICAgLy8gc2VwYXJhdGVseSAoYXMgaW4gZ2V0QWNjZXNzaWJpbGl0eU9i
amVjdEZvck9mZnNldCkKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXJrZXJPYmogPSBwYXJl
bnQtPmZpcnN0Q2hpbGQoKTsKKyAgICBBWENvcmVPYmplY3QqIG1hcmtlck9iaiA9IHBhcmVudC0+
Zmlyc3RDaGlsZCgpOwogICAgIGlmICghbWFya2VyT2JqKQogICAgICAgICByZXR1cm4gYmFzZUxl
bmd0aDsKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICByZXR1cm5WYWxJ
ZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlw
ZXJsaW5rSW1wbCwgMCk7CiAKICAgICBhdXRvJiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJs
ZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJs
aW5rSW1wbCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29y
ZU9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVu
dFVuaWdub3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYg
KCFwYXJlbnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yMDYsNyArMjA2LDcg
QEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5
cGVybGluayogbGluaykKICAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
YWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICBhdXRv
JiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoYWNj
ZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCk7Ci0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9y
ZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudFVuaWdub3JlZCA9IGNvcmVPYmplY3QucGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnRVbmlnbm9yZWQpCiAgICAgICAg
IHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3Bw
CmluZGV4IDhhMzM4M2QzZTQxZmZmNjE2YWY0Y2VmOGQzYmQzMzgzM2E2YmRmYzAuLmE3OGQ4ODMy
YWE0ZDNkZWMzODljZTc5ZTdjMWM2ZWNhY2RmMDZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBBdGtIeXBl
cmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0a0h5cGVydGV4dCogaHlw
ZXJ0ZXh0LCBnCiAKICAgICBnaW50IGN1cnJlbnRMaW5rID0gLTE7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVDaGlsZCA9IGNoaWxkLmdldCgpOworICAgICAgICBBWENvcmVPYmplY3QqIGNvcmVDaGlsZCA9
IGNoaWxkLmdldCgpOwogICAgICAgICBpZiAoIWNvcmVDaGlsZC0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGNvcmVDaGlsZC0+d3JhcHBl
cigpOwogICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX0hZUEVSTElOS19JTVBM
KGF4T2JqZWN0KSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZUh5cGVydGV4dEdldE5MaW5rcyhBdGtIeXBlcnRleHQqIGh5cGVydGV4dCkKICAgICBjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVu
ID0gY29yZShoeXBlcnRleHQpLT5jaGlsZHJlbigpOwogICAgIGdpbnQgbGlua3NGb3VuZCA9IDA7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOworICAgICAgICBBWENvcmVP
YmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOwogICAgICAgICBpZiAoIWNvcmVDaGlsZC0+
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9
IGNvcmVDaGlsZC0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKGF4T2JqZWN0ICYmIEFUS19J
U19IWVBFUkxJTktfSU1QTChheE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VTZWxlY3Rpb24uY3BwCmluZGV4IDE3Yjk4MDY0YWRhNmMzMDIwYjAxOGE3MmFmOTg0YmNmZmQ2
OGJlZGYuLjZlYTU3MDgxMzdiNDU3YThmNTMzNWJkZmY1Y2IzMmI3ZDdhZmVjOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBA
IHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9u
KQogICAgIHJldHVybiAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VC
S0lUX0FDQ0VTU0lCTEUoc2VsZWN0aW9uKSk7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
U2VsZWN0aW9uKQorc3RhdGljIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdEZvckNvcmVTZWxlY3Rp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbikKIHsKICAgICAvLyBPbmx5IGxp
c3QgYm94ZXMgYW5kIG1lbnUgbGlzdHMgc3VwcG9ydGVkIHNvIGZhci4KICAgICBpZiAoIWNvcmVT
ZWxlY3Rpb24tPmlzTGlzdEJveCgpICYmICFjb3JlU2VsZWN0aW9uLT5pc01lbnVMaXN0KCkpCkBA
IC02NywyMSArNjcsMjEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPYmplY3RG
b3JDb3JlU2VsZWN0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUKICAgICBpZiAoIWNoaWxk
cmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3JlT2Jq
ZWN0KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0T2Jq
ZWN0LT5pc01lbnVMaXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBy
ZXR1cm4gbGlzdE9iamVjdDsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlv
bkZyb21MaXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIEFY
Q29yZU9iamVjdCogb3B0aW9uRnJvbUxpc3QoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQg
aW5kZXgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUo
c2VsZWN0aW9uKTsKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgaW5kZXggPCAwKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIE5lZWQgdG8gc2VsZWN0IHRoZSBwcm9wZXIgbGlz
dCBvYmplY3QgZGVwZW5kaW5nIG9uIHRoZSB0eXBlLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGxpc3RPYmplY3QgPSBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihjb3JlU2VsZWN0aW9uKTsK
KyAgICBBWENvcmVPYmplY3QqIGxpc3RPYmplY3QgPSBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlv
bihjb3JlU2VsZWN0aW9uKTsKICAgICBpZiAoIWxpc3RPYmplY3QpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
cHRpb25Gcm9tTGlzdChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZy
b21TZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCitzdGF0aWMg
QVhDb3JlT2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9u
LCBnaW50IGluZGV4KQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24g
PSBjb3JlKHNlbGVjdGlvbik7CiAgICAgaWYgKCFjb3JlU2VsZWN0aW9uIHx8ICFjb3JlU2VsZWN0
aW9uLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSB8fCBpbmRleCA8IDApCkBAIC0xMjAs
NyArMTIwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25BZGRT
ZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGcKICAgICBpZiAoIWNvcmVTZWxlY3Rp
b24pCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9w
dGlvbiA9IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaW5kZXgpOworICAgIEFYQ29yZU9iamVj
dCogb3B0aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CiAgICAgaWYgKG9w
dGlvbiAmJiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgfHwgY29yZVNlbGVjdGlvbi0+aXNN
ZW51TGlzdCgpKSkgewogICAgICAgICBvcHRpb24tPnNldFNlbGVjdGVkKHRydWUpOwogICAgICAg
ICByZXR1cm4gb3B0aW9uLT5pc1NlbGVjdGVkKCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGlj
IEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvblJlZlNlbGVjdGlvbihBdGtTZWxl
Y3Rpb24qIHNlbGVjdGlvbiwKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfU0VMRUNUSU9O
KHNlbGVjdGlvbiksIG51bGxwdHIpOwogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlz
SW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShzZWxlY3Rpb24pLCBudWxscHRyKTsKIAotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9u
LCBpbmRleCk7CisgICAgQVhDb3JlT2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tU2VsZWN0aW9u
KHNlbGVjdGlvbiwgaW5kZXgpOwogICAgIGlmIChvcHRpb24pIHsKICAgICAgICAgYXV0byogY2hp
bGQgPSBvcHRpb24tPndyYXBwZXIoKTsKICAgICAgICAgZ19vYmplY3RfcmVmKGNoaWxkKTsKQEAg
LTE5Niw3ICsxOTYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlv
bklzQ2hpbGRTZWxlY3RlZChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbgogICAgIGlmICghY29yZVNl
bGVjdGlvbikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb3B0aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CisgICAgQVhDb3Jl
T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGluZGV4KTsKICAgICBp
ZiAob3B0aW9uICYmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8fCBjb3JlU2VsZWN0aW9u
LT5pc01lbnVMaXN0KCkpKQogICAgICAgICByZXR1cm4gb3B0aW9uLT5pc1NlbGVjdGVkKCk7CiAK
QEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVj
dGlvblJlbW92ZVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbgogICAgIGlmICghY29y
ZVNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGluZGV4KTsKKyAg
ICBBWENvcmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBp
bmRleCk7CiAgICAgaWYgKG9wdGlvbiAmJiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgfHwg
Y29yZVNlbGVjdGlvbi0+aXNNZW51TGlzdCgpKSkgewogICAgICAgICBvcHRpb24tPnNldFNlbGVj
dGVkKGZhbHNlKTsKICAgICAgICAgcmV0dXJuICFvcHRpb24tPmlzU2VsZWN0ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCA0OTZlMjYyMjg4NWM3OGQ1MDViZTA0
MThjZmZmNGM2ZDNmOTBjZDAxLi5iMjcxNWM3YzUzY2FlOWQwNGFmM2U0YzBmOTNhZjk3NWY2M2Ri
NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC0zMzQsNyArMzM0
LDcgQEAgc3RhdGljIEludFJlY3QgdGV4dEV4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFy
dE9mZnNldCwgZ2ludCBsZW5ndGgsIEF0a0Nvb3IKICAgICByZXR1cm4gZXh0ZW50czsKIH0KIAot
c3RhdGljIGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0oY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0KQorc3RhdGljIGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0o
Y29uc3QgQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3Qg
dGhlIG9mZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGluCiAgICAgLy8gTGVmdC1Uby1S
aWdodCB0ZXh0LCBzaW5jZSB3ZSBleHBvc2UgaXQgdG9nZXRoZXIgd2l0aCB0aGUgdGV4dC4KQEAg
LTM0NSw3ICszNDUsNyBAQCBzdGF0aWMgaW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0
YXRpYyBpbnQgd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCwgaW50IG9mZnNldCkKK3N0YXRpYyBpbnQgd2ViQ29yZU9mZnNldFRvQXRrT2Zm
c2V0KGNvbnN0IEFYQ29yZU9iamVjdCogb2JqZWN0LCBpbnQgb2Zmc2V0KQogewogICAgIGlmICgh
b2JqZWN0LT5pc0xpc3RJdGVtKCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CkBAIC05OTAsNyAr
OTkwLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRleHRHZXRDYXJldE9mZnNldChB
dGtUZXh0KiB0ZXh0KQogCiAgICAgLy8gY29yZU9iamVjdCBpcyB0aGUgdW5pZ25vcmVkIG9iamVj
dCB3aG9zZSBvZmZzZXQgdGhlIGNhbGxlciBpcyByZXF1ZXN0aW5nLgogICAgIC8vIGZvY3VzZWRP
YmplY3QgaXMgdGhlIG9iamVjdCB3aXRoIHRoZSBjYXJldC4gSXQgaXMgbGlrZWx5IGlnbm9yZWQg
LS0gdW5sZXNzIGl0J3MgYSBsaW5rLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmpl
Y3QgPSBjb3JlKHRleHQpOworICAgIEFYQ29yZU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4
dCk7CiAgICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAppbmRleCBhM2I4NzFiNDRjYTAw
YTZhMDc1NmI3N2RiYzIxZGY1NGJjZGFjM2Q5Li41NjM5MmMwYmQ4M2QxYTJhN2NiNzZhNzU0Yjll
Yjg4M2YyMGNmZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgYm9v
bCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVj
dCwgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAgICAgJiYgKCZyYW5nZS0+c3RhcnRDb250YWluZXIo
KSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5nZS0+c3RhcnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0
KTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0
VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlZmVyZW5jZU9iamVjdCwgaW50JiBvZmZz
ZXQpCitBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChB
WENvcmVPYmplY3QqIHJlZmVyZW5jZU9iamVjdCwgaW50JiBvZmZzZXQpCiB7CiAgICAgLy8gSW5k
aWNhdGlvbiB0aGF0IHNvbWV0aGluZyBib2d1cyBoYXMgdHJhbnNwaXJlZC4KICAgICBvZmZzZXQg
PSAtMTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1
c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIExvb2sgZm9yIHRoZSBhY3R1YWwgKG5vdCBpZ25v
cmluZyBhY2Nlc3NpYmlsaXR5KSBzZWxlY3RlZCBvYmplY3QuCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmb2N1c2VkT2JqZWN0OworICAgIEFYQ29yZU9i
amVjdCogZmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmb2N1c2VkT2JqZWN0OwogICAgIGlmIChmaXJz
dFVuaWdub3JlZFBhcmVudC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAgICAgICBmaXJz
dFVuaWdub3JlZFBhcmVudCA9IGZpcnN0VW5pZ25vcmVkUGFyZW50LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsKICAgICBpZiAoIWZpcnN0VW5pZ25vcmVkUGFyZW50KQpAQCAtMjI0LDcgKzIyNCw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdu
b3JlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBp
dCB0byBiZSByZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9mCiAgICAgICAgIC8vIHJlZmVyZW5jZSwg
bm90IGp1c3QgdG8gdGhlIGZvY3VzZWQgb2JqZWN0ICh3aGljaCBjb3VsZCBoYXZlCiAgICAgICAg
IC8vIHByZXZpb3VzIHNpYmxpbmdzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQg
dG9vKS4KLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGaXJzdENoaWxkID0gcmVmZXJl
bmNlT2JqZWN0LT5maXJzdENoaWxkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogYXhGaXJzdENo
aWxkID0gcmVmZXJlbmNlT2JqZWN0LT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmIChheEZpcnN0
Q2hpbGQpCiAgICAgICAgICAgICBzdGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZVV0aWwuaAppbmRleCBmNmFjNzY0NjUxYzQ4MmJlYmU1MmZmNjRhYjAwMTFjNDc5
YWVmM2ZjLi5hMmZhY2FmODUyOGRhNDc1Y2Y5ZjdkNTdmZjQxZjg3M2M0NjM4NTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRp
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVVdGlsLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQVhDb3JlT2JqZWN0OwogY2xhc3MgQWNj
ZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9u
OwpAQCAtNjYsNiArNjcsNiBAQCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmpl
Y3QoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rp
b24mKTsKIAotV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENh
cmV0T2Zmc2V0VW5pZ25vcmVkKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBpbnQmIG9m
ZnNldCk7CitXZWJDb3JlOjpBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNl
dFVuaWdub3JlZChXZWJDb3JlOjpBWENvcmVPYmplY3QqLCBpbnQmIG9mZnNldCk7CiAKICNlbmRp
ZiAvLyBFTkFCTEUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IDY4N2YxYWVkZjc4ODE2YWUz
MTVhZDg2ZmRmMWU3YzczZjlkMDVlYWIuLmRmNThlZmE3NjUzZjY4MDUzMWM4Y2U5MzkzOWU3YjA2
NjMxNzM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FY
T2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3Jh
cHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBu
b3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewogICAg
IGlmICghb2JqKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQppbmRleCA0ZGUz
OTI0MDJjOTU4NzViNmQ1ZGFjZWNkOTZiMjFhZTA5NTA0NzIyLi43ZTA1YWNmZmZjOWFlYTdmZDI0
YWY2NDlkOTdhN2Q0OGE2OTJkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KQEAgLTQ3LDcgKzQ3
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1Zh
bHVlSW5UaXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0
KikKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFY
Q29yZU9iamVjdCopCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IGJjY2YzN2U0ZjRiNjJkNDA5MTMxNGRjNzZkYTVhZDdkZWRjODYzOTYuLjg3
YmZiOWUxOTMwOGRhZTBjYWEwOThkYTY2OWFjOTUyMGVjZTI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNj
ZXNzaWJpbGl0eU8KICAgICAgICAgaWYgKFt3cmFwcGVyIGlzQXR0YWNobWVudF0gJiYgIVtbd3Jh
cHBlciBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUlzSWdub3JlZF0pCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnRPYmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBBWENv
cmVPYmplY3QqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTM4
OCw3ICszODgsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2li
aWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAgICAgICByZXR1cm4gbmls
OwogICAgIAogICAgIC8vIFRyeSBhIGZ1enp5IGhpdCB0ZXN0IGZpcnN0IHRvIGZpbmQgYW4gYWNj
ZXNzaWJsZSBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UgKmF4T2Jq
ZWN0ID0gbnVsbHB0cjsKKyAgICBBWENvcmVPYmplY3QgKmF4T2JqZWN0ID0gbnVsbHB0cjsKICAg
ICB7CiAgICAgICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0
LT5heE9iamVjdENhY2hlKCkpOwogICAgICAgICBheE9iamVjdCA9IG1fb2JqZWN0LT5hY2Nlc3Np
YmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgc3Rh
dGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5T
U3RyaW5nICpzdHJpbmcpCiAgICAgCiAgICAgdW5zaWduZWQgY29sdW1uUmFuZ2VJbmRleCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW5SYW5nZS5maXJzdCk7CiAgICAgaWYgKGNvbHVtblJh
bmdlSW5kZXggPCBjb2x1bW5IZWFkZXJzLnNpemUoKSkgewotICAgICAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gY29sdW1uSGVhZGVyID0gY29sdW1uSGVhZGVyc1tjb2x1bW5SYW5nZS5m
aXJzdF07CisgICAgICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNvbHVtbkhlYWRlciA9IGNvbHVt
bkhlYWRlcnNbY29sdW1uUmFuZ2UuZmlyc3RdOwogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciogd3JhcHBlciA9IGNvbHVtbkhlYWRlci0+d3JhcHBlcigpOwogICAgICAgICBpZiAo
d3JhcHBlcikKICAgICAgICAgICAgIFtoZWFkZXJzIGFkZE9iamVjdDp3cmFwcGVyXTsKQEAgLTE2
NjQsNyArMTY2NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJs
ZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIEFYQXR0cmlidXRlQ2FjaGVF
bmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwogICAgIAogICAg
IC8vIEFzIGxvbmcgYXMgdGhlcmUncyBhIHBhcmVudCB3cmFwcGVyLCB0aGF0J3MgdGhlIGNvcnJl
Y3QgY2hhaW4gdG8gY2xpbWIuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9v
YmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOyAKKyAgICBBWENvcmVPYmplY3QqIHBhcmVu
dCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAocGFyZW50KQog
ICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAKQEAgLTE4MDAsNyArMTgwMCw3IEBA
IHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0
LCBOU1N0cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gSWYgdGhp
cyBzdGF0aWMgdGV4dCBpbnNpZGUgb2YgYSBsaW5rLCBpdCBzaG91bGQgdXNlIGl0cyBwYXJlbnQn
cyBsaW5rZWQgZWxlbWVudC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50ID0gbV9v
YmplY3Q7CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7CiAgICAgaWYgKG1f
b2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCAmJiBt
X29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQogICAgICAgICBlbGVt
ZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWVOb2RlLmNwcAppbmRleCBkOGRiYjlmMmM5N2M4YmNmZGY3ODE1OTMzYTRhZTE5YmVm
ZjA3ZGIyLi43OTM5Mjk5NTFkZDJkYzZhNDAxYzQ1ODI2Njg2YWVlMjM5YTczYjIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKQEAgLTk4LDE5ICs5OCwxOSBAQCB2b2lkIEFYSXNv
bGF0ZWRUcmVlTm9kZTo6c2V0VHJlZUlkZW50aWZpZXIoQVhJc29sYXRlZFRyZWVJRCB0cmVlSWRl
bnRpZmllcikKICAgICAgICAgbV9jYWNoZWRUcmVlID0gdHJlZTsKIH0KIAotQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZSogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkg
Y29uc3QKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50
KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2VkRWxlbWVudCA9IHRyZWUoKS0+Zm9jdXNl
ZFVJRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZm9jdXNlZEVsZW1lbnQuZ2V0KCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBB
WElzb2xhdGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0
CitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNl
VW5pZ25vcmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJlZSgpLT5ub2RlRm9ySUQocGFyZW50
KCkpLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xhdGVk
VHJlZU5vZGU6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjphY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFyZWxhdGl2ZUZyYW1l
KCkuY29udGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWVOb2RlLmgKaW5kZXggOTM0ZDYzZjRhOWEyMzFlOWY3MmY4M2U5YjViZmM0NjBiNDQ3
NzcwOS4uYzM1NDZmYmU4Mjc1MmU5OWVmYWE3ZWRkZmE2Mjc2NzZkNTQyYTYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogCi1j
bGFzcyBBWElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlTm9k
ZT4geworY2xhc3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFYQ29yZU9iamVj
dCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlTm9kZT4gewogCiBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4X3QgewpAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlTm9kZShjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Jik7CiAgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlRGF0YShjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVy
cmlkZSB7IH0KIAogICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZWRpYUNvbnRy
b2xMYWJlbCk7IH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNJbWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNJbWFnZSk7IH0KICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGaWxl
VXBsb2FkQnV0dG9uKTsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNB
Y2Nlc3NpYmlsaXR5SWdub3JlZCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
KiBwYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
WENvcmVPYmplY3QqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNUcmVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWUpOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVt
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc1RyZWVJdGVtKTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2Nyb2xsYmFy
KTsgfQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9u
QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9CiAgICAgU3RyaW5nIGhlbHBUZXh0
QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SGVscFRleHQpOyB9CiAgICAgU3RyaW5nIHRpdGxlQXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6VGl0bGUpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCog
Zm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdXNpbmcgQXR0cmlidXRl
VmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQs
IHVuc2lnbmVkLCBkb3VibGUsIE9wdGlvbmFsPEZsb2F0UmVjdD4+OwogICAgIHZvaWQgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCYmLCBib29sIHNob3Vs
ZFJlbW92ZSA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDJmNzVmOTY1MDhkMDcyMWM4NDAyMDc3NGIy
MjMzMTQ3NjhmNDg2YzYuLmM5YTg5M2JjMzA5OTZkOTlmZTQ1Y2IxYjcyMTllMzZhYzczYTBmZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2Fj
aGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RD
YWNoZU1hYy5tbQpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIEFYUG9zdE5vdGlmaWNh
dGlvbldpdGhVc2VySW5mbyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqb2JqZWN0LCBOCiAg
ICAgTlNBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QsIG5v
dGlmaWNhdGlvbiwgdXNlckluZm8pOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9u
IG5vdGlmaWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0
aW9uKEFYQ29yZU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAg
ICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCmluZGV4IDZi
OTU1MDIyZWQzY2RmZGU0ZWY5MGMyMWE2ZjUxMDA0MWQwNjRlNjIuLjJjZGJjNzNhYjg5OGJmYjVj
MzJlZWZlYjVjN2RhYmM0NjYyMTlhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtNDMsNyAr
NDMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQoKQogICAg
ICAgICBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQobnVsbHB0cik7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50
UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KQogewogICAgIGlmICghaXNBdHRhY2htZW50KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgK
aW5kZXggZmZlZDg1NWM4NGRkYzhmYzJkOWZkNWU0MWVlYWVkZWIxMDc0NzE3ZS4uODg1OGJlYTNk
MDg3YjFiYjYyNjVkNzg3ZmQ4ODA1OGQ3MTI2MmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9u
OwogLSAoQk9PTCl1cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7CiAKIC8vIFRoaXMgY2FuIGJlIGVp
dGhlciBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0IG9yIGFuIEFYSXNvbGF0ZWRUcmVlTm9kZQotLSAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhCYWNraW5nT2JqZWN0Owor
LSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KilheEJhY2tpbmdPYmplY3Q7CiAKIC8vIFRoZXNlIGFy
ZSBwcmUtZml4ZWQgd2l0aCBiYXNlIHNvIHRoYXQgQXBwS2l0IGRvZXMgbm90IGVuZCB1cCBjYWxs
aW5nIGludG8gdGhlc2UgZGlyZWN0bHkgKGJ5cGFzc2luZyBzYWZldHkgY2hlY2tzKS4KIC0gKE5T
U3RyaW5nICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbQppbmRleCBkYWYzNGYxNTBmNTdhMzcyMjE3MTdhNmUwYTIyYTFhYmJj
NWY1ZTY0Li5mYTg5YjZhZDk4MDkzYmRmN2ExODU3Zjk2N2IwNzAxMjlkYTYyNTM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC0yNjQsNyArMjY0LDcgQEAg
c3RhdGljIE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGkKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLXN0YXRpYyB2
b2lkIGFkZENoaWxkVG9BcnJheShBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlJiBjaGlsZCwg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBhcnJheSkKK3N0YXRpYyB2b2lkIGFkZENoaWxkVG9B
cnJheShBWENvcmVPYmplY3QmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5
KQogewogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICp3cmFwcGVyID0gY2hpbGQu
d3JhcHBlcigpOwogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2htZW50IHZpZXcg
aW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVudCwKQEAgLTMw
Niw3ICszMDYsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZAogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgbV9vYmplY3QgPSBheE9iamVjdDsKLSAgICBfaWRlbnRpZmllciA9IG1fb2JqZWN0
LT5heE9iamVjdElEKCk7CisgICAgX2lkZW50aWZpZXIgPSBtX29iamVjdC0+b2JqZWN0SUQoKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzg2LDcgKzM4Niw3IEBAIE5TQXJyYXkgKmNvbnZl
cnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkCiAgICAgcmV0dXJuIF9heEJhY2tpbmdPYmplY3QtPnRpdGxlQXR0cmlidXRlVmFs
dWUoKTsKIH0KIAotLSAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhC
YWNraW5nT2JqZWN0CistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWF4QmFja2luZ09iamVjdAog
ewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgaWYgKF9BWFVJ
RWxlbWVudFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJlYWQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMDE1MGZjYWU3YWZkMTE1Nzg1NWUwNjZh
MzcwNTRjYzU2N2U4YjQ5My4uYzU3MDk0OWM1NjBiNWZhMTFiYzQ0MzAwOTBlMjI1M2M2OTVjOGUz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTI2NjcsMTUg
KzI2NjcsMTUgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAg
IAogICAgICAgICAvLyBUcmVlIGl0ZW0gKGNoYW5nZWQgdG8gQVhSb3dzKSBjYW4gb25seSByZXBv
cnQgdGhlIHRyZWUgKEFYT3V0bGluZSkgYXMgaXRzIHBhcmVudC4KICAgICAgICAgaWYgKF9heEJh
Y2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgYXV0byBwYXJlbnQgPSBf
YXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKTsKKyAgICAg
ICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25v
cmVkKCk7CiAgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7CiAgICAgICAgICAgICAgICAgaWYg
KHBhcmVudC0+aXNUcmVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPndy
YXBwZXIoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdElu
dGVyZmFjZVVuaWdub3JlZCgpOworICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0SW50
ZXJmYWNlVW5pZ25vcmVkKCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmICghcGFyZW50KQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCkBAIC0yODYxLDE0ICsyODYxLDE0IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAKICAgICAgICAgLy8gcmFk
aW8gZ3JvdXBzIHJldHVybiB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uIGFzIHRoZSBBWFZhbHVl
CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNSYWRpb0dyb3VwKCkpIHsKLSAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHJhZGlvQnV0dG9uID0gbV9vYmplY3QtPnNlbGVjdGVkUmFkaW9C
dXR0b24oKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogcmFkaW9CdXR0b24gPSBtX29iamVj
dC0+c2VsZWN0ZWRSYWRpb0J1dHRvbigpOwogICAgICAgICAgICAgaWYgKCFyYWRpb0J1dHRvbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJuIHJhZGlvQnV0
dG9uLT53cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX29iamVj
dC0+aXNUYWJMaXN0KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYkl0
ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CisgICAgICAgICAgICBBWENvcmVPYmpl
Y3QqIHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CiAgICAgICAgICAgICBp
ZiAoIXRhYkl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJl
dHVybiB0YWJJdGVtLT53cmFwcGVyKCk7CkBAIC0zMDYzLDcgKzMwNjMsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGNvbHVtbi5jaGlsZHJlbigpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGNvbHVtbi5oZWFk
ZXJPYmplY3QoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogaGVhZGVyID0gY29sdW1uLmhl
YWRlck9iamVjdCgpOwogICAgICAgICAgICAgaWYgKCFoZWFkZXIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiBoZWFkZXItPndyYXBwZXIoKTsKQEAgLTMx
NjgsNyArMzE2OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfSBlbHNlIGlmIChp
czxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkpIHsKLSAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dz4oKm1fb2JqZWN0KS5kaXNjbG9zZWRCeVJvdygpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0
KiByb3cgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkuZGlz
Y2xvc2VkQnlSb3coKTsKICAgICAgICAgICAgIGlmICghcm93KQogICAgICAgICAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgICAgICAgICByZXR1cm4gcm93LT53cmFwcGVyKCk7CkBAIC0zNTExLDcg
KzM1MTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAKICAgICBfYXhCYWNraW5nT2JqZWN0LT51cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYXhPYmplY3Qg
PSBfYXhCYWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkp
OworICAgIEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBfYXhCYWNraW5nT2JqZWN0LT5hY2Nlc3Np
YmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwogICAgIGlmIChheE9iamVjdCkgewogICAg
ICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+d3JhcHBlcigp
IGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIo
KSBhdHRhY2htZW50Vmlld107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0
ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFt
ZVNlbGVjdGlvbkF0ay5jcHAKaW5kZXggMjkzNTQ3M2EyODFiYTA5YTZiNDcyNDQ5ZWMyYWU3MTFm
MWNlZDk2Ni4uMjcyZTM0YmViNzkyNjRlYjY3MWRjOWE4NmQ3YWRhODc1NmJlNzJiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIGVtaXRU
ZXh0U2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgVmlzaWJsZVNl
bGVjdGlvbiBzZWxlY3Rpb24sIGludCBvZmZzZXQpCitzdGF0aWMgdm9pZCBlbWl0VGV4dFNlbGVj
dGlvbkNoYW5nZShBWENvcmVPYmplY3QqIG9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24sIGludCBvZmZzZXQpCiB7CiAgICAgYXV0byogYXhPYmplY3QgPSBvYmplY3QtPndyYXBwZXIo
KTsKICAgICBpZiAoIWF4T2JqZWN0IHx8ICFBVEtfSVNfVEVYVChheE9iamVjdCkpCkBAIC01Miwx
MiArNTIsMTIgQEAgc3RhdGljIHZvaWQgZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UoQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqZWN0LCBWaXNpYmxlU2VsZWN0aW8KICAgICAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKGF4T2JqZWN0LCAidGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIpOwogfQogCi1zdGF0
aWMgdm9pZCBtYXliZUVtaXRUZXh0Rm9jdXNDaGFuZ2UoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+JiYgb2JqZWN0KQorc3RhdGljIHZvaWQgbWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKFJlZlB0
cjxBWENvcmVPYmplY3Q+JiYgb2JqZWN0KQogewogICAgIC8vIFRoaXMgc3RhdGljIHZhcmlhYmxl
IGlzIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBvbGQgb2JqZWN0CiAgICAgLy8gYXMgcGVy
IHByZXZpb3VzIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIGluIG9yZGVyIHRvIHByb3Blcmx5CiAg
ICAgLy8gZGVjaWRlIHdoZXRoZXIgdG8gZW1pdCBzb21lIHNpZ25hbHMgb3Igbm90LgotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG9sZE9iamVj
dDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPEFYQ29yZU9iamVjdD4+IG9sZE9i
amVjdDsKIAogICAgIC8vIEVuc3VyZSB0aGUgb2xkT2JqZWN0IGJlbG9uZ3MgdG8gdGhlIHNhbWUg
ZG9jdW1lbnQgdGhhdCB0aGUKICAgICAvLyBjdXJyZW50IG9iamVjdCBzbyBmdXJ0aGVyIGNvbXBh
cmlzb25zIG1ha2Ugc2Vuc2UuIE90aGVyd2lzZSwKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEZy
YW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKGNvbnN0
IEFYVGV4dFN0YXRlQ2hhbgogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgb2Zmc2V0OwotICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmplY3QgPSBvYmplY3RGb2N1c2VkQW5kQ2Fy
ZXRPZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0eU9iamVjdCwgb2Zmc2V0KTsKKyAgICBSZWZQ
dHI8QVhDb3JlT2JqZWN0PiBvYmplY3QgPSBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmln
bm9yZWQoYWNjZXNzaWJpbGl0eU9iamVjdCwgb2Zmc2V0KTsKICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDFjZTVjOWE4
MDE0ZDEyYmE4NGRmMzQ4YzdmZjQ4ZWYxMmFjNDg5MmMuLmUxZTIzYTc2YTRkOTQ2ZjllYTI3ZjYy
NmEyMmIyY2M3NzhhOTRkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkNvbnRh
aW5lck5vZGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
QEAgLTUzLDcgKzUzLDcgQEAgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpJbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QoSW5zcGVjdG9yQXUKIHsKIH0KIAotc3RhdGlj
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUoTm9kZSYgbm9k
ZSkKK3N0YXRpYyBBWENvcmVPYmplY3QqIGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUoTm9kZSYg
bm9kZSkKIHsKICAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkp
CiAgICAgICAgIEFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKQEAgLTcxLDcg
KzcxLDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IEluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUMKICAgICBWZWN0b3I8UmVmPE5vZGU+PiBu
b2RlczsKIAogICAgIGZvciAoRWxlbWVudCYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhp
czxDb250YWluZXJOb2RlPihjb250YWluZXIpID8gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKmNv
bnRhaW5lcikgOiBkb2N1bWVudCkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShlbGVtZW50KSkgeworICAgICAg
ICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUo
ZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChheE9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5n
KCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQoZWxlbWVudCk7CiAgICAg
ICAgIH0KQEAgLTg0LDE3ICs4NCwxNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IEluc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QWN0aXZlRGVzY2VuZGFudAogewogICAg
IEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewotICAgICAg
ICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCA9IGF4T2JqZWN0LT5h
Y3RpdmVEZXNjZW5kYW50KCkpCisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nl
c3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgICAgIGlmIChBWENvcmVPYmplY3Qq
IGFjdGl2ZURlc2NlbmRhbnQgPSBheE9iamVjdC0+YWN0aXZlRGVzY2VuZGFudCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGFjdGl2ZURlc2NlbmRhbnQtPm5vZGUoKTsKICAgICB9CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgYWRkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9i
amVjdCYgcGFyZW50T2JqZWN0LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgY2hpbGROb2RlcykKK3N0
YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFYQ29yZU9iamVjdCYgcGFyZW50T2JqZWN0LCBWZWN0b3I8
UmVmUHRyPE5vZGU+PiYgY2hpbGROb2RlcykKIHsKLSAgICBmb3IgKGNvbnN0IFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiYgY2hpbGRPYmplY3QgOiBwYXJlbnRPYmplY3QuY2hpbGRyZW4oKSkg
eworICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRPYmplY3QgOiBwYXJlbnRPYmplY3QuY2hpbGRy
ZW4oKSkgewogICAgICAgICBpZiAoTm9kZSogY2hpbGROb2RlID0gY2hpbGRPYmplY3QtPm5vZGUo
KSkKICAgICAgICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9kZSk7CiAgICAgICAgIGVs
c2UKQEAgLTEwOCw3ICsxMDgsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRy
PE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsK
KyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5v
ZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gY2hpbGROb2RlczsKICAg
ICAgICAgYWRkQ2hpbGRyZW4oKmF4T2JqZWN0LCBjaGlsZE5vZGVzKTsKICAgICAgICAgcmVzdWx0
ID0gV1RGTW92ZShjaGlsZE5vZGVzKTsKQEAgLTEyMywxMCArMTIzLDEwIEBAIEV4Y2VwdGlvbk9y
PE9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Q29tcHV0ZWRQcm9w
ZXJ0aWVzPj4gSW5zCiAKICAgICBPcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4gcmVzdWx0OwogCi0gICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewor
ICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9k
ZShub2RlKSkgewogICAgICAgICBDb21wdXRlZFByb3BlcnRpZXMgY29tcHV0ZWRQcm9wZXJ0aWVz
OwogCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGN1cnJlbnQgPSBheE9iamVjdDsKKyAg
ICAgICAgQVhDb3JlT2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7CiAgICAgICAgIHdoaWxlIChj
dXJyZW50ICYmICghY29tcHV0ZWRQcm9wZXJ0aWVzLmJ1c3kgfHwgIWNvbXB1dGVkUHJvcGVydGll
cy5idXN5LnZhbHVlKCkpKSB7CiAgICAgICAgICAgICBjb21wdXRlZFByb3BlcnRpZXMuYnVzeSA9
IGN1cnJlbnQtPmlzQnVzeSgpOwogICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVu
dE9iamVjdCgpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3Rv
cjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAK
ICAgICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShu
b2RlKSkgeworICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2Jq
ZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBjb250cm9s
bGVkTm9kZXM7CiAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBjb250cm9sbGVkRWxlbWVudHM7
CkBAIC0yNjksNyArMjY5LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxO
b2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7Cisg
ICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2Rl
KG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGZsb3dlZE5vZGVzOwogCiAg
ICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gZmxvd2VkRWxlbWVudHM7CkBAIC0yODksNyArMjg5LDcg
QEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmdldE1vdXNlRXZlbnROb2RlKE4KIHsKICAgICBFUlJPUl9JRl9OT19BQ1RJVkVfQVVE
SVQoKTsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2li
bGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVj
dCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgaWYgKGlzPEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0PihheE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q+KGF4T2JqZWN0KS0+bW91c2VCdXR0b25MaXN0
ZW5lcihNb3VzZUJ1dHRvbkxpc3RlbmVyUmVzdWx0RmlsdGVyOjpJbmNsdWRlQm9keUVsZW1lbnQp
OwogICAgIH0KQEAgLTMwMyw3ICszMDMsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8
UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAg
ICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9k
ZSkpIHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVj
dEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgaWYgKGF4T2JqZWN0LT5zdXBwb3J0c0FSSUFPd25z
KCkpIHsKICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IG93bmVkTm9kZXM7CiAKQEAg
LTMyNSw4ICszMjUsOCBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0UGFyZW50Tm9kZShOb2RlJgogewogICAgIEVSUk9SX0lG
X05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewotICAgICAgICBpZiAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpKQorICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBwYXJlbnRP
YmplY3QgPSBheE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcGFyZW50T2JqZWN0LT5ub2RlKCk7CiAgICAgfQogCkBAIC0zMzksMTIgKzMzOSwxMiBA
QCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxO
b2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9
IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAoQVhDb3JlT2JqZWN0
KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAg
VmVjdG9yPFJlZlB0cjxOb2RlPj4gc2VsZWN0ZWRDaGlsZE5vZGVzOwogCi0gICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxk
cmVuOworICAgICAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBz
ZWxlY3RlZENoaWxkcmVuOwogICAgICAgICBheE9iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxl
Y3RlZENoaWxkcmVuKTsKLSAgICAgICAgZm9yIChSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4m
IHNlbGVjdGVkQ2hpbGRPYmplY3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7CisgICAgICAgIGZvciAo
YXV0byYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4pIHsKICAgICAgICAg
ICAgIGlmIChOb2RlKiBzZWxlY3RlZENoaWxkTm9kZSA9IHNlbGVjdGVkQ2hpbGRPYmplY3QtPm5v
ZGUoKSkKICAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZXMuYXBwZW5kKHNlbGVjdGVk
Q2hpbGROb2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MDRkYjUyZDk2ODE2ZDc4OWFj
MGIxNjU4YmE5ZjgzNmEwNTk5NzNhLi4zZWFkMTM1YWQzNDRhNWUyYTFkYzM2ZWZjMDRlNzQ0MTRl
NzE3ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yRXYKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmpl
Y3QsIEpTT046OkFycmF5T2Y8aW50PiYgY2hpbGROb2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBWENvcmVPYmplY3QmIGF4T2JqZWN0
LCBKU09OOjpBcnJheU9mPGludD4mIGNoaWxkTm9kZUlkcykKIHsKICAgICBjb25zdCBhdXRvJiBj
aGlsZHJlbiA9IGF4T2JqZWN0LmNoaWxkcmVuKCk7CiAgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkp
CkBAIC0xODI0LDEzICsxODI0LDEzIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgdW5z
aWduZWQgbGV2ZWwgPSAwOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUg
PSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkgewotICAgICAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShub2Rl
KSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUt
PmdldE9yQ3JlYXRlKG5vZGUpKSB7CiAKLSAgICAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBhY3RpdmVEZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKKyAg
ICAgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQgPSBheE9iamVjdC0+
YWN0aXZlRGVzY2VuZGFudCgpKQogICAgICAgICAgICAgICAgIGFjdGl2ZURlc2NlbmRhbnROb2Rl
ID0gYWN0aXZlRGVzY2VuZGFudC0+bm9kZSgpOwogCiAgICAgICAgICAgICAvLyBBbiBBWCBvYmpl
Y3QgaXMgImJ1c3kiIGlmIGl0IG9yIGFueSBhbmNlc3RvciBoYXMgYXJpYS1idXN5PSJ0cnVlIiBz
ZXQuCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7
CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIGN1cnJlbnQgPSBheE9iamVjdDsKICAgICAgICAg
ICAgIHdoaWxlICghYnVzeSAmJiBjdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgYnVzeSA9IGN1
cnJlbnQtPmlzQnVzeSgpOwogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJl
bnRPYmplY3QoKTsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gYXhPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpKQorICAgICAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0g
YXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQogICAgICAgICAgICAgICAgIHBhcmVu
dE5vZGUgPSBwYXJlbnRPYmplY3QtPm5vZGUoKTsKIAogICAgICAgICAgICAgc3VwcG9ydHNQcmVz
c2VkID0gYXhPYmplY3QtPnByZXNzZWRJc1ByZXNlbnQoKTsKQEAgLTE5ODgsNyArMTk4OCw3IEBA
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgICAgICAgICByb2xlID0gYXhPYmplY3QtPmNv
bXB1dGVkUm9sZVN0cmluZygpOwogICAgICAgICAgICAgc2VsZWN0ZWQgPSBheE9iamVjdC0+aXNT
ZWxlY3RlZCgpOwogCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKKyAgICAgICAgICAgIEFYQ29yZU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CiAgICAg
ICAgICAgICBheE9iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuKTsKICAg
ICAgICAgICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLnNpemUoKSkgewogICAgICAgICAgICAgICAg
IHNlbGVjdGVkQ2hpbGROb2RlSWRzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
aAppbmRleCBjYjdiZWFhMTNhYzM1NGU5NGY4MDdiNWI4MzY1OTI1MzJjOTlkNGI1Li5kOTE3ZTUw
MjE3OTE0NWM4MDBiNTIwNjhkNWYyNTM1NjZmZmMyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC01Miw3ICs1Miw3
IEBAIGNsYXNzIEpTVmFsdWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQWNjZXNz
aWJpbGl0eU9iamVjdDsKK2NsYXNzIEFYQ29yZU9iamVjdDsKIGNsYXNzIENoYXJhY3RlckRhdGE7
CiBjbGFzcyBET01FZGl0b3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTIyNSw3ICsyMjUsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiwgTm9k
ZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpF
dmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGJvb2wgaGFzQnJlYWtwb2ludCk7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoTm9kZSopOwotICAgIHZv
aWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgSlNP
Tjo6QXJyYXlPZjxpbnQ+Jik7CisgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVu
KEFYQ29yZU9iamVjdCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwogICAgIAogICAgIE5vZGUqIG5v
ZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElk
KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRl
eCAyNDRlNWI5NTQ4ZmZlMzlhYTU4Y2MzZWY4MTllNzZiYmNjNTI5Mjc3Li5iOGVhZWQ5M2Y2YzIw
ZGFkZWEyNzc2NzU2NDI3OTlkZDc0NmY5MjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cApAQCAtNTYsNyArNTYsNyBAQAogI2luY2x1ZGUgIldlYlJlbmRlckxheWVyLmgiCiAjaW5jbHVk
ZSAiV2ViUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkKiBXS0FjY2Vz
c2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogICAgIAogICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKIAotICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3QgPSBjb3JlLmRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIFdlYkNvcmU6OkFYQ29yZU9iamVjdCogcm9vdCA9
IGNvcmUuZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCk7CiAgICAgaWYg
KCFyb290KQogICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lk
KiBXS0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQog
CiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwogCi0g
ICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNlZE9iamVjdCA9IFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpOworICAgIFdlYkNv
cmU6OkFYQ29yZU9iamVjdCogZm9jdXNlZE9iamVjdCA9IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpOwogICAgIGlmICghZm9jdXNlZE9iamVjdCkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382310</attachid>
            <date>2019-10-30 07:38:26 -0700</date>
            <delta_ts>2019-10-30 09:34:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203408-20191030103824.patch</filename>
            <type>text/plain</type>
            <size>265238</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkOWFkMjljMmQzMzJh
ODMwMTAyYjIxMGRlZTllZmFmNjg3MDE5NC4uYzg5NTg0YjdhNDNhMzVlYWMxNTZkMzc2M2E2M2Jk
OTY0YmZhNTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyMCBAQAorMjAxOS0xMC0zMCAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJh
c2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVl
Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBuZWVkZWQgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBBWENvcmVPYmplY3QgaXMgbm93IGEgY29tbW9uIGJhc2UgY2xhc3Mg
Zm9yIGJvdGggQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQKKyAgICAgICAgQVhJc29sYXRlZFRyZWVO
b2RlLiBBbGwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSBBWENvcmVPYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBhbnkgb2YgdGhlIGRlcml2ZWQgY2xhc3Nlcy4gVGhpcyB3aWxsIGFsbG93IHRvIHNl
YW1sZXNzbHkgc3dpdGNoCisgICAgICAgIGJldHdlZW4gdXNpbmcgQVhJc29sYXRlZFRyZWVOb2Rl
IGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkIGFuZAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGluIHRoZSBtYWluIHRocmVhZCB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbworICAgICAg
ICBhbGxvd3MgZm9yIGNsZWFuZXIgY2xpZW50IGNvZGUsIGVuY2Fwc3VsYXRpbmcgdGhlIGRlY2lz
aW9uIHdoZXRoZXIKKyAgICAgICAgQVhJc29sYXRlZFRyZWVOb2RlIGNhbiByZXNwb25kIHRvIGEg
cmVxdWVzdCBvciBuZWVkIHRvIHJlc29ydCB0byBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LCBhbmQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjb21waWxlCisg
ICAgICAgIHRpbWUgZmxhZyBjaGVja3MgZm9yIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0QVhJRCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0
TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJy
ZWRDYWNoZVVwZGF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmF4Um93U3BhbldpdGhSb3dJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9t
aW5hdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb250YWluc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjpB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjppc051bGwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OlZpc2libGVQb3NpdGlvblJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjppc051bGwgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjppc051bGwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbjo6QWNjZXNzaWJpbGl0
eVRleHRPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0QVhPYmplY3RJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJ
bWFnZUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3
b3JkRmllbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNOYXRpdmVUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzUmFkaW9CdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNOYXRpdmVMaXN0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdEJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3hPcHRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNNZWRpYVRpbWVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUJhciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVCdXR0
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0lucHV0SW1hZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NsaWRlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1NsaWRlclRodW1iIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzSW5wdXRTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250cm9sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGFiZWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFi
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEYXRhVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RhYmxlQ29sdW1uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVDZWxsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRmll
bGRzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNHcm91cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FSSUFUcmVlR3JpZFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUxpc3RQb3B1
cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BpbkJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZVNwaW5CdXR0b24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGlu
QnV0dG9uUGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01vY2tPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZWRpYU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RvZ2dsZUJ1
dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RhYkxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFkaW9Hcm91cCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbWJvQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVHJlZUdy
aWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMaXN0SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDYW52YXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQ
b3BVcEJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0NvbG9yV2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwbGl0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9vbGJhciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N1bW1hcnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXND
aGVja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1NlbGVjdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRm9jdXNlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hvdmVyZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbmRldGVy
bWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTG9hZGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT2ZmU2NyZWVuIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1VudmlzaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Zpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSZXF1aXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlua2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0V4cGFuZGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25B
Y3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzQm9sZEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzSXRhbGljRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQbGFpblRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZUZvbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzU2FtZUZvbnRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNTYW1lU3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdGF0aWNUZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
YW5TZXRGb2N1c0F0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldFZhbHVl
QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5T
ZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmlidXRlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0xldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYmxlTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2YWx1ZUZv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5n
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXlvdXRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojplc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNBUklBT3ducyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBRHJvcHBpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBR3JhYmJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBUklB
R3JhYmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RDaGlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmlvdXNTaWJsaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5leHRTaWJsaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtlZFVJRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGVV
SUVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRy
b2xFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9s
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlSGFzUHJl
c2VudGF0aW9uYWxDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBUklBU3RhdGljVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4
dExlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhTGFiZWxlZEJ5QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
eHBhbmRlZFRleHRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbG9yVmFsdWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXhP
YmplY3RJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBpeGVs
U25hcHBlZEJvdW5kaW5nQm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxl
Y3RlZFRleHRSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25TdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25FbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZWxlY3RlZFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzS2V5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OndpZGdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVkVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRT
ZWxlY3RlZFJvd3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6bWFrZVJhbmdlVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtRGVmYXVsdEFjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmNyZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVjcmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhhdmVD
aGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1
YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bmVlZHNUb1VwZGF0ZUNoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGFiQ2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFu
ZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRzRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0
VmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVha3MgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdl
Rm9yTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWEJvdW5kc0Zv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ1ZhbHVl
Rm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZl
UmVnaW9uUmVsZXZhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1c3kgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlYWtBc1Byb3BlcnR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
TWF0aEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNNYXRoRnJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoRmVuY2VkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhVbmRlck92ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoUm9vdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTcXVh
cmVSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWF0aFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNl
T3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoSWRlbnRpZmllciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhU
YWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01hdGhUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUYWJsZUNlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNN
YXRoVG9rZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhS
YWRpY2FuZE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUm9vdEluZGV4T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJhdG9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGhEZW5vbWluYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoQmFzZU9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vic2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRo
RmVuY2VkT3BlblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aExpbmVUaGlja25lc3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSGlkZGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6Y2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFpblRl
eHRSYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
blJhbmdlOjpWaXNpYmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb25SYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0
dG9uR3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpkZWNyZW1l
bnRCdXR0b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkhlYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdyBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaXN0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAg
ICAgICAgKHJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtHZXRTdGFydEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRFbmRJbmRleCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJ0ZXh0R2V0TGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0Tkxp
bmtzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKToK
KyAgICAgICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24p
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVNlbGVjdGlvblJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAob2Zm
c2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKToKKyAgICAgICAgKHdlYkNvcmVPZmZzZXRUb0F0a09m
ZnNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAg
ICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IpOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVs
ZW1lbnRzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlDb250YWluZXJdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUxpbmtlZEVsZW1lbnRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAg
ICAgKGFkZENoaWxkVG9BcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBheEJhY2tpbmdPYmplY3RdKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3dp
bi9BWE9iamVjdENhY2hlV2luLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL2F0ay9GcmFtZVNlbGVj
dGlvbkF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbWl0VGV4dFNlbGVjdGlvbkNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjptYXliZUVtaXRUZXh0Rm9jdXNDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25D
aGFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6Omdl
dEVsZW1lbnRzQnlDb21wdXRlZFJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRBY3RpdmVEZXNjZW5kYW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q2hpbGROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENv
bnRyb2xsZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmdldEZsb3dlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TW91c2VFdmVudE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRPd25lZE5vZGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6
Z2V0UGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmdldFNlbGVjdGVkQ2hpbGROb2Rlcyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgor
CiAyMDE5LTEwLTI2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFp
biBpbXBsZW1lbnRhdGlvbiBmb3IgbGF6eSBpbWFnZSBsb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZTY3
Y2Q0ZTA5OGMzMTkwOTYwNWRiMTY0OWI3ODE2NGIwNTFhZTQuLjI5MGY3YjYyM2ExYWM1N2U5ODYy
OTQwNjViZTMxNjg1ZDVlMWIwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTAt
MzAgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgorCisgICAgICAgIENy
ZWF0ZSBiYXNlIGNsYXNzIGNvbW1vbiB0byBBY2Nlc3NpYmlsaXR5T2JqZWN0IGFuZCBBWElzb2xh
dGVkVHJlZU5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDM0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoK
KyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QpOgorICAgICAgICAoV0tBY2Nlc3Np
YmlsaXR5Rm9jdXNlZE9iamVjdCk6CisKIDIwMTktMTAtMjYgIENocmlzIExvcmQgIDxjbG9yZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFB1dCBPZmZzY3JlZW5DYW52YXMgYmVoaW5kIGEgYnVpbGQg
ZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggYWFlNGQ4NjM4YjUzMDFhMGUwMzE2MGEyODNlMWIyMjg2NTRjZTgwMS4uOTdhZWY2YTRi
ODM2ZjYzODEzZTAwNWJlYzY3NDJmMWIwYjkxMWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgQVhPYmpl
Y3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0IDog
bV9vYmplY3RzLnZhbHVlcygpKSB7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2JqZWN0LmdldCgp
LCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsKICAgICAgICAg
b2JqZWN0LT5kZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ryb3ll
ZCk7Ci0gICAgICAgIG9iamVjdC0+c2V0QVhPYmplY3RJRCgwKTsKKyAgICAgICAgb2JqZWN0LT5z
ZXRPYmplY3RJRCgwKTsKICAgICB9CiB9CiAKQEAgLTMzNiwxNSArMzM2LDE1IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudChIVE1M
QXJlYUVsZW1lbnQqIGFyCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGF4UmVuZGVySW1h
Z2UtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rPigqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAg
IGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqY2hpbGQpLmFyZWFFbGVt
ZW50KCkgPT0gYXJlYUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0g
ICAgfSAgICAKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VN
YXBMaW5rPihjaGlsZC5nZXQoKSk7CisgICAgfQogICAgIAogICAgIHJldHVybiBudWxscHRyOwog
fQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxl
bWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKK0FYQ29yZU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKIHsKICAgICBpZiAo
IWdBY2Nlc3NpYmlsaXR5RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTUs
MTIgKzM1NSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2Vk
VUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogICAgIGlmIChpczxIVE1MQXJlYUVs
ZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJbWFnZU1hcFVJ
RWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSk7CiAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxOb2RlKj4oZm9j
dXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAgICBBWENvcmVPYmplY3QqIG9iaiA9
IGZvY3VzZWREb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkRWxl
bWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1c2VkRWxlbWVudCkgOiBmb2N1c2VkRG9jdW1l
bnQpOwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChv
YmotPnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBkZXNjZW5kYW50ID0gb2JqLT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAg
ICAgIGlmIChBWENvcmVPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2ZURlc2NlbmRhbnQo
KSkKICAgICAgICAgICAgIG9iaiA9IGRlc2NlbmRhbnQ7CiAgICAgfQogCkBAIC01NjAsOCArNTYw
LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoV2lk
Z2V0KiB3aWRnZXQpCiAKICAgICBnZXRBWElEKG5ld09iai5nZXQoKSk7CiAgICAgCi0gICAgbV93
aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3aWRnZXQsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAg
ICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOyAgICAKKyAgICBt
X3dpZGdldE9iamVjdE1hcHBpbmcuc2V0KHdpZGdldCwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAg
ICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmot
PmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgcmV0dXJuIG5l
d09iai5nZXQoKTsKQEAgLTYwOCw4ICs2MDgsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9i
amVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgZ2V0QVhJRChuZXdPYmou
Z2V0KCkpOwogCi0gICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2JqLT5heE9i
amVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCksIG5ld09i
aik7CisgICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2JqLT5vYmplY3RJRCgp
KTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBu
ZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgbmV3
T2JqLT5zZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShuZXdPYmotPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSk7CkBAIC02MzYsOCArNjM2LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmpl
Y3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogICAgIGdldEFY
SUQobmV3T2JqLmdldCgpKTsKIAotICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQocmVuZGVy
ZXIsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhP
YmplY3RJRCgpLCBuZXdPYmopOworICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQocmVuZGVy
ZXIsIG5ld09iai0+b2JqZWN0SUQoKSk7CisgICAgbV9vYmplY3RzLnNldChuZXdPYmotPm9iamVj
dElEKCksIG5ld09iaik7CiAgICAgbmV3T2JqLT5pbml0KCk7CiAgICAgYXR0YWNoV3JhcHBlcihu
ZXdPYmouZ2V0KCkpOwogICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUobmV3
T2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpOwpAQCAtNzA5LDcgKzcwOSw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUpCiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fb2Jq
ZWN0cy5zZXQob2JqLT5heE9iamVjdElEKCksIG9iaik7ICAgIAorICAgIG1fb2JqZWN0cy5zZXQo
b2JqLT5vYmplY3RJRCgpLCBvYmopOwogICAgIG9iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBw
ZXIob2JqLmdldCgpKTsKICAgICByZXR1cm4gb2JqLmdldCgpOwpAQCAtNzI2LDcgKzcyNiw3IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFYSUQgYXhJRCkKIAogICAgIGRldGFjaFdyYXBw
ZXIob2JqZWN0LmdldCgpLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0
cm95ZWQpOwogICAgIG9iamVjdC0+ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6
RWxlbWVudERlc3Ryb3llZCwgdGhpcyk7Ci0gICAgb2JqZWN0LT5zZXRBWE9iamVjdElEKDApOwor
ICAgIG9iamVjdC0+c2V0T2JqZWN0SUQoMCk7CiAKICAgICBtX2lkc0luVXNlLnJlbW92ZShheElE
KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQpAQCAtNzk5LDcgKzc5
OSw3IEBAIEFYSUQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1HZW5lcmF0ZUFYSUQoKSBjb25zdAog
QVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKIHsK
ICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeS1hc3NpZ25lZCBJRAotICAgIEFYSUQgb2JqSUQgPSBv
YmotPmF4T2JqZWN0SUQoKTsKKyAgICBBWElEIG9iaklEID0gb2JqLT5vYmplY3RJRCgpOwogICAg
IGlmIChvYmpJRCkgewogICAgICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlucyhvYmpJRCkp
OwogICAgICAgICByZXR1cm4gb2JqSUQ7CkBAIC04MDgsNyArODA4LDcgQEAgQVhJRCBBWE9iamVj
dENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKICAgICBvYmpJRCA9IHBs
YXRmb3JtR2VuZXJhdGVBWElEKCk7CiAKICAgICBtX2lkc0luVXNlLmFkZChvYmpJRCk7Ci0gICAg
b2JqLT5zZXRBWE9iamVjdElEKG9iaklEKTsKKyAgICBvYmotPnNldE9iamVjdElEKG9iaklEKTsK
ICAgICAKICAgICByZXR1cm4gb2JqSUQ7CiB9CkBAIC04ODEsMTIgKzg4MSwxMiBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5k
ZXJPYmplY3QqIG5ld0NoaQogICAgIGNoaWxkcmVuQ2hhbmdlZChnZXQocmVuZGVyZXIpKTsKIH0K
IAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqKQordm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQVhDb3JlT2JqZWN0
KiBvYmopCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVmZXJy
ZWRDaGlsZHJlZENoYW5nZWRMaXN0LmFkZChvYmopOworICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNo
YW5nZWRMaXN0LmFkZChvYmopOwogfQogICAgIAogdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25Qb3N0VGltZXJGaXJlZCgpCkBAIC04OTksOCArODk5LDggQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgYXV0byBub3RpZmljYXRpb25z
ID0gV1RGTW92ZShtX25vdGlmaWNhdGlvbnNUb1Bvc3QpOwogICAgIAogICAgIGZvciAoY29uc3Qg
YXV0byYgbm90ZSA6IG5vdGlmaWNhdGlvbnMpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmotPmF4T2JqZWN0SUQo
KSkKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgpOworICAgICAg
ICBpZiAoIW9iai0+b2JqZWN0SUQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IGlmICghb2JqLT5heE9iamVjdENhY2hlKCkpCkBAIC05ODgsNyArOTg4LDcgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKE5vZGUqIG5vZGUsIEFYTm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbiwgUG8KICAgICBwb3N0Tm90aWZpY2F0aW9uKG9iamVjdC5nZXQoKSwgJm5vZGUt
PmRvY3VtZW50KCksIG5vdGlmaWNhdGlvbiwgcG9zdFRhcmdldCwgcG9zdFR5cGUpOwogfQogCi12
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwg
UG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKK3ZvaWQgQVhPYmplY3RD
YWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9zdFRhcmdl
dCwgUG9zdFR5cGUgcG9zdFR5cGUpCiB7CiAgICAgc3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZXMoKTsKIApAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpz
ZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRN
YXIKICAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7
CiAgICAgfQogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2Jq
ZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgp
OwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRh
LmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4dE1hcmtl
ckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwpA
QCAtMjIzMCw3ICsyMjMwLDcgQEAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2Fj
aGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFYKICAgICBUZXh0TWFy
a2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0
ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwogICAgIAotICAgIHRl
eHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFy
a2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRh
Lm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9IHZp
c2libGVQb3MuYWZmaW5pdHkoKTsKQEAgLTIyNjIsNyArMjI2Miw3IEBAIE9wdGlvbmFsPFRleHRN
YXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25J
blRleHRDb250CiAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CiAgICAgbWVtc2V0
KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1hcmtl
ckRhdGEpKTsKICAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5heE9i
amVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+b2JqZWN0SUQo
KTsKICAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRleHRDb250cm9sOwogCiAgICAgY2FjaGUt
PnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwpAQCAtMjkwNyw5ICsyOTA3LDkgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAgfQogICAgIG1f
ZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWROb2RlTGlzdC5jbGVhcigpOwogCi0gICAgZm9yIChhdXRv
JiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0KQorICAgIGZvciAoYXV0byYg
Y2hpbGQgOiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdCkKICAgICAgICAgY2hpbGQtPmNo
aWxkcmVuQ2hhbmdlZCgpOwotICAgIG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0LmNsZWFy
KCk7CisgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAogICAgIGZv
ciAoYXV0byogbm9kZSA6IG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3QpCiAgICAgICAgIHRleHRD
aGFuZ2VkKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaAppbmRleCBlNTIyMDNiZWIxNDMwMTA0MDM3NTZjNDZjMzczZTllN2RhMzE5OWJmLi44ODQ5
OWZkMThjMjA3MzlkMmRhMzcwYTA0YmE3YmY0MWJmZTNjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFYT2JqZWN0
Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFn
ZSopOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcm9vdCBvYmplY3QgZm9yIHRoZSBlbnRpcmUgZG9j
dW1lbnQuCiAgICAgV0VCQ09SRV9FWFBPUlQgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdE9iamVj
dCgpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGFjaFdyYXBwZXIo
QWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKE5vZGUqLCBO
b2RlKiBuZXdDaGlsZCA9IG51bGxwdHIpOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKFJlbmRl
ck9iamVjdCosIFJlbmRlck9iamVjdCogbmV3Q2hpbGQgPSBudWxscHRyKTsKLSAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUq
KTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZCwgc28g
d2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nlc3NpYmls
aXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUq
KTsKQEAgLTMwNyw3ICszMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvc3ROb3RpZmljYXRp
b24oUmVuZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVt
ZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBwb3N0Tm90aWZp
Y2F0aW9uKE5vZGUqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQs
IFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKLSAgICB2b2lkIHBvc3ROb3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhOb3RpZmljYXRpb24sIFBvc3RU
YXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7Cisg
ICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIERvY3VtZW50KiwgQVhOb3Rp
ZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3lu
Y2hyb25vdXNseSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzaG93SW50ZW50KGNvbnN0
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jik7CkBAIC0zNTYsNyArMzU2LDcgQEAgcHVibGljOgog
ICAgIAogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBBWE5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCBw
bGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3VzZWROb2Rl
LCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7CiAKICAgICB2b2lkIHBsYXRmb3JtUGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUoKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hT
ZXQ8QVhJRD4gbV9pZHNJblVzZTsKIAogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uUG9zdFRpbWVy
OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+LCBBWE5v
dGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uc1RvUG9zdDsKKyAgICBWZWN0b3I8c3RkOjpwYWly
PFJlZlB0cjxBWENvcmVPYmplY3Q+LCBBWE5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uc1Rv
UG9zdDsKIAogICAgIFRpbWVyIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXI7CiAKQEAg
LTQ3Nyw3ICs0NzcsNyBAQCBwcml2YXRlOgogICAgIExpc3RIYXNoU2V0PEVsZW1lbnQqPiBtX2Rl
ZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9k
ZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxFbGVtZW50Kj4gbV9kZWZl
cnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0OworICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFu
Z2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdl
ZE5vZGVMaXN0OwogICAgIEhhc2hNYXA8RWxlbWVudCosIFN0cmluZz4gbV9kZWZlcnJlZFRleHRG
b3JtQ29udHJvbFZhbHVlOwogICAgIEhhc2hNYXA8RWxlbWVudCosIFF1YWxpZmllZE5hbWU+IG1f
ZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2U7CkBAIC01MzIsNyArNTMyLDcgQEAgaW5saW5lIGNvbnN0
IEVsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OnJvb3RBWEVkaXRhYmxlRWxlbWVudChjb25zdCBOb2Rl
KikgeyByZXR1cm4KIGlubGluZSBOb2RlKiBBWE9iamVjdENhY2hlOjptb2RhbE5vZGUoKSB7IHJl
dHVybiBudWxscHRyOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVy
KEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNo
ZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopIHsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KK2lubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBWENvcmVPYmplY3QqKSB7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2RlKiwgTm9kZSopIHsgfQogaW5s
aW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCosIFJl
bmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJGb2N1c2Vk
VUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSosIE5vZGUqKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRl
eCBkNzMwOTg4Zjg5N2VjZmE0OWFiYjkwZDMzZTcxMmQ2MGVkZTg1MjllLi4wMDBhZGQ0YzNhYTIy
OGYyZTNmNjA1MTgwMTAyMDU5ZmFkMTEyMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIFJlZjxBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3Jl
YXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkKHJlbmRlcmVyKSk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCwgSGFz
aFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVt
bkNvdW50KQorYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFY
Q29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRl
ZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIWNoaWxkIHx8ICghaXM8
QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFpczxBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3c+KCpjaGlsZCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NSw3ICs4NSw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0CiAg
ICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhTXVsdGlTZWxlY3Rh
YmxlLCAiZmFsc2UiKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rl
c2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJp
bGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKK3ZvaWQg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KEFYQ29yZU9iamVjdCogcm93
Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2ln
bmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIXJvd0NoaWxkKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlB
UklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuaAppbmRleCBiOGU3YmFmNGE1YjJlNjQ1OWVmZWE5ZDhiMjYwYWE5MjgxMjAyMGI3Li5m
NzJjOTA2YWEwY2UwZjRiNzgxODVhYjE1ZTVmOTEzYTliYzMzMjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKQEAgLTUy
LDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhy
b3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAK
LSAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7Ci0gICAgYm9vbCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFz
aFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVt
bkNvdW50KTsKKyAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiwgSGFzaFNl
dDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNv
dW50KTsKKyAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5k
ZXggZDAyM2Y4Y2U1N2YzNTU0N2JjYWUxNTU0ZDY0MDI0MmUzODlkMjg0Ny4uZjgxOWU5YWVlOTQ2
YzVkMzU1MGY3M2IyNDllMTM5Yzk5YjRhNDI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIC8vIEFSSUEgZ3JpZGNlbGxzIG1heSBoYXZlIG11
bHRpcGxlIGxldmVscyBvZiB1bmlnbm9yZWQgYW5jZXN0b3JzIHRoYXQgYXJlIG5vdCB0aGUgcGFy
ZW50IHRhYmxlLAogICAgIC8vIGluY2x1ZGluZyByb3dzIGFuZCBpbnRlcmFjdGl2ZSByb3dncm91
cHMuIEluIGFkZGl0aW9uLCBwb29ybHktZm9ybWVkIGdyaWRzIG1heSBjb250YWluIGVsZW1lbnRz
CiAgICAgLy8gd2hpY2ggcGFzcyB0aGUgdGVzdHMgZm9yIGluY2x1c2lvbi4KLSAgICBmb3IgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBwYXJl
bnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKKyAgICBmb3Ig
KGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBwYXJlbnQ7IHBhcmVudCA9
IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKICAgICAgICAgaWYgKGlzPEFjY2Vz
c2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigq
cGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpOwogICAgIH0KQEAgLTY1
LDcgKzY1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGw6OnJvd0luZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jhbmdl
KSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAzLDcg
KzEwMyw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3Bhbldp
dGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAgICAgICAgIHJldHVybiBzdGQ6Om1h
eChzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLnNlY29uZCksIDEpOwogICAgIH0KIAotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFY
Q29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFw
YXJlbnQpCiAgICAgICAgIHJldHVybiAxOwogICAgIApAQCAtMTM0LDcgKzEzNCw3IEBAIHVuc2ln
bmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNp
Z25lZCByb3dJbmRleCkgY29uCiAKIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29s
dW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2Up
IGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0
VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5jcHAKaW5kZXggZjI5NjQ2N2NhNGU4MTFiZWQyNjAxYzdjYTMyMzFkODgwOGFhNTQzMC4uMzI4
MzgwNzY1MjlkZDQ1YzEwZmM3ZDRhN2FjMDlhMGM3ZjVhM2RmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xv
c2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIGF1dG8mIGFs
bFJvd3MgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLnJvd3MoKTsKICAg
ICBpbnQgcm93Q291bnQgPSBhbGxSb3dzLnNpemUoKTsKICAgICBmb3IgKGludCBrID0gaW5kZXgg
KyAxOyBrIDwgcm93Q291bnQ7ICsraykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBy
b3cgPSBhbGxSb3dzW2tdLmdldCgpOworICAgICAgICBhdXRvKiByb3cgPSBhbGxSb3dzW2tdLmdl
dCgpOwogICAgICAgICAvLyBTdG9wIGF0IHRoZSBmaXJzdCByb3cgdGhhdCBkb2Vzbid0IG1hdGNo
IHRoZSBjb3JyZWN0IGxldmVsLgogICAgICAgICBpZiAocm93LT5oaWVyYXJjaGljYWxMZXZlbCgp
ICE9IGxldmVsICsgMSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIsNyArODIsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIH0KIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAorQVhDb3Jl
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkgY29uc3QK
IHsKICAgICAvLyBUaGUgcm93IHRoYXQgZGlzY2xvc2VzIHRoaXMgb25lIGlzIHRoZSByb3cgaW4g
dGhlIHRhYmxlCiAgICAgLy8gdGhhdCBpcyBhcmlhLWxldmVsIHN1YnRyYWN0IDEgZnJvbSB0aGlz
IHJvdy4KQEAgLTEwMyw3ICsxMDMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgZm9yIChpbnQgayA9IGluZGV4IC0gMTsgayA+PSAwOyAtLWspIHsK
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93ID0gYWxsUm93c1trXS5nZXQoKTsKKyAg
ICAgICAgYXV0byogcm93ID0gYWxsUm93c1trXS5nZXQoKTsKICAgICAgICAgaWYgKHJvdy0+aGll
cmFyY2hpY2FsTGV2ZWwoKSA9PSBsZXZlbCAtIDEpCiAgICAgICAgICAgICByZXR1cm4gcm93Owog
ICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdzo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRl
ck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6aGVhZGVy
T2JqZWN0KCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgewog
ICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJvd0hlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCmluZGV4IDdiYTc0ZjRkZDIzMTcxZmU1YjQ4MmI2
ZmU3ODBhMmZmNzg2OWQ4ODYuLjg1NDA2ODM1YWZlNzFlYzg0ZDU5YTU2MTA0NjA5NTA1MTlkYjZl
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuaApAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93KCk7CiAgICAgCiAgICAgdm9pZCBkaXNjbG9zZWRS
b3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGRpc2Nsb3NlZEJ5Um93KCkgY29uc3Q7CisgICAgQVhDb3JlT2JqZWN0KiBkaXNjbG9zZWRC
eVJvdygpIGNvbnN0OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVj
dCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCkgb3ZlcnJpZGU7
CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdyhS
ZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxhYmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxhYmVsLmNwcAppbmRleCBiNDVmYzYwMDI0YTRmMzBhYjAwNzU1NmViNTZiMzQ5
ZjIzNDIyZjU4Li42MzQ1ZjNjZDhmMzg1YTA1MGY5Y2FjOWI5Mzc4YTA4NTMyZTc1MTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwu
Y3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6OmNsZWFyQ2hp
bGRyZW4oKQogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gZmFsc2U7CiB9CiAK
LXZvaWQgQWNjZXNzaWJpbGl0eUxhYmVsOjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2Vy
dENoaWxkKEFYQ29yZU9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnNlcnRDaGlsZChvYmplY3QsIGluZGV4KTsKICAgICBt
X2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaAppbmRleCBiMTNhZjJkN2Q5MmRi
YjUyODBmNGRjY2Q4MjE0MDBkNDY2YzM5NGUwLi5iNmE0MWI5YWZmMGY4NTZlYjllOTQ4NjNkYzdm
NWJlNmRkODA1YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMYWJlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxhYmVsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBmaW5hbDsKLSAgICB2b2lk
IGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCB1bnNpZ25lZCkgZmluYWw7CisgICAg
dm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgZmluYWw7CiAgICAgYm9v
bCBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2NvbnRhaW5z
T25seVN0YXRpY1RleHQgOiAxOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggMDdhZWRjOTcxNDY4NDEwYjkw
MWE3ODIyZGFiMDc5MjllZWEzMDRlMC4uOTVmOTcyODc3ZDE2NjhjMDFkNzRkYmVjY2I5NTU2MTdm
NGVjNjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QoSFRNTAogICAgIHJldHVybiAmbGlzdEJveE9iamVjdDsKIH0KICAgICAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKIHsKICAgICAvLyB0aGUgaW50ZXJuYWwgSFRNTFNlbGVjdEVsZW1lbnQgbWV0
aG9kcyBmb3IgcmV0dXJuaW5nIGEgbGlzdGJveCBvcHRpb24gYXQgYSBwb2ludAogICAgIC8vIGln
bm9yZSBvcHRncm91cCBlbGVtZW50cy4KQEAgLTE1NSw3ICsxNTUsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludAogICAgIAogICAgIExheW91dFJlY3QgcGFyZW50UmVjdCA9IGJvdW5kaW5nQm94
UmVjdCgpOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RCb3hPcHRpb24gPSBu
dWxscHRyOworICAgIEFYQ29yZU9iamVjdCogbGlzdEJveE9wdGlvbiA9IG51bGxwdHI7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIExheW91dFJlY3QgcmVjdCA9IGRvd25j
YXN0PFJlbmRlckxpc3RCb3g+KCptX3JlbmRlcmVyKS5pdGVtQm91bmRpbmdCb3hSZWN0KHBhcmVu
dFJlY3QubG9jYXRpb24oKSwgaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKaW5kZXggNDdhMzljZTk1YTVhNjBkZjhhOWM2YThj
ZDU2YzYxNTRiMzM0MTI1MC4uNzRlNTkwODJlM2M5N2UwNTMyMTAyMThhNjVlZjNhYjZjMjY4MTg0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3guaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc05hdGl2
ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQq
KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3Qq
IGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAKaW5kZXggN2FiZmZhZTRmYTE0OTEyM2IwNWVjMGQ1MDMzNGJiNWZlZDMyM2IyOC4uYWFlYWZl
MDg0YzhlN2RiYmM5ZTZkNjBmNTZhNjMzN2I1MmQxZGRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Ojpp
c01hdGhUYWJsZUNlbGwoKSBjb25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHR5
cGUpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0yMTEsNyArMjExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRo
U2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWMKIAogYm9vbCBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0
eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVP
YmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPmlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Omlz
TWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhSb290
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjUwLDcgKzI1MCw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFkaWNhbmRPYmpl
Y3QoKQogICAgIHJldHVybiBjaGlsZHJlblswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSb290SW5kZXhPYmplY3QoKQor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9i
amVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhSb290KCkgfHwgaXNNYXRoU3F1YXJlUm9vdCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2Miw3ICsyNjIsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCgp
CiAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCgpCitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0
KCkKIHsKICAgICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjc0LDcgKzI3NCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0KCkKICAgICByZXR1cm4gY2hpbGRyZW5b
MF0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKIHsKICAgICBpZiAoIWlz
TWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg2LDcgKzI4Niw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRo
RGVub21pbmF0b3JPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQoKTsKIH0KIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhVbmRl
ck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRo
VW5kZXJPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoVW5kZXJPdmVyKCkgfHwgIW5vZGUoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDEsNyArMzAxLDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhVbmRlck9iamVjdCgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhV
bmRlck92ZXIoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxOCw3
ICszMTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6bWF0aE92ZXJPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJhc2VPYmplY3QoKQor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJhc2VPYmplY3Qo
KQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSAmJiAhaXNNYXRoVW5k
ZXJPdmVyKCkgJiYgIWlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMzMxLDcgKzMzMSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3Vi
c2NyaXB0T2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhTdWJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJz
Y3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Niw3ICsz
NDYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFN1YnNjcmlwdE9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3VwZXJzY3JpcHRP
YmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1
cGVyc2NyaXB0T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0
KCkgfHwgIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmgK
aW5kZXggNTgwYjg1OWNiYzFkMGM2NzMzNWUyYjUwNDk0Mjc2NjRiZWQxMTY3YS4uODc0N2IwNTRl
ZjQzOTBhZDkyM2Q2MDE3YzI1ZDA3NjRmNTA1MmE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuaApAQCAt
NzcsMjMgKzc3LDIzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2Jq
ZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9i
amVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBt
YXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGcmFjdGlvbiBjb21wb25l
bnRzLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVy
cmlkZTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBv
dmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlk
ZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlOwog
CiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG1hdGhVbmRlck9iamVjdCgpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1h
dGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmpl
Y3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3Jl
T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIEZlbmNl
ZCBjb21wb25lbnRzLgogICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9scy5oCmluZGV4IGM5ODVmZGRkM2RiNzViOGE4NGM3ZTI1ODMz
ZTAwOTk1NzY2ZDU5NDguLmYzYWQ2ZDk2ZTM2Zjg1YjM3OWU1Y2Y5NWNlNGI0NWNiM2Q2ZjdjZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
ZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2xzLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRp
b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3QqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
LmNwcAppbmRleCBlZjEzNzdiZjQ2YzNiMjI1MGQzY2Y2ZTZlOWQzNjNiMmU2MmJiOTFmLi5hMmNi
NTE3YWZiOGJlODY4ZWFlZWUxZDMyODEyNWM1ODY2MmI2ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbigpCiAK
ICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TW9ja09iamVjdD4oKmxpc3QpLnNldFBhcmVudCh0
aGlzKTsKICAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7Ci0gICAgICAg
IGNhY2hlLT5yZW1vdmUobGlzdC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgY2FjaGUtPnJlbW92
ZShsaXN0LT5vYmplY3RJRCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLmNwcAppbmRleCBlZTk2MWI1Y2Y1YzYxMzIzYzI5ZGJiY2JjYjMyOGY5ODI4OGE0NDRk
Li43YjAyYzIyNDljNmEzOTQ2MzE5ODM0M2EyZTQ3ODBlNDRiNTExMjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLmNwcApAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cDo6Y2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gbV9jaGlsZHJlbi5zaXplKCk7
IGkgPiAwIDsgLS1pKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gbV9j
aGlsZHJlbltpIC0gMV0uZ2V0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY2hpbGQgPSBtX2No
aWxkcmVuW2kgLSAxXS5nZXQoKTsKICAgICAgICAgaWYgKGNoaWxkLT5hY3Rpb25FbGVtZW50KCkg
JiYgIWNoaWxkLT5hY3Rpb25FbGVtZW50KCktPmluUmVuZGVyZWREb2N1bWVudCgpKSB7CiAgICAg
ICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVBhcmVudCgpOwotICAgICAgICAgICAgY2FjaGUtPnJl
bW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZW1vdmUoY2hp
bGQtPm9iamVjdElEKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMwLDcgKzEzMCw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlv
bihpbnQgb3B0aW9uSW5kZXgpCiAgICAgQVNTRVJUX0FSRyhvcHRpb25JbmRleCwgb3B0aW9uSW5k
ZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2hpbGRyZW4uc2l6ZSgpKSk7CiAKICAgICBBWE9iamVj
dENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gY2hpbGQgPSBtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKTsKKyAgICBSZWZQ
dHI8QVhDb3JlT2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpOwog
CiAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3VtZW50KCksIEFY
T2JqZWN0Q2FjaGU6OkFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQsIFRhcmdldEVsZW1lbnQsIFBv
c3RTeW5jaHJvbm91c2x5KTsKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQo
KSwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlzdEl0ZW1TZWxlY3RlZCwgVGFy
Z2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBhMmQz
MjdmOGNmMTc4MDhjYWYyNWE2ODA1YTQ4OGU4OGY4ZDRlNWJmLi4wMzA0ZWM3MjU1MGYyYTliNDdl
MGE5MWU5ZjEzZDRkZjAwNTZhNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtOTEyLDcgKzkxMiw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR3JvdXAoKSBjb25zdAogICAgIHJl
dHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpUZXh0R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25Hcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRH
cm91cDsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnNlbGVjdGVkUmFkaW9CdXR0b24oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCiB7CiAgICAgaWYgKCFpc1JhZGlvR3JvdXAoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MjUsMTQgKzkyNSwxNCBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKCkKIHsKICAgICBpZiAoIWlzVGFiTGlz
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIHZh
bGlkPyBBUklBIHRhYiBpdGVtcyBzdXBwb3J0IGFyaWEtc2VsZWN0ZWQ7IG5vdCBhcmlhLWNoZWNr
ZWQuCiAgICAgLy8gRmluZCB0aGUgY2hpbGQgdGFiIGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCAoaWUu
IHRoZSBpbnRWYWx1ZSA9PSAxKS4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKKyAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciB0YWJzOwogICAgIHRhYkNoaWxkcmVuKHRhYnMpOwogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAppbmRleCBhODY3YzBj
ZjBhYzhjZDQwNjk0YjgzYzc0NTQ5NGNiYjZiODZhMTUzLi4zODBkOTk3YTU0MTQ3ZWMyOTg2MmVj
YzE0ZmYzMDRiYmU5YWUxYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xMDEsOCArMTAxLDggQEAgcHVi
bGljOgogICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBm
bG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVj
dCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogc2Vs
ZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNo
ZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBoaWVy
YXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZThhYTY5YmVjMTc3
MDI3MDYzODc5M2U3MzVjYTkyN2JkN2M4OTljNS4uYTM0YTVmMDk2MjUxZmZmMzc3NjNhZDQxZmU0
NjA3MzAzOGQ0NTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0RldGFjaGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1ib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
KiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQVhDb3JlT2JqZWN0KiBheE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQog
ewogICAgIHN3aXRjaCAoY3JpdGVyaWEtPnNlYXJjaEtleXNbaW5kZXhdKSB7CiAgICAgLy8gVGhl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGUgbWF0Y2hlcyBhbnkgbm9uLW51bGwgQWNj
ZXNzaWJpbGl0eU9iamVjdC4KQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmls
aXR5TwogICAgIH0KIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxp
dHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQVhDb3JlT2JqZWN0KiBheE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKIHsKICAgICBpZiAoIWF4
T2JqZWN0IHx8ICFjcml0ZXJpYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2LDcgKzI3
Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2Vh
cmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBzaXplX3QgbGVuZ3RoID0gY3JpdGVy
aWEtPnNlYXJjaEtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJ
bmRleChheE9iamVjdCwgY3JpdGVyaWEsIGkpKSB7Ci0gICAgICAgICAgICBpZiAoY3JpdGVyaWEt
PnZpc2libGVPbmx5ICYmICFheE9iamVjdC0+aXNPbnNjcmVlbigpKQorICAgICAgICAgICAgaWYg
KGNyaXRlcmlhLT52aXNpYmxlT25seSAmJiAhYXhPYmplY3QtPmlzT25TY3JlZW4oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMjg0LDE1ICsyODQsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxp
dHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QsIEFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEpCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBWENvcmVPYmplY3QqIGF4T2JqZWN0LCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQogewogICAgIGlmICghYXhPYmpl
Y3QgfHwgIWNyaXRlcmlhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJu
IGF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KCZjcml0ZXJpYS0+c2Vh
cmNoVGV4dCk7CisgICAgcmV0dXJuIGF4T2JqZWN0LT5jb250YWluc1RleHQoJmNyaXRlcmlhLT5z
ZWFyY2hUZXh0KTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5
T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKIHsKICAgICAvLyBJZiB0
ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2UgcmV0dXJuIHRydWUuCiAgICAgcmV0dXJuICF0ZXh0CkBA
IC01MjIsNyArNTIyLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YmxvY2txdW90
ZUxldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0CitB
WENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAhb2JqZWN0LmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKQEAgLTYyNSw3ICs2MjUsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKSBj
b25zdAogICAgIH0pICE9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEFjY2Vzc2li
aWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCitzdGF0aWMgdm9pZCBh
cHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAg
Ly8gRmluZCB0aGUgbmV4dCBkZXNjZW5kYW50IG9mIHRoaXMgYXR0YWNobWVudCBvYmplY3Qgc28g
c2VhcmNoIGNhbiBjb250aW51ZSB0aHJvdWdoIGZyYW1lcy4KICAgICBpZiAob2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkgewpAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEFjY2Vz
c2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5
CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNp
Z25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQVhDb3Jl
T2JqZWN0KiBjaGlsZCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFjaGlsZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjg0LDEyICs2ODQsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCwgdW5zaWduZWQgaW5kZXgK
ICAgICBjaGlsZC0+Y2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOwogfQogICAgIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGls
ZCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWRkQ2hpbGQoQVhDb3JlT2JqZWN0KiBjaGls
ZCkKIHsKICAgICBpbnNlcnRDaGlsZChjaGlsZCwgbV9jaGlsZHJlbi5zaXplKCkpOwogfQogICAg
IAotc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3Vs
dHMpCitzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQVhDb3JlT2JqZWN0KiBvYmpl
Y3QsIGJvb2wgaXNGb3J3YXJkLCBBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAg
Ly8gQSB0YWJsZSdzIGNoaWxkcmVuIGluY2x1ZGVzIGVsZW1lbnRzIHdob3NlIG93biBjaGlsZHJl
biBhcmUgYWxzbyB0aGUgdGFibGUncyBjaGlsZHJlbiAoZHVlIHRvIHRoZSB3YXkgdGhlIE1hYyBl
eHBvc2VzIHRhYmxlcykuCiAgICAgLy8gVGhlIHJvd3MgZnJvbSB0aGUgdGFibGUgc2hvdWxkIGJl
IHF1ZXJpZWQsIHNpbmNlIHRob3NlIGFyZSBkaXJlY3QgZGVzY2VuZGFudHMgb2YgdGhlIHRhYmxl
LCBhbmQgdGhleSBjb250YWluIGNvbnRlbnQuCkBAIC03MDIsNyArNzAyLDcgQEAgc3RhdGljIHZv
aWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgYm9v
bCBpc0ZvcndhcmQsIEEKIAogICAgIC8vIElmIHRoZSBzdGFydE9iamVjdCBpcyBpZ25vcmVkLCB3
ZSBzaG91bGQgdXNlIGFuIGFjY2Vzc2libGUgc2libGluZyBhcyBhIHN0YXJ0IGVsZW1lbnQgaW5z
dGVhZC4KICAgICBpZiAoc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QtPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSAmJiBzdGFydE9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3Qob2JqZWN0KSkg
ewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBzdGFydE9iamVj
dC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0g
c3RhcnRPYmplY3QtPnBhcmVudE9iamVjdCgpOwogICAgICAgICAvLyBHbyB1cCB0aGUgcGFyZW50
IGNoYWluIHRvIGZpbmQgdGhlIGhpZ2hlc3QgYW5jZXN0b3IgdGhhdCdzIGFsc28gYmVpbmcgaWdu
b3JlZC4KICAgICAgICAgd2hpbGUgKHBhcmVudE9iamVjdCAmJiBwYXJlbnRPYmplY3QtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICAgICAgaWYgKHBhcmVudE9iamVjdCA9PSBv
YmplY3QpCkBAIC03MzUsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0Fy
cmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEEKIH0KIAog
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBpcyBub3cgPj0gdGhlIG51
bWJlciBvZiByZXN1bHRzIGRlc2lyZWQuCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVj
dE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEsIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
b2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFYQ29yZU9iamVjdCog
b2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eU9i
amVjdFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpICYmIGlzQWNjZXNzaWJpbGl0eVRleHRT
ZWFyY2hNYXRjaChvYmplY3QsIGNyaXRlcmlhKSkgewogICAgICAgICByZXN1bHRzLmFwcGVuZChv
YmplY3QpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlu
ZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlCiAgICAg
Ly8gSXQgZG9lcyB0aGlzIGJ5IHN0ZXBwaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4gYW5kIGF0IGVh
Y2ggbGV2ZWwgZG9pbmcgYSBERlMuCiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBubyBzdGFydCBv
YmplY3QsIGl0IG1lYW5zIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcuCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSBjcml0ZXJpYS0+c3RhcnRPYmplY3Q7CisgICAg
QVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCA9IGNyaXRlcmlhLT5zdGFydE9iamVjdDsKICAgICBp
ZiAoIXN0YXJ0T2JqZWN0KQogICAgICAgICBzdGFydE9iamVjdCA9IHRoaXM7CiAgICAgCkBAIC03
NzEsMTQgKzc3MSwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRNYXRjaGluZ09i
amVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZQogICAgIC8vIFRoZSBmaXJz
dCBpdGVyYXRpb24gb2YgdGhlIG91dGVyIGxvb3Agd2lsbCBleGFtaW5lIHRoZSBjaGlsZHJlbiBv
ZiB0aGUgc3RhcnQgb2JqZWN0IGZvciBtYXRjaGVzLiBIb3dldmVyLCB3aGVuCiAgICAgLy8gaXRl
cmF0aW5nIGJhY2t3YXJkcywgdGhlIHN0YXJ0IG9iamVjdCBjaGlsZHJlbiBzaG91bGQgbm90IGJl
IGNvbnNpZGVyZWQsIHNvIHRoZSBsb29wIGlzIHNraXBwZWQgYWhlYWQuIFdlIG1ha2UgYW4KICAg
ICAvLyBleGNlcHRpb24gd2hlbiBubyBzdGFydCBvYmplY3Qgd2FzIHNwZWNpZmllZCBiZWNhdXNl
IHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBzZWFyY2ggZGlyZWN0
aW9uLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gbnVsbHB0cjsK
KyAgICBBWENvcmVPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoIWlz
Rm9yd2FyZCAmJiBzdGFydE9iamVjdCAhPSB0aGlzKSB7CiAgICAgICAgIHByZXZpb3VzT2JqZWN0
ID0gc3RhcnRPYmplY3Q7CiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgIH0KICAgICAKICAgICAvLyBUaGUgb3V0ZXIgbG9vcCBz
dGVwcyB1cCB0aGUgcGFyZW50IGNoYWluIGVhY2ggdGltZSAodW5pZ25vcmVkIGlzIGltcG9ydGFu
dCBoZXJlIGJlY2F1c2Ugb3RoZXJ3aXNlIGVsZW1lbnRzIHdvdWxkIGJlIHNlYXJjaGVkIHR3aWNl
KQotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogc3RvcFNlYXJjaEVsZW1lbnQgPSBwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKTsgc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QgIT0gc3RvcFNl
YXJjaEVsZW1lbnQ7IHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpKSB7CisgICAgZm9yIChhdXRvKiBzdG9wU2VhcmNoRWxlbWVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdCAhPSBzdG9wU2VhcmNoRWxl
bWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkp
IHsKIAogICAgICAgICAvLyBPbmx5IGFwcGVuZCB0aGUgY2hpbGRyZW4gYWZ0ZXIvYmVmb3JlIHRo
ZSBwcmV2aW91cyBlbGVtZW50LCBzbyB0aGF0IHRoZSBzZWFyY2ggZG9lcyBub3QgY2hlY2sgZWxl
bWVudHMgdGhhdCBhcmUgCiAgICAgICAgIC8vIGFscmVhZHkgYmVoaW5kL2FoZWFkIG9mIHN0YXJ0
IGVsZW1lbnQuCkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpm
aW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGUKIAog
ICAgICAgICAvLyBUaGlzIG5vdyBkb2VzIGEgREZTIGF0IHRoZSBjdXJyZW50IGxldmVsIG9mIHRo
ZSBwYXJlbnQuCiAgICAgICAgIHdoaWxlICghc2VhcmNoU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWFyY2hPYmplY3QgPSBzZWFyY2hTdGFjay5s
YXN0KCkuZ2V0KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIHNlYXJjaE9iamVjdCA9IHNl
YXJjaFN0YWNrLmxhc3QoKS5nZXQoKTsKICAgICAgICAgICAgIHNlYXJjaFN0YWNrLnJlbW92ZUxh
c3QoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG9iamVjdE1hdGNoZXNTZWFyY2hD
cml0ZXJpYVdpdGhSZXN1bHRMaW1pdChzZWFyY2hPYmplY3QsIGNyaXRlcmlhLCByZXN1bHRzKSkK
QEAgLTIwMzEsMTMgKzIwMzEsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9iamVjdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKHJlbmRlck9iamVjdCk7Ci0gICAgCisKICAgICByZXR1cm4gY29uc3RfY2FzdDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgq
YXhPYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
SGVhZGluZzsKICAgICB9KSk7CkBAIC0yMzYwLDE3ICsyMzYwLDE3IEBAIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwogfSAgICAKIAotYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KiBheE9iamVjdCkgY29uc3QK
IHsKICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aGFzQ2hpbGRyZW4oKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbYXhPYmplY3RdIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICZvYmplY3QgPT0gYXhPYmplY3Q7
CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fu
Y2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0
Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENv
cmVPYmplY3QqIGF4T2JqZWN0KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTI3NzgsNyArMjc3OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAogICAgIHJl
dHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25T
dGF0dXNWYWx1ZSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsKIH0KIAotQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FYQ29yZU9i
amVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsgCiAgICAgLy8gU2VuZCB0aGUgaGl0IHRlc3Qg
YmFjayBpbnRvIHRoZSBzdWItZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIGlmIChpc0F0dGFjaG1l
bnQoKSkgewpAQCAtMjgwNSw3ICsyODA1LDcgQEAgQVhPYmplY3RDYWNoZSogQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2VkVUlFbGVtZW50KCkg
Y29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6Zm9jdXNlZFVJRWxlbWVu
dCgpIGNvbnN0CiB7CiAgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICByZXR1cm4g
cGFnZSA/IEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpIDogbnVs
bHB0cjsKQEAgLTI5NjMsNyArMjk2Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNF
eHBhbmRlZCgpIGNvbnN0CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+
aXNFeHBhbmRlZCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsgIAogfQogCkBA
IC0zMTAzLDcgKzMxMDMsNyBAQCBzdGF0aWMgaW50IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0KGlu
dCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCBpbnQgc3ViZm9jdXNNaW4sIGludAogICAgIHJldHVybiAo
b2JqZWN0TWluICsgb2JqZWN0TWF4IC0gdmlld3BvcnRNaW4gLSB2aWV3cG9ydE1heCkgLyAyOwog
fQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAorYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuKCkgY29uc3QKIHsgICAKICAgICBib29sIGlz
T25zY3JlZW4gPSB0cnVlOwogCkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgICAgICBhdHRyaWJ1
dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCk7CiAgICAgCiAg
ICAgaWYgKGF0dHJpYnV0ZUNhY2hlKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gaWdub3JlZCA9IGF0dHJpYnV0ZUNhY2hlLT5nZXRJZ25vcmVkKGF4T2JqZWN0SUQoKSk7
CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gaWdub3JlZCA9IGF0dHJpYnV0
ZUNhY2hlLT5nZXRJZ25vcmVkKG9iamVjdElEKCkpOwogICAgICAgICBzd2l0Y2ggKGlnbm9yZWQp
IHsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmpl
Y3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM0OTUsNyArMzQ5NSw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAKICAg
ICAvLyBJbiBjYXNlIGNvbXB1dGluZyBheElzSWdub3JlZCBkaXNhYmxlcyBhdHRyaWJ1dGUgY2Fj
aGluZywgd2Ugc2hvdWxkIHJlZmV0Y2ggdGhlIG9iamVjdCB0byBzZWUgaWYgaXQgZXhpc3RzLgog
ICAgIGlmIChjYWNoZSAmJiAoYXR0cmlidXRlQ2FjaGUgPSBjYWNoZS0+Y29tcHV0ZWRPYmplY3RB
dHRyaWJ1dGVDYWNoZSgpKSkKLSAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9yZWQoYXhP
YmplY3RJRCgpLCByZXN1bHQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVP
YmplY3QgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKKyAg
ICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9yZWQob2JqZWN0SUQoKSwgcmVzdWx0ID8gQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0IDogQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMzYyMCw3ICszNjIwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbnRhaW5l
ZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KS5pc1Bhc3N3
b3JkRmllbGQoKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZWxlY3RlZExpc3RJdGVtKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDog
Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdEl0ZW0oKSAmJiAoY2hpbGQt
PmlzU2VsZWN0ZWQoKSB8fCBjaGlsZC0+aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFp
bmVyKCkpKQpAQCAtMzc1Miw3ICszNzUyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG8KICAg
ICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUob3duZXJzLCBhcmlhX293bnNBdHRy
KTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkKQordm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVj
dCogY2hpbGQpCiB7CiAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAz
ZmYwYzM2MDFiNDEyYTI5ZTgyOGViYTYzODM2Y2ZkMTYyNDhkYzg1Li4zODNkZGVjOGYzODcwMmRm
ZTQ4OWEwNTFhZDVkM2U4NWI3MDE1Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzEsMTMgKzMxLDkgQEAKIAogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJGbG9hdFF1
YWQuaCIKLSNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUg
IkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNp
bmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgotI2luY2x1ZGUgIlZpc2libGVQb3NpdGlv
bi5oIgotI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTUzLDggKzQ5LDYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCi10eXBlZGVmIHN0cnVj
dCBfTlNSYW5nZSBOU1JhbmdlOwotCiBPQkpDX0NMQVNTIE5TQXJyYXk7CiBPQkpDX0NMQVNTIE5T
QXR0cmlidXRlZFN0cmluZzsKIE9CSkNfQ0xBU1MgTlNEYXRhOwpAQCAtNjgsMjAgKzYyLDkgQEAg
T0JKQ19DTEFTUyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjY2Vzc2li
aWxpdHlPYmplY3Q7Ci1jbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzsKLWNsYXNzIEFYT2Jq
ZWN0Q2FjaGU7Ci1jbGFzcyBFbGVtZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFzcyBGcmFtZVZpZXc7
CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBOb2RlOwotY2xhc3MgUGFn
ZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwotY2xhc3MgU2Ny
b2xsVmlldzsKLWNsYXNzIFdpZGdldDsKLXN0cnVjdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9u
czsKIAogZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7CiAgICAgQWx0ZXJuYXRp
dmUsCkBAIC0xMjEsNDk2ICsxMDQsMjcyIEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dCB7CiAg
ICAgfQogfTsKIAotc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7Ci0g
ICAgZW51bSBDaGlsZHJlbkluY2x1c2lvbiB7Ci0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2Rl
U2tpcElnbm9yZWRDaGlsZHJlbiwKLSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRl
QWxsQ2hpbGRyZW4sCi0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9t
Q29udGVudHNDaGlsZHJlbiwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5h
bWVGcm9tCi0gICAgfTsKLSAgICAKLSAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1
c2lvbjsKLSAgICBib29sIGluY2x1ZGVGb2N1c2FibGVDb250ZW50OwotICAgIE5vZGUqIGlnbm9y
ZWRDaGlsZE5vZGU7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
KENoaWxkcmVuSW5jbHVzaW9uIGMgPSBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hp
bGRyZW4sIGJvb2wgaSA9IGZhbHNlLCBOb2RlKiBpZ25vcmVkID0gbnVsbHB0cikKLSAgICAgICAg
OiBjaGlsZHJlbkluY2x1c2lvbihjKQotICAgICAgICAsIGluY2x1ZGVGb2N1c2FibGVDb250ZW50
KGkpCi0gICAgICAgICwgaWdub3JlZENoaWxkTm9kZShpZ25vcmVkKQotICAgIHsgfQotfTsKLQot
Ly8gVXNlIHRoaXMgc3RydWN0IHRvIHN0b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVu
ZHMgb24gdGhlIHBhcmVudHMsIHNvIHRoYXQgaW4gYWRkQ2hpbGRyZW4oKQotLy8gd2UgYXZvaWQg
Z29pbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBmb3IgZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNp
bmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwgaW5mb3JtYXRpb24gYWxyZWFkeS4KLXN0cnVjdCBBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgewotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCB7IG51bGxwdHIgfTsKLSAgICBib29sIGlzQVhIaWRkZW4geyBmYWxzZSB9Owot
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCB7IGZhbHNlIH07Ci0gICAgCi0gICAgQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IG51bGxwdHIpCi0gICAgICAgIDogcGFyZW50KHBhcmVudCkKLSAgICB7IH0KLQotICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsgfQotfTsKLSAgICAKLWVudW0g
Y2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKLSAgICBWZXJ0aWNhbCwKLSAgICBIb3Jp
em9udGFsLAotICAgIFVuZGVmaW5lZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gewotICAgIEluY2x1ZGVPYmplY3QsCi0gICAgSWdub3JlT2JqZWN0
LAotICAgIERlZmF1bHRCZWhhdmlvciwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlCdXR0b25TdGF0ZSB7Ci0gICAgT2ZmID0gMCwKLSAgICBPbiwKLSAgICBNaXhlZCwKLX07Ci0g
ICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKLSAgICBOb25lLAot
ICAgIEFzY2VuZGluZywKLSAgICBEZXNjZW5kaW5nLAotICAgIE90aGVyLAotICAgIEludmFsaWQs
Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewotICAgIE5l
eHQgPSAxLAotICAgIFByZXZpb3VzLAotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5IHsKLSAgICBBbnlUeXBlID0gMSwKLSAgICBBcnRpY2xlLAotICAgIEJsb2NrcXVvdGVT
YW1lTGV2ZWwsCi0gICAgQmxvY2txdW90ZSwKLSAgICBCb2xkRm9udCwKLSAgICBCdXR0b24sCi0g
ICAgQ2hlY2tCb3gsCi0gICAgQ29udHJvbCwKLSAgICBEaWZmZXJlbnRUeXBlLAotICAgIEZvbnRD
aGFuZ2UsCi0gICAgRm9udENvbG9yQ2hhbmdlLAotICAgIEZyYW1lLAotICAgIEdyYXBoaWMsCi0g
ICAgSGVhZGluZ0xldmVsMSwKLSAgICBIZWFkaW5nTGV2ZWwyLAotICAgIEhlYWRpbmdMZXZlbDMs
Ci0gICAgSGVhZGluZ0xldmVsNCwKLSAgICBIZWFkaW5nTGV2ZWw1LAotICAgIEhlYWRpbmdMZXZl
bDYsCi0gICAgSGVhZGluZ1NhbWVMZXZlbCwKLSAgICBIZWFkaW5nLAotICAgIEhpZ2hsaWdodGVk
LAotICAgIEl0YWxpY0ZvbnQsCi0gICAgS2V5Ym9hcmRGb2N1c2FibGUsCi0gICAgTGFuZG1hcmss
Ci0gICAgTGluaywKLSAgICBMaXN0LAotICAgIExpdmVSZWdpb24sCi0gICAgTWlzc3BlbGxlZFdv
cmQsCi0gICAgT3V0bGluZSwKLSAgICBQbGFpblRleHQsCi0gICAgUmFkaW9Hcm91cCwKLSAgICBT
YW1lVHlwZSwKLSAgICBTdGF0aWNUZXh0LAotICAgIFN0eWxlQ2hhbmdlLAotICAgIFRhYmxlU2Ft
ZUxldmVsLAotICAgIFRhYmxlLAotICAgIFRleHRGaWVsZCwKLSAgICBVbmRlcmxpbmUsCi0gICAg
VW52aXNpdGVkTGluaywKLSAgICBWaXNpdGVkTGluaywKLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNz
aWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcyB7Ci0gICAgRmlyc3QsCi0gICAgTGFzdCwK
LX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgewotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0OwotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rp
b24gc2VhcmNoRGlyZWN0aW9uOwotICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBz
ZWFyY2hLZXlzOwotICAgIFN0cmluZyBzZWFyY2hUZXh0OwotICAgIHVuc2lnbmVkIHJlc3VsdHNM
aW1pdDsKLSAgICBib29sIHZpc2libGVPbmx5OwotICAgIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFu
dHNPbmx5OwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBY2Nlc3NpYmls
aXR5T2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFy
Y2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hUZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIGJv
b2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQotICAgICAgICA6
IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQotICAgICAgICAsIHNlYXJjaERpcmVjdGlvbihzZWFy
Y2hEaXJlY3Rpb24pCi0gICAgICAgICwgc2VhcmNoVGV4dChzZWFyY2hUZXh0KQotICAgICAgICAs
IHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQpCi0gICAgICAgICwgdmlzaWJsZU9ubHkodmlzaWJs
ZU9ubHkpCi0gICAgICAgICwgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KGltbWVkaWF0ZURlc2Nl
bmRhbnRzT25seSkKLSAgICB7IH0KLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlE
ZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkIH07Ci0KLXN0
cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQ7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZDsKLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKCkg
e30KLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcywg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAgICAgICwg
ZW5kKGUpCi0gICAgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb24pCi0gICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCkp
Ci0gICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpOyB9Ci19
OwotCi1zdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewotICAgICAgICAKLSAgICB1bnNpZ25lZCBzdGFy
dCB7IDAgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07Ci0gICAgCi0gICAgUGxhaW5UZXh0
UmFuZ2UoKSA9IGRlZmF1bHQ7Ci0gICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UodW5zaWduZWQgcywg
dW5zaWduZWQgbCkKLSAgICAgICAgOiBzdGFydChzKQotICAgICAgICAsIGxlbmd0aChsKQotICAg
IHsgfQotICAgIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBsYWluVGV4dFJhbmdlKE5TUmFu
Z2UpOwotI2VuZGlmCi0gICAgCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhc3Rh
cnQgJiYgIWxlbmd0aDsgfQotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dFN0YXJ0RnJvbSB7Ci0gICAgQmVnaW4sIC8vIFNlYXJjaCBmcm9tIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGVsZW1lbnQuCi0gICAgU2VsZWN0aW9uLCAvLyBTZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24g
b2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgotICAgIEVuZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5k
IG9mIHRoZSBlbGVtZW50LgotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dERpcmVjdGlvbiB7Ci0gICAgRm9yd2FyZCwgLy8gT2NjdXJyZW5jZSBhZnRlciB0aGUgc3RhcnRp
bmcgcmFuZ2UuCi0gICAgQmFja3dhcmQsIC8vIE9jY3VycmVuY2UgYmVmb3JlIHRoZSBzdGFydGlu
ZyByYW5nZS4KLSAgICBDbG9zZXN0LCAvLyBDbG9zZXN0IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0
aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVyIG9yIGJlZm9yZS4KLSAgICBBbGwgLy8gQWxsIG9jY3Vy
cmVuY2VzCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSB7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gc2VhcmNoU3RyaW5nczsgLy8gVGV4dCBzdHJpbmdzIHRvIHNlYXJj
aCBmb3IuCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb20gc3RhcnQ7Ci0gICAg
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwotCi0gICAgQWNjZXNz
aWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSgpCi0gICAgICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0
eVNlYXJjaFRleHRTdGFydEZyb206OlNlbGVjdGlvbikKLSAgICAgICAgLCBkaXJlY3Rpb24oQWNj
ZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb246OkZvcndhcmQpCi0gICAgeyB9Ci19OwotCi1l
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB7Ci0gICAgU2VsZWN0LAot
ICAgIFJlcGxhY2UsCi0gICAgQ2FwaXRhbGl6ZSwKLSAgICBMb3dlcmNhc2UsCi0gICAgVXBwZXJj
YXNlCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gewotICAgIFZlY3Rv
cjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2VzOyAvLyB0ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhl
IG9wZXJhdGlvbi4KLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGUgdHlwZTsKLSAg
ICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0OyAvLyBGb3IgdHlwZSA9IHJlcGxhY2UuCi0KLSAgICBB
Y2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbigpCi0gICAgICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5
VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVjdCkKLSAgICB7IH0KLX07Ci0KLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9
OwotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFBy
ZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlw
dCB9OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1
ZSwgUGFnZSwgU3RlcCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKLWVudW0gY2xhc3MgQWNjZXNz
aWJpbGl0eUNvbnZlcnNpb25TcGFjZSB7IFNjcmVlbiwgUGFnZSB9OwotCiBib29sIG5vZGVIYXNQ
cmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKLSAgICAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgcHVibGljIEFjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0IDogcHVi
bGljIEFYQ29yZU9iamVjdCB7CiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCgp
ID0gZGVmYXVsdDsKLSAgICAKKwogcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlP
YmplY3QoKTsKIAogICAgIC8vIEFmdGVyIGNvbnN0cnVjdGluZyBhbiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LCBpdCBtdXN0IGJlIGdpdmVuIGEKICAgICAvLyB1bmlxdWUgSUQsIHRoZW4gYWRkZWQgdG8g
QVhPYmplY3RDYWNoZSwgYW5kIGZpbmFsbHkgaW5pdCgpIG11c3QKICAgICAvLyBiZSBjYWxsZWQg
bGFzdC4KLSAgICB2b2lkIHNldEFYT2JqZWN0SUQoQVhJRCBheE9iamVjdElEKSB7IG1faWQgPSBh
eE9iamVjdElEOyB9Ci0gICAgdmlydHVhbCB2b2lkIGluaXQoKSB7IH0KKyAgICB2b2lkIHNldE9i
amVjdElEKEFYSUQgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CisgICAgdm9pZCBpbml0KCkg
b3ZlcnJpZGUgeyB9CiAKICAgICAvLyBXaGVuIHRoZSBjb3JyZXNwb25kaW5nIFdlYkNvcmUgb2Jq
ZWN0IHRoYXQgdGhpcyBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgLy8gd3JhcHMgaXMgZGVsZXRl
ZCwgaXQgbXVzdCBiZSBkZXRhY2hlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2li
aWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBudWxscHRyKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0OworICAgIHZvaWQgZGV0YWNoKEFjY2Vz
c2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogPSBudWxscHRyKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
U1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyAq
KSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzSW1hZ2VCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXND
b250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24o
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9C
dXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TGlzdEJveE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ltYWdl
TWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkltYWdlTWFwOyB9CisgICAgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29udGFpbmVkQnlQYXNzd29y
ZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFzc3dv
cmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNXZWJBcmVhKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWE7IH0KKyAgICBi
b29sIGlzQ2hlY2tib3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7IH0KKyAgICBib29sIGlzUmFkaW9CdXR0b24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UmFkaW9CdXR0b247IH0KKyAgICBib29sIGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsgfQorICAg
IGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzRGF0YVRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNUYWJsZVJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzVGFibGVDb2x1bW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1RhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzRmllbGRzZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c0dyb3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBUklB
VHJlZUdyaWRSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbnB1dElt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUHJvZ3Jl
c3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNT
bGlkZXJUaHVtYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0lucHV0U2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0xhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlz
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRGF0YVRhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGVSb3coKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJsZUNvbHVtbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZpZWxkc2V0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzR3JvdXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZU1hcExp
bmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNN
ZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlU3BpbkJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1
dHRvblBhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01v
Y2tPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51TGlz
dE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Nw
aW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjsgfQorICAgIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3BpbkJ1dHRvblBh
cnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNb2NrT2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVkaWFD
b250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGlzU3dpdGNoKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaDsgfQotICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9Ci0gICAgYm9v
bCBpc1RleHRDb250cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0FSSUFUZXh0Q29udHJvbCgpIGNv
bnN0OwotICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0OwotICAgIGJvb2wg
aXNUYWJMaXN0KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRhYkxpc3Q7IH0KLSAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KLSAgICBib29sIGlzUmFkaW9Hcm91
cCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRp
b0dyb3VwOyB9Ci0gICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OyB9CisgICAgYm9vbCBpc01lZGlhT2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3dpdGNo
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaDsgfQorICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9
CisgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FS
SUFUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0
Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUYWJMaXN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q7
IH0KKyAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KKyAgICBib29sIGlzUmFkaW9Hcm91cCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0dyb3VwOyB9CisgICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OyB9CiAgICAg
Ym9vbCBpc1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZTsgfQotICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsgfQorICAgIGJv
b2wgaXNUcmVlR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVl
SXRlbTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOyB9Ci0gICAgYm9vbCBp
c0J1dHRvbigpIGNvbnN0OwotICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQotICAgIGJvb2wgaXND
aGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJldHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1
dHRvbigpOyB9Ci0gICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsgfQotICAgIGJvb2wgaXNDYW52
YXMoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2Fu
dmFzOyB9Ci0gICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOyB9Ci0gICAgYm9vbCBpc0Jsb2Nr
cXVvdGUoKSBjb25zdDsKLSAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdDsKLSAgICBib29sIGlz
Q29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbG9yV2VsbDsgfQotICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdDsKLSAgICBi
b29sIGlzTWV0ZXIoKSBjb25zdDsKLSAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KLSAgICBib29s
IGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUb29sYmFyOyB9Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdDsKLSAg
ICBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNLZXlib2FyZEZvY3Vz
YWJsZSgpIGNvbnN0OwotICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7IH0KLSAgICBib29sIGlzT3V0cHV0
KCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQorICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW07IH0KKyAgICBib29sIGlzQ2hlY2ti
b3hPclJhZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNDaGVja2JveCgpIHx8IGlzUmFk
aW9CdXR0b24oKTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KKyAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhczsgfQorICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQ
b3BVcEJ1dHRvbjsgfQorICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0NvbG9yV2Vs
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2xvcldlbGw7IH0KKyAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NwbGl0
dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlNwbGl0dGVyOyB9CisgICAgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjsgfQorICAg
IGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Zp
Z3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OyB9Cisg
ICAgYm9vbCBpc091dHB1dCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0NoZWNrZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VsZWN0ZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNGb2N1c2VkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMb2FkZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPZmZTY3JlZW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQcmVzc2VkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVW52aXNpdGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVmlzaXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzUmVxdWlyZWRB
dHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNM
aW5rZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNFeHBh
bmRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlk
ZSB7IH0KICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2li
aWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0OworICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVU
b1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVt
cyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUuCi0gICAg
dmlydHVhbCBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0OwotICAgIFJlZlB0cjxSYW5n
ZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFydCwgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhhc1BsYWlu
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQotICAgIHZpcnR1
YWwgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Q7Ci0KLSAgICBib29sIHN1cHBvcnRzRGF0ZXRpbWVBdHRy
aWJ1dGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNhblNldEZvY3VzQXR0cmlidXRl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJh
bmdlQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0RXhwYW5k
ZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZpcnR1YWwg
RWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgaGFzQm9s
ZEZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzSXRh
bGljRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNN
aXNzcGVsbGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxSYW5nZT4gZ2V0TWlzc3Bl
bGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNQbGFpblRleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVy
T2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc1Nh
bWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7IH0K
KyAgICBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wg
c3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0U2VsZWN0
ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2Jq
ZWN0SW5jbHVzaW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlE
ZWZhdWx0KCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2Fn
ZSgpIGNvbnN0OwotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0OwotICAgIAot
ICAgIHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGhl
YWRpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGludCB0YWJsZUxl
dmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVh
bCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAgIHZpcnR1
YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KLSAgICB2
aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9Ci0g
ICAgdmlydHVhbCBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7
IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkUmFkaW9CdXR0b24o
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBz
ZWxlY3RlZFRhYkl0ZW0oKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpOwotICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkg
Y29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHVuc2lnbmVk
IGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBoZWFkaW5nTGV2ZWwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgaW50IHRhYmxlTGV2ZWwoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNo
ZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHZhbHVlRGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGZsb2F0
IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9CisgICAgZmxv
YXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0KKyAg
ICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4wZjsg
fQorICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MC4wZjsgfQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVk
TGlzdEl0ZW0oKSBvdmVycmlkZTsKKyAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBpc0FSSUFDb250cm9sKEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdDsKLSAgICB2b2lk
IGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAg
ICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFEZXRhaWxz
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBh
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJl
bmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2
b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dDsKLSAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFMYWJlbGxl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dDsKLSAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUG9wdXAo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBwb3B1cFZhbHVlKCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNIYXNQb3B1
cCgpIGNvbnN0OwotICAgIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0OwotICAgIGJvb2wg
YXJpYUlzTXVsdGlsaW5lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGludmFsaWRTdGF0dXMoKSBjb25z
dDsKLSAgICBib29sIHN1cHBvcnRzUHJlc3NlZCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNF
eHBhbmRlZCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29uc3Q7Ci0gICAg
QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Q7Ci0gICAgY29uc3QgQXRv
bVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJp
bmc+JikgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3Q7
Ci0gICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUoKSBjb25zdDsKLSAg
ICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQo
KSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdDsKLSAg
ICAKKyAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUVy
cm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlh
Rmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3duc0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBoYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c0hhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
c3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0V4cGFu
ZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxpbmtSZWxWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgU3RyaW5n
IGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gdGhlcmUncyBh
IG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCi0gICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2Vu
Y2UoKSBjb25zdDsKLSAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdDsKLSAg
ICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0c1NldFNp
emUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdDsKLSAgICBpbnQg
c2V0U2l6ZSgpIGNvbnN0OwotICAgIGludCBwb3NJblNldCgpIGNvbnN0OwotICAgIAorICAgIGJv
b2wgaWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01vZGFs
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c1NldFNpemUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBpbnQgc2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBwb3NJblNldCgpIGNv
bnN0IG92ZXJyaWRlOworCiAgICAgLy8gQVJJQSBkcmFnIGFuZCBkcm9wCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKSB7IHJldHVybiB7IH07IH0KLSAg
ICAKKyAgICBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVJJQUdyYWJiZWQoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGUg
eyB9CisgICAgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkgb3ZlcnJp
ZGUgeyByZXR1cm4geyB9OyB9CisKICAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0
IHRvIHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIGFj
Y2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIC8vIENhbGxlZCBvbiB0aGUgQVggb2JqZWN0IGFmdGVyIHRoZSBy
ZW5kZXIgdHJlZSBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSByaWdodCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG5l
eHRTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdDsK
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENo
aWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxp
bmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdCBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxp
bWl0KSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmpl
Y3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3JlT2JqZWN0
KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3Np
YmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSopOwotICAgIHZvaWQgZmluZE1hdGNoaW5nT2Jq
ZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBv
dmVycmlkZTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZSb2xlKEFj
Y2Vzc2liaWxpdHlSb2xlKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mUm9sZShBY2Nl
c3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBUZXh0IHNlbGVjdGlvbgog
cHJpdmF0ZToKQEAgLTYxOCwzOTcgKzM3NywzOTUgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJhbmdlPiBmaW5kVGV4dFJh
bmdlKFZlY3RvcjxTdHJpbmc+IGNvbnN0JiBzZWFyY2hTdHJpbmdzLCBSZWZQdHI8UmFuZ2U+IGNv
bnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24pIGNvbnN0OwogcHVi
bGljOgotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmls
aXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Q7Ci0gICAgVmVjdG9yPFN0cmluZz4g
cGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3QmKTsK
LQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCB7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25k
aW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFi
ZWxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJv
bGVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50
YXRpb25hbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2Vh
cmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3Qm
KSBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVPYmplY3Qo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBsaW5rZWRVSUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b24pIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIEFjY2Vzc2liaWxpdHlSb2xl
IGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd247IH0KKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJv
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgYXJpYVJvbGVI
YXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAotICAgIHZpcnR1
YWwgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29u
c3QgeyB9OworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlU
ZXh0PiYpIGNvbnN0IG92ZXJyaWRlIHsgfTsKICAgICAvLyBBIHNpbmdsZSBtZXRob2QgZm9yIGdl
dHRpbmcgYSBjb21wdXRlZCBsYWJlbCBmb3IgYW4gQVhPYmplY3QuIEl0IGNvbmRlbnNlcyB0aGUg
bnVhbmNlcyBvZiBhY2Nlc3NpYmlsaXR5VGV4dC4gVXNlZCBieSBJbnNwZWN0b3IuCi0gICAgU3Ry
aW5nIGNvbXB1dGVkTGFiZWwoKTsKLSAgICAKKyAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgpIG92
ZXJyaWRlOworCiAgICAgLy8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5hbWUgb24gYW4g
QWNjZXNzaWJsZU9iamVjdC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29u
c3QgQXRvbVN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWly
ZWRGb3JJbmNsdXNpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJl
ZEZvckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBU
ZXh0IC0gKFRvIGJlIGRlcHJlY2F0ZWQpLgotICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxp
dHlEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBT
dHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3Ry
aW5nIGhlbHBUZXh0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQorICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9CiAKICAgICAvLyBNZXRob2RzIGZvciBkZXRlcm1pbmluZyBhY2Nlc3NpYmlsaXR5IHRleHQu
Ci0gICAgYm9vbCBpc0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgeyByZXR1cm4gYXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQotICAgIHZpcnR1YWwg
U3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50
TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCB7IHJldHVy
biBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiAw
OyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBTdHJpbmcgcGxh
Y2Vob2xkZXJWYWx1ZSgpIGNvbnN0OwotICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJv
bUNvbnRlbnQoKSBjb25zdDsKLSAgICAKKyAgICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTdGF0aWNUZXh0OyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgaW50IHRl
eHRMZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgU3RyaW5nIGFyaWFM
YWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgp
IGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gQWJicmV2aWF0aW9ucwotICAgIHZpcnR1YWwgU3Ry
aW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgCi0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1l
bnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBTdHJpbmcgZXhwYW5kZWRU
ZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGJvb2wg
c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gT25seSBpZiBp
c0NvbG9yV2VsbCgpCi0gICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcs
IGludCYgYikgY29uc3QgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CisgICAgdm9pZCBjb2xvclZh
bHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0IG92ZXJyaWRlIHsgciA9IDA7IGcgPSAw
OyBiID0gMDsgfQogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yb2xlOyB9CiAKLSAgICB2aXJ0dWFsIEFYT2JqZWN0Q2FjaGUqIGF4
T2JqZWN0Q2FjaGUoKSBjb25zdDsKLSAgICBBWElEIGF4T2JqZWN0SUQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9Ci0gICAgCisgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2lkOyB9CisKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogYW5jaG9yRWxlbWVudEZv
ck5vZGUoTm9kZSopOwogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkaW5nRWxl
bWVudEZvck5vZGUoTm9kZSopOwotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBib29sIHN1cHBvcnRzUHJlc3NBY3Rpb24o
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVk
Qm91bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3QoYm91bmRpbmdC
b3hSZWN0KCkpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qg
PSAwOwotICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRSZWN0KCku
c2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCk7CisgICAgRWxlbWVu
dCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICBib29sIHN1cHBvcnRzUHJlc3NBY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBFbGVtZW50
KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5
b3V0UmVjdCgpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzbmFwcGVkSW50UmVjdChib3VuZGluZ0JveFJlY3QoKSk7
IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgPSAwOworICAg
IExheW91dFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVsZW1lbnRSZWN0KCku
c2l6ZSgpOyB9CisgICAgSW50UG9pbnQgY2xpY2tQb2ludCgpIG92ZXJyaWRlOwogICAgIHN0YXRp
YyBJbnRSZWN0IGJvdW5kaW5nQm94Rm9yUXVhZHMoUmVuZGVyT2JqZWN0KiwgY29uc3QgVmVjdG9y
PEZsb2F0UXVhZD4mKTsKLSAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCB7IHJl
dHVybiBQYXRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0
b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFu
Z2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9
Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJldHVybiBzZWxlY3RlZFRl
eHRSYW5nZSgpLnN0YXJ0OyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkgY29uc3QgeyBy
ZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5sZW5ndGg7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFVS
TCB1cmwoKSBjb25zdCB7IHJldHVybiBVUkwoKTsgfQotICAgIHZpcnR1YWwgVmlzaWJsZVNlbGVj
dGlvbiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3QgeyByZXR1
cm4gbnVsbEF0b20oKTsgfQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0Owot
ICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZy
YW1lVmlldygpIGNvbnN0OwotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgIEZyYW1lKiBt
YWluRnJhbWUoKSBjb25zdDsKLSAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdDsKLSAg
ICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdDsKLSAgICBTdHJpbmcgbGFu
Z3VhZ2UoKSBjb25zdDsKKyAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUGF0aCgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9y
QmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGFpblRleHRSYW5n
ZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJh
bmdlKCk7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rp
b25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgpLmxlbmd0
aDsgfQorCisgICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFVSTCgpOyB9Cisg
ICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBW
aXNpYmxlU2VsZWN0aW9uKCk7IH0KKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NL
ZXkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhY3Rpb25WZXJiKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3aWRnZXQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgV2lkZ2V0KiB3aWRnZXRGb3JB
dHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBQ
YWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92
ZXJyaWRlOworICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lKiBt
YWluRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICAv
LyAxLWJhc2VkLCB0byBtYXRjaCB0aGUgYXJpYS1sZXZlbCBzcGVjLgotICAgIHZpcnR1YWwgdW5z
aWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgCi0gICAg
dmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0
ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2Uo
Y29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKTsKLSAgICBib29sIGluc2VydFRl
eHQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxvYXQpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIHsgfQotICAg
IAotICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdl
JikgeyB9Ci0gICAgdmlydHVhbCBib29sIHByZXNzKCk7Ci0gICAgYm9vbCBwZXJmb3JtRGVmYXVs
dEFjdGlvbigpIHsgcmV0dXJuIHByZXNzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBp
bmNyZW1lbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRleHRD
aGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkg
eyB9Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29s
IHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGRyZW4oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVj
dCopOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
dW5zaWduZWQpOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZl
Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0No
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlQ2hpbGRyZW47IH0KKyAgICB1bnNpZ25lZCBo
aWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAgIHZv
aWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4
dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5n
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOworICAgIGJv
b2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VmFs
dWUoZmxvYXQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHByZXNzKCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBwZXJmb3JtRGVmYXVsdEFjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIHByZXNzKCk7
IH0KKworICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgaW5jcmVtZW50KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkZWNy
ZW1lbnQoKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdXBk
YXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZSB7IH0KKyAgICBjb25zdCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9
IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0
Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgYm9vbCBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hh
dmVDaGlsZHJlbjsgfQogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgYm9vbCBuZWVkc1RvVXBkYXRlQ2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0
ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlU3VidHJl
ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOworICAg
IGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBh
cmVudCgpOworICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlOwogI2Vsc2UKLSAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIHsgfQorICAgIHZvaWQgZGV0YWNoRnJv
bVBhcmVudCgpIG92ZXJyaWRlIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCBib29sIGlzRGV0YWNo
ZWRGcm9tUGFyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBjYW5I
YXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQot
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgeyB9Ci0gICAgYm9vbCBp
c0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KikgY29uc3Q7Ci0g
ICAgYm9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCopIGNv
bnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgp
IGNvbnN0OworICAgIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdmlzaWJsZUNo
aWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9
CisgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRh
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBoYW5kbGVB
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgaGFuZGxlQXJp
YUV4cGFuZGVkQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZP
YmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Fu
Y2VzdG9yT2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgYXJp
YVJvbGVUb1dlYkNvcmVSb2xlKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGJvb2wgaGFzVGFnTmFt
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZp
c2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdl
KCkgY29uc3Q7CisgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3Np
dGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKTsgfQorCisgICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2UoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rl
cihOb2RlKiByZXBsYWNlZE5vZGUpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZp
c2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsK
LSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxlZnRMaW5lVmlz
aWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VG
b3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugdmlz
aWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0Owot
ICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFp
blRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OworCisgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHBvc2l0aW9uT2ZSaWdodFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5n
ZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5j
ZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxl
UmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsK
KyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBTdHJpbmcg
c3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2Um
KTsKLSAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Q7Ci0gICAg
dmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2li
bGVQb3NpdGlvblJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVh
bCBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IHsgcmV0
dXJuIEludFJlY3QoKTsgfQotICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRT
ZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikg
Y29uc3QgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yQm91bmRz
KGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zKSBjb25zdCB7IHJldHVybiB2aXNpYmxlUG9zLm5leHQoKTsgfQotICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MucHJldmlvdXMoKTsg
fQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEVuZChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lRW5kUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IHByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNl
U3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gbmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhP
SyAqLykgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNp
YmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gMDsgfQot
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIGludCBsaW5lRm9yUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5U
ZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFrcyhWZWN0
b3I8aW50PiYpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdl
Rm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAg
IFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29u
c3Q7Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRleCh1bnNpZ25l
ZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBsYWluVGV4dFJhbmdl
IGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBT
dHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAg
dmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgU3Ry
aW5nIHN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlOworICAgIElu
dFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0
IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZv
ckJvdW5kcykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHZpc2libGVQb3MubmV4dCgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlz
aWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2aW91cygpOyB9CisgICAgVmlzaWJsZVBvc2l0
aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBo
RW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKworICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGluZUZvclBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4
dFJhbmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXgoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KKworICAgIHZvaWQg
bGluZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIFBsYWluVGV4
dFJhbmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4dFJhbmdl
IGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFp
blRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRl
eCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgZG9BWFN0cmluZ0ZvclJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5n
KCk7IH0KKyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIEludFJlY3QgZG9B
WEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2Um
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KICAgICBzdGF0aWMgU3RyaW5n
IGxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mKTsKIAotICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpOworICAg
IHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpIG92ZXJyaWRlOwogCi0gICAgU3Ry
aW5nIGNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBjb21wdXRlZFJvbGVT
dHJpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVl
Rm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNv
bnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNB
QSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHN0cmlu
Z1JvbGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBT
dHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKTsgfQorCisgICAgU3RyaW5nIHBhc3N3b3Jk
RmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9v
bCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWYWx1ZUF1
dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXV0b0ZpbGxCdXR0b25UeXBl
IHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdDsKLSAgICBib29sIGlzVmFsdWVBdXRv
ZmlsbEF2YWlsYWJsZSgpIGNvbnN0OwotICAgIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9m
aWxsQnV0dG9uVHlwZSgpIGNvbnN0OwotICAgIAogICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVl
IHRvIGdldCBhbGwgaXRzIHJvd3MuCi0gICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7CisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRl
bSB0byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KLSAg
ICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJik7Ci0gICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25seSBpdHMg
Y29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLiAKLSAgICB2
b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0g
ICAgCisgICAgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIG92ZXJyaWRlOworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIGl0ZW0g
dG8gZ2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxkIHRyZWUgaXRlbXMgYW5k
IGdyb3Vwcy4KKyAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGxpdmUtcmVnaW9uIGZlYXR1cmVz
LgotICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkg
Y29uc3Q7Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0
cnVlKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3Io
Ym9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCB7IHJldHVybiBudWxs
QXRvbSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0g
dHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBl
eGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBv
dmVycmlkZTsKKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxl
dmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBib29sIGxp
dmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5
Um9sZSk7CiAgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBB
dG9tU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY29udGVudEVkaXRhYmxlQXR0cmlidXRlSXNF
bmFibGVkKEVsZW1lbnQqKTsKLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNl
dCgpIGNvbnN0OworICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c1Jl
YWRPbmx5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25z
dCBvdmVycmlkZTsKKworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
Ym9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBhdXRvQ29tcGxl
dGVWYWx1ZSgpIGNvbnN0OwotICAgIAotICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygp
IGNvbnN0OwotICAgIAogICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCi0gICAgdmlydHVh
bCBPcHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gT3B0
aW9uU2V0PFNwZWFrQXM+IHsgfTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJv
cGVydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcHRpb25TZXQ8U3BlYWtBcz4geyB9OyB9
CiAKICAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xsaW5nIGFzIG1hbnkg
bmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgotICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2Fu
J3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRp
bmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMo
Y29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2Nyb2xsIHRo
aXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0
b3AtbGV2ZWwgd2luZG93LgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNv
bnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgCi0gICAgZW51bSBjbGFzcyBTY3JvbGxCeVBhZ2VE
aXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsKLSAgICBib29sIHNjcm9sbEJ5UGFn
ZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0OwotICAgIEludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdDsgICAg
Ci0gICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKLSAgICB2b2lk
IHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBj
b25zdDsKLSAgICAKLSAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCk7Ci0gICAgdm9p
ZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKTsKKyAgICB2b2lkIHNjcm9sbFRvR2xv
YmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgc2Ny
b2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIHNjcm9s
bENvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJs
ZUNvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKIAogICAgIC8vIEZpcmVz
IGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJ
Z25vcmVkIHZhbHVlIGNoYW5nZWQuCi0gICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5n
ZWQoKTsKKyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlOwog
CiAgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0aEVsZW1lbnQo
KS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRleHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlT3BlcmF0
b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBh
cmF0b3JPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9i
amVjdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0
aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBl
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNYXRoUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlw
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhUb2tl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhTY3Jp
cHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNj
ZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAorICAgIEFYQ29yZU9iamVjdCogbWF0aFJhZGljYW5k
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
bWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAg
IC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGhVbmRlck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICAgICAvLyBGcmFjdGlvbiBjb21wb25lbnRzLgotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5vbWluYXRv
ck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1l
cmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3JlT2Jq
ZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1h
dGhTdXBlcnNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKKyAgICBBWENv
cmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIC8vIEZlbmNlZCBjb21wb25lbnRzLgot
ICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IG1hdGhMaW5lVGhpY2tu
ZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Fub255bW91c01h
dGhPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCisgICAgU3RyaW5nIG1h
dGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU3RyaW5nKCk7IH0KKyAgICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9u
ZW50cy4KLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0eU9iamVjdCos
IEFjY2Vzc2liaWxpdHlPYmplY3QqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJz
OwotICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0UGFpcnMmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vz
c2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQotICAgIAorICAgIHZvaWQgbWF0aFBy
ZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBh
aXJzJikgb3ZlcnJpZGUgeyB9CisKICAgICAvLyBWaXNpYmlsaXR5LgotICAgIGJvb2wgaXNBWEhp
ZGRlbigpIGNvbnN0OwotICAgIGJvb2wgaXNET01IaWRkZW4oKSBjb25zdDsKLSAgICBib29sIGlz
SGlkZGVuKCkgY29uc3QgeyByZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVuKCk7IH0K
KyAgICBib29sIGlzQVhIaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRE9NSGlk
ZGVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGlzQVhIaWRkZW4oKSB8fCBpc0RPTUhpZGRlbigpOyB9CiAKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWSkKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgeyBtX3dyYXBwZXIg
PSB3cmFwcGVyOyB9CisgICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKiB3cmFwcGVyKSBvdmVycmlkZSB7IG1fd3JhcHBlciA9IHdyYXBwZXI7IH0KICNlbHNlCiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZv
aWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCk7
CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQp
IG92ZXJyaWRlOwogI2Vsc2UKLSAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nl
c3NpYmlsaXR5T2JqZWN0KikgeyB9CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQo
QVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZKQogICAgIC8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWV0aG9kIGZvciBkZXRl
cm1pbmluZyBpZiBhbiBhdHRhY2htZW50IGlzIGlnbm9yZWQKLSAgICBib29sIGFjY2Vzc2liaWxp
dHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Q7CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3Jl
QXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUg
b3Bwb3J0dW5pdHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGlu
Y2x1ZGVkCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxh
dGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlk
ZTsKICNlbHNlCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vz
c2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CisgICAgYm9vbCBhY2Nlc3Np
YmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUlu
Y2x1ZGVzT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVj
dEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVuZ3RoKCk7Ci0g
ICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdDsKLSAgICBib29sIGlzSW5wdXRU
eXBlUG9wdXBCdXR0b24oKSBjb25zdDsKKyAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmll
bGRMZW5ndGgoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCi0gICAgCisKICAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxp
dHlPYmplY3QgdG8gdXBkYXRlIGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCiAgICAgLy8gb3Ro
ZXIgb3BlcmF0aW9ucyB1cGRhdGUgdHlwZSBvcGVyYXRpb25zCi0gICAgdm9pZCB1cGRhdGVCYWNr
aW5nU3RvcmUoKTsKLSAgICAKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG92ZXJyaWRl
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoKGJvb2wpOwotICAgIGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0
bGUoKSBjb25zdDsKKyAgICBib29sIHByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0
Y2goYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVl
SW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzcGVlY2hIaW50QXR0cmlidXRl
VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdDsK
LSAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIGJvb2wgY2FyZXRC
cm93c2luZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENhcmV0QnJvd3Np
bmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmb2N1c2FibGVBbmNlc3RvcigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVkaXRh
YmxlQW5jZXN0b3IoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoaWdoZXN0RWRpdGFibGVB
bmNlc3RvcigpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzYWJsZUFuY2VzdG9yKCkg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWRpdGFibGVBbmNlc3RvcigpIG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9y
KCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0
b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdDsKKyAgICBj
b25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGF0aWMgY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWF0Y2hlZFBhcmVudChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmKT4mKTsKLSAgICAKLSAgICB2b2lkIGNsZWFySXNJZ25vcmVkRnJv
bVBhcmVudERhdGEoKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsgfQotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBh
cmVudERhdGFGb3JDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7Ci0gICAgCisKKyAgICB2b2lk
IGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlkZSB7IG1faXNJZ25vcmVkRnJv
bVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsgfQor
ICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3Qq
KSBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIEFYSUQgbV9pZCB7IDAgfTsKICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKQEAgLTEwMjEsMjQgKzc3OCwyNCBA
QCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAg
ICBib29sIG1faXNvbGF0ZWRUcmVlTm9kZUluaXRpYWxpemVkIHsgZmFsc2UgfTsKICNlbmRpZgot
ICAgIAotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlz
SWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEg
PSBkYXRhOyB9CisKKyAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSYgZGF0YSkgb3ZlcnJpZGUgeyBtX2lzSWdub3Jl
ZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCiAgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IAorCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBpdHMgU2Ny
b2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFy
ZWFJZlNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgeyB9CiAgICAgU2Nyb2xsYWJsZUFy
ZWEqIHNjcm9sbGFibGVBcmVhQW5jZXN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbEFyZWFB
bmRBbmNlc3RvcihzdGQ6OnBhaXI8U2Nyb2xsYWJsZUFyZWEqLCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4mKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3RT
ZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFy
Y2hDcml0ZXJpYSosIHNpemVfdCk7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2Jq
ZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYSopOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRj
aChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKik7Ci0g
ICAgc3RhdGljIGJvb2wgb2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0
KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJp
bGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
U2VhcmNoQ3JpdGVyaWEqLCBzaXplX3QpOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eU9iamVjdFNlYXJjaE1hdGNoKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0
ZXJpYSopOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChB
WENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAgICBzdGF0aWMg
Ym9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQVhDb3JlT2Jq
ZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBidXR0b25Sb2xlVHlwZSgp
IGNvbnN0OwotICAgIGJvb2wgaXNPbnNjcmVlbigpIGNvbnN0OworICAgIGJvb2wgaXNPblNjcmVl
bigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZGlzcGF0Y2hUb3VjaEV2ZW50KCk7CiAKICAg
ICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwpAQCAtMTA2NCwxMCArODIxLDEwIEBA
IHByb3RlY3RlZDoKIH07CiAKICNpZiAhRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCi1pbmxpbmUgY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSB7IHJldHVybiBtX2NoaWxkcmVuOyB9Citp
bmxpbmUgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSBvdmVycmlkZSB7IHJldHVy
biBtX2NoaWxkcmVuOyB9CiBpbmxpbmUgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY3Rpb25WZXJiKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogaW5saW5lIGlu
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KLWlubGluZSB2b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpIHsgfQoraW5saW5lIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogQWNjZXNz
aWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSos
IGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBp
c0FjY2Vzc2libGUpOwpAQCAtMTA3Niw5ICs4MzMsOSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBm
aXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2RlKiwgY29uc3QgV1RGOjpGdW5j
dAogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShUb1ZhbHVl
VHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVybiBvYmplY3QucHJlZGlj
YXRlOyB9IFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5wcmVkaWNhdGU7IH0gXAogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3QpCi1zdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5p
c0FjY2Vzc2liaWxpdHlPYmplY3QoKTsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkFYQ29yZU9iamVjdCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0FjY2Vzc2liaWxp
dHlPYmplY3QoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaAppbmRleCA5OGZmYjMxNWUyMTBiMGNiMzVkYmU3OWJjYzIwZjkxMTAyMTc4YmJjLi4y
OTAzZGUxOTg4YzY1ZDUyYjViMjA3YjAwNjA1MTFlZGY1MzgxNzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaApAQCAtMjUsNyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNp
bmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCisjaW5j
bHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC00NSw2
ICs1MCwyMyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBOb2RlOworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFJlbmRlck9i
amVjdDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBQYXRoOworY2xhc3MgV2lkZ2V0Owor
Y2xhc3MgUGFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRnJhbWU7CitjbGFzcyBGcmFtZVZp
ZXc7CitjbGFzcyBTY3JvbGxWaWV3OworY2xhc3MgQVhPYmplY3RDYWNoZTsKK2NsYXNzIEFYQ29y
ZU9iamVjdDsKK2NsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Oworc3RydWN0IEFjY2Vzc2li
aWxpdHlUZXh0Oworc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zOworCiB0eXBlZGVm
IHVuc2lnbmVkIEFYSUQ7CiBleHRlcm4gY29uc3QgQVhJRCBJbnZhbGlkQVhJRDsKIHR5cGVkZWYg
dW5zaWduZWQgQVhJc29sYXRlZFRyZWVJRDsgICAgCkBAIC0yMDMsMzYgKzIyNSw4NTYgQEAgZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgV2luZG93LAogfTsKIAotY2xhc3MgQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSB7CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkLCBFbGVtZW50Q2hh
bmdlIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSB7IFNjcmVl
biwgUGFnZSB9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewor
ICAgIE5leHQgPSAxLAorICAgIFByZXZpb3VzLAorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5IHsKKyAgICBBbnlUeXBlID0gMSwKKyAgICBBcnRpY2xlLAorICAgIEJsb2Nr
cXVvdGVTYW1lTGV2ZWwsCisgICAgQmxvY2txdW90ZSwKKyAgICBCb2xkRm9udCwKKyAgICBCdXR0
b24sCisgICAgQ2hlY2tCb3gsCisgICAgQ29udHJvbCwKKyAgICBEaWZmZXJlbnRUeXBlLAorICAg
IEZvbnRDaGFuZ2UsCisgICAgRm9udENvbG9yQ2hhbmdlLAorICAgIEZyYW1lLAorICAgIEdyYXBo
aWMsCisgICAgSGVhZGluZ0xldmVsMSwKKyAgICBIZWFkaW5nTGV2ZWwyLAorICAgIEhlYWRpbmdM
ZXZlbDMsCisgICAgSGVhZGluZ0xldmVsNCwKKyAgICBIZWFkaW5nTGV2ZWw1LAorICAgIEhlYWRp
bmdMZXZlbDYsCisgICAgSGVhZGluZ1NhbWVMZXZlbCwKKyAgICBIZWFkaW5nLAorICAgIEhpZ2hs
aWdodGVkLAorICAgIEl0YWxpY0ZvbnQsCisgICAgS2V5Ym9hcmRGb2N1c2FibGUsCisgICAgTGFu
ZG1hcmssCisgICAgTGluaywKKyAgICBMaXN0LAorICAgIExpdmVSZWdpb24sCisgICAgTWlzc3Bl
bGxlZFdvcmQsCisgICAgT3V0bGluZSwKKyAgICBQbGFpblRleHQsCisgICAgUmFkaW9Hcm91cCwK
KyAgICBTYW1lVHlwZSwKKyAgICBTdGF0aWNUZXh0LAorICAgIFN0eWxlQ2hhbmdlLAorICAgIFRh
YmxlU2FtZUxldmVsLAorICAgIFRhYmxlLAorICAgIFRleHRGaWVsZCwKKyAgICBVbmRlcmxpbmUs
CisgICAgVW52aXNpdGVkTGluaywKKyAgICBWaXNpdGVkTGluaywKK307CisKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgeworICAgIEFYQ29yZU9iamVjdCogc3RhcnRPYmplY3Q7
CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247CisgICAg
VmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IHNlYXJjaEtleXM7CisgICAgU3RyaW5nIHNl
YXJjaFRleHQ7CisgICAgdW5zaWduZWQgcmVzdWx0c0xpbWl0OworICAgIGJvb2wgdmlzaWJsZU9u
bHk7CisgICAgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHk7CisKKyAgICBBY2Nlc3NpYmls
aXR5U2VhcmNoQ3JpdGVyaWEoQVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0
eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hUZXh0LCB1bnNp
Z25lZCByZXN1bHRzTGltaXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2Vu
ZGFudHNPbmx5KQorICAgICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQorICAgICAgICAs
IHNlYXJjaERpcmVjdGlvbihzZWFyY2hEaXJlY3Rpb24pCisgICAgICAgICwgc2VhcmNoVGV4dChz
ZWFyY2hUZXh0KQorICAgICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQpCisgICAgICAg
ICwgdmlzaWJsZU9ubHkodmlzaWJsZU9ubHkpCisgICAgICAgICwgaW1tZWRpYXRlRGVzY2VuZGFu
dHNPbmx5KGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKKyAgICB7IH0KK307CisKK2VudW0gY2xh
c3MgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiB7CisgICAgSW5jbHVkZU9iamVjdCwKKyAg
ICBJZ25vcmVPYmplY3QsCisgICAgRGVmYXVsdEJlaGF2aW9yLAorfTsKKworZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIHsgRmFsc2UsIFRydWUsIFBhZ2UsIFN0ZXAsIExvY2F0
aW9uLCBEYXRlLCBUaW1lIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
IHsKKyAgICBPZmYgPSAwLAorICAgIE9uLAorICAgIE1peGVkLAorfTsKKworZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiB7CisgICAgTm9uZSwKKyAgICBBc2NlbmRpbmcsCisg
ICAgRGVzY2VuZGluZywKKyAgICBPdGhlciwKKyAgICBJbnZhbGlkLAorfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSB7CisgICAgQmVnaW4sIC8vIFNlYXJj
aCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVsZW1lbnQuCisgICAgU2VsZWN0aW9uLCAvLyBT
ZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgorICAgIEVu
ZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiB7CisgICAgRm9yd2FyZCwgLy8gT2Nj
dXJyZW5jZSBhZnRlciB0aGUgc3RhcnRpbmcgcmFuZ2UuCisgICAgQmFja3dhcmQsIC8vIE9jY3Vy
cmVuY2UgYmVmb3JlIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBDbG9zZXN0LCAvLyBDbG9zZXN0
IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVyIG9yIGJlZm9y
ZS4KKyAgICBBbGwgLy8gQWxsIG9jY3VycmVuY2VzCit9OworCitzdHJ1Y3QgQWNjZXNzaWJpbGl0
eVNlYXJjaFRleHRDcml0ZXJpYSB7CisgICAgVmVjdG9yPFN0cmluZz4gc2VhcmNoU3RyaW5nczsg
Ly8gVGV4dCBzdHJpbmdzIHRvIHNlYXJjaCBmb3IuCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRTdGFydEZyb20gc3RhcnQ7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uOworCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSgpCisgICAg
ICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206OlNlbGVjdGlvbikK
KyAgICAgICAgLCBkaXJlY3Rpb24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb246OkZv
cndhcmQpCisgICAgeyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0
aW9uVHlwZSB7CisgICAgU2VsZWN0LAorICAgIFJlcGxhY2UsCisgICAgQ2FwaXRhbGl6ZSwKKyAg
ICBMb3dlcmNhc2UsCisgICAgVXBwZXJjYXNlCit9OworCitzdHJ1Y3QgQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb24geworICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2VzOyAvLyB0
ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4KKyAgICBBY2Nlc3NpYmlsaXR5VGV4
dE9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0OyAvLyBGb3Ig
dHlwZSA9IHJlcGxhY2UuCisKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbigpCisgICAg
ICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVjdCkKKyAgICB7
IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKKyAgICBWZXJ0
aWNhbCwKKyAgICBIb3Jpem9udGFsLAorICAgIFVuZGVmaW5lZCwKK307CisKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgeworICAgIGVudW0gQ2hpbGRyZW5JbmNsdXNp
b24geworICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hpbGRyZW4sCisg
ICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZUFsbENoaWxkcmVuLAorICAgICAgICBU
ZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4sIC8vIFRo
aXMgY29ycmVzcG9uZHMgdG8gQVJJQSBjb25jZXB0OiBuYW1lRnJvbQorICAgIH07CisKKyAgICBD
aGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1c2lvbjsKKyAgICBib29sIGluY2x1ZGVGb2N1
c2FibGVDb250ZW50OworICAgIE5vZGUqIGlnbm9yZWRDaGlsZE5vZGU7CisKKyAgICBBY2Nlc3Np
YmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9IFRleHRVbmRl
ckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2UsIE5vZGUqIGln
bm9yZWQgPSBudWxscHRyKQorICAgICAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMpCisgICAgICAg
ICwgaW5jbHVkZUZvY3VzYWJsZUNvbnRlbnQoaSkKKyAgICAgICAgLCBpZ25vcmVkQ2hpbGROb2Rl
KGlnbm9yZWQpCisgICAgeyB9Cit9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCit0eXBlZGVmIHN0
cnVjdCBfTlNSYW5nZSBOU1JhbmdlOworI2VuZGlmCisKK3N0cnVjdCBQbGFpblRleHRSYW5nZSB7
CisgICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CisgICAgdW5zaWduZWQgbGVuZ3RoIHsgMCB9Owor
CisgICAgUGxhaW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBQbGFpblRleHRSYW5nZSh1
bnNpZ25lZCBzLCB1bnNpZ25lZCBsKQorICAgICAgICA6IHN0YXJ0KHMpCisgICAgICAgICwgbGVu
Z3RoKGwpCisgICAgeyB9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGFpblRleHRSYW5n
ZShOU1JhbmdlKTsKKyNlbmRpZgorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAh
c3RhcnQgJiYgIWxlbmd0aDsgfQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzIHsKKyAgICBGaXJzdCwKKyAgICBMYXN0LAorfTsKKworc3RydWN0
IFZpc2libGVQb3NpdGlvblJhbmdlIHsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQ7CisgICAg
VmlzaWJsZVBvc2l0aW9uIGVuZDsKKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKCkgPSBkZWZh
dWx0OworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcywg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQorICAgICAgICA6IHN0YXJ0KHMpCisgICAgICAgICwg
ZW5kKGUpCisgICAgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb24pCisgICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCkp
CisgICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKKyAgICB7IH0KKworICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpOyB9Cit9
OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNj
cmlwdCwgU3VwZXJzY3JpcHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2Ny
aXB0LCBQb3N0U3VwZXJzY3JpcHQgfTsKKworLy8gVXNlIHRoaXMgc3RydWN0IHRvIHN0b3JlIHRo
ZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNvIHRoYXQgaW4g
YWRkQ2hpbGRyZW4oKQorLy8gd2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBmb3Ig
ZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwgaW5mb3Jt
YXRpb24gYWxyZWFkeS4KK3N0cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEgeworICAgIEFYQ29yZU9iamVjdCogcGFyZW50IHsgbnVsbHB0ciB9OworICAgIGJvb2wgaXNB
WEhpZGRlbiB7IGZhbHNlIH07CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFS
b2xlIHsgZmFsc2UgfTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50IHsgZmFs
c2UgfTsKKworICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBWENvcmVP
YmplY3QqIHBhcmVudCA9IG51bGxwdHIpCisgICAgICAgIDogcGFyZW50KHBhcmVudCkKKyAgICB7
IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsgfQorfTsKKwor
Y2xhc3MgQVhDb3JlT2JqZWN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYQ29yZU9i
amVjdD4gewogcHVibGljOgotICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QVhDb3JlT2JqZWN0KCkgPSBkZWZhdWx0Owog
Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICAvLyBBZnRlciBjb25zdHJ1
Y3RpbmcgYW4gYWNjZXNzaWJsZSBvYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQorICAgIC8vIHVu
aXF1ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBpbml0KCkg
bXVzdAorICAgIC8vIGJlIGNhbGxlZCBsYXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRPYmplY3RJ
RChBWElEKSA9IDA7CisgICAgdmlydHVhbCBBWElEIG9iamVjdElEKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBpbml0KCkgPSAwOworCisgICAgLy8gV2hlbiB0aGUgY29ycmVzcG9uZGlu
ZyBXZWJDb3JlIG9iamVjdCB0aGF0IHRoaXMgYWNjZXNzaWJsZSBvYmplY3QKKyAgICAvLyByZXBy
ZXNlbnRzIGlzIGRlbGV0ZWQsIGl0IG11c3QgYmUgZGV0YWNoZWQuCisgICAgdmlydHVhbCB2b2lk
IGRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0Q2FjaGUqID0gbnVs
bHB0cikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgPSAwOworCisg
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvcjsKKworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50KCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzTGluaygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0
aXZlSW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VCdXR0b24oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNz
d29yZEZpZWxkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQ2hlY2tib3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXR0
YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TWVudUJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QnV0dG9uKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVz
c0luZGljYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQ29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1RhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFUYWJsZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNUYWJsZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRmllbGRzZXQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51
TGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
cGluQnV0dG9uUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrT2JqZWN0
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbExhYmVsKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1N3aXRjaCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNU
b2dnbGVCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2wo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzVGFiSXRlbSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0dyb3Vw
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1RyZWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
VHJlZUdyaWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVHJlZUl0ZW0oKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0J1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0SXRl
bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUG9w
VXBCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQmxvY2txdW90ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
UmFuZ2VDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwbGl0dGVyKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3R5
bGVGb3JtYXRHcm91cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaWd1cmVFbGVt
ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzT3V0cHV0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlz
Q2hlY2tlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSG92ZXJl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCA9IDA7CisgICAgLy8gRklYTUUgc2hvdWxk
IG5lZWQganVzdCBvbmUgc2luY2Ugb25zY3JlZW4gc2hvdWxkIGJlICFvZmZzY3JlZW4uCisgICAg
dmlydHVhbCBib29sIGlzT25TY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
T2ZmU2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRy
aWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29sbGFwc2Vk
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogcGFyZW50T2JqZWN0SW50ZXJmYWNl
VW5pZ25vcmVkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKyAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYs
IEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKKworICAgIC8vIEluIGEg
bXVsdGktc2VsZWN0IGxpc3QsIG1hbnkgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ1dCBvbmx5IG9u
ZSBpcyBhY3RpdmUgYXQgYSB0aW1lLgorICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkT3B0aW9u
QWN0aXZlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFy
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNQbGFpblRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZv
bnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1Nh
bWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3Rh
dGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE5v
ZGUqIG5vZGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRl
ZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBoZWFkaW5n
TGV2ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdGFibGVMZXZlbCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBjaGVja2JveE9yUmFkaW9W
YWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxv
YXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmpl
Y3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IHNlbGVjdGVkVGFiSXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogc2VsZWN0
ZWRMaXN0SXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIGludCBsYXlvdXRDb3VudCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVy
ZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURldGFpbHNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUVycm9yTWVzc2Fn
ZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNQb3B1cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBwb3B1cFZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhbGlzdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGludmFsaWRTdGF0dXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
UHJlc3NlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBhbmRlZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBU
aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4g
dGhlcmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCisgICAgdmlydHVhbCBib29sIGlnbm9y
ZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2Rh
bERlc2NlbmRhbnQoTm9kZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2RhbE5v
ZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXRTaXplKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHNldFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgcG9z
SW5TZXQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0FSSUFHcmFiYmVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJlZChib29s
KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVj
dHMoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0IHRvIHJldHVy
biB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVj
dCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisgICAg
Ly8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWlu
ZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCisgICAgdmly
dHVhbCBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlF
bGVtZW50KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGxhc3RDaGlsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxp
bWl0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHByZXZpb3VzU2libGlu
Z1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVj
dCogcGFyZW50T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmpl
Y3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBm
aW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50
T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFu
dE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QgPSAwOworCisgICAgLy8gVGV4dCBzZWxl
Y3Rpb24KKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhB
Y2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb24gY29uc3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogb2Jz
ZXJ2YWJsZU9iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVs
RWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogc2Nyb2xsQmFy
KEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAorICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5
VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3QgPSAwOworICAgIC8vIEEgc2lu
Z2xlIG1ldGhvZCBmb3IgZ2V0dGluZyBhIGNvbXB1dGVkIGxhYmVsIGZvciBhbiBBWE9iamVjdC4g
SXQgY29uZGVuc2VzIHRoZSBudWFuY2VzIG9mIGFjY2Vzc2liaWxpdHlUZXh0LiBVc2VkIGJ5IElu
c3BlY3Rvci4KKyAgICB2aXJ0dWFsIFN0cmluZyBjb21wdXRlZExhYmVsKCkgPSAwOworCisgICAg
Ly8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5hbWUgb24gYW4gQWNjZXNzaWJsZU9iamVj
dC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRvbVN0cmluZyYp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5jbHVzaW9u
KCkgY29uc3QgPSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0IC0gKFRvIGJlIGRlcHJl
Y2F0ZWQpLgorICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ldGhvZHMgZm9yIGRl
dGVybWluaW5nIGFjY2Vzc2liaWxpdHkgdGV4dC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBU3Rh
dGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxp
dHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZSgpKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5n
IGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
YXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGFj
Y2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3QgPSAwOworCisgICAgLy8gQWJi
cmV2aWF0aW9ucworICAgIHZpcnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxl
bWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIC8vIE9ubHkg
aWYgaXNDb2xvcldlbGwoKQorICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGludCYgciwgaW50
JiBnLCBpbnQmIGIpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWE9iamVjdENhY2hlKiBheE9i
amVjdENhY2hlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVt
ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ByZXNzQWN0aW9uKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9p
bnQgY2xpY2tQb2ludCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBhdGgoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0
UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRl
eHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
c2VsZWN0ZWRUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYg
YWNjZXNzS2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBhY3Rpb25W
ZXJiKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUGFnZSogcGFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lVmlldyogZG9jdW1l
bnRGcmFtZVZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogZnJhbWUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Ny
b2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOworICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBh
cmlhLWxldmVsIHNwZWMuCisgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmlu
ZyYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBlcmZvcm1EZWZh
dWx0QWN0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dENoYW5nZWQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgPSAwOworICAg
IHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29s
IHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3Qq
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2ln
bmVkKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzVG9VcGRhdGVTdWJ0cmVlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVu
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNh
bkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFu
Z2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVP
YmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQW5jZXN0b3JPZk9iamVjdChj
b25zdCBBWENvcmVPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9v
bCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRl
cmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9u
T2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIGxl
ZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBw
YXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5n
ZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4
dFJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yUmFuZ2Uo
UmVmUHRyPFJhbmdlPikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdl
PikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlvblJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBv
c2l0aW9uRm9yQm91bmRzKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRT
dGFydChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzU2Vu
dGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
IHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFj
Y2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJh
bmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVu
c2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VG
b3JQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWlu
VGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNG
b3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGRvQVhMaW5lRm9y
SW5kZXgodW5zaWduZWQpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVkUm9sZVN0
cmluZygpIGNvbnN0ID0gMDsKKworICAgIC8vIE1TQUEKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJp
bmdWYWx1ZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nUm9s
ZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25Gb3JNU0FBKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9uVHlwZSgpIGNv
bnN0ID0gMDsKKworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRvIGdldCBhbGwgaXRzIHJv
d3MuCisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgYWxs
IG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KKyAgICB2aXJ0dWFsIHZv
aWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25seSBpdHMg
Y29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLgorICAgIHZp
cnR1YWwgdm9pZCBhcmlhVHJlZUl0ZW1Db250ZW50KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpID0gMDsKKworICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24gZmVhdHVyZXMuCisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlm
T2ZmID0gdHJ1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBsaXZlUmVn
aW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQnVzeSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZW50RWRpdGFi
bGVBdHRyaWJ1dGVTZXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNS
ZWFkT25seSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7
CisKKyAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgorICAgIHZpcnR1YWwgT3B0aW9uU2V0
PFNwZWFrQXM+IHNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ha2UgdGhp
cyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxpbmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2
aWV3cyBhcyBuZWVkZWQuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBj
b25zdCA9IDA7CisgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUg
bWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMu
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3Qg
SW50UmVjdCYpIGNvbnN0ID0gMDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZl
biBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25z
dCA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3du
LCBMZWZ0LCBSaWdodCB9OworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQ
YWdlRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXpl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJl
Y3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29u
c3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpID0gMDsKKworICAgIC8vIEZpcmVzIGEgY2hp
bGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVk
IHZhbHVlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hh
bmdlZCgpID0gMDsKKworICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBp
c01hdGhFbGVtZW50KCkuCisgICAgdmlydHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhSb3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVyT3Zlcigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTnVt
YmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhU
YWJsZVJvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5
cGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3Qo
QWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0gMDsKKworICAg
IC8vIFJvb3QgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aFJhZGlj
YW5kT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoUm9vdEluZGV4
T2JqZWN0KCkgPSAwOworCisgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgorICAgIHZpcnR1
YWwgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgPSAwOworCisgICAgLy8gRnJhY3Rpb24gY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpID0g
MDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgPSAw
OworCisgICAgLy8gU3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3Jl
T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSA9IDA7CisKKyAgICAvLyBGZW5jZWQgY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3QgPSAwOworCisgICAgLy8g
TXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPEFY
Q29yZU9iamVjdCosIEFYQ29yZU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcnM7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRz
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKworICAgIC8vIFZpc2li
aWxpdHkuCisgICAgdmlydHVhbCBib29sIGlzQVhIaWRkZW4oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzRE9NSGlkZGVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0hp
ZGRlbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIqIHdyYXBwZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFdyYXBwZXIoQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgb3ZlcnJp
ZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KSA9IDA7CisKKyAgICAvLyBh
IHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgaWYgYW4gYXR0YWNobWVu
dCBpcyBpZ25vcmVkCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2ht
ZW50KCkgY29uc3QgPSAwOworICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUgb3Bwb3J0dW5pdHkg
dG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9y
bUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgPSAwOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICB2aXJ0dWFsIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0aCgpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3QgPSAwOworI2VuZGlm
CisKKyAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgdG8gdXBkYXRlIGl0
cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCisgICAgLy8gb3RoZXIgb3BlcmF0aW9ucyB1cGRhdGUg
dHlwZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpID0g
MDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgYm9vbCBwcmV2ZW50S2V5Ym9h
cmRET01FdmVudERpc3BhdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
ZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogI2VuZGlmCiAK
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisjaWYgUExBVEZPUk0oQ09DT0EpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZpcnR1YWwgYm9vbCBjYXJldEJyb3dzaW5nRW5h
YmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJs
ZWQoYm9vbCkgPSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZm9jdXNh
YmxlQW5jZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGVkaXRhYmxlQW5j
ZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGhpZ2hlc3RFZGl0YWJsZUFu
Y2VzdG9yKCkgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCopID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDUzMzRk
Yzc2NmVjNTFmNTY3MWMxMjQ2YzRhZmFhMDk4MzRjYmZkNmMuLjdjMGJlNzQ3MzU1MGIxZjkyMmFl
NmM4NzNmNjU3ZTc0ZjE2MWFjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtOTc2LDcgKzk3
Niw3IEBAIE9wdGlvblNldDxTcGVha0FzPiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzcGVh
a0FzUHJvcGVydHkoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpLnNwZWFr
QXMoKTsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmFkaW9C
dXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCwgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdAordm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQVhDb3JlT2Jq
ZWN0KiBwYXJlbnQsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGlua2VkVUlFbGVtZW50
cykgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50LT5jaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvQnV0dG9uKQpAQCAtMTI4MSw3ICsxMjgxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAKICAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIHN0YXRpYyB0
ZXh0IGJlbmVhdGggTWVudUl0ZW1zIGFuZCBNZW51QnV0dG9ucyBhcmUganVzdCByZXBvcnRlZCBh
bG9uZyB3aXRoIHRoZSBtZW51IGl0ZW0sIHNvIGl0J3MgaWdub3JlZCBvbiBhbiBpbmRpdmlkdWFs
IGxldmVsCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOworICAgICAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQtPmlzTWVudUl0ZW0o
KSB8fCBwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVCdXR0b24pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8mIHJlbmRl
clRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcik7CkBAIC0xNDMzLDcgKzE0
MzMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJlci0+aXNMaXN0
TWFya2VyKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNM
aXN0SXRlbSgpOwogICAgIH0KIApAQCAtMjM3MCw3ICsyMzcwLDcgQEAgSW50UmVjdCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNl
dChjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3Qo
SFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1h
cEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFhcmVhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzOTMs
NyArMjM5Myw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxl
bWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJlbW90ZSA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0ZSk7CiAgICAg
aWYgKCFyZW1vdGUpCkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVz
dAogICAgIHJldHVybiByZW1vdGUtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KG9mZnNl
dCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVt
ZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewog
ICAgIGlmIChpc1NWR0ltYWdlKCkpCiAgICAgICAgIHJldHVybiByZW1vdGVTVkdFbGVtZW50SGl0
VGVzdChwb2ludCk7CkBAIC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VT
aGFkb3dIb3N0Rm9ySGl0VGVzdGluZyhOb2RlKiBzaGFkb3dIb3N0KQogICAgIHJldHVybiBzaGFk
b3dIb3N0ICYmICFzaGFkb3dIb3N0LT5oYXNUYWdOYW1lKHZpZGVvVGFnKTsKIH0KIAotQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRl
cmVyLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NTAsNyArMjQ1
MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvCiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlc3VsdCA9IG9i
ai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG9iaik7CisgICAgQVhD
b3JlT2JqZWN0KiByZXN1bHQgPSBvYmotPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShvYmopOwogICAgIHJlc3VsdC0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwog
CiAgICAgLy8gQWxsb3cgdGhlIGVsZW1lbnQgdG8gcGVyZm9ybSBhbnkgaGl0LXRlc3RpbmcgaXQg
bWlnaHQgbmVlZCB0byBkbyB0byByZWFjaCBub24tcmVuZGVyIGNoaWxkcmVuLgpAQCAtMjQ1OCw3
ICsyNDU4LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY28KICAgICAKICAgICBpZiAocmVzdWx0
ICYmIHJlc3VsdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgIC8vIElmIHRo
aXMgZWxlbWVudCBpcyB0aGUgbGFiZWwgb2YgYSBjb250cm9sLCBhIGhpdCB0ZXN0IHNob3VsZCBy
ZXR1cm4gdGhlIGNvbnRyb2wuCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvbnRyb2xP
YmplY3QgPSByZXN1bHQtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCk7Cisg
ICAgICAgIEFYQ29yZU9iamVjdCogY29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVzcG9uZGlu
Z0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRyb2xPYmplY3QgJiYg
IWNvbnRyb2xPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0
dXJuIGNvbnRyb2xPYmplY3Q7CiAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAgIGlmICghYXJl
YU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBtX2NoaWxkcmVu
LmFwcGVuZCgmYXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGF4T2JqZWN0
Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3QuYXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGF4
T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAgICAgfQogfQog
CkBAIC0zMzA4LDcgKzMzMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFk
ZEhpZGRlbkNoaWxkcmVuKCkKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
Y2hpbGQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdoZXJlIHRoZSBs
YXN0IHJlbmRlciBzaWJsaW5nIGlzIGxvY2F0ZWQgd2l0aGluIG1fY2hpbGRyZW4uCi0gICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogY2hpbGRP
YmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldChjaGlsZC0+cmVuZGVyZXIoKSk7CiAgICAgICAg
ICAgICBpZiAoY2hpbGRPYmplY3QgJiYgY2hpbGRPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkcmVuID0gY2hpbGRPYmplY3QtPmNo
aWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUoKSkKQEAgLTM1MjUs
NyArMzUyNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWRDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlCiAgICAgICAgIGFyaWFTZWxlY3Rl
ZFJvd3MocmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRhYkxpc3Q6Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFRh
YiA9IHNlbGVjdGVkVGFiSXRlbSgpKQorICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBzZWxlY3Rl
ZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzZWxl
Y3RlZFRhYik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAwYjE5ZGE1MmFiZTZjMWYxNTg3Mjk4MGIyNzRlNWRk
NGFhZTAyYmZjLi4zOTYxNzMwNGNlYTM3MGY0OTdiZjM0YzVmNTE0NzIxMDE3ZGJiNzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGFyaWFS
b2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAg
IC8vIFNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8g
a2ljayBvZmYgYSBoaXQgdGVzdC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBh
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHRleHRMZW5ndGgo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdDsKKyAgICBjb25zdCBT
dHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTIzNSwxMSArMjM1LDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0OwogICAgIExheW91dFJlY3QgY2hlY2ti
b3hPclJhZGlvUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgYWRkUmFkaW9CdXR0b25Hcm91cE1lbWJl
cnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdDsK
LSAgICB2b2lkIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CisgICAgdm9pZCBhZGRSYWRp
b0J1dHRvbkdyb3VwQ2hpbGRyZW4oQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJuYWxMaW5rRWxl
bWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFn
ZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAg
ICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVt
ZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
Y2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBjb25zdDsKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGVs
ZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2JqZWN0JikgY29u
c3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25zdDsKQEAgLTI1
MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoUmVtb3RlU1ZHUm9vdCgpOwog
ICAgIGVudW0gQ3JlYXRpb25DaG9pY2UgeyBDcmVhdGUsIFJldHJpZXZlIH07CiAgICAgQWNjZXNz
aWJpbGl0eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0aW9uQ2hvaWNlIGNyZWF0
ZUlmTmVjZXNzYXJ5KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBy
ZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIEFYQ29y
ZU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
ICAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0
JikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcAppbmRleCA1MTc4YjlmYTUzZDU0MjYyYzlmYWE3ODRmZWU0OThjNzZjNjgyYTNl
Li5kMTE2ZWRkZmQ3ZTY5MTBiYTk2MzljZjZjZjViMWJhMjJiZTRkOGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwogICAgIGlmICghd2ViQXJlYSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aAppbmRleCA2NmZmNTk0N2Q2YTFkZWNlYjBlYjFhMTVmODdiMjRhZDg4YWQwYTNiLi45YmZhZjE1
NWFkYjIzMmE1NjYzZjU4Y2IwOGMxMmMxMzNlMmMzNTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC01OSw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGlsZHJlbigp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2hp
bGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZUNo
aWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAgdm9pZCB1
cGRhdGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBiM2ZmMGE5NzUxMDhmMTM4M2E5NjgyZmUw
MmMxNmM2OTA5NWY2N2QzLi5jYzZjYjgxOGU4YjNlMzZjOTE2Y2ZmMDRjMTdhNTBkMDVkZDllZTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjph
ZGRDaGlsZHJlbigpCiAgICAgLy8gQmVmb3JlIGFjdHVhbGx5IGFkZGluZyB0aGUgdmFsdWUgaW5k
aWNhdG9yIHRvIHRoZSBoaWVyYXJjaHksCiAgICAgLy8gYWxsb3cgdGhlIHBsYXRmb3JtIHRvIG1h
a2UgYSBmaW5hbCBkZWNpc2lvbiBhYm91dCBpdC4KICAgICBpZiAodGh1bWIuYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQotICAgICAgICBjYWNoZS0+cmVtb3ZlKHRodW1iLmF4T2JqZWN0SUQoKSk7
CisgICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIub2JqZWN0SUQoKSk7CiAgICAgZWxzZQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmdGh1bWIpOwogfQpAQCAtMTAwLDcgKzEwMCw3IEBAIGNv
bnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1CiAgICAgcmV0dXJuIGlucHV0RWxlbWVudCgpLT5nZXRBdHRy
aWJ1dGUoYXR0cmlidXRlKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAg
aWYgKG1fY2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVChtX2NoaWxkcmVuLnNpemUo
KSA9PSAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmgKaW5kZXggNDY5ZDIxNzAxYmVjNTNhZjE5ZDk3YmY0NWUwZWVlMWJkYzIyNmM0
NS4uOTFjNzA5MjVlNmQ5MmY1MzJlYTJhMmZiYzc3MjM5ZGQ3OGEyZGRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9CiAgICAg
Ym9vbCBpc1NsaWRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU1LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgZmxvYXQgdmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAppbmRleCBjM2NjMDgyNmE5M2Y2MmFj
YTQ2ZTY2ZjMyNTNiMzNkNzM4YzM2YWVjLi43ZDBhNmE0M2FhNTEwOTE2OWRiZWJhYTQyNGM2ZGY5
NGI3ZjNkYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbjo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKQogCiBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6fkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCkgPSBkZWZhdWx0OwogICAgIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmluY3JlbWVudEJ1
dHRvbigpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRC
dXR0b24oKQogewogICAgIGlmICghbV9oYXZlQ2hpbGRyZW4pCiAgICAgICAgIGFkZENoaWxkcmVu
KCk7CkBAIC01NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjppbmNyZW1lbnRCdXR0b24oKQogICAgIHJldHVybiBtX2NoaWxkcmVuWzBdLmdl
dCgpOwogfQogICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bjo6ZGVjcmVtZW50QnV0dG9uKCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b246OmRlY3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAg
ICAgYWRkQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAppbmRleCA2M2Q1ZjM3ZWVlZmFlZDNiNjQ5OTdh
NjE1MGU2MWRhMTE3NDIyYWRiLi4wMGU5MGEyOTNmNDc5ZTA4OTU3NmQ5Y2E4YTQxNjMxMjFlNDFi
NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTcGluQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5oCkBAIC0zNyw4ICszNyw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHNldFNwaW5CdXR0b25FbGVtZW50KFNwaW5CdXR0b25FbGVtZW50KiBzcGluQnV0dG9uKSB7
IG1fc3BpbkJ1dHRvbkVsZW1lbnQgPSBzcGluQnV0dG9uOyB9CiAgICAgCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogaW5jcmVtZW50QnV0dG9uKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
ZGVjcmVtZW50QnV0dG9uKCk7CisgICAgQVhDb3JlT2JqZWN0KiBpbmNyZW1lbnRCdXR0b24oKTsK
KyAgICBBWENvcmVPYmplY3QqIGRlY3JlbWVudEJ1dHRvbigpOwogCiAgICAgdm9pZCBzdGVwKGlu
dCBhbW91bnQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGY1YmY1YjJmNjBmZjg1N2M4YTZkZTkyNWEwYmQz
MGY3Y2Q4NmZlMDEuLjI3MzFiMDc4ODZhZWY5YmMyNzU2NmI3YjE0ZThlNjRhOGFlNzAxZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1u
SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnNDb3B5ID0gbV9jb2x1bW5zOwogICAgIAogICAg
IGZvciAoY29uc3QgYXV0byYgY29sdW1uIDogY29sdW1uc0NvcHkpIHsKLSAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbj4oKmNvbHVtbikuaGVhZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3Qq
IGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmNvbHVtbikuaGVh
ZGVyT2JqZWN0KCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOwogICAgIH0K
IH0KQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm93SGVhZGVy
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5ID0gbV9yb3dzOwogICAgIAogICAgIGZvciAoY29uc3Qg
YXV0byYgcm93IDogcm93c0NvcHkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvdykuaGVhZGVyT2Jq
ZWN0KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZVJvdz4oKnJvdykuaGVhZGVyT2JqZWN0KCkpCiAgICAgICAgICAgICBoZWFk
ZXJzLmFwcGVuZChoZWFkZXIpOwogICAgIH0KIH0KQEAgLTYyMiw3ICs2MjIsNyBAQCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsKiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3co
dW5zaWduZWQgY29sdW1uLAogICAgICAgICAvLyBjZWxsIHRvIGRldGVybWluZSB3aGljaCBpcyB0
aGUgcmlnaHQgb25lLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbEluZGV4Q291bnRlciA9IHN0
ZDo6bWluKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGlsZHJlbi5zaXplKCkpLCBjb2x1bW4gKyAx
KTsgY29sSW5kZXhDb3VudGVyID4gMDsgLS1jb2xJbmRleENvdW50ZXIpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGNvbEluZGV4ID0gY29sSW5kZXhDb3VudGVyIC0gMTsKLSAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhdLmdldCgpOworICAg
ICAgICAgICAgQVhDb3JlT2JqZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsK
ICAgICAgICAgICAgIEFTU0VSVChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpKTsK
ICAgICAgICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNoaWxkKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDliYmFkMTEyOTZlNWUx
YzcwNTkzNzI1YjYyOTg0NmZhOTU2YjQ0MDAuLmRiNTA0MWM5Mzg5NzkyOGZiMWQ3NDRkNzdkYjVl
YTdmNjlhYWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIGhlYWRlcnMpCiAKIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDo6cGFyZW50Um93KCkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9
IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Um93PigqcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAppbmRl
eCAzY2I3ZjE1YTIxNzZlNDQ1ZGZjODYzZDhjYjEyMmYzNmQxMmYyNDZiLi5mZGM2N2Y4YWMxNTZh
NWFkYmJhYTYxMzU3NmI4NjgyYWU2MjcxNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBAIC03MCw3
ICs3MCw3IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjplbGVtZW50UmVj
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbHVtblJlY3Q7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVj
dCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQogewogICAgIGlmICgh
bV9wYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKaW5kZXggOWZj
ZGI1Y2YzNmUyNzk2M2FlODIwMGIyNDAwYzM3M2JiNWUzOThjNS4uNTY5N2NjMWM4MmYyZDhjYTA4
YjczZGVjZDc3NjI2OGRmNDQzODYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCkBAIC00MCw5ICs0MCw5IEBA
IGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbiBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bigpOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwotICAg
ICAgICAKKworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisKICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29s
dW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5k
ZXggYmI5ZDllMDRjNGRmNDg2YWRiNzU2YzMzYWRlZjFkYTA1NTk5MzI3Zi4uN2I0OWMyOGJjMGNk
Njg0MTQyNmQ2N2RhNTM0ODJjMTMwYzNiNjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTEwLDcgKzEx
MCw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpwYXJlbnRU
YWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCitBWENvcmVPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVSb3coKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xMjAsNyArMTIwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKICAgICAvLyBjaGVjayB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcm93IHRvIHNlZSBpZiBp
dCBpcyBhIFRIIGVsZW1lbnQKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0gcm93Q2hp
bGRyZW5bMF0uZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBjZWxsID0gcm93Q2hpbGRyZW5bMF0u
Z2V0KCk7CiAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2VsbCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggOTg4ZTI0NTkyMTNlNzBkNTRm
ZmVlNGNiYWI2MTIxM2JmMzUzMzEzOS4uNzliZjA1ZmZhZGQxZDg0ODlhMTMzYTM1MzgwOTdlNGFi
ZWY5Y2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKTsKIAogICAgIC8vIHJldHJpZXZlcyB0aGUgInJvdyIg
aGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBoZWFkZXJPYmplY3QoKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFy
ZW50VGFibGUoKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldFJvd0luZGV4KGludCByb3dJbmRl
eCkgeyBtX3Jvd0luZGV4ID0gcm93SW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggMjg0ZTM2ZDA4YTk4
YTJlYjM3YWQ0MmQ0MGZkNDMyNmE1MDg4MjM0NS4uZDgzYzA3NDZlMGJmNWJmNzk5ODhkMzQxMjc1
YTk2MDEzOWI3N2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnBsYXRmb3JtUGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQogICAgIG1fZGVm
ZXJyZWREZXRhY2hlZFdyYXBwZXJMaXN0LmNsZWFyKCk7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBnZXRMaXN0T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3N0
YXRpYyBBWENvcmVPYmplY3QqIGdldExpc3RPYmplY3QoQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgLy8gT25seSBsaXN0IGJveGVzIGFuZCBtZW51IGxpc3RzIHN1cHBvcnRlZCBzbyBmYXIu
CiAgICAgaWYgKCFvYmplY3QtPmlzTGlzdEJveCgpICYmICFvYmplY3QtPmlzTWVudUxpc3QoKSkK
QEAgLTEzNiwyMSArMTM2LDIxIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRMaXN0
T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIWNoaWxkcmVuLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0
T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBsaXN0T2Jq
ZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0T2JqZWN0LT5pc01lbnVM
aXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbGlzdE9iamVjdDsK
IH0KIAotc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25D
aGFuZ2UoQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhpcyBzdGF0aWMgdmFyaWFi
bGVzIGFyZSBuZWVkZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgb2xkCiAgICAgLy8gZm9jdXNlZCBv
YmplY3QgYW5kIGl0cyBhc3NvY2lhdGVkIGxpc3Qgb2JqZWN0LCBhcyBwZXIgcHJldmlvdXMKICAg
ICAvLyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBpbiBvcmRlciB0byBwcm9wZXJseSBkZWNpZGUg
d2hldGhlciB0bwogICAgIC8vIGVtaXQgc29tZSBzaWduYWxzIG9yIG5vdC4KLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBvbGRMaXN0T2JqZWN0
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+
IG9sZEZvY3VzZWRPYmplY3Q7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxBWENv
cmVPYmplY3Q+PiBvbGRMaXN0T2JqZWN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQ
dHI8QVhDb3JlT2JqZWN0Pj4gb2xkRm9jdXNlZE9iamVjdDsKIAogICAgIC8vIE9ubHkgbGlzdCBi
b3hlcyBhbmQgbWVudSBsaXN0cyBzdXBwb3J0ZWQgc28gZmFyLgogICAgIGlmICghb2JqZWN0IHx8
ICEob2JqZWN0LT5pc0xpc3RCb3goKSB8fCBvYmplY3QtPmlzTWVudUxpc3QoKSkpCkBAIC0xNjgs
NyArMTY4LDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3Qg
PSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpOwogICAgIGludCBjaGFuZ2VkSXRl
bUluZGV4ID0gc2VsZWN0LmFjdGl2ZVNlbGVjdGlvblN0YXJ0TGlzdEluZGV4KCk7CiAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0T2JqZWN0ID0gZ2V0TGlzdE9iamVjdChvYmplY3QpOwor
ICAgIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdCA9IGdldExpc3RPYmplY3Qob2JqZWN0KTsKICAg
ICBpZiAoIWxpc3RPYmplY3QpIHsKICAgICAgICAgb2xkTGlzdE9iamVjdC5nZXQoKSA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybjsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBub3Rp
ZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAg
ICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBpdGVtcyA9IGxpc3RPYmplY3QtPmNoaWxkcmVuKCk7CiAgICAgaWYgKGNoYW5nZWRJdGVtSW5k
ZXggPCAwIHx8IGNoYW5nZWRJdGVtSW5kZXggPj0gc3RhdGljX2Nhc3Q8aW50PihpdGVtcy5zaXpl
KCkpKQogICAgICAgICByZXR1cm47Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaXRlbSA9IGl0
ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOworICAgIEFYQ29yZU9iamVjdCogaXRlbSA9
IGl0ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOwogCiAgICAgLy8gRW5zdXJlIHRoZSBj
dXJyZW50IGxpc3Qgb2JqZWN0IGlzIHRoZSBzYW1lIHRoYW4gdGhlIG9sZCBvbmUgc28KICAgICAv
LyBmdXJ0aGVyIGNvbXBhcmlzb25zIG1ha2Ugc2Vuc2UuIE90aGVyd2lzZSwganVzdCByZXNldApA
QCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hh
bmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBvbGRGb2N1c2VkT2JqZWN0Lmdl
dCgpID0gaXRlbTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVhOb3RpZmljYXRpb24gbm90
aWZpY2F0aW9uKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24o
QVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7
CiAgICAgYXV0byogYXhPYmplY3QgPSBBVEtfT0JKRUNUKGNvcmVPYmplY3QtPndyYXBwZXIoKSk7
CiAgICAgaWYgKCFheE9iamVjdCkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0LCBBWAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBjb3Jl
T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGRl
c2NlbmRhbnQgPSBjb3JlT2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICBw
bGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKG51bGxwdHIsIGRlc2NlbmRhbnQt
Pm5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamUKICAgICBpZiAoIW9iamVjdCB8fCB0ZXh0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gb2Jq
ZWN0LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBvYmplY3QtPnBhcmVudE9i
amVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0gb2JqZWN0
LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBvYmplY3QtPnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZS5jcHAKaW5kZXggMTJhZTQzNWJkMTcxZWNmNmUxOTQyM2U2MGI0YWE1YjUxOTQ4ODAxOS4u
ZDMyYzgyMmFlMWM0NTIxOTY5MDZmYmZkYWFlMTk5ODQxNjc1MGQwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKQEAg
LTExNjUsNyArMTE2NSw3IEBAIHN0YXRpYyBib29sIHJvbGVJc1RleHRUeXBlKEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUpCiAgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uR3JvdXA7CiB9CiAKLXN0YXRpYyBndWludDE2IGludGVyZmFjZU1hc2tGcm9tT2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCitzdGF0aWMgZ3VpbnQxNiBpbnRlcmZh
Y2VNYXNrRnJvbU9iamVjdChBWENvcmVPYmplY3QqIGNvcmVPYmplY3QpCiB7CiAgICAgZ3VpbnQx
NiBpbnRlcmZhY2VNYXNrID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCA3
MjQ1MDI0MWE0NmM0ODNiN2FmZWViNmNhMzE4NDFkODdjMGJlMjAxLi5iMGY3M2U2YTRmYWEwY2Zj
ZWM4MTQ3M2I2ODU1NTMwOTdlNDAxZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBnaW50IHJhbmdlTGVuZ3RoRm9yT2JqZWN0KEFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iaiwgUmFuZ2UqIHJhbmdlKQogCiAgICAgLy8gQ2hlY2sgd2hldGhl
ciB0aGUgY3VycmVudCBoeXBlcmxpbmsgYmVsb25ncyB0byBhIGxpc3QgaXRlbS4KICAgICAvLyBJ
ZiBzbywgd2UgbmVlZCB0byBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBpdGVtJ3MgbWFya2Vy
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gb2JqLnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gb2JqLnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdCgpIHx8ICFwYXJlbnQtPmlzTGlzdEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIGJhc2VM
ZW5ndGg7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgZ2ludCByYW5nZUxlbmd0aEZvck9i
amVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIFJhbmdlKiByYW5nZSkKICAgICAvLyBUZWNo
bm9sb2dpZXMsIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBtZWFzdXJlIHRoZWlyIGxlbmd0aAog
ICAgIC8vIGZvciB0aG9zZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkIHRvIHRha2UgaXQgaW50byBh
Y2NvdW50CiAgICAgLy8gc2VwYXJhdGVseSAoYXMgaW4gZ2V0QWNjZXNzaWJpbGl0eU9iamVjdEZv
ck9mZnNldCkKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXJrZXJPYmogPSBwYXJlbnQtPmZp
cnN0Q2hpbGQoKTsKKyAgICBBWENvcmVPYmplY3QqIG1hcmtlck9iaiA9IHBhcmVudC0+Zmlyc3RD
aGlsZCgpOwogICAgIGlmICghbWFya2VyT2JqKQogICAgICAgICByZXR1cm4gYmFzZUxlbmd0aDsK
IApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICByZXR1cm5WYWxJZldlYktp
dEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5r
SW1wbCwgMCk7CiAKICAgICBhdXRvJiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFj
Y2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1w
bCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVj
dC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudFVuaWdu
b3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJl
bnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yMDYsNyArMjA2LDcgQEAgc3Rh
dGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGlu
ayogbGluaykKICAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNz
aWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICBhdXRvJiBjb3Jl
T2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJs
ZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsK
KyAgICBBWENvcmVPYmplY3QqIHBhcmVudFVuaWdub3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVy
biAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwCmluZGV4
IDhhMzM4M2QzZTQxZmZmNjE2YWY0Y2VmOGQzYmQzMzgzM2E2YmRmYzAuLmE3OGQ4ODMyYWE0ZDNk
ZWMzODljZTc5ZTdjMWM2ZWNhY2RmMDZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VIeXBlcnRleHQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBBdGtIeXBlcmxpbmsq
IHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0a0h5cGVydGV4dCogaHlwZXJ0ZXh0
LCBnCiAKICAgICBnaW50IGN1cnJlbnRMaW5rID0gLTE7CiAgICAgZm9yIChjb25zdCBhdXRvJiBj
aGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVDaGls
ZCA9IGNoaWxkLmdldCgpOworICAgICAgICBBWENvcmVPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxk
LmdldCgpOwogICAgICAgICBpZiAoIWNvcmVDaGlsZC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
KSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGNvcmVDaGlsZC0+d3JhcHBlcigpOwog
ICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX0hZUEVSTElOS19JTVBMKGF4T2Jq
ZWN0KSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVy
dGV4dEdldE5MaW5rcyhBdGtIeXBlcnRleHQqIGh5cGVydGV4dCkKICAgICBjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gY29y
ZShoeXBlcnRleHQpLT5jaGlsZHJlbigpOwogICAgIGdpbnQgbGlua3NGb3VuZCA9IDA7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOworICAgICAgICBBWENvcmVPYmplY3Qq
IGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOwogICAgICAgICBpZiAoIWNvcmVDaGlsZC0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGNvcmVD
aGlsZC0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKGF4T2JqZWN0ICYmIEFUS19JU19IWVBF
UkxJTktfSU1QTChheE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxl
Y3Rpb24uY3BwCmluZGV4IDE3Yjk4MDY0YWRhNmMzMDIwYjAxOGE3MmFmOTg0YmNmZmQ2OGJlZGYu
LjZlYTU3MDgxMzdiNDU3YThmNTMzNWJkZmY1Y2IzMmI3ZDdhZmVjOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VT
ZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRp
YyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uKQogICAg
IHJldHVybiAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FD
Q0VTU0lCTEUoc2VsZWN0aW9uKSk7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBs
aXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0
aW9uKQorc3RhdGljIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdEZvckNvcmVTZWxlY3Rpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbikKIHsKICAgICAvLyBPbmx5IGxpc3QgYm94
ZXMgYW5kIG1lbnUgbGlzdHMgc3VwcG9ydGVkIHNvIGZhci4KICAgICBpZiAoIWNvcmVTZWxlY3Rp
b24tPmlzTGlzdEJveCgpICYmICFjb3JlU2VsZWN0aW9uLT5pc01lbnVMaXN0KCkpCkBAIC02Nywy
MSArNjcsMjEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPYmplY3RGb3JDb3Jl
U2VsZWN0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUKICAgICBpZiAoIWNoaWxkcmVuLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBs
aXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0T2JqZWN0LT5p
c01lbnVMaXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
bGlzdE9iamVjdDsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZyb21M
aXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIEFYQ29yZU9i
amVjdCogb3B0aW9uRnJvbUxpc3QoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgp
CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0
aW9uKTsKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgaW5kZXggPCAwKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIE5lZWQgdG8gc2VsZWN0IHRoZSBwcm9wZXIgbGlzdCBvYmpl
Y3QgZGVwZW5kaW5nIG9uIHRoZSB0eXBlLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RP
YmplY3QgPSBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihjb3JlU2VsZWN0aW9uKTsKKyAgICBB
WENvcmVPYmplY3QqIGxpc3RPYmplY3QgPSBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihjb3Jl
U2VsZWN0aW9uKTsKICAgICBpZiAoIWxpc3RPYmplY3QpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb25G
cm9tTGlzdChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZyb21TZWxl
Y3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCitzdGF0aWMgQVhDb3Jl
T2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50
IGluZGV4KQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3Jl
KHNlbGVjdGlvbik7CiAgICAgaWYgKCFjb3JlU2VsZWN0aW9uIHx8ICFjb3JlU2VsZWN0aW9uLT5p
c0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSB8fCBpbmRleCA8IDApCkBAIC0xMjAsNyArMTIw
LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25BZGRTZWxlY3Rp
b24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGcKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24pCiAg
ICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9
IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaW5kZXgpOworICAgIEFYQ29yZU9iamVjdCogb3B0
aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CiAgICAgaWYgKG9wdGlvbiAm
JiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgfHwgY29yZVNlbGVjdGlvbi0+aXNNZW51TGlz
dCgpKSkgewogICAgICAgICBvcHRpb24tPnNldFNlbGVjdGVkKHRydWUpOwogICAgICAgICByZXR1
cm4gb3B0aW9uLT5pc1NlbGVjdGVkKCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIEF0a09i
amVjdCogd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvblJlZlNlbGVjdGlvbihBdGtTZWxlY3Rpb24q
IHNlbGVjdGlvbiwKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfU0VMRUNUSU9OKHNlbGVj
dGlvbiksIG51bGxwdHIpOwogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxp
ZChXRUJLSVRfQUNDRVNTSUJMRShzZWxlY3Rpb24pLCBudWxscHRyKTsKIAotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpbmRl
eCk7CisgICAgQVhDb3JlT2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tU2VsZWN0aW9uKHNlbGVj
dGlvbiwgaW5kZXgpOwogICAgIGlmIChvcHRpb24pIHsKICAgICAgICAgYXV0byogY2hpbGQgPSBv
cHRpb24tPndyYXBwZXIoKTsKICAgICAgICAgZ19vYmplY3RfcmVmKGNoaWxkKTsKQEAgLTE5Niw3
ICsxOTYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbklzQ2hp
bGRTZWxlY3RlZChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbgogICAgIGlmICghY29yZVNlbGVjdGlv
bikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0
aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CisgICAgQVhDb3JlT2JqZWN0
KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGluZGV4KTsKICAgICBpZiAob3B0
aW9uICYmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8fCBjb3JlU2VsZWN0aW9uLT5pc01l
bnVMaXN0KCkpKQogICAgICAgICByZXR1cm4gb3B0aW9uLT5pc1NlbGVjdGVkKCk7CiAKQEAgLTIx
Miw3ICsyMTIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvblJl
bW92ZVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbgogICAgIGlmICghY29yZVNlbGVj
dGlvbikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGluZGV4KTsKKyAgICBBWENv
cmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpbmRleCk7
CiAgICAgaWYgKG9wdGlvbiAmJiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgfHwgY29yZVNl
bGVjdGlvbi0+aXNNZW51TGlzdCgpKSkgewogICAgICAgICBvcHRpb24tPnNldFNlbGVjdGVkKGZh
bHNlKTsKICAgICAgICAgcmV0dXJuICFvcHRpb24tPmlzU2VsZWN0ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCA0OTZlMjYyMjg4NWM3OGQ1MDViZTA0MThjZmZm
NGM2ZDNmOTBjZDAxLi5iMjcxNWM3YzUzY2FlOWQwNGFmM2U0YzBmOTNhZjk3NWY2M2RiNTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAg
c3RhdGljIEludFJlY3QgdGV4dEV4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFydE9mZnNl
dCwgZ2ludCBsZW5ndGgsIEF0a0Nvb3IKICAgICByZXR1cm4gZXh0ZW50czsKIH0KIAotc3RhdGlj
IGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0oY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KQorc3RhdGljIGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0oY29uc3Qg
QVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdGhlIG9m
ZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGluCiAgICAgLy8gTGVmdC1Uby1SaWdodCB0
ZXh0LCBzaW5jZSB3ZSBleHBvc2UgaXQgdG9nZXRoZXIgd2l0aCB0aGUgdGV4dC4KQEAgLTM0NSw3
ICszNDUsNyBAQCBzdGF0aWMgaW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp
bnQgd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCwgaW50IG9mZnNldCkKK3N0YXRpYyBpbnQgd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNv
bnN0IEFYQ29yZU9iamVjdCogb2JqZWN0LCBpbnQgb2Zmc2V0KQogewogICAgIGlmICghb2JqZWN0
LT5pc0xpc3RJdGVtKCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CkBAIC05OTAsNyArOTkwLDcg
QEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRleHRHZXRDYXJldE9mZnNldChBdGtUZXh0
KiB0ZXh0KQogCiAgICAgLy8gY29yZU9iamVjdCBpcyB0aGUgdW5pZ25vcmVkIG9iamVjdCB3aG9z
ZSBvZmZzZXQgdGhlIGNhbGxlciBpcyByZXF1ZXN0aW5nLgogICAgIC8vIGZvY3VzZWRPYmplY3Qg
aXMgdGhlIG9iamVjdCB3aXRoIHRoZSBjYXJldC4gSXQgaXMgbGlrZWx5IGlnbm9yZWQgLS0gdW5s
ZXNzIGl0J3MgYSBsaW5rLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBj
b3JlKHRleHQpOworICAgIEFYQ29yZU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAg
ICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAppbmRleCBhM2I4NzFiNDRjYTAwYTZhMDc1
NmI3N2RiYzIxZGY1NGJjZGFjM2Q5Li41NjM5MmMwYmQ4M2QxYTJhN2NiNzZhNzU0YjllYjg4M2Yy
MGNmZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgYm9vbCBzZWxl
Y3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlz
aWJsZVNlbGVjdGlvbiYKICAgICAgICAgJiYgKCZyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBs
YXN0RGVzY2VuZGFudCB8fCByYW5nZS0+c3RhcnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0KTsKIH0K
IAotQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25v
cmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlZmVyZW5jZU9iamVjdCwgaW50JiBvZmZzZXQpCitB
WENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBWENvcmVP
YmplY3QqIHJlZmVyZW5jZU9iamVjdCwgaW50JiBvZmZzZXQpCiB7CiAgICAgLy8gSW5kaWNhdGlv
biB0aGF0IHNvbWV0aGluZyBib2d1cyBoYXMgdHJhbnNwaXJlZC4KICAgICBvZmZzZXQgPSAtMTsK
QEAgLTE5OCw3ICsxOTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5k
Q2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIExvb2sgZm9yIHRoZSBhY3R1YWwgKG5vdCBpZ25vcmluZyBh
Y2Nlc3NpYmlsaXR5KSBzZWxlY3RlZCBvYmplY3QuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Zmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmb2N1c2VkT2JqZWN0OworICAgIEFYQ29yZU9iamVjdCog
Zmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmb2N1c2VkT2JqZWN0OwogICAgIGlmIChmaXJzdFVuaWdu
b3JlZFBhcmVudC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAgICAgICBmaXJzdFVuaWdu
b3JlZFBhcmVudCA9IGZpcnN0VW5pZ25vcmVkUGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKICAgICBpZiAoIWZpcnN0VW5pZ25vcmVkUGFyZW50KQpAQCAtMjI0LDcgKzIyNCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBpdCB0byBi
ZSByZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9mCiAgICAgICAgIC8vIHJlZmVyZW5jZSwgbm90IGp1
c3QgdG8gdGhlIGZvY3VzZWQgb2JqZWN0ICh3aGljaCBjb3VsZCBoYXZlCiAgICAgICAgIC8vIHBy
ZXZpb3VzIHNpYmxpbmdzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdG9vKS4K
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGaXJzdENoaWxkID0gcmVmZXJlbmNlT2Jq
ZWN0LT5maXJzdENoaWxkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogYXhGaXJzdENoaWxkID0g
cmVmZXJlbmNlT2JqZWN0LT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmIChheEZpcnN0Q2hpbGQp
CiAgICAgICAgICAgICBzdGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuaAppbmRleCBmNmFjNzY0NjUxYzQ4MmJlYmU1MmZmNjRhYjAwMTFjNDc5YWVmM2Zj
Li5hMmZhY2FmODUyOGRhNDc1Y2Y5ZjdkNTdmZjQxZjg3M2M0NjM4NTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGls
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQVhDb3JlT2JqZWN0OwogY2xhc3MgQWNjZXNzaWJp
bGl0eU9iamVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAt
NjYsNiArNjcsNiBAQCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3QqKTsKIAogYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mKTsK
IAotV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zm
c2V0VW5pZ25vcmVkKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBpbnQmIG9mZnNldCk7
CitXZWJDb3JlOjpBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdu
b3JlZChXZWJDb3JlOjpBWENvcmVPYmplY3QqLCBpbnQmIG9mZnNldCk7CiAKICNlbmRpZiAvLyBF
TkFCTEUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IDY4N2YxYWVkZjc4ODE2YWUzMTVhZDg2
ZmRmMWU3YzczZjlkMDVlYWIuLmRmNThlZmE3NjUzZjY4MDUzMWM4Y2U5MzkzOWU3YjA2NjMxNzM4
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0
Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmpl
Y3RDYWNoZUlPUy5tbQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3
cmFwcGVyLmdldCgpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3Rp
ZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENv
cmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewogICAgIGlmICgh
b2JqKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQppbmRleCA0ZGUzOTI0MDJj
OTU4NzViNmQ1ZGFjZWNkOTZiMjFhZTA5NTA0NzIyLi43ZTA1YWNmZmZjOWFlYTdmZDI0YWY2NDlk
OTdhN2Q0OGE2OTJkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KQEAgLTQ3LDcgKzQ3LDcgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5U
aXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KikKK3Zv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9i
amVjdCopCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmluZGV4IGJjY2YzN2U0ZjRiNjJkNDA5MTMxNGRjNzZkYTVhZDdkZWRjODYzOTYuLjg3YmZiOWUx
OTMwOGRhZTBjYWEwOThkYTY2OWFjOTUyMGVjZTI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJp
bGl0eU8KICAgICAgICAgaWYgKFt3cmFwcGVyIGlzQXR0YWNobWVudF0gJiYgIVtbd3JhcHBlciBh
dHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUlzSWdub3JlZF0pCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmpl
Y3QgPSBvYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBBWENvcmVPYmpl
Y3QqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAg
ICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTM4OCw3ICsz
ODgsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlV
bmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAgICAgICByZXR1cm4gbmlsOwogICAg
IAogICAgIC8vIFRyeSBhIGZ1enp5IGhpdCB0ZXN0IGZpcnN0IHRvIGZpbmQgYW4gYWNjZXNzaWJs
ZSBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UgKmF4T2JqZWN0ID0g
bnVsbHB0cjsKKyAgICBBWENvcmVPYmplY3QgKmF4T2JqZWN0ID0gbnVsbHB0cjsKICAgICB7CiAg
ICAgICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9i
amVjdENhY2hlKCkpOwogICAgICAgICBheE9iamVjdCA9IG1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5
SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgc3RhdGljIHZv
aWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5n
ICpzdHJpbmcpCiAgICAgCiAgICAgdW5zaWduZWQgY29sdW1uUmFuZ2VJbmRleCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb2x1bW5SYW5nZS5maXJzdCk7CiAgICAgaWYgKGNvbHVtblJhbmdlSW5k
ZXggPCBjb2x1bW5IZWFkZXJzLnNpemUoKSkgewotICAgICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gY29sdW1uSGVhZGVyID0gY29sdW1uSGVhZGVyc1tjb2x1bW5SYW5nZS5maXJzdF07
CisgICAgICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNvbHVtbkhlYWRlciA9IGNvbHVtbkhlYWRl
cnNbY29sdW1uUmFuZ2UuZmlyc3RdOwogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciogd3JhcHBlciA9IGNvbHVtbkhlYWRlci0+d3JhcHBlcigpOwogICAgICAgICBpZiAod3JhcHBl
cikKICAgICAgICAgICAgIFtoZWFkZXJzIGFkZE9iamVjdDp3cmFwcGVyXTsKQEAgLTE2NjQsNyAr
MTY2NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmlu
ZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVy
IGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwogICAgIAogICAgIC8vIEFz
IGxvbmcgYXMgdGhlcmUncyBhIHBhcmVudCB3cmFwcGVyLCB0aGF0J3MgdGhlIGNvcnJlY3QgY2hh
aW4gdG8gY2xpbWIuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpOyAKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IG1f
b2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAocGFyZW50KQogICAgICAg
ICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAKQEAgLTE4MDAsNyArMTgwMCw3IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0
cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gSWYgdGhpcyBzdGF0
aWMgdGV4dCBpbnNpZGUgb2YgYSBsaW5rLCBpdCBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyBsaW5r
ZWQgZWxlbWVudC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7
CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7CiAgICAgaWYgKG1fb2JqZWN0
LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCAmJiBtX29iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQogICAgICAgICBlbGVtZW50ID0g
bV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmNwcAppbmRleCBkOGRiYjlmMmM5N2M4YmNmZGY3ODE1OTMzYTRhZTE5YmVmZjA3ZGIy
Li43OTM5Mjk5NTFkZDJkYzZhNDAxYzQ1ODI2Njg2YWVlMjM5YTczYjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAKQEAgLTk4LDE5ICs5OCwxOSBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlTm9kZTo6c2V0VHJlZUlkZW50aWZpZXIoQVhJc29sYXRlZFRyZWVJRCB0cmVlSWRlbnRpZmll
cikKICAgICAgICAgbV9jYWNoZWRUcmVlID0gdHJlZTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QK
K0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkgY29u
c3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2VkRWxlbWVudCA9IHRyZWUoKS0+Zm9jdXNlZFVJRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gZm9jdXNlZEVsZW1lbnQuZ2V0KCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xh
dGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0CitBWENv
cmVPYmplY3QqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJlZSgpLT5ub2RlRm9ySUQocGFyZW50KCkpLmdl
dCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5v
ZGU6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FY
Q29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFyZWxhdGl2ZUZyYW1lKCkuY29u
dGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmgKaW5kZXggOTM0ZDYzZjRhOWEyMzFlOWY3MmY4M2U5YjViZmM0NjBiNDQ3NzcwOS4u
YzM1NDZmYmU4Mjc1MmU5OWVmYWE3ZWRkZmE2Mjc2NzZkNTQyYTYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogCi1jbGFzcyBB
WElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlTm9kZT4gewor
Y2xhc3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFYQ29yZU9iamVjdCwgcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlTm9kZT4gewogCiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4X3QgewpAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlTm9kZShjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Jik7CiAgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlRGF0YShjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Jik7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFY
Q29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVycmlkZSB7
IH0KIAogICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZWRpYUNvbnRyb2xMYWJl
bCk7IH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNJbWFnZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNJbWFnZSk7IH0KICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGaWxlVXBsb2Fk
QnV0dG9uKTsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBY2Nlc3Np
YmlsaXR5SWdub3JlZCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBwYXJl
bnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVP
YmplY3QqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNUcmVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWUpOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c1RyZWVJdGVtKTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2Nyb2xsYmFyKTsgfQpA
QCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9CiAgICAgU3RyaW5nIGhlbHBUZXh0QXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SGVscFRleHQpOyB9CiAgICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6VGl0bGUpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogZm9j
dXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogZm9jdXNl
ZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdXNpbmcgQXR0cmlidXRlVmFsdWVW
YXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2ln
bmVkLCBkb3VibGUsIE9wdGlvbmFsPEZsb2F0UmVjdD4+OwogICAgIHZvaWQgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCYmLCBib29sIHNob3VsZFJlbW92
ZSA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDJmNzVmOTY1MDhkMDcyMWM4NDAyMDc3NGIyMjMzMTQ3
NjhmNDg2YzYuLmM5YTg5M2JjMzA5OTZkOTlmZTQ1Y2IxYjcyMTllMzZhYzczYTBmZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1h
Yy5tbQpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIEFYUG9zdE5vdGlmaWNhdGlvbldp
dGhVc2VySW5mbyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqb2JqZWN0LCBOCiAgICAgTlNB
Y2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QsIG5vdGlmaWNh
dGlvbiwgdXNlckluZm8pOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFY
Q29yZU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYg
KCFvYmopCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCmluZGV4IDZiOTU1MDIy
ZWQzY2RmZGU0ZWY5MGMyMWE2ZjUxMDA0MWQwNjRlNjIuLjJjZGJjNzNhYjg5OGJmYjVjMzJlZWZl
YjVjN2RhYmM0NjYyMTlhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtNDMsNyArNDMsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQoKQogICAgICAgICBv
dmVycmlkZUF0dGFjaG1lbnRQYXJlbnQobnVsbHB0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50
KEFYQ29yZU9iamVjdCogcGFyZW50KQogewogICAgIGlmICghaXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKaW5kZXgg
ZmZlZDg1NWM4NGRkYzhmYzJkOWZkNWU0MWVlYWVkZWIxMDc0NzE3ZS4uODg1OGJlYTNkMDg3YjFi
YjYyNjVkNzg3ZmQ4ODA1OGQ3MTI2MmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogLSAo
Qk9PTCl1cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7CiAKIC8vIFRoaXMgY2FuIGJlIGVpdGhlciBh
biBBY2Nlc3NpYmlsaXR5T2JqZWN0IG9yIGFuIEFYSXNvbGF0ZWRUcmVlTm9kZQotLSAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhCYWNraW5nT2JqZWN0OworLSAoV2Vi
Q29yZTo6QVhDb3JlT2JqZWN0KilheEJhY2tpbmdPYmplY3Q7CiAKIC8vIFRoZXNlIGFyZSBwcmUt
Zml4ZWQgd2l0aCBiYXNlIHNvIHRoYXQgQXBwS2l0IGRvZXMgbm90IGVuZCB1cCBjYWxsaW5nIGlu
dG8gdGhlc2UgZGlyZWN0bHkgKGJ5cGFzc2luZyBzYWZldHkgY2hlY2tzKS4KIC0gKE5TU3RyaW5n
ICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQppbmRleCBkYWYzNGYxNTBmNTdhMzcyMjE3MTdhNmUwYTIyYTFhYmJjNWY1ZTY0
Li5mYTg5YjZhZDk4MDkzYmRmN2ExODU3Zjk2N2IwNzAxMjlkYTYyNTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGlj
IE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGkKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLXN0YXRpYyB2b2lkIGFk
ZENoaWxkVG9BcnJheShBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlJiBjaGlsZCwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBhcnJheSkKK3N0YXRpYyB2b2lkIGFkZENoaWxkVG9BcnJheShB
WENvcmVPYmplY3QmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5KQogewog
ICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICp3cmFwcGVyID0gY2hpbGQud3JhcHBl
cigpOwogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2htZW50IHZpZXcgaW5zdGVh
ZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVudCwKQEAgLTMwNiw3ICsz
MDYsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZAogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgbV9vYmplY3QgPSBheE9iamVjdDsKLSAgICBfaWRlbnRpZmllciA9IG1fb2JqZWN0LT5heE9i
amVjdElEKCk7CisgICAgX2lkZW50aWZpZXIgPSBtX29iamVjdC0+b2JqZWN0SUQoKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtMzg2LDcgKzM4Niw3IEBAIE5TQXJyYXkgKmNvbnZlcnRUb05T
QXJyYXkoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkCiAgICAgcmV0dXJuIF9heEJhY2tpbmdPYmplY3QtPnRpdGxlQXR0cmlidXRlVmFsdWUoKTsK
IH0KIAotLSAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhCYWNraW5n
T2JqZWN0CistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWF4QmFja2luZ09iamVjdAogewogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgaWYgKF9BWFVJRWxlbWVu
dFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJlYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMDE1MGZjYWU3YWZkMTE1Nzg1NWUwNjZhMzcwNTRj
YzU2N2U4YjQ5My4uYzU3MDk0OWM1NjBiNWZhMTFiYzQ0MzAwOTBlMjI1M2M2OTVjOGUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTI2NjcsMTUgKzI2Njcs
MTUgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIAogICAg
ICAgICAvLyBUcmVlIGl0ZW0gKGNoYW5nZWQgdG8gQVhSb3dzKSBjYW4gb25seSByZXBvcnQgdGhl
IHRyZWUgKEFYT3V0bGluZSkgYXMgaXRzIHBhcmVudC4KICAgICAgICAgaWYgKF9heEJhY2tpbmdP
YmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNr
aW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKTsKKyAgICAgICAgICAg
IGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhcmVu
dC0+aXNUcmVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIo
KTsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdEludGVyZmFj
ZVVuaWdub3JlZCgpOworICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0SW50ZXJmYWNl
VW5pZ25vcmVkKCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmICghcGFyZW50KQogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAgICAgCkBAIC0yODYxLDE0ICsyODYxLDE0IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAKICAgICAgICAgLy8gcmFkaW8gZ3Jv
dXBzIHJldHVybiB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uIGFzIHRoZSBBWFZhbHVlCiAgICAg
ICAgIGlmIChtX29iamVjdC0+aXNSYWRpb0dyb3VwKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJhZGlvQnV0dG9uID0gbV9vYmplY3QtPnNlbGVjdGVkUmFkaW9CdXR0b24o
KTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogcmFkaW9CdXR0b24gPSBtX29iamVjdC0+c2Vs
ZWN0ZWRSYWRpb0J1dHRvbigpOwogICAgICAgICAgICAgaWYgKCFyYWRpb0J1dHRvbikKICAgICAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJuIHJhZGlvQnV0dG9uLT53
cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX29iamVjdC0+aXNU
YWJMaXN0KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYkl0ZW0gPSBt
X29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIHRh
Ykl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CiAgICAgICAgICAgICBpZiAoIXRh
Ykl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiB0
YWJJdGVtLT53cmFwcGVyKCk7CkBAIC0zMDYzLDcgKzMwNjMsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGNvbHVtbi5jaGlsZHJlbigpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGNvbHVtbi5oZWFkZXJPYmpl
Y3QoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogaGVhZGVyID0gY29sdW1uLmhlYWRlck9i
amVjdCgpOwogICAgICAgICAgICAgaWYgKCFoZWFkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAgICAgICAgIHJldHVybiBoZWFkZXItPndyYXBwZXIoKTsKQEAgLTMxNjgsNyAr
MzE2OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfSBlbHNlIGlmIChpczxBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJvdyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdz4oKm1f
b2JqZWN0KS5kaXNjbG9zZWRCeVJvdygpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0KiByb3cg
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkuZGlzY2xvc2Vk
QnlSb3coKTsKICAgICAgICAgICAgIGlmICghcm93KQogICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgICAgICAgICByZXR1cm4gcm93LT53cmFwcGVyKCk7CkBAIC0zNTExLDcgKzM1MTEs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAKICAgICBfYXhCYWNraW5nT2JqZWN0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNz
YXJ5KCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYXhPYmplY3QgPSBfYXhC
YWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOworICAg
IEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBfYXhCYWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5
SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwogICAgIGlmIChheE9iamVjdCkgewogICAgICAgICBp
ZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFj
aG1lbnRWaWV3XSkKICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRh
Y2htZW50Vmlld107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dp
bi9BWE9iamVjdENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2lu
L0FYT2JqZWN0Q2FjaGVXaW4uY3BwCmluZGV4IDQ5MDlhNmIyMjA4Y2Q5YmU1OGQzNmMzMzE2NTZk
YmE1NDJmY2RhNjYuLjMxMmIwMjA4NDU3M2ZjNjA0ODc5NWE1MWU4NDAyMzZiYjI4NTdmZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2Fj
aGVXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlU2Ny
b2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKQogICAgIHBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9t
Tm9kZShhbmNob3JOb2RlKSwgQVhTY3JvbGxlZFRvQW5jaG9yKTsKIH0KIAotdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90
aWZpY2F0aW9uKQogewogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CkBAIC0xMTcsMTAg
KzExNywxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpYwogICAgIC8vIG5lZ2F0ZSB0aGUgQVhJ
RCBzbyB3ZSBrbm93IHRoYXQgdGhlIGNhbGxlciBpcyBwYXNzaW5nIHRoZSBJRCBvZiBhbgogICAg
IC8vIGVsZW1lbnQsIG5vdCB0aGUgaW5kZXggb2YgYSBjaGlsZCBlbGVtZW50LgogCi0gICAgQVNT
RVJUKG9iai0+YXhPYmplY3RJRCgpID49IDEpOwotICAgIEFTU0VSVChvYmotPmF4T2JqZWN0SUQo
KSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPExPTkc+OjptYXgoKSk7CisgICAgQVNTRVJUKG9iai0+
b2JqZWN0SUQoKSA+PSAxKTsKKyAgICBBU1NFUlQob2JqLT5vYmplY3RJRCgpIDw9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8TE9ORz46Om1heCgpKTsKIAotICAgIE5vdGlmeVdpbkV2ZW50KG1zYWFFdmVu
dCwgcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCksIE9CSklEX0NMSUVOVCwgLXN0
YXRpY19jYXN0PExPTkc+KG9iai0+YXhPYmplY3RJRCgpKSk7CisgICAgTm90aWZ5V2luRXZlbnQo
bXNhYUV2ZW50LCBwYWdlLT5jaHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKSwgT0JKSURfQ0xJ
RU5ULCAtc3RhdGljX2Nhc3Q8TE9ORz4ob2JqLT5vYmplY3RJRCgpKSk7CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmls
aXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJ
RWxlbWVudENoYW5nZWQoTm9kZSosIE5vZGUqIG5ld0ZvY3VzZQogICAgIGlmICghcGFnZSB8fCAh
cGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBmb2N1c2VkVUlFbGVtZW50
Rm9yUGFnZShwYWdlKTsKKyAgICBBWENvcmVPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBmb2N1c2Vk
VUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKICAgICBpZiAoIWZvY3VzZWRPYmplY3QpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVT
ZWxlY3Rpb25BdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rp
b25BdGsuY3BwCmluZGV4IDI5MzU0NzNhMjgxYmEwOWE2YjQ3MjQ0OWVjMmFlNzExZjFjZWQ5NjYu
LjI3MmUzNGJlYjc5MjY0ZWI2NzFkYzlhODZkN2FkYTg3NTZiZTcyYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBlbWl0VGV4dFNlbGVj
dGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uLCBpbnQgb2Zmc2V0KQorc3RhdGljIHZvaWQgZW1pdFRleHRTZWxlY3Rpb25DaGFu
Z2UoQVhDb3JlT2JqZWN0KiBvYmplY3QsIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uLCBpbnQg
b2Zmc2V0KQogewogICAgIGF1dG8qIGF4T2JqZWN0ID0gb2JqZWN0LT53cmFwcGVyKCk7CiAgICAg
aWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX1RFWFQoYXhPYmplY3QpKQpAQCAtNTIsMTIgKzUyLDEy
IEBAIHN0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCwgVmlzaWJsZVNlbGVjdGlvCiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShheE9iamVjdCwgInRleHQtc2VsZWN0aW9uLWNoYW5nZWQiKTsKIH0KIAotc3RhdGljIHZvaWQg
bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYmIG9i
amVjdCkKK3N0YXRpYyB2b2lkIG1heWJlRW1pdFRleHRGb2N1c0NoYW5nZShSZWZQdHI8QVhDb3Jl
T2JqZWN0PiYmIG9iamVjdCkKIHsKICAgICAvLyBUaGlzIHN0YXRpYyB2YXJpYWJsZSBpcyBuZWVk
ZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgb2xkIG9iamVjdAogICAgIC8vIGFzIHBlciBwcmV2aW91
cyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBpbiBvcmRlciB0byBwcm9wZXJseQogICAgIC8vIGRl
Y2lkZSB3aGV0aGVyIHRvIGVtaXQgc29tZSBzaWduYWxzIG9yIG5vdC4KLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBvbGRPYmplY3Q7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvbGRPYmplY3Q7CiAK
ICAgICAvLyBFbnN1cmUgdGhlIG9sZE9iamVjdCBiZWxvbmdzIHRvIHRoZSBzYW1lIGRvY3VtZW50
IHRoYXQgdGhlCiAgICAgLy8gY3VycmVudCBvYmplY3Qgc28gZnVydGhlciBjb21wYXJpc29ucyBt
YWtlIHNlbnNlLiBPdGhlcndpc2UsCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBGcmFtZVNlbGVj
dGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZShjb25zdCBBWFRleHRT
dGF0ZUNoYW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IG9mZnNldDsKLSAgICBSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqZWN0ID0gb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0
VW5pZ25vcmVkKGFjY2Vzc2liaWxpdHlPYmplY3QsIG9mZnNldCk7CisgICAgUmVmUHRyPEFYQ29y
ZU9iamVjdD4gb2JqZWN0ID0gb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKGFj
Y2Vzc2liaWxpdHlPYmplY3QsIG9mZnNldCk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAxY2U1YzlhODAxNGQxMmJh
ODRkZjM0OGM3ZmY0OGVmMTJhYzQ4OTJjLi5lMWUyM2E3NmE0ZDk0NmY5ZWEyN2Y2MjZhMjJiMmNj
Nzc4YTk0ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjksNyArMjksNyBA
QAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2Rl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC01Myw3
ICs1Myw3IEBAIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6SW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0KEluc3BlY3RvckF1CiB7CiB9CiAKLXN0YXRpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKE5vZGUmIG5vZGUpCitzdGF0
aWMgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKE5vZGUmIG5vZGUpCiB7
CiAgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAg
ICBBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CkBAIC03MSw3ICs3MSw3IEBA
IEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8Tm9kZT4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmdldEVsZW1lbnRzQnlDCiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CiAK
ICAgICBmb3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoaXM8Q29udGFp
bmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIp
IDogZG9jdW1lbnQpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKEFY
Q29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKGVsZW1lbnQp
KSB7CiAgICAgICAgICAgICBpZiAoYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpID09IHJv
bGUpCiAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICB9CkBA
IC04NCwxNyArODQsMTcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEFjdGl2ZURlc2NlbmRhbnQKIHsKICAgICBFUlJPUl9J
Rl9OT19BQ1RJVkVfQVVESVQoKTsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
amVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKLSAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQgPSBheE9iamVjdC0+YWN0aXZlRGVz
Y2VuZGFudCgpKQorICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBhY3RpdmVE
ZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBhY3RpdmVEZXNjZW5kYW50LT5ub2RlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QmIHBh
cmVudE9iamVjdCwgVmVjdG9yPFJlZlB0cjxOb2RlPj4mIGNoaWxkTm9kZXMpCitzdGF0aWMgdm9p
ZCBhZGRDaGlsZHJlbihBWENvcmVPYmplY3QmIHBhcmVudE9iamVjdCwgVmVjdG9yPFJlZlB0cjxO
b2RlPj4mIGNoaWxkTm9kZXMpCiB7Ci0gICAgZm9yIChjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4mIGNoaWxkT2JqZWN0IDogcGFyZW50T2JqZWN0LmNoaWxkcmVuKCkpIHsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkT2JqZWN0IDogcGFyZW50T2JqZWN0LmNoaWxkcmVuKCkpIHsK
ICAgICAgICAgaWYgKE5vZGUqIGNoaWxkTm9kZSA9IGNoaWxkT2JqZWN0LT5ub2RlKCkpCiAgICAg
ICAgICAgICBjaGlsZE5vZGVzLmFwcGVuZChjaGlsZE5vZGUpOwogICAgICAgICBlbHNlCkBAIC0x
MDgsNyArMTA4LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+
PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlvbmFsPFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVj
dCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgaWYg
KEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUp
KSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNoaWxkTm9kZXM7CiAgICAgICAgIGFk
ZENoaWxkcmVuKCpheE9iamVjdCwgY2hpbGROb2Rlcyk7CiAgICAgICAgIHJlc3VsdCA9IFdURk1v
dmUoY2hpbGROb2Rlcyk7CkBAIC0xMjMsMTAgKzEyMywxMCBAQCBFeGNlcHRpb25PcjxPcHRpb25h
bDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4+
IElucwogCiAgICAgT3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpD
b21wdXRlZFByb3BlcnRpZXM+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAo
QVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkp
IHsKICAgICAgICAgQ29tcHV0ZWRQcm9wZXJ0aWVzIGNvbXB1dGVkUHJvcGVydGllczsKIAotICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7CisgICAgICAgIEFY
Q29yZU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0OwogICAgICAgICB3aGlsZSAoY3VycmVudCAm
JiAoIWNvbXB1dGVkUHJvcGVydGllcy5idXN5IHx8ICFjb21wdXRlZFByb3BlcnRpZXMuYnVzeS52
YWx1ZSgpKSkgewogICAgICAgICAgICAgY29tcHV0ZWRQcm9wZXJ0aWVzLmJ1c3kgPSBjdXJyZW50
LT5pc0J1c3koKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPYmplY3Qo
KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRy
PE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsK
KyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5v
ZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gY29udHJvbGxlZE5vZGVz
OwogCiAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gY29udHJvbGxlZEVsZW1lbnRzOwpAQCAtMjY5
LDcgKzI2OSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4g
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxWZWN0
b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChB
WENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkg
ewogICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBmbG93ZWROb2RlczsKIAogICAgICAgICBW
ZWN0b3I8RWxlbWVudCo+IGZsb3dlZEVsZW1lbnRzOwpAQCAtMjg5LDcgKzI4OSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxOb2RlPj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpn
ZXRNb3VzZUV2ZW50Tm9kZShOCiB7CiAgICAgRVJST1JfSUZfTk9fQUNUSVZFX0FVRElUKCk7CiAK
LSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmpl
Y3RGb3JOb2RlKG5vZGUpKSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nl
c3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdD4oYXhPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0PihheE9iamVjdCktPm1vdXNlQnV0dG9uTGlzdGVuZXIoTW91
c2VCdXR0b25MaXN0ZW5lclJlc3VsdEZpbHRlcjo6SW5jbHVkZUJvZHlFbGVtZW50KTsKICAgICB9
CkBAIC0zMDMsNyArMzAzLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxO
b2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7Cisg
ICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2Rl
KG5vZGUpKSB7CiAgICAgICAgIGlmIChheE9iamVjdC0+c3VwcG9ydHNBUklBT3ducygpKSB7CiAg
ICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBvd25lZE5vZGVzOwogCkBAIC0zMjUsOCAr
MzI1LDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmdldFBhcmVudE5vZGUoTm9kZSYKIHsKICAgICBFUlJPUl9JRl9OT19BQ1RJ
VkVfQVVESVQoKTsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFj
Y2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCA9IGF4T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KSkKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZv
ck5vZGUobm9kZSkpIHsKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0g
YXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBh
cmVudE9iamVjdC0+bm9kZSgpOwogICAgIH0KIApAQCAtMzM5LDEyICszMzksMTIgQEAgRXhjZXB0
aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiBy
ZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3Np
YmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmpl
Y3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8Tm9kZT4+IHNlbGVjdGVkQ2hpbGROb2RlczsKIAotICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKKyAg
ICAgICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRD
aGlsZHJlbjsKICAgICAgICAgYXhPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGls
ZHJlbik7Ci0gICAgICAgIGZvciAoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBzZWxlY3Rl
ZENoaWxkT2JqZWN0IDogc2VsZWN0ZWRDaGlsZHJlbikgeworICAgICAgICBmb3IgKGF1dG8mIHNl
bGVjdGVkQ2hpbGRPYmplY3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAo
Tm9kZSogc2VsZWN0ZWRDaGlsZE5vZGUgPSBzZWxlY3RlZENoaWxkT2JqZWN0LT5ub2RlKCkpCiAg
ICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVzLmFwcGVuZChzZWxlY3RlZENoaWxkTm9k
ZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNjA0ZGI1MmQ5NjgxNmQ3ODlhYzBiMTY1OGJh
OWY4MzZhMDU5OTczYS4uM2VhZDEzNWFkMzQ0YTVlMmExZGMzNmVmYzA0ZTc0NDE0ZTcxN2Y3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwcm9jZXNz
QWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqZWN0LCBKU09O
OjpBcnJheU9mPGludD4mIGNoaWxkTm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBy
b2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgSlNPTjo6
QXJyYXlPZjxpbnQ+JiBjaGlsZE5vZGVJZHMpCiB7CiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4g
PSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKQpAQCAtMTgy
NCwxMyArMTgyNCwxMyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgIHVuc2lnbmVkIGxl
dmVsID0gMDsKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlID0gbm9kZS0+
ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGF4T2JqZWN0ID0gYXhPYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUobm9kZSkpIHsKKyAg
ICAgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNy
ZWF0ZShub2RlKSkgewogCi0gICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0
aXZlRGVzY2VuZGFudCA9IGF4T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgICAgICAg
ICBpZiAoQVhDb3JlT2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURl
c2NlbmRhbnQoKSkKICAgICAgICAgICAgICAgICBhY3RpdmVEZXNjZW5kYW50Tm9kZSA9IGFjdGl2
ZURlc2NlbmRhbnQtPm5vZGUoKTsKIAogICAgICAgICAgICAgLy8gQW4gQVggb2JqZWN0IGlzICJi
dXN5IiBpZiBpdCBvciBhbnkgYW5jZXN0b3IgaGFzIGFyaWEtYnVzeT0idHJ1ZSIgc2V0LgotICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0OworICAgICAg
ICAgICAgQVhDb3JlT2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7CiAgICAgICAgICAgICB3aGls
ZSAoIWJ1c3kgJiYgY3VycmVudCkgewogICAgICAgICAgICAgICAgIGJ1c3kgPSBjdXJyZW50LT5p
c0J1c3koKTsKICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T2JqZWN0
KCk7CkBAIC0xOTcxLDcgKzE5NzEsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCA9IGF4T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KSkKKyAgICAgICAgICAgIGlmIChBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdCA9IGF4T2JqZWN0
LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkKICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0g
cGFyZW50T2JqZWN0LT5ub2RlKCk7CiAKICAgICAgICAgICAgIHN1cHBvcnRzUHJlc3NlZCA9IGF4
T2JqZWN0LT5wcmVzc2VkSXNQcmVzZW50KCk7CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aQogICAgICAgICAgICAgcm9sZSA9IGF4T2JqZWN0LT5jb21wdXRlZFJv
bGVTdHJpbmcoKTsKICAgICAgICAgICAgIHNlbGVjdGVkID0gYXhPYmplY3QtPmlzU2VsZWN0ZWQo
KTsKIAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CisgICAgICAgICAgICBBWENvcmVPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICAgICAg
YXhPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbik7CiAgICAgICAgICAg
ICBpZiAoc2VsZWN0ZWRDaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBzZWxlY3Rl
ZENoaWxkTm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXgg
Y2I3YmVhYTEzYWMzNTRlOTRmODA3YjViODM2NTkyNTMyYzk5ZDRiNS4uZDkxN2U1MDIxNzkxNDVj
ODAwYjUyMDY4ZDVmMjUzNTY2ZmZjMjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFz
cyBKU1ZhbHVlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlP
YmplY3Q7CitjbGFzcyBBWENvcmVPYmplY3Q7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3Mg
RE9NRWRpdG9yOwogY2xhc3MgRG9jdW1lbnQ7CkBAIC0yMjUsNyArMjI1LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lkTWFw
KiBub2Rlc01hcCk7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0
ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyJiwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWls
ZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5vZGUqKTsKLSAgICB2b2lkIHByb2Nl
c3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCYsIEpTT046OkFycmF5
T2Y8aW50PiYpOworICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBWENvcmVP
YmplY3QmLCBKU09OOjpBcnJheU9mPGludD4mKTsKICAgICAKICAgICBOb2RlKiBub2RlRm9yUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBT
dHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggMjQ0ZTVi
OTU0OGZmZTM5YWE1OGNjM2VmODE5ZTc2YmJjYzUyOTI3Ny4uYjhlYWVkOTNmNmMyMGRhZGVhMjc3
Njc1NjQyNzk5ZGQ3NDZmOTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAKICNpbmNsdWRlICJXZWJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIldlYlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCogV0tBY2Nlc3NpYmlsaXR5
Um9vdE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICAKICAgICBXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CiAKLSAgICBXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0KiByb290ID0gY29yZS5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCkt
PnJvb3RPYmplY3QoKTsKKyAgICBXZWJDb3JlOjpBWENvcmVPYmplY3QqIHJvb3QgPSBjb3JlLmRv
Y3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOwogICAgIGlmICghcm9vdCkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCogV0tBY2Nl
c3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIAogICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKIAotICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBXZWJDb3JlOjpBWENv
cmVPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2Vk
VUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKICAgICBpZiAoIWZvY3VzZWRPYmplY3QpCiAgICAgICAg
IHJldHVybiAwOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382323</attachid>
            <date>2019-10-30 09:34:24 -0700</date>
            <delta_ts>2019-10-30 13:44:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203408-20191030123422.patch</filename>
            <type>text/plain</type>
            <size>267187</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkOWFkMjljMmQzMzJh
ODMwMTAyYjIxMGRlZTllZmFmNjg3MDE5NC4uYzg5NTg0YjdhNDNhMzVlYWMxNTZkMzc2M2E2M2Jk
OTY0YmZhNTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyMCBAQAorMjAxOS0xMC0zMCAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGJh
c2UgY2xhc3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVl
Tm9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBuZWVkZWQgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBBWENvcmVPYmplY3QgaXMgbm93IGEgY29tbW9uIGJhc2UgY2xhc3Mg
Zm9yIGJvdGggQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQKKyAgICAgICAgQVhJc29sYXRlZFRyZWVO
b2RlLiBBbGwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSBBWENvcmVPYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBhbnkgb2YgdGhlIGRlcml2ZWQgY2xhc3Nlcy4gVGhpcyB3aWxsIGFsbG93IHRvIHNl
YW1sZXNzbHkgc3dpdGNoCisgICAgICAgIGJldHdlZW4gdXNpbmcgQVhJc29sYXRlZFRyZWVOb2Rl
IGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkIGFuZAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGluIHRoZSBtYWluIHRocmVhZCB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbworICAgICAg
ICBhbGxvd3MgZm9yIGNsZWFuZXIgY2xpZW50IGNvZGUsIGVuY2Fwc3VsYXRpbmcgdGhlIGRlY2lz
aW9uIHdoZXRoZXIKKyAgICAgICAgQVhJc29sYXRlZFRyZWVOb2RlIGNhbiByZXNwb25kIHRvIGEg
cmVxdWVzdCBvciBuZWVkIHRvIHJlc29ydCB0byBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LCBhbmQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjb21waWxlCisg
ICAgICAgIHRpbWUgZmxhZyBjaGVja3MgZm9yIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0QVhJRCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0
TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJy
ZWRDYWNoZVVwZGF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRUYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmF4Um93U3BhbldpdGhSb3dJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZFJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpkaXNjbG9zZWRCeVJvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRlck9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9t
aW5hdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eVRleHRTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb250YWluc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVjdE1hdGNoZXNT
ZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjpB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhOjppc051bGwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uUmFuZ2U6OlZpc2libGVQb3NpdGlvblJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvblJhbmdlOjppc051bGwgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjppc051bGwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbjo6QWNjZXNzaWJpbGl0
eVRleHRPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0QVhPYmplY3RJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJ
bWFnZUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3
b3JkRmllbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNOYXRpdmVUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzUmFkaW9CdXR0b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNOYXRpdmVMaXN0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdEJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3hPcHRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNNZWRpYVRpbWVsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZW51IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUJhciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVCdXR0
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0lucHV0SW1hZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NsaWRlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1NsaWRlclRodW1iIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzSW5wdXRTbGlkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250cm9sIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGFiZWwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFi
bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEYXRhVGFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RhYmxlQ29sdW1uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGFibGVDZWxsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRmll
bGRzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNHcm91cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FSSUFUcmVlR3JpZFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWVudUxpc3RQb3B1
cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BpbkJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZVNwaW5CdXR0b24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGlu
QnV0dG9uUGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01vY2tPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNZWRpYU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RvZ2dsZUJ1
dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RhYkxpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNUYWJJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFkaW9Hcm91cCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbWJvQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVHJlZUdy
aWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMaXN0SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDYW52YXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQ
b3BVcEJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0NvbG9yV2VsbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwbGl0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9vbGJhciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N1bW1hcnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXND
aGVja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1NlbGVjdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRm9jdXNlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0hvdmVyZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbmRldGVy
bWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTG9hZGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT2ZmU2NyZWVuIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1VudmlzaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Zpc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSZXF1aXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTGlua2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0V4cGFuZGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25B
Y3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzQm9sZEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzSXRhbGljRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQbGFpblRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzU2FtZUZvbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzU2FtZUZvbnRDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNTYW1lU3R5bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdGF0aWNUZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
YW5TZXRGb2N1c0F0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldFZhbHVl
QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5T
ZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmlidXRlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0xldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhYmxlTGV2ZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2YWx1ZUZv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5n
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXlvdXRDb3VudCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojplc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNBUklBT3ducyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBRHJvcHBpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBR3JhYmJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBUklB
R3JhYmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RDaGlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0Q2hpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmlvdXNTaWJsaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5leHRTaWJsaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtlZFVJRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGVV
SUVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRy
b2xFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9s
ZUF0dHJpYnV0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlSGFzUHJl
c2VudGF0aW9uYWxDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBUklBU3RhdGljVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4
dExlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhTGFiZWxlZEJ5QXR0cmlidXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
eHBhbmRlZFRleHRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbG9yVmFsdWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXhP
YmplY3RJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBpeGVs
U25hcHBlZEJvdW5kaW5nQm94UmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUGF0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxl
Y3RlZFRleHRSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25TdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25FbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dXJsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZWxlY3RlZFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzS2V5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OndpZGdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFNlbGVjdGVkVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxlY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRT
ZWxlY3RlZFJvd3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6bWFrZVJhbmdlVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtRGVmYXVsdEFjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbmNyZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVjcmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhhdmVD
aGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1
YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bmVlZHNUb1VwZGF0ZUNoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dGFiQ2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFu
ZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRzRm9yUmFuZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0
VmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZv
ckluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVCcmVha3MgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWFJhbmdl
Rm9yTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWEJvdW5kc0Zv
clJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ1ZhbHVl
Rm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZl
UmVnaW9uUmVsZXZhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1c3kgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlYWtBc1Byb3BlcnR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
TWF0aEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNNYXRoRnJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoRmVuY2VkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFN1YnNjcmlwdFN1
cGVyc2NyaXB0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTWF0aFJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhVbmRlck92ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoUm9vdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTcXVh
cmVSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWF0aFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE9wZXJhdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNl
T3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoSWRlbnRpZmllciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhU
YWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01hdGhUYWJsZVJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUYWJsZUNlbGwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNN
YXRoVG9rZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhS
YWRpY2FuZE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRoUm9vdEluZGV4T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJhdG9yT2Jq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGhEZW5vbWluYXRvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoQmFzZU9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoU3Vic2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRo
RmVuY2VkT3BlblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aExpbmVUaGlja25lc3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSGlkZGVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6Y2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTo6QWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWE6OkFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb246OkFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFpblRl
eHRSYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
blJhbmdlOjpWaXNpYmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb25SYW5nZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2U6OmlzQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0
dG9uR3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6aW5jcmVtZW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpkZWNyZW1l
bnRCdXR0b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkhlYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdyBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaXN0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGludGVyZmFjZU1hc2tGcm9tT2JqZWN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcDoKKyAg
ICAgICAgKHJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVI
eXBlcmxpbmtHZXRTdGFydEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRFbmRJbmRleCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJ0ZXh0R2V0TGluayk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0R2V0Tkxp
bmtzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKGxpc3RPYmplY3RGb3JDb3JlU2VsZWN0aW9uKToK
KyAgICAgICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24p
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbkFkZFNlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9uKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVTZWxlY3Rpb25Jc0NoaWxkU2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVNlbGVjdGlvblJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAob2Zm
c2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKToKKyAgICAgICAgKHdlYkNvcmVPZmZzZXRUb0F0a09m
ZnNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENhcmV0T2Zmc2V0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAg
ICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IpOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVs
ZW1lbnRzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlDb250YWluZXJdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUxpbmtlZEVsZW1lbnRdKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZTo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAg
ICAgKGFkZENoaWxkVG9BcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBheEJhY2tpbmdPYmplY3RdKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3dp
bi9BWE9iamVjdENhY2hlV2luLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL2F0ay9GcmFtZVNlbGVj
dGlvbkF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbWl0VGV4dFNlbGVjdGlvbkNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjptYXliZUVtaXRUZXh0Rm9jdXNDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25D
aGFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6Omdl
dEVsZW1lbnRzQnlDb21wdXRlZFJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRBY3RpdmVEZXNjZW5kYW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q2hpbGROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENv
bnRyb2xsZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmdldEZsb3dlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TW91c2VFdmVudE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRPd25lZE5vZGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6
Z2V0UGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmdldFNlbGVjdGVkQ2hpbGROb2Rlcyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgor
CiAyMDE5LTEwLTI2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFp
biBpbXBsZW1lbnRhdGlvbiBmb3IgbGF6eSBpbWFnZSBsb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZTY3
Y2Q0ZTA5OGMzMTkwOTYwNWRiMTY0OWI3ODE2NGIwNTFhZTQuLjI5MGY3YjYyM2ExYWM1N2U5ODYy
OTQwNjViZTMxNjg1ZDVlMWIwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTAt
MzAgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgorCisgICAgICAgIENy
ZWF0ZSBiYXNlIGNsYXNzIGNvbW1vbiB0byBBY2Nlc3NpYmlsaXR5T2JqZWN0IGFuZCBBWElzb2xh
dGVkVHJlZU5vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDM0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoK
KyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QpOgorICAgICAgICAoV0tBY2Nlc3Np
YmlsaXR5Rm9jdXNlZE9iamVjdCk6CisKIDIwMTktMTAtMjYgIENocmlzIExvcmQgIDxjbG9yZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFB1dCBPZmZzY3JlZW5DYW52YXMgYmVoaW5kIGEgYnVpbGQg
ZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggYWFlNGQ4NjM4YjUzMDFhMGUwMzE2MGEyODNlMWIyMjg2NTRjZTgwMS4uOTdhZWY2YTRi
ODM2ZjYzODEzZTAwNWJlYzY3NDJmMWIwYjkxMWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgQVhPYmpl
Y3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0IDog
bV9vYmplY3RzLnZhbHVlcygpKSB7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2JqZWN0LmdldCgp
LCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsKICAgICAgICAg
b2JqZWN0LT5kZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ryb3ll
ZCk7Ci0gICAgICAgIG9iamVjdC0+c2V0QVhPYmplY3RJRCgwKTsKKyAgICAgICAgb2JqZWN0LT5z
ZXRPYmplY3RJRCgwKTsKICAgICB9CiB9CiAKQEAgLTMzNiwxNSArMzM2LDE1IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudChIVE1M
QXJlYUVsZW1lbnQqIGFyCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGF4UmVuZGVySW1h
Z2UtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rPigqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAg
IGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqY2hpbGQpLmFyZWFFbGVt
ZW50KCkgPT0gYXJlYUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0g
ICAgfSAgICAKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VN
YXBMaW5rPihjaGlsZC5nZXQoKSk7CisgICAgfQogICAgIAogICAgIHJldHVybiBudWxscHRyOwog
fQogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxl
bWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKK0FYQ29yZU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKIHsKICAgICBpZiAo
IWdBY2Nlc3NpYmlsaXR5RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTUs
MTIgKzM1NSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2Vk
VUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogICAgIGlmIChpczxIVE1MQXJlYUVs
ZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJbWFnZU1hcFVJ
RWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSk7CiAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxOb2RlKj4oZm9j
dXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAgICBBWENvcmVPYmplY3QqIG9iaiA9
IGZvY3VzZWREb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkRWxl
bWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1c2VkRWxlbWVudCkgOiBmb2N1c2VkRG9jdW1l
bnQpOwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChv
YmotPnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBkZXNjZW5kYW50ID0gb2JqLT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAg
ICAgIGlmIChBWENvcmVPYmplY3QqIGRlc2NlbmRhbnQgPSBvYmotPmFjdGl2ZURlc2NlbmRhbnQo
KSkKICAgICAgICAgICAgIG9iaiA9IGRlc2NlbmRhbnQ7CiAgICAgfQogCkBAIC01NjAsOCArNTYw
LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoV2lk
Z2V0KiB3aWRnZXQpCiAKICAgICBnZXRBWElEKG5ld09iai5nZXQoKSk7CiAgICAgCi0gICAgbV93
aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3aWRnZXQsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAg
ICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOyAgICAKKyAgICBt
X3dpZGdldE9iamVjdE1hcHBpbmcuc2V0KHdpZGdldCwgbmV3T2JqLT5vYmplY3RJRCgpKTsKKyAg
ICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBuZXdPYmot
PmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgcmV0dXJuIG5l
d09iai5nZXQoKTsKQEAgLTYwOCw4ICs2MDgsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9i
amVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgZ2V0QVhJRChuZXdPYmou
Z2V0KCkpOwogCi0gICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2JqLT5heE9i
amVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCksIG5ld09i
aik7CisgICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2JqLT5vYmplY3RJRCgp
KTsKKyAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBu
ZXdPYmotPmluaXQoKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgbmV3
T2JqLT5zZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShuZXdPYmotPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSk7CkBAIC02MzYsOCArNjM2LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmpl
Y3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogICAgIGdldEFY
SUQobmV3T2JqLmdldCgpKTsKIAotICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQocmVuZGVy
ZXIsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhP
YmplY3RJRCgpLCBuZXdPYmopOworICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQocmVuZGVy
ZXIsIG5ld09iai0+b2JqZWN0SUQoKSk7CisgICAgbV9vYmplY3RzLnNldChuZXdPYmotPm9iamVj
dElEKCksIG5ld09iaik7CiAgICAgbmV3T2JqLT5pbml0KCk7CiAgICAgYXR0YWNoV3JhcHBlcihu
ZXdPYmouZ2V0KCkpOwogICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUobmV3
T2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpOwpAQCAtNzA5LDcgKzcwOSw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUpCiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fb2Jq
ZWN0cy5zZXQob2JqLT5heE9iamVjdElEKCksIG9iaik7ICAgIAorICAgIG1fb2JqZWN0cy5zZXQo
b2JqLT5vYmplY3RJRCgpLCBvYmopOwogICAgIG9iai0+aW5pdCgpOwogICAgIGF0dGFjaFdyYXBw
ZXIob2JqLmdldCgpKTsKICAgICByZXR1cm4gb2JqLmdldCgpOwpAQCAtNzI2LDcgKzcyNiw3IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFYSUQgYXhJRCkKIAogICAgIGRldGFjaFdyYXBw
ZXIob2JqZWN0LmdldCgpLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0
cm95ZWQpOwogICAgIG9iamVjdC0+ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6
RWxlbWVudERlc3Ryb3llZCwgdGhpcyk7Ci0gICAgb2JqZWN0LT5zZXRBWE9iamVjdElEKDApOwor
ICAgIG9iamVjdC0+c2V0T2JqZWN0SUQoMCk7CiAKICAgICBtX2lkc0luVXNlLnJlbW92ZShheElE
KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQpAQCAtNzk5LDcgKzc5
OSw3IEBAIEFYSUQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1HZW5lcmF0ZUFYSUQoKSBjb25zdAog
QVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKIHsK
ICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeS1hc3NpZ25lZCBJRAotICAgIEFYSUQgb2JqSUQgPSBv
YmotPmF4T2JqZWN0SUQoKTsKKyAgICBBWElEIG9iaklEID0gb2JqLT5vYmplY3RJRCgpOwogICAg
IGlmIChvYmpJRCkgewogICAgICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlucyhvYmpJRCkp
OwogICAgICAgICByZXR1cm4gb2JqSUQ7CkBAIC04MDgsNyArODA4LDcgQEAgQVhJRCBBWE9iamVj
dENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKICAgICBvYmpJRCA9IHBs
YXRmb3JtR2VuZXJhdGVBWElEKCk7CiAKICAgICBtX2lkc0luVXNlLmFkZChvYmpJRCk7Ci0gICAg
b2JqLT5zZXRBWE9iamVjdElEKG9iaklEKTsKKyAgICBvYmotPnNldE9iamVjdElEKG9iaklEKTsK
ICAgICAKICAgICByZXR1cm4gb2JqSUQ7CiB9CkBAIC04ODEsMTIgKzg4MSwxMiBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5k
ZXJPYmplY3QqIG5ld0NoaQogICAgIGNoaWxkcmVuQ2hhbmdlZChnZXQocmVuZGVyZXIpKTsKIH0K
IAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqKQordm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQVhDb3JlT2JqZWN0
KiBvYmopCiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVmZXJy
ZWRDaGlsZHJlZENoYW5nZWRMaXN0LmFkZChvYmopOworICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNo
YW5nZWRMaXN0LmFkZChvYmopOwogfQogICAgIAogdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25Qb3N0VGltZXJGaXJlZCgpCkBAIC04OTksOCArODk5LDggQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgYXV0byBub3RpZmljYXRpb25z
ID0gV1RGTW92ZShtX25vdGlmaWNhdGlvbnNUb1Bvc3QpOwogICAgIAogICAgIGZvciAoY29uc3Qg
YXV0byYgbm90ZSA6IG5vdGlmaWNhdGlvbnMpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmotPmF4T2JqZWN0SUQo
KSkKKyAgICAgICAgQVhDb3JlT2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgpOworICAgICAg
ICBpZiAoIW9iai0+b2JqZWN0SUQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IGlmICghb2JqLT5heE9iamVjdENhY2hlKCkpCkBAIC05ODgsNyArOTg4LDcgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKE5vZGUqIG5vZGUsIEFYTm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbiwgUG8KICAgICBwb3N0Tm90aWZpY2F0aW9uKG9iamVjdC5nZXQoKSwgJm5vZGUt
PmRvY3VtZW50KCksIG5vdGlmaWNhdGlvbiwgcG9zdFRhcmdldCwgcG9zdFR5cGUpOwogfQogCi12
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwg
UG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKK3ZvaWQgQVhPYmplY3RD
YWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9zdFRhcmdl
dCwgUG9zdFR5cGUgcG9zdFR5cGUpCiB7CiAgICAgc3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZXMoKTsKIApAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpz
ZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRN
YXIKICAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7
CiAgICAgfQogICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2Jq
ZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgp
OwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRh
LmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4dE1hcmtl
ckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwpA
QCAtMjIzMCw3ICsyMjMwLDcgQEAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2Fj
aGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFYKICAgICBUZXh0TWFy
a2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0
ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwogICAgIAotICAgIHRl
eHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFy
a2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5vYmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRh
Lm5vZGUgPSBkb21Ob2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9IHZp
c2libGVQb3MuYWZmaW5pdHkoKTsKQEAgLTIyNjIsNyArMjI2Miw3IEBAIE9wdGlvbmFsPFRleHRN
YXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25J
blRleHRDb250CiAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CiAgICAgbWVtc2V0
KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1hcmtl
ckRhdGEpKTsKICAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5heE9i
amVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+b2JqZWN0SUQo
KTsKICAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRleHRDb250cm9sOwogCiAgICAgY2FjaGUt
PnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwpAQCAtMjkwNyw5ICsyOTA3LDkgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAgfQogICAgIG1f
ZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWROb2RlTGlzdC5jbGVhcigpOwogCi0gICAgZm9yIChhdXRv
JiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0KQorICAgIGZvciAoYXV0byYg
Y2hpbGQgOiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdCkKICAgICAgICAgY2hpbGQtPmNo
aWxkcmVuQ2hhbmdlZCgpOwotICAgIG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0LmNsZWFy
KCk7CisgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAogICAgIGZv
ciAoYXV0byogbm9kZSA6IG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3QpCiAgICAgICAgIHRleHRD
aGFuZ2VkKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaAppbmRleCBlNTIyMDNiZWIxNDMwMTA0MDM3NTZjNDZjMzczZTllN2RhMzE5OWJmLi44ODQ5
OWZkMThjMjA3MzlkMmRhMzcwYTA0YmE3YmY0MWJmZTNjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFYT2JqZWN0
Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFn
ZSopOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcm9vdCBvYmplY3QgZm9yIHRoZSBlbnRpcmUgZG9j
dW1lbnQuCiAgICAgV0VCQ09SRV9FWFBPUlQgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdE9iamVj
dCgpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGFjaFdyYXBwZXIo
QWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKE5vZGUqLCBO
b2RlKiBuZXdDaGlsZCA9IG51bGxwdHIpOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKFJlbmRl
ck9iamVjdCosIFJlbmRlck9iamVjdCogbmV3Q2hpbGQgPSBudWxscHRyKTsKLSAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUq
KTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZCwgc28g
d2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nlc3NpYmls
aXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUq
KTsKQEAgLTMwNyw3ICszMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvc3ROb3RpZmljYXRp
b24oUmVuZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVt
ZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7CiAgICAgdm9pZCBwb3N0Tm90aWZp
Y2F0aW9uKE5vZGUqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQs
IFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKLSAgICB2b2lkIHBvc3ROb3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhOb3RpZmljYXRpb24sIFBvc3RU
YXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3luY2hyb25vdXNseSk7Cisg
ICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIERvY3VtZW50KiwgQVhOb3Rp
ZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RBc3lu
Y2hyb25vdXNseSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzaG93SW50ZW50KGNvbnN0
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jik7CkBAIC0zNTYsNyArMzU2LDcgQEAgcHVibGljOgog
ICAgIAogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBBWE5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCBw
bGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3VzZWROb2Rl
LCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7CiAKICAgICB2b2lkIHBsYXRmb3JtUGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUoKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hT
ZXQ8QVhJRD4gbV9pZHNJblVzZTsKIAogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uUG9zdFRpbWVy
OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+LCBBWE5v
dGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uc1RvUG9zdDsKKyAgICBWZWN0b3I8c3RkOjpwYWly
PFJlZlB0cjxBWENvcmVPYmplY3Q+LCBBWE5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uc1Rv
UG9zdDsKIAogICAgIFRpbWVyIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXI7CiAKQEAg
LTQ3Nyw3ICs0NzcsNyBAQCBwcml2YXRlOgogICAgIExpc3RIYXNoU2V0PEVsZW1lbnQqPiBtX2Rl
ZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9k
ZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxFbGVtZW50Kj4gbV9kZWZl
cnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGlsZHJlZENoYW5nZWRMaXN0OworICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFu
Z2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdl
ZE5vZGVMaXN0OwogICAgIEhhc2hNYXA8RWxlbWVudCosIFN0cmluZz4gbV9kZWZlcnJlZFRleHRG
b3JtQ29udHJvbFZhbHVlOwogICAgIEhhc2hNYXA8RWxlbWVudCosIFF1YWxpZmllZE5hbWU+IG1f
ZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2U7CkBAIC01MzIsNyArNTMyLDcgQEAgaW5saW5lIGNvbnN0
IEVsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OnJvb3RBWEVkaXRhYmxlRWxlbWVudChjb25zdCBOb2Rl
KikgeyByZXR1cm4KIGlubGluZSBOb2RlKiBBWE9iamVjdENhY2hlOjptb2RhbE5vZGUoKSB7IHJl
dHVybiBudWxscHRyOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVy
KEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNo
ZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopIHsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KK2lubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBWENvcmVPYmplY3QqKSB7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2RlKiwgTm9kZSopIHsgfQogaW5s
aW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCosIFJl
bmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJGb2N1c2Vk
VUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSosIE5vZGUqKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRl
eCBkNzMwOTg4Zjg5N2VjZmE0OWFiYjkwZDMzZTcxMmQ2MGVkZTg1MjllLi4wMDBhZGQ0YzNhYTIy
OGYyZTNmNjA1MTgwMTAyMDU5ZmFkMTEyMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIFJlZjxBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3Jl
YXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkKHJlbmRlcmVyKSk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCwgSGFz
aFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVt
bkNvdW50KQorYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFY
Q29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRl
ZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIWNoaWxkIHx8ICghaXM8
QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFpczxBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3c+KCpjaGlsZCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NSw3ICs4NSw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0CiAg
ICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhTXVsdGlTZWxlY3Rh
YmxlLCAiZmFsc2UiKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rl
c2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJp
bGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKK3ZvaWQg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KEFYQ29yZU9iamVjdCogcm93
Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2ln
bmVkJiBjb2x1bW5Db3VudCkKIHsKICAgICBpZiAoIXJvd0NoaWxkKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlB
UklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuaAppbmRleCBiOGU3YmFmNGE1YjJlNjQ1OWVmZWE5ZDhiMjYwYWE5MjgxMjAyMGI3Li5m
NzJjOTA2YWEwY2UwZjRiNzgxODVhYjE1ZTVmOTEzYTliYzMzMjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKQEAgLTUy
LDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhy
b3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAK
LSAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7Ci0gICAgYm9vbCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFz
aFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVt
bkNvdW50KTsKKyAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiwgSGFzaFNl
dDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNv
dW50KTsKKyAgICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5k
ZXggZDAyM2Y4Y2U1N2YzNTU0N2JjYWUxNTU0ZDY0MDI0MmUzODlkMjg0Ny4uZjgxOWU5YWVlOTQ2
YzVkMzU1MGY3M2IyNDllMTM5Yzk5YjRhNDI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIC8vIEFSSUEgZ3JpZGNlbGxzIG1heSBoYXZlIG11
bHRpcGxlIGxldmVscyBvZiB1bmlnbm9yZWQgYW5jZXN0b3JzIHRoYXQgYXJlIG5vdCB0aGUgcGFy
ZW50IHRhYmxlLAogICAgIC8vIGluY2x1ZGluZyByb3dzIGFuZCBpbnRlcmFjdGl2ZSByb3dncm91
cHMuIEluIGFkZGl0aW9uLCBwb29ybHktZm9ybWVkIGdyaWRzIG1heSBjb250YWluIGVsZW1lbnRz
CiAgICAgLy8gd2hpY2ggcGFzcyB0aGUgdGVzdHMgZm9yIGluY2x1c2lvbi4KLSAgICBmb3IgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBwYXJl
bnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKKyAgICBmb3Ig
KGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBwYXJlbnQ7IHBhcmVudCA9
IHBhcmVudC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpIHsKICAgICAgICAgaWYgKGlzPEFjY2Vz
c2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigq
cGFyZW50KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihwYXJlbnQpOwogICAgIH0KQEAgLTY1
LDcgKzY1LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGw6OnJvd0luZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jhbmdl
KSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAzLDcg
KzEwMyw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3Bhbldp
dGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAgICAgICAgIHJldHVybiBzdGQ6Om1h
eChzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLnNlY29uZCksIDEpOwogICAgIH0KIAotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIEFY
Q29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFw
YXJlbnQpCiAgICAgICAgIHJldHVybiAxOwogICAgIApAQCAtMTM0LDcgKzEzNCw3IEBAIHVuc2ln
bmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNp
Z25lZCByb3dJbmRleCkgY29uCiAKIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29s
dW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2Up
IGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0
VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5jcHAKaW5kZXggZjI5NjQ2N2NhNGU4MTFiZWQyNjAxYzdjYTMyMzFkODgwOGFhNTQzMC4uMzI4
MzgwNzY1MjlkZDQ1YzEwZmM3ZDRhN2FjMDlhMGM3ZjVhM2RmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xv
c2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIGF1dG8mIGFs
bFJvd3MgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpLnJvd3MoKTsKICAg
ICBpbnQgcm93Q291bnQgPSBhbGxSb3dzLnNpemUoKTsKICAgICBmb3IgKGludCBrID0gaW5kZXgg
KyAxOyBrIDwgcm93Q291bnQ7ICsraykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBy
b3cgPSBhbGxSb3dzW2tdLmdldCgpOworICAgICAgICBhdXRvKiByb3cgPSBhbGxSb3dzW2tdLmdl
dCgpOwogICAgICAgICAvLyBTdG9wIGF0IHRoZSBmaXJzdCByb3cgdGhhdCBkb2Vzbid0IG1hdGNo
IHRoZSBjb3JyZWN0IGxldmVsLgogICAgICAgICBpZiAocm93LT5oaWVyYXJjaGljYWxMZXZlbCgp
ICE9IGxldmVsICsgMSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIsNyArODIsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGRpc2NsbwogICAgIH0KIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3coKSBjb25zdAorQVhDb3Jl
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkgY29uc3QK
IHsKICAgICAvLyBUaGUgcm93IHRoYXQgZGlzY2xvc2VzIHRoaXMgb25lIGlzIHRoZSByb3cgaW4g
dGhlIHRhYmxlCiAgICAgLy8gdGhhdCBpcyBhcmlhLWxldmVsIHN1YnRyYWN0IDEgZnJvbSB0aGlz
IHJvdy4KQEAgLTEwMyw3ICsxMDMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgZm9yIChpbnQgayA9IGluZGV4IC0gMTsgayA+PSAwOyAtLWspIHsK
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93ID0gYWxsUm93c1trXS5nZXQoKTsKKyAg
ICAgICAgYXV0byogcm93ID0gYWxsUm93c1trXS5nZXQoKTsKICAgICAgICAgaWYgKHJvdy0+aGll
cmFyY2hpY2FsTGV2ZWwoKSA9PSBsZXZlbCAtIDEpCiAgICAgICAgICAgICByZXR1cm4gcm93Owog
ICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdzo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OmhlYWRl
ck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6aGVhZGVy
T2JqZWN0KCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgewog
ICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJvd0hlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCmluZGV4IDdiYTc0ZjRkZDIzMTcxZmU1YjQ4MmI2
ZmU3ODBhMmZmNzg2OWQ4ODYuLjg1NDA2ODM1YWZlNzFlYzg0ZDU5YTU2MTA0NjA5NTA1MTlkYjZl
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuaApAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93KCk7CiAgICAgCiAgICAgdm9pZCBkaXNjbG9zZWRS
b3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGRpc2Nsb3NlZEJ5Um93KCkgY29uc3Q7CisgICAgQVhDb3JlT2JqZWN0KiBkaXNjbG9zZWRC
eVJvdygpIGNvbnN0OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVj
dCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCkgb3ZlcnJpZGU7
CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdyhS
ZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxhYmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxhYmVsLmNwcAppbmRleCBiNDVmYzYwMDI0YTRmMzBhYjAwNzU1NmViNTZiMzQ5
ZjIzNDIyZjU4Li42MzQ1ZjNjZDhmMzg1YTA1MGY5Y2FjOWI5Mzc4YTA4NTMyZTc1MTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwu
Y3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6OmNsZWFyQ2hp
bGRyZW4oKQogICAgIG1fY29udGFpbnNPbmx5U3RhdGljVGV4dERpcnR5ID0gZmFsc2U7CiB9CiAK
LXZvaWQgQWNjZXNzaWJpbGl0eUxhYmVsOjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QsIHVuc2lnbmVkIGluZGV4KQordm9pZCBBY2Nlc3NpYmlsaXR5TGFiZWw6Omluc2Vy
dENoaWxkKEFYQ29yZU9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnNlcnRDaGlsZChvYmplY3QsIGluZGV4KTsKICAgICBt
X2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaAppbmRleCBiMTNhZjJkN2Q5MmRi
YjUyODBmNGRjY2Q4MjE0MDBkNDY2YzM5NGUwLi5iNmE0MWI5YWZmMGY4NTZlYjllOTQ4NjNkYzdm
NWJlNmRkODA1YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMYWJlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxhYmVsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBmaW5hbDsKLSAgICB2b2lk
IGluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCB1bnNpZ25lZCkgZmluYWw7CisgICAg
dm9pZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgZmluYWw7CiAgICAgYm9v
bCBtX2NvbnRhaW5zT25seVN0YXRpY1RleHREaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2NvbnRhaW5z
T25seVN0YXRpY1RleHQgOiAxOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggMDdhZWRjOTcxNDY4NDEwYjkw
MWE3ODIyZGFiMDc5MjllZWEzMDRlMC4uOTVmOTcyODc3ZDE2NjhjMDFkNzRkYmVjY2I5NTU2MTdm
NGVjNjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QoSFRNTAogICAgIHJldHVybiAmbGlzdEJveE9iamVjdDsKIH0KICAgICAKLUFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKIHsKICAgICAvLyB0aGUgaW50ZXJuYWwgSFRNTFNlbGVjdEVsZW1lbnQgbWV0
aG9kcyBmb3IgcmV0dXJuaW5nIGEgbGlzdGJveCBvcHRpb24gYXQgYSBwb2ludAogICAgIC8vIGln
bm9yZSBvcHRncm91cCBlbGVtZW50cy4KQEAgLTE1NSw3ICsxNTUsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludAogICAgIAogICAgIExheW91dFJlY3QgcGFyZW50UmVjdCA9IGJvdW5kaW5nQm94
UmVjdCgpOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RCb3hPcHRpb24gPSBu
dWxscHRyOworICAgIEFYQ29yZU9iamVjdCogbGlzdEJveE9wdGlvbiA9IG51bGxwdHI7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIExheW91dFJlY3QgcmVjdCA9IGRvd25j
YXN0PFJlbmRlckxpc3RCb3g+KCptX3JlbmRlcmVyKS5pdGVtQm91bmRpbmdCb3hSZWN0KHBhcmVu
dFJlY3QubG9jYXRpb24oKSwgaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKaW5kZXggNDdhMzljZTk1YTVhNjBkZjhhOWM2YThj
ZDU2YzYxNTRiMzM0MTI1MC4uNzRlNTkwODJlM2M5N2UwNTMyMTAyMThhNjVlZjNhYjZjMjY4MTg0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3guaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc05hdGl2
ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQq
KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3Qq
IGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAKaW5kZXggN2FiZmZhZTRmYTE0OTEyM2IwNWVjMGQ1MDMzNGJiNWZlZDMyM2IyOC4uYWFlYWZl
MDg0YzhlN2RiYmM5ZTZkNjBmNTZhNjMzN2I1MmQxZGRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Ojpp
c01hdGhUYWJsZUNlbGwoKSBjb25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHR5
cGUpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0yMTEsNyArMjExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRo
U2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWMKIAogYm9vbCBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0
eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVP
YmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPmlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Omlz
TWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQ6Om1hdGhSYWRpY2FuZE9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhSb290
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjUwLDcgKzI1MCw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoUmFkaWNhbmRPYmpl
Y3QoKQogICAgIHJldHVybiBjaGlsZHJlblswXS5nZXQoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhSb290SW5kZXhPYmplY3QoKQor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9i
amVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhSb290KCkgfHwgaXNNYXRoU3F1YXJlUm9vdCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2Miw3ICsyNjIsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFJvb3RJbmRleE9iamVjdCgp
CiAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aE51bWVyYXRvck9iamVjdCgpCitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0
KCkKIHsKICAgICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjc0LDcgKzI3NCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoTnVtZXJhdG9yT2JqZWN0KCkKICAgICByZXR1cm4gY2hpbGRyZW5b
MF0uZ2V0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5TWF0aE1MRWxlbWVudDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKIHsKICAgICBpZiAoIWlz
TWF0aEZyYWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg2LDcgKzI4Niw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRo
RGVub21pbmF0b3JPYmplY3QoKQogICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQoKTsKIH0KIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhVbmRl
ck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRo
VW5kZXJPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoVW5kZXJPdmVyKCkgfHwgIW5vZGUoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDEsNyArMzAxLDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6Om1hdGhVbmRlck9iamVjdCgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCitBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlNYXRoTUxFbGVtZW50OjptYXRoT3Zlck9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhV
bmRlck92ZXIoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxOCw3
ICszMTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dDo6bWF0aE92ZXJPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJhc2VPYmplY3QoKQor
QVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aEJhc2VPYmplY3Qo
KQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSAmJiAhaXNNYXRoVW5k
ZXJPdmVyKCkgJiYgIWlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMzMxLDcgKzMzMSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50OjptYXRoQmFzZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3Vi
c2NyaXB0T2JqZWN0KCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6
Om1hdGhTdWJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJz
Y3JpcHQoKSB8fCAhbm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0Niw3ICsz
NDYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6
bWF0aFN1YnNjcmlwdE9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjptYXRoU3VwZXJzY3JpcHRP
YmplY3QoKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6bWF0aFN1
cGVyc2NyaXB0T2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0
KCkgfHwgIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmgK
aW5kZXggNTgwYjg1OWNiYzFkMGM2NzMzNWUyYjUwNDk0Mjc2NjRiZWQxMTY3YS4uODc0N2IwNTRl
ZjQzOTBhZDkyM2Q2MDE3YzI1ZDA3NjRmNTA1MmE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuaApAQCAt
NzcsMjMgKzc3LDIzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2Jq
ZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9i
amVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBt
YXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGcmFjdGlvbiBjb21wb25l
bnRzLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVy
cmlkZTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBv
dmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlk
ZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlOwog
CiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG1hdGhVbmRlck9iamVjdCgpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1h
dGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmpl
Y3QoKSBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQVhDb3Jl
T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKIAogICAgIC8vIEZlbmNl
ZCBjb21wb25lbnRzLgogICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9scy5oCmluZGV4IGM5ODVmZGRkM2RiNzViOGE4NGM3ZTI1ODMz
ZTAwOTk1NzY2ZDU5NDguLmYzYWQ2ZDk2ZTM2Zjg1YjM3OWU1Y2Y5NWNlNGI0NWNiM2Q2ZjdjZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
ZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2xzLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRp
b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3QqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
LmNwcAppbmRleCBlZjEzNzdiZjQ2YzNiMjI1MGQzY2Y2ZTZlOWQzNjNiMmU2MmJiOTFmLi5hMmNi
NTE3YWZiOGJlODY4ZWFlZWUxZDMyODEyNWM1ODY2MmI2ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbigpCiAK
ICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TW9ja09iamVjdD4oKmxpc3QpLnNldFBhcmVudCh0
aGlzKTsKICAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7Ci0gICAgICAg
IGNhY2hlLT5yZW1vdmUobGlzdC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgY2FjaGUtPnJlbW92
ZShsaXN0LT5vYmplY3RJRCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLmNwcAppbmRleCBlZTk2MWI1Y2Y1YzYxMzIzYzI5ZGJiY2JjYjMyOGY5ODI4OGE0NDRk
Li43YjAyYzIyNDljNmEzOTQ2MzE5ODM0M2EyZTQ3ODBlNDRiNTExMjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLmNwcApAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cDo6Y2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gbV9jaGlsZHJlbi5zaXplKCk7
IGkgPiAwIDsgLS1pKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gbV9j
aGlsZHJlbltpIC0gMV0uZ2V0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogY2hpbGQgPSBtX2No
aWxkcmVuW2kgLSAxXS5nZXQoKTsKICAgICAgICAgaWYgKGNoaWxkLT5hY3Rpb25FbGVtZW50KCkg
JiYgIWNoaWxkLT5hY3Rpb25FbGVtZW50KCktPmluUmVuZGVyZWREb2N1bWVudCgpKSB7CiAgICAg
ICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVBhcmVudCgpOwotICAgICAgICAgICAgY2FjaGUtPnJl
bW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZW1vdmUoY2hp
bGQtPm9iamVjdElEKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMwLDcgKzEzMCw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlv
bihpbnQgb3B0aW9uSW5kZXgpCiAgICAgQVNTRVJUX0FSRyhvcHRpb25JbmRleCwgb3B0aW9uSW5k
ZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2hpbGRyZW4uc2l6ZSgpKSk7CiAKICAgICBBWE9iamVj
dENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gY2hpbGQgPSBtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKTsKKyAgICBSZWZQ
dHI8QVhDb3JlT2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpOwog
CiAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3VtZW50KCksIEFY
T2JqZWN0Q2FjaGU6OkFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQsIFRhcmdldEVsZW1lbnQsIFBv
c3RTeW5jaHJvbm91c2x5KTsKICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQo
KSwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlzdEl0ZW1TZWxlY3RlZCwgVGFy
Z2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBhMmQz
MjdmOGNmMTc4MDhjYWYyNWE2ODA1YTQ4OGU4OGY4ZDRlNWJmLi4wMzA0ZWM3MjU1MGYyYTliNDdl
MGE5MWU5ZjEzZDRkZjAwNTZhNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtOTEyLDcgKzkxMiw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR3JvdXAoKSBjb25zdAogICAgIHJl
dHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpUZXh0R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25Hcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRH
cm91cDsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnNlbGVjdGVkUmFkaW9CdXR0b24oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCiB7CiAgICAgaWYgKCFpc1JhZGlvR3JvdXAoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MjUsMTQgKzkyNSwxNCBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKCkKIHsKICAgICBpZiAoIWlzVGFiTGlz
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIHZh
bGlkPyBBUklBIHRhYiBpdGVtcyBzdXBwb3J0IGFyaWEtc2VsZWN0ZWQ7IG5vdCBhcmlhLWNoZWNr
ZWQuCiAgICAgLy8gRmluZCB0aGUgY2hpbGQgdGFiIGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCAoaWUu
IHRoZSBpbnRWYWx1ZSA9PSAxKS4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKKyAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciB0YWJzOwogICAgIHRhYkNoaWxkcmVuKHRhYnMpOwogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAppbmRleCBhODY3YzBj
ZjBhYzhjZDQwNjk0YjgzYzc0NTQ5NGNiYjZiODZhMTUzLi4zODBkOTk3YTU0MTQ3ZWMyOTg2MmVj
YzE0ZmYzMDRiYmU5YWUxYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xMDEsOCArMTAxLDggQEAgcHVi
bGljOgogICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBm
bG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVj
dCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogc2Vs
ZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNo
ZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBoaWVy
YXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZThhYTY5YmVjMTc3
MDI3MDYzODc5M2U3MzVjYTkyN2JkN2M4OTljNS4uYTM0YTVmMDk2MjUxZmZmMzc3NjNhZDQxZmU0
NjA3MzAzOGQ0NTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0RldGFjaGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1ib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
KiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQVhDb3JlT2JqZWN0KiBheE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQog
ewogICAgIHN3aXRjaCAoY3JpdGVyaWEtPnNlYXJjaEtleXNbaW5kZXhdKSB7CiAgICAgLy8gVGhl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGUgbWF0Y2hlcyBhbnkgbm9uLW51bGwgQWNj
ZXNzaWJpbGl0eU9iamVjdC4KQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmls
aXR5TwogICAgIH0KIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxp
dHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgQWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQVhDb3JlT2JqZWN0KiBheE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSkKIHsKICAgICBpZiAoIWF4
T2JqZWN0IHx8ICFjcml0ZXJpYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2LDcgKzI3
Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2Vh
cmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBzaXplX3QgbGVuZ3RoID0gY3JpdGVy
aWEtPnNlYXJjaEtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJ
bmRleChheE9iamVjdCwgY3JpdGVyaWEsIGkpKSB7Ci0gICAgICAgICAgICBpZiAoY3JpdGVyaWEt
PnZpc2libGVPbmx5ICYmICFheE9iamVjdC0+aXNPbnNjcmVlbigpKQorICAgICAgICAgICAgaWYg
KGNyaXRlcmlhLT52aXNpYmxlT25seSAmJiAhYXhPYmplY3QtPmlzT25TY3JlZW4oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMjg0LDE1ICsyODQsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vzc2liaWxp
dHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QsIEFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEpCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBWENvcmVPYmplY3QqIGF4T2JqZWN0LCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhKQogewogICAgIGlmICghYXhPYmpl
Y3QgfHwgIWNyaXRlcmlhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJu
IGF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KCZjcml0ZXJpYS0+c2Vh
cmNoVGV4dCk7CisgICAgcmV0dXJuIGF4T2JqZWN0LT5jb250YWluc1RleHQoJmNyaXRlcmlhLT5z
ZWFyY2hUZXh0KTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5
T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKIHsKICAgICAvLyBJZiB0
ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2UgcmV0dXJuIHRydWUuCiAgICAgcmV0dXJuICF0ZXh0CkBA
IC01MjIsNyArNTIyLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YmxvY2txdW90
ZUxldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0CitB
WENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAhb2JqZWN0LmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKQEAgLTYyNSw3ICs2MjUsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKSBj
b25zdAogICAgIH0pICE9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEFjY2Vzc2li
aWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCitzdGF0aWMgdm9pZCBh
cHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAg
Ly8gRmluZCB0aGUgbmV4dCBkZXNjZW5kYW50IG9mIHRoaXMgYXR0YWNobWVudCBvYmplY3Qgc28g
c2VhcmNoIGNhbiBjb250aW51ZSB0aHJvdWdoIGZyYW1lcy4KICAgICBpZiAob2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkgewpAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEFjY2Vz
c2liaWxpdHlPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBY2Nlc3NpYmlsaXR5
CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG9iamVjdCk7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCB1bnNp
Z25lZCBpbmRleCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6aW5zZXJ0Q2hpbGQoQVhDb3Jl
T2JqZWN0KiBjaGlsZCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFjaGlsZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjg0LDEyICs2ODQsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjppbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCwgdW5zaWduZWQgaW5kZXgK
ICAgICBjaGlsZC0+Y2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOwogfQogICAgIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGls
ZCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWRkQ2hpbGQoQVhDb3JlT2JqZWN0KiBjaGls
ZCkKIHsKICAgICBpbnNlcnRDaGlsZChjaGlsZCwgbV9jaGlsZHJlbi5zaXplKCkpOwogfQogICAg
IAotc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3Vs
dHMpCitzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRvQXJyYXkoQVhDb3JlT2JqZWN0KiBvYmpl
Y3QsIGJvb2wgaXNGb3J3YXJkLCBBWENvcmVPYmplY3QqIHN0YXJ0T2JqZWN0LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAg
Ly8gQSB0YWJsZSdzIGNoaWxkcmVuIGluY2x1ZGVzIGVsZW1lbnRzIHdob3NlIG93biBjaGlsZHJl
biBhcmUgYWxzbyB0aGUgdGFibGUncyBjaGlsZHJlbiAoZHVlIHRvIHRoZSB3YXkgdGhlIE1hYyBl
eHBvc2VzIHRhYmxlcykuCiAgICAgLy8gVGhlIHJvd3MgZnJvbSB0aGUgdGFibGUgc2hvdWxkIGJl
IHF1ZXJpZWQsIHNpbmNlIHRob3NlIGFyZSBkaXJlY3QgZGVzY2VuZGFudHMgb2YgdGhlIHRhYmxl
LCBhbmQgdGhleSBjb250YWluIGNvbnRlbnQuCkBAIC03MDIsNyArNzAyLDcgQEAgc3RhdGljIHZv
aWQgYXBwZW5kQ2hpbGRyZW5Ub0FycmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgYm9v
bCBpc0ZvcndhcmQsIEEKIAogICAgIC8vIElmIHRoZSBzdGFydE9iamVjdCBpcyBpZ25vcmVkLCB3
ZSBzaG91bGQgdXNlIGFuIGFjY2Vzc2libGUgc2libGluZyBhcyBhIHN0YXJ0IGVsZW1lbnQgaW5z
dGVhZC4KICAgICBpZiAoc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QtPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSAmJiBzdGFydE9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3Qob2JqZWN0KSkg
ewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBzdGFydE9iamVj
dC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0g
c3RhcnRPYmplY3QtPnBhcmVudE9iamVjdCgpOwogICAgICAgICAvLyBHbyB1cCB0aGUgcGFyZW50
IGNoYWluIHRvIGZpbmQgdGhlIGhpZ2hlc3QgYW5jZXN0b3IgdGhhdCdzIGFsc28gYmVpbmcgaWdu
b3JlZC4KICAgICAgICAgd2hpbGUgKHBhcmVudE9iamVjdCAmJiBwYXJlbnRPYmplY3QtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICAgICAgaWYgKHBhcmVudE9iamVjdCA9PSBv
YmplY3QpCkBAIC03MzUsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGRyZW5Ub0Fy
cmF5KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEEKIH0KIAog
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBpcyBub3cgPj0gdGhlIG51
bWJlciBvZiByZXN1bHRzIGRlc2lyZWQuCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9iamVj
dE1hdGNoZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEsIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0cykKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
b2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFYQ29yZU9iamVjdCog
b2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdHMpCiB7CiAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eU9i
amVjdFNlYXJjaE1hdGNoKG9iamVjdCwgY3JpdGVyaWEpICYmIGlzQWNjZXNzaWJpbGl0eVRleHRT
ZWFyY2hNYXRjaChvYmplY3QsIGNyaXRlcmlhKSkgewogICAgICAgICByZXN1bHRzLmFwcGVuZChv
YmplY3QpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlu
ZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlCiAgICAg
Ly8gSXQgZG9lcyB0aGlzIGJ5IHN0ZXBwaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4gYW5kIGF0IGVh
Y2ggbGV2ZWwgZG9pbmcgYSBERlMuCiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBubyBzdGFydCBv
YmplY3QsIGl0IG1lYW5zIHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcuCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSBjcml0ZXJpYS0+c3RhcnRPYmplY3Q7CisgICAg
QVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCA9IGNyaXRlcmlhLT5zdGFydE9iamVjdDsKICAgICBp
ZiAoIXN0YXJ0T2JqZWN0KQogICAgICAgICBzdGFydE9iamVjdCA9IHRoaXM7CiAgICAgCkBAIC03
NzEsMTQgKzc3MSwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRNYXRjaGluZ09i
amVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZQogICAgIC8vIFRoZSBmaXJz
dCBpdGVyYXRpb24gb2YgdGhlIG91dGVyIGxvb3Agd2lsbCBleGFtaW5lIHRoZSBjaGlsZHJlbiBv
ZiB0aGUgc3RhcnQgb2JqZWN0IGZvciBtYXRjaGVzLiBIb3dldmVyLCB3aGVuCiAgICAgLy8gaXRl
cmF0aW5nIGJhY2t3YXJkcywgdGhlIHN0YXJ0IG9iamVjdCBjaGlsZHJlbiBzaG91bGQgbm90IGJl
IGNvbnNpZGVyZWQsIHNvIHRoZSBsb29wIGlzIHNraXBwZWQgYWhlYWQuIFdlIG1ha2UgYW4KICAg
ICAvLyBleGNlcHRpb24gd2hlbiBubyBzdGFydCBvYmplY3Qgd2FzIHNwZWNpZmllZCBiZWNhdXNl
IHdlIHdhbnQgdG8gc2VhcmNoIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBzZWFyY2ggZGlyZWN0
aW9uLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gbnVsbHB0cjsK
KyAgICBBWENvcmVPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoIWlz
Rm9yd2FyZCAmJiBzdGFydE9iamVjdCAhPSB0aGlzKSB7CiAgICAgICAgIHByZXZpb3VzT2JqZWN0
ID0gc3RhcnRPYmplY3Q7CiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgIH0KICAgICAKICAgICAvLyBUaGUgb3V0ZXIgbG9vcCBz
dGVwcyB1cCB0aGUgcGFyZW50IGNoYWluIGVhY2ggdGltZSAodW5pZ25vcmVkIGlzIGltcG9ydGFu
dCBoZXJlIGJlY2F1c2Ugb3RoZXJ3aXNlIGVsZW1lbnRzIHdvdWxkIGJlIHNlYXJjaGVkIHR3aWNl
KQotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogc3RvcFNlYXJjaEVsZW1lbnQgPSBwYXJl
bnRPYmplY3RVbmlnbm9yZWQoKTsgc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QgIT0gc3RvcFNl
YXJjaEVsZW1lbnQ7IHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpKSB7CisgICAgZm9yIChhdXRvKiBzdG9wU2VhcmNoRWxlbWVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVjdCAhPSBzdG9wU2VhcmNoRWxl
bWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkp
IHsKIAogICAgICAgICAvLyBPbmx5IGFwcGVuZCB0aGUgY2hpbGRyZW4gYWZ0ZXIvYmVmb3JlIHRo
ZSBwcmV2aW91cyBlbGVtZW50LCBzbyB0aGF0IHRoZSBzZWFyY2ggZG9lcyBub3QgY2hlY2sgZWxl
bWVudHMgdGhhdCBhcmUgCiAgICAgICAgIC8vIGFscmVhZHkgYmVoaW5kL2FoZWFkIG9mIHN0YXJ0
IGVsZW1lbnQuCkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpm
aW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGUKIAog
ICAgICAgICAvLyBUaGlzIG5vdyBkb2VzIGEgREZTIGF0IHRoZSBjdXJyZW50IGxldmVsIG9mIHRo
ZSBwYXJlbnQuCiAgICAgICAgIHdoaWxlICghc2VhcmNoU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWFyY2hPYmplY3QgPSBzZWFyY2hTdGFjay5s
YXN0KCkuZ2V0KCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIHNlYXJjaE9iamVjdCA9IHNl
YXJjaFN0YWNrLmxhc3QoKS5nZXQoKTsKICAgICAgICAgICAgIHNlYXJjaFN0YWNrLnJlbW92ZUxh
c3QoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG9iamVjdE1hdGNoZXNTZWFyY2hD
cml0ZXJpYVdpdGhSZXN1bHRMaW1pdChzZWFyY2hPYmplY3QsIGNyaXRlcmlhLCByZXN1bHRzKSkK
QEAgLTIwMzEsMTMgKzIwMzEsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9iamVjdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKHJlbmRlck9iamVjdCk7Ci0gICAgCisKICAgICByZXR1cm4gY29uc3RfY2FzdDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgq
YXhPYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
SGVhZGluZzsKICAgICB9KSk7CkBAIC0yMzYwLDE3ICsyMzYwLDE3IEBAIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwogfSAgICAKIAotYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KiBheE9iamVjdCkgY29uc3QK
IHsKICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aGFzQ2hpbGRyZW4oKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbYXhPYmplY3RdIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICZvYmplY3QgPT0gYXhPYmplY3Q7
CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fu
Y2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0
Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENv
cmVPYmplY3QqIGF4T2JqZWN0KSBjb25zdAogewogICAgIGlmICghYXhPYmplY3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTI3NzgsNyArMjc3OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAogICAgIHJl
dHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25T
dGF0dXNWYWx1ZSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsKIH0KIAotQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FYQ29yZU9i
amVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsgCiAgICAgLy8gU2VuZCB0aGUgaGl0IHRlc3Qg
YmFjayBpbnRvIHRoZSBzdWItZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIGlmIChpc0F0dGFjaG1l
bnQoKSkgewpAQCAtMjgwNSw3ICsyODA1LDcgQEAgQVhPYmplY3RDYWNoZSogQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2VkVUlFbGVtZW50KCkg
Y29uc3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6Zm9jdXNlZFVJRWxlbWVu
dCgpIGNvbnN0CiB7CiAgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICByZXR1cm4g
cGFnZSA/IEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpIDogbnVs
bHB0cjsKQEAgLTI5NjMsNyArMjk2Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNF
eHBhbmRlZCgpIGNvbnN0CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+
aXNFeHBhbmRlZCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsgIAogfQogCkBA
IC0zMTAzLDcgKzMxMDMsNyBAQCBzdGF0aWMgaW50IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0KGlu
dCBjdXJyZW50U2Nyb2xsT2Zmc2V0LCBpbnQgc3ViZm9jdXNNaW4sIGludAogICAgIHJldHVybiAo
b2JqZWN0TWluICsgb2JqZWN0TWF4IC0gdmlld3BvcnRNaW4gLSB2aWV3cG9ydE1heCkgLyAyOwog
fQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAorYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uU2NyZWVuKCkgY29uc3QKIHsgICAKICAgICBib29sIGlz
T25zY3JlZW4gPSB0cnVlOwogCkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgICAgICBhdHRyaWJ1
dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCk7CiAgICAgCiAg
ICAgaWYgKGF0dHJpYnV0ZUNhY2hlKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gaWdub3JlZCA9IGF0dHJpYnV0ZUNhY2hlLT5nZXRJZ25vcmVkKGF4T2JqZWN0SUQoKSk7
CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gaWdub3JlZCA9IGF0dHJpYnV0
ZUNhY2hlLT5nZXRJZ25vcmVkKG9iamVjdElEKCkpOwogICAgICAgICBzd2l0Y2ggKGlnbm9yZWQp
IHsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmpl
Y3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM0OTUsNyArMzQ5NSw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAKICAg
ICAvLyBJbiBjYXNlIGNvbXB1dGluZyBheElzSWdub3JlZCBkaXNhYmxlcyBhdHRyaWJ1dGUgY2Fj
aGluZywgd2Ugc2hvdWxkIHJlZmV0Y2ggdGhlIG9iamVjdCB0byBzZWUgaWYgaXQgZXhpc3RzLgog
ICAgIGlmIChjYWNoZSAmJiAoYXR0cmlidXRlQ2FjaGUgPSBjYWNoZS0+Y29tcHV0ZWRPYmplY3RB
dHRyaWJ1dGVDYWNoZSgpKSkKLSAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9yZWQoYXhP
YmplY3RJRCgpLCByZXN1bHQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVP
YmplY3QgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKKyAg
ICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9yZWQob2JqZWN0SUQoKSwgcmVzdWx0ID8gQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0IDogQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMzYyMCw3ICszNjIwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbnRhaW5l
ZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KS5pc1Bhc3N3
b3JkRmllbGQoKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZWxlY3RlZExpc3RJdGVtKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDog
Y2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdEl0ZW0oKSAmJiAoY2hpbGQt
PmlzU2VsZWN0ZWQoKSB8fCBjaGlsZC0+aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFp
bmVyKCkpKQpAQCAtMzc1Miw3ICszNzUyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG8KICAg
ICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUob3duZXJzLCBhcmlhX293bnNBdHRy
KTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YUZvckNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkKQordm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVj
dCogY2hpbGQpCiB7CiAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAz
ZmYwYzM2MDFiNDEyYTI5ZTgyOGViYTYzODM2Y2ZkMTYyNDhkYzg1Li4zODNkZGVjOGYzODcwMmRm
ZTQ4OWEwNTFhZDVkM2U4NWI3MDE1Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzEsMTMgKzMxLDkgQEAKIAogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJGbG9hdFF1
YWQuaCIKLSNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUg
IkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNp
bmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgotI2luY2x1ZGUgIlZpc2libGVQb3NpdGlv
bi5oIgotI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTUzLDggKzQ5LDYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCi10eXBlZGVmIHN0cnVj
dCBfTlNSYW5nZSBOU1JhbmdlOwotCiBPQkpDX0NMQVNTIE5TQXJyYXk7CiBPQkpDX0NMQVNTIE5T
QXR0cmlidXRlZFN0cmluZzsKIE9CSkNfQ0xBU1MgTlNEYXRhOwpAQCAtNjgsMjAgKzYyLDkgQEAg
T0JKQ19DTEFTUyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjY2Vzc2li
aWxpdHlPYmplY3Q7Ci1jbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzsKLWNsYXNzIEFYT2Jq
ZWN0Q2FjaGU7Ci1jbGFzcyBFbGVtZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFzcyBGcmFtZVZpZXc7
CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBOb2RlOwotY2xhc3MgUGFn
ZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwotY2xhc3MgU2Ny
b2xsVmlldzsKLWNsYXNzIFdpZGdldDsKLXN0cnVjdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9u
czsKIAogZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7CiAgICAgQWx0ZXJuYXRp
dmUsCkBAIC0xMjEsNDk2ICsxMDQsMjcyIEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dCB7CiAg
ICAgfQogfTsKIAotc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSB7Ci0g
ICAgZW51bSBDaGlsZHJlbkluY2x1c2lvbiB7Ci0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2Rl
U2tpcElnbm9yZWRDaGlsZHJlbiwKLSAgICAgICAgVGV4dFVuZGVyRWxlbWVudE1vZGVJbmNsdWRl
QWxsQ2hpbGRyZW4sCi0gICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZU5hbWVGcm9t
Q29udGVudHNDaGlsZHJlbiwgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBBUklBIGNvbmNlcHQ6IG5h
bWVGcm9tCi0gICAgfTsKLSAgICAKLSAgICBDaGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1
c2lvbjsKLSAgICBib29sIGluY2x1ZGVGb2N1c2FibGVDb250ZW50OwotICAgIE5vZGUqIGlnbm9y
ZWRDaGlsZE5vZGU7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
KENoaWxkcmVuSW5jbHVzaW9uIGMgPSBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hp
bGRyZW4sIGJvb2wgaSA9IGZhbHNlLCBOb2RlKiBpZ25vcmVkID0gbnVsbHB0cikKLSAgICAgICAg
OiBjaGlsZHJlbkluY2x1c2lvbihjKQotICAgICAgICAsIGluY2x1ZGVGb2N1c2FibGVDb250ZW50
KGkpCi0gICAgICAgICwgaWdub3JlZENoaWxkTm9kZShpZ25vcmVkKQotICAgIHsgfQotfTsKLQot
Ly8gVXNlIHRoaXMgc3RydWN0IHRvIHN0b3JlIHRoZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVu
ZHMgb24gdGhlIHBhcmVudHMsIHNvIHRoYXQgaW4gYWRkQ2hpbGRyZW4oKQotLy8gd2UgYXZvaWQg
Z29pbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBmb3IgZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNp
bmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwgaW5mb3JtYXRpb24gYWxyZWFkeS4KLXN0cnVjdCBBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgewotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCB7IG51bGxwdHIgfTsKLSAgICBib29sIGlzQVhIaWRkZW4geyBmYWxzZSB9Owot
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCB7IGZhbHNlIH07Ci0gICAgCi0gICAgQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IG51bGxwdHIpCi0gICAgICAgIDogcGFyZW50KHBhcmVudCkKLSAgICB7IH0KLQotICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsgfQotfTsKLSAgICAKLWVudW0g
Y2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKLSAgICBWZXJ0aWNhbCwKLSAgICBIb3Jp
em9udGFsLAotICAgIFVuZGVmaW5lZCwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gewotICAgIEluY2x1ZGVPYmplY3QsCi0gICAgSWdub3JlT2JqZWN0
LAotICAgIERlZmF1bHRCZWhhdmlvciwKLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlCdXR0b25TdGF0ZSB7Ci0gICAgT2ZmID0gMCwKLSAgICBPbiwKLSAgICBNaXhlZCwKLX07Ci0g
ICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHsKLSAgICBOb25lLAot
ICAgIEFzY2VuZGluZywKLSAgICBEZXNjZW5kaW5nLAotICAgIE90aGVyLAotICAgIEludmFsaWQs
Ci19OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewotICAgIE5l
eHQgPSAxLAotICAgIFByZXZpb3VzLAotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5IHsKLSAgICBBbnlUeXBlID0gMSwKLSAgICBBcnRpY2xlLAotICAgIEJsb2NrcXVvdGVT
YW1lTGV2ZWwsCi0gICAgQmxvY2txdW90ZSwKLSAgICBCb2xkRm9udCwKLSAgICBCdXR0b24sCi0g
ICAgQ2hlY2tCb3gsCi0gICAgQ29udHJvbCwKLSAgICBEaWZmZXJlbnRUeXBlLAotICAgIEZvbnRD
aGFuZ2UsCi0gICAgRm9udENvbG9yQ2hhbmdlLAotICAgIEZyYW1lLAotICAgIEdyYXBoaWMsCi0g
ICAgSGVhZGluZ0xldmVsMSwKLSAgICBIZWFkaW5nTGV2ZWwyLAotICAgIEhlYWRpbmdMZXZlbDMs
Ci0gICAgSGVhZGluZ0xldmVsNCwKLSAgICBIZWFkaW5nTGV2ZWw1LAotICAgIEhlYWRpbmdMZXZl
bDYsCi0gICAgSGVhZGluZ1NhbWVMZXZlbCwKLSAgICBIZWFkaW5nLAotICAgIEhpZ2hsaWdodGVk
LAotICAgIEl0YWxpY0ZvbnQsCi0gICAgS2V5Ym9hcmRGb2N1c2FibGUsCi0gICAgTGFuZG1hcmss
Ci0gICAgTGluaywKLSAgICBMaXN0LAotICAgIExpdmVSZWdpb24sCi0gICAgTWlzc3BlbGxlZFdv
cmQsCi0gICAgT3V0bGluZSwKLSAgICBQbGFpblRleHQsCi0gICAgUmFkaW9Hcm91cCwKLSAgICBT
YW1lVHlwZSwKLSAgICBTdGF0aWNUZXh0LAotICAgIFN0eWxlQ2hhbmdlLAotICAgIFRhYmxlU2Ft
ZUxldmVsLAotICAgIFRhYmxlLAotICAgIFRleHRGaWVsZCwKLSAgICBVbmRlcmxpbmUsCi0gICAg
VW52aXNpdGVkTGluaywKLSAgICBWaXNpdGVkTGluaywKLX07Ci0KLWVudW0gY2xhc3MgQWNjZXNz
aWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcyB7Ci0gICAgRmlyc3QsCi0gICAgTGFzdCwK
LX07Ci0KLXN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgewotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHN0YXJ0T2JqZWN0OwotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rp
b24gc2VhcmNoRGlyZWN0aW9uOwotICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBz
ZWFyY2hLZXlzOwotICAgIFN0cmluZyBzZWFyY2hUZXh0OwotICAgIHVuc2lnbmVkIHJlc3VsdHNM
aW1pdDsKLSAgICBib29sIHZpc2libGVPbmx5OwotICAgIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFu
dHNPbmx5OwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShBY2Nlc3NpYmls
aXR5T2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFy
Y2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hUZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIGJv
b2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQotICAgICAgICA6
IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQotICAgICAgICAsIHNlYXJjaERpcmVjdGlvbihzZWFy
Y2hEaXJlY3Rpb24pCi0gICAgICAgICwgc2VhcmNoVGV4dChzZWFyY2hUZXh0KQotICAgICAgICAs
IHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQpCi0gICAgICAgICwgdmlzaWJsZU9ubHkodmlzaWJs
ZU9ubHkpCi0gICAgICAgICwgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KGltbWVkaWF0ZURlc2Nl
bmRhbnRzT25seSkKLSAgICB7IH0KLX07Ci0gICAgCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlE
ZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkIH07Ci0KLXN0
cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQ7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZDsKLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKCkg
e30KLQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcywg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQotICAgICAgICA6IHN0YXJ0KHMpCi0gICAgICAgICwg
ZW5kKGUpCi0gICAgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb24pCi0gICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCkp
Ci0gICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKLSAgICB7IH0KLQotICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpOyB9Ci19
OwotCi1zdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewotICAgICAgICAKLSAgICB1bnNpZ25lZCBzdGFy
dCB7IDAgfTsKLSAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07Ci0gICAgCi0gICAgUGxhaW5UZXh0
UmFuZ2UoKSA9IGRlZmF1bHQ7Ci0gICAgCi0gICAgUGxhaW5UZXh0UmFuZ2UodW5zaWduZWQgcywg
dW5zaWduZWQgbCkKLSAgICAgICAgOiBzdGFydChzKQotICAgICAgICAsIGxlbmd0aChsKQotICAg
IHsgfQotICAgIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBsYWluVGV4dFJhbmdlKE5TUmFu
Z2UpOwotI2VuZGlmCi0gICAgCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhc3Rh
cnQgJiYgIWxlbmd0aDsgfQotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dFN0YXJ0RnJvbSB7Ci0gICAgQmVnaW4sIC8vIFNlYXJjaCBmcm9tIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGVsZW1lbnQuCi0gICAgU2VsZWN0aW9uLCAvLyBTZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24g
b2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgotICAgIEVuZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5k
IG9mIHRoZSBlbGVtZW50LgotfTsKLQotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dERpcmVjdGlvbiB7Ci0gICAgRm9yd2FyZCwgLy8gT2NjdXJyZW5jZSBhZnRlciB0aGUgc3RhcnRp
bmcgcmFuZ2UuCi0gICAgQmFja3dhcmQsIC8vIE9jY3VycmVuY2UgYmVmb3JlIHRoZSBzdGFydGlu
ZyByYW5nZS4KLSAgICBDbG9zZXN0LCAvLyBDbG9zZXN0IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0
aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVyIG9yIGJlZm9yZS4KLSAgICBBbGwgLy8gQWxsIG9jY3Vy
cmVuY2VzCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSB7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gc2VhcmNoU3RyaW5nczsgLy8gVGV4dCBzdHJpbmdzIHRvIHNlYXJj
aCBmb3IuCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb20gc3RhcnQ7Ci0gICAg
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwotCi0gICAgQWNjZXNz
aWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSgpCi0gICAgICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0
eVNlYXJjaFRleHRTdGFydEZyb206OlNlbGVjdGlvbikKLSAgICAgICAgLCBkaXJlY3Rpb24oQWNj
ZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb246OkZvcndhcmQpCi0gICAgeyB9Ci19OwotCi1l
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uVHlwZSB7Ci0gICAgU2VsZWN0LAot
ICAgIFJlcGxhY2UsCi0gICAgQ2FwaXRhbGl6ZSwKLSAgICBMb3dlcmNhc2UsCi0gICAgVXBwZXJj
YXNlCi19OwotCi1zdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gewotICAgIFZlY3Rv
cjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2VzOyAvLyB0ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhl
IG9wZXJhdGlvbi4KLSAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGUgdHlwZTsKLSAg
ICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0OyAvLyBGb3IgdHlwZSA9IHJlcGxhY2UuCi0KLSAgICBB
Y2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbigpCi0gICAgICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5
VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVjdCkKLSAgICB7IH0KLX07Ci0KLWVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9
OwotZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFBy
ZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlw
dCB9OwotCi1lbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgeyBGYWxzZSwgVHJ1
ZSwgUGFnZSwgU3RlcCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKLWVudW0gY2xhc3MgQWNjZXNz
aWJpbGl0eUNvbnZlcnNpb25TcGFjZSB7IFNjcmVlbiwgUGFnZSB9OwotCiBib29sIG5vZGVIYXNQ
cmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKLSAgICAKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgcHVibGljIEFjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0IDogcHVi
bGljIEFYQ29yZU9iamVjdCB7CiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCgp
ID0gZGVmYXVsdDsKLSAgICAKKwogcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlP
YmplY3QoKTsKIAogICAgIC8vIEFmdGVyIGNvbnN0cnVjdGluZyBhbiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LCBpdCBtdXN0IGJlIGdpdmVuIGEKICAgICAvLyB1bmlxdWUgSUQsIHRoZW4gYWRkZWQgdG8g
QVhPYmplY3RDYWNoZSwgYW5kIGZpbmFsbHkgaW5pdCgpIG11c3QKICAgICAvLyBiZSBjYWxsZWQg
bGFzdC4KLSAgICB2b2lkIHNldEFYT2JqZWN0SUQoQVhJRCBheE9iamVjdElEKSB7IG1faWQgPSBh
eE9iamVjdElEOyB9Ci0gICAgdmlydHVhbCB2b2lkIGluaXQoKSB7IH0KKyAgICB2b2lkIHNldE9i
amVjdElEKEFYSUQgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CisgICAgdm9pZCBpbml0KCkg
b3ZlcnJpZGUgeyB9CiAKICAgICAvLyBXaGVuIHRoZSBjb3JyZXNwb25kaW5nIFdlYkNvcmUgb2Jq
ZWN0IHRoYXQgdGhpcyBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgLy8gd3JhcHMgaXMgZGVsZXRl
ZCwgaXQgbXVzdCBiZSBkZXRhY2hlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2li
aWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBudWxscHRyKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0OworICAgIHZvaWQgZGV0YWNoKEFjY2Vz
c2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSogPSBudWxscHRyKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
U1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyAq
KSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzSW1hZ2VCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXND
b250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24o
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9C
dXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9Ci0gICAgdmlydHVhbCBib29sIGlz
TGlzdEJveE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ltYWdl
TWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkltYWdlTWFwOyB9CisgICAgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29udGFpbmVkQnlQYXNzd29y
ZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFzc3dv
cmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNXZWJBcmVhKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWE7IH0KKyAgICBi
b29sIGlzQ2hlY2tib3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7IH0KKyAgICBib29sIGlzUmFkaW9CdXR0b24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UmFkaW9CdXR0b247IH0KKyAgICBib29sIGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsgfQorICAg
IGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzRGF0YVRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNUYWJsZVJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzVGFibGVDb2x1bW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1RhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzRmllbGRzZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c0dyb3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBUklB
VHJlZUdyaWRSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNJbnB1dElt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUHJvZ3Jl
c3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNT
bGlkZXJUaHVtYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0lucHV0U2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBp
c0xhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlz
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRGF0YVRhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVGFibGVSb3coKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNUYWJsZUNvbHVtbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZpZWxkc2V0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzR3JvdXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZU1hcExp
bmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNN
ZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlU3BpbkJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1
dHRvblBhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01v
Y2tPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNZW51TGlz
dE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1Nw
aW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjsgfQorICAgIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3BpbkJ1dHRvblBh
cnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNb2NrT2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVkaWFD
b250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGlzU3dpdGNoKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaDsgfQotICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9Ci0gICAgYm9v
bCBpc1RleHRDb250cm9sKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0FSSUFUZXh0Q29udHJvbCgpIGNv
bnN0OwotICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0OwotICAgIGJvb2wg
aXNUYWJMaXN0KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRhYkxpc3Q7IH0KLSAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KLSAgICBib29sIGlzUmFkaW9Hcm91
cCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRp
b0dyb3VwOyB9Ci0gICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OyB9CisgICAgYm9vbCBpc01lZGlhT2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU3dpdGNo
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaDsgfQorICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9
CisgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FS
SUFUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0
Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUYWJMaXN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q7
IH0KKyAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KKyAgICBib29sIGlzUmFkaW9Hcm91cCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0dyb3VwOyB9CisgICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OyB9CiAgICAg
Ym9vbCBpc1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZTsgfQotICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsgfQorICAgIGJv
b2wgaXNUcmVlR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVl
SXRlbTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOyB9Ci0gICAgYm9vbCBp
c0J1dHRvbigpIGNvbnN0OwotICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQotICAgIGJvb2wgaXND
aGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJldHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1
dHRvbigpOyB9Ci0gICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsgfQotICAgIGJvb2wgaXNDYW52
YXMoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2Fu
dmFzOyB9Ci0gICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOyB9Ci0gICAgYm9vbCBpc0Jsb2Nr
cXVvdGUoKSBjb25zdDsKLSAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdDsKLSAgICBib29sIGlz
Q29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbG9yV2VsbDsgfQotICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdDsKLSAgICBi
b29sIGlzTWV0ZXIoKSBjb25zdDsKLSAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KLSAgICBib29s
IGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUb29sYmFyOyB9Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdDsKLSAg
ICBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNLZXlib2FyZEZvY3Vz
YWJsZSgpIGNvbnN0OwotICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7IH0KLSAgICBib29sIGlzT3V0cHV0
KCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQorICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW07IH0KKyAgICBib29sIGlzQ2hlY2ti
b3hPclJhZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNDaGVja2JveCgpIHx8IGlzUmFk
aW9CdXR0b24oKTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KKyAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhczsgfQorICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQ
b3BVcEJ1dHRvbjsgfQorICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0NvbG9yV2Vs
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2xvcldlbGw7IH0KKyAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NwbGl0
dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlNwbGl0dGVyOyB9CisgICAgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjsgfQorICAg
IGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Zp
Z3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OyB9Cisg
ICAgYm9vbCBpc091dHB1dCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0NoZWNrZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2VsZWN0ZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNGb2N1c2VkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMb2FkZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPZmZTY3JlZW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNQcmVzc2VkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVW52aXNpdGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVmlzaXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzUmVxdWlyZWRB
dHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNM
aW5rZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNFeHBh
bmRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlk
ZSB7IH0KICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2li
aWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0OworICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVU
b1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVt
cyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUuCi0gICAg
dmlydHVhbCBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0OwotICAgIFJlZlB0cjxSYW5n
ZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFydCwgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhhc1BsYWlu
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQotICAgIHZpcnR1
YWwgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Q7Ci0KLSAgICBib29sIHN1cHBvcnRzRGF0ZXRpbWVBdHRy
aWJ1dGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNhblNldEZvY3VzQXR0cmlidXRl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJh
bmdlQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0RXhwYW5k
ZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZpcnR1YWwg
RWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgaGFzQm9s
ZEZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzSXRh
bGljRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNN
aXNzcGVsbGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxSYW5nZT4gZ2V0TWlzc3Bl
bGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNQbGFpblRleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVy
T2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc1Nh
bWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7IH0K
KyAgICBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wg
c3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2V0U2VsZWN0
ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2Jq
ZWN0SW5jbHVzaW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlE
ZWZhdWx0KCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBpc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2Fn
ZSgpIGNvbnN0OwotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0OwotICAgIAot
ICAgIHVuc2lnbmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGhl
YWRpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGludCB0YWJsZUxl
dmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVh
bCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAgIHZpcnR1
YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KLSAgICB2
aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9Ci0g
ICAgdmlydHVhbCBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7
IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkUmFkaW9CdXR0b24o
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBz
ZWxlY3RlZFRhYkl0ZW0oKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpOwotICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkg
Y29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHVuc2lnbmVk
IGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBoZWFkaW5nTGV2ZWwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgaW50IHRhYmxlTGV2ZWwoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNo
ZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHZhbHVlRGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGZsb2F0
IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9CisgICAgZmxv
YXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0KKyAg
ICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMC4wZjsg
fQorICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MC4wZjsgfQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVk
TGlzdEl0ZW0oKSBvdmVycmlkZTsKKyAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBpc0FSSUFDb250cm9sKEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdDsKLSAgICB2b2lk
IGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAg
ICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFEZXRhaWxz
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBh
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJl
bmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2
b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dDsKLSAgICB2b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKLSAgICB2b2lkIGFyaWFMYWJlbGxl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dDsKLSAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUG9wdXAo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBwb3B1cFZhbHVlKCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNIYXNQb3B1
cCgpIGNvbnN0OwotICAgIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0OwotICAgIGJvb2wg
YXJpYUlzTXVsdGlsaW5lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGludmFsaWRTdGF0dXMoKSBjb25z
dDsKLSAgICBib29sIHN1cHBvcnRzUHJlc3NlZCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNF
eHBhbmRlZCgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29uc3Q7Ci0gICAg
QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Q7Ci0gICAgY29uc3QgQXRv
bVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJp
bmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJp
bmc+JikgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3Q7
Ci0gICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUoKSBjb25zdDsKLSAg
ICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQo
KSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdDsKLSAg
ICAKKyAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUVy
cm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlh
Rmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3duc0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBoYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c0hhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
c3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0V4cGFu
ZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxpbmtSZWxWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgU3RyaW5n
IGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gdGhlcmUncyBh
IG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCi0gICAgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2Vu
Y2UoKSBjb25zdDsKLSAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdDsKLSAg
ICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0c1NldFNp
emUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdDsKLSAgICBpbnQg
c2V0U2l6ZSgpIGNvbnN0OwotICAgIGludCBwb3NJblNldCgpIGNvbnN0OwotICAgIAorICAgIGJv
b2wgaWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01vZGFs
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBzdXBwb3J0c1NldFNpemUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBpbnQgc2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBwb3NJblNldCgpIGNv
bnN0IG92ZXJyaWRlOworCiAgICAgLy8gQVJJQSBkcmFnIGFuZCBkcm9wCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKSB7IHJldHVybiB7IH07IH0KLSAg
ICAKKyAgICBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVJJQUdyYWJiZWQoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGUg
eyB9CisgICAgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkgb3ZlcnJp
ZGUgeyByZXR1cm4geyB9OyB9CisKICAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0
IHRvIHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIGFj
Y2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIC8vIENhbGxlZCBvbiB0aGUgQVggb2JqZWN0IGFmdGVyIHRoZSBy
ZW5kZXIgdHJlZSBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSByaWdodCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0KLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG5l
eHRTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdDsK
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENo
aWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxp
bmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdCBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50IGxp
bWl0KSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmpl
Y3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3JlT2JqZWN0
KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3Np
YmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSopOwotICAgIHZvaWQgZmluZE1hdGNoaW5nT2Jq
ZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBv
dmVycmlkZTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZSb2xlKEFj
Y2Vzc2liaWxpdHlSb2xlKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mUm9sZShBY2Nl
c3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBUZXh0IHNlbGVjdGlvbgog
cHJpdmF0ZToKQEAgLTYxOCwzOTcgKzM3NywzOTUgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJhbmdlPiBmaW5kVGV4dFJh
bmdlKFZlY3RvcjxTdHJpbmc+IGNvbnN0JiBzZWFyY2hTdHJpbmdzLCBSZWZQdHI8UmFuZ2U+IGNv
bnN0JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24pIGNvbnN0OwogcHVi
bGljOgotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmls
aXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Q7Ci0gICAgVmVjdG9yPFN0cmluZz4g
cGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3QmKTsK
LQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCB7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25k
aW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFi
ZWxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJv
bGVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50
YXRpb25hbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2Vh
cmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3Qm
KSBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVPYmplY3Qo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBsaW5rZWRVSUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b24pIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIEFjY2Vzc2liaWxpdHlSb2xl
IGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd247IH0KKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJv
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgYXJpYVJvbGVI
YXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAotICAgIHZpcnR1
YWwgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29u
c3QgeyB9OworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlU
ZXh0PiYpIGNvbnN0IG92ZXJyaWRlIHsgfTsKICAgICAvLyBBIHNpbmdsZSBtZXRob2QgZm9yIGdl
dHRpbmcgYSBjb21wdXRlZCBsYWJlbCBmb3IgYW4gQVhPYmplY3QuIEl0IGNvbmRlbnNlcyB0aGUg
bnVhbmNlcyBvZiBhY2Nlc3NpYmlsaXR5VGV4dC4gVXNlZCBieSBJbnNwZWN0b3IuCi0gICAgU3Ry
aW5nIGNvbXB1dGVkTGFiZWwoKTsKLSAgICAKKyAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgpIG92
ZXJyaWRlOworCiAgICAgLy8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5hbWUgb24gYW4g
QWNjZXNzaWJsZU9iamVjdC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29u
c3QgQXRvbVN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWly
ZWRGb3JJbmNsdXNpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJl
ZEZvckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBU
ZXh0IC0gKFRvIGJlIGRlcHJlY2F0ZWQpLgotICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxp
dHlEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBT
dHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3Ry
aW5nIGhlbHBUZXh0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQorICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9CiAKICAgICAvLyBNZXRob2RzIGZvciBkZXRlcm1pbmluZyBhY2Nlc3NpYmlsaXR5IHRleHQu
Ci0gICAgYm9vbCBpc0FSSUFTdGF0aWNUZXh0KCkgY29uc3QgeyByZXR1cm4gYXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsgfQotICAgIHZpcnR1YWwg
U3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50
TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCB7IHJldHVy
biBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiAw
OyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBTdHJpbmcgcGxh
Y2Vob2xkZXJWYWx1ZSgpIGNvbnN0OwotICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJv
bUNvbnRlbnQoKSBjb25zdDsKLSAgICAKKyAgICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTdGF0aWNUZXh0OyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgaW50IHRl
eHRMZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgU3RyaW5nIGFyaWFM
YWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBTdHJpbmcoKTsgfQorICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgp
IGNvbnN0IG92ZXJyaWRlOworCiAgICAgLy8gQWJicmV2aWF0aW9ucwotICAgIHZpcnR1YWwgU3Ry
aW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgCi0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1l
bnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBTdHJpbmcgZXhwYW5kZWRU
ZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIGJvb2wg
c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gT25seSBpZiBp
c0NvbG9yV2VsbCgpCi0gICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcs
IGludCYgYikgY29uc3QgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CisgICAgdm9pZCBjb2xvclZh
bHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0IG92ZXJyaWRlIHsgciA9IDA7IGcgPSAw
OyBiID0gMDsgfQogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yb2xlOyB9CiAKLSAgICB2aXJ0dWFsIEFYT2JqZWN0Q2FjaGUqIGF4
T2JqZWN0Q2FjaGUoKSBjb25zdDsKLSAgICBBWElEIGF4T2JqZWN0SUQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9Ci0gICAgCisgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2lkOyB9CisKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogYW5jaG9yRWxlbWVudEZv
ck5vZGUoTm9kZSopOwogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkaW5nRWxl
bWVudEZvck5vZGUoTm9kZSopOwotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBib29sIHN1cHBvcnRzUHJlc3NBY3Rpb24o
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVk
Qm91bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3QoYm91bmRpbmdC
b3hSZWN0KCkpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qg
PSAwOwotICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRSZWN0KCku
c2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCk7CisgICAgRWxlbWVu
dCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICBib29sIHN1cHBvcnRzUHJlc3NBY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBFbGVtZW50
KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5
b3V0UmVjdCgpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzbmFwcGVkSW50UmVjdChib3VuZGluZ0JveFJlY3QoKSk7
IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgPSAwOworICAg
IExheW91dFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVsZW1lbnRSZWN0KCku
c2l6ZSgpOyB9CisgICAgSW50UG9pbnQgY2xpY2tQb2ludCgpIG92ZXJyaWRlOwogICAgIHN0YXRp
YyBJbnRSZWN0IGJvdW5kaW5nQm94Rm9yUXVhZHMoUmVuZGVyT2JqZWN0KiwgY29uc3QgVmVjdG9y
PEZsb2F0UXVhZD4mKTsKLSAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCB7IHJl
dHVybiBQYXRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0
b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFu
Z2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9
Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJldHVybiBzZWxlY3RlZFRl
eHRSYW5nZSgpLnN0YXJ0OyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkgY29uc3QgeyBy
ZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5sZW5ndGg7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFVS
TCB1cmwoKSBjb25zdCB7IHJldHVybiBVUkwoKTsgfQotICAgIHZpcnR1YWwgVmlzaWJsZVNlbGVj
dGlvbiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3QgeyByZXR1
cm4gbnVsbEF0b20oKTsgfQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0Owot
ICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZy
YW1lVmlldygpIGNvbnN0OwotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgIEZyYW1lKiBt
YWluRnJhbWUoKSBjb25zdDsKLSAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdDsKLSAg
ICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdDsKLSAgICBTdHJpbmcgbGFu
Z3VhZ2UoKSBjb25zdDsKKyAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUGF0aCgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9y
QmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGFpblRleHRSYW5n
ZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJh
bmdlKCk7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rp
b25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgpLmxlbmd0
aDsgfQorCisgICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFVSTCgpOyB9Cisg
ICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBW
aXNpYmxlU2VsZWN0aW9uKCk7IH0KKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NL
ZXkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBhY3Rpb25WZXJiKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3aWRnZXQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgV2lkZ2V0KiB3aWRnZXRGb3JB
dHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBQ
YWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92
ZXJyaWRlOworICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lKiBt
YWluRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICAv
LyAxLWJhc2VkLCB0byBtYXRjaCB0aGUgYXJpYS1sZXZlbCBzcGVjLgotICAgIHZpcnR1YWwgdW5z
aWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgCi0gICAg
dmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0
ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2Uo
Y29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKTsKLSAgICBib29sIGluc2VydFRl
eHQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxvYXQpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIHsgfQotICAg
IAotICAgIHZpcnR1YWwgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdl
JikgeyB9Ci0gICAgdmlydHVhbCBib29sIHByZXNzKCk7Ci0gICAgYm9vbCBwZXJmb3JtRGVmYXVs
dEFjdGlvbigpIHsgcmV0dXJuIHByZXNzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBp
bmNyZW1lbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRleHRD
aGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkg
eyB9Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29s
IHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGRyZW4oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVj
dCopOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
dW5zaWduZWQpOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZl
Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0No
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlQ2hpbGRyZW47IH0KKyAgICB1bnNpZ25lZCBo
aWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAgIHZv
aWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4
dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5n
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOworICAgIGJv
b2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VmFs
dWUoZmxvYXQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHByZXNzKCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBwZXJmb3JtRGVmYXVsdEFjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIHByZXNzKCk7
IH0KKworICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgaW5jcmVtZW50KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkZWNy
ZW1lbnQoKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdXBk
YXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZSB7IH0KKyAgICBjb25zdCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9
IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0
Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgYm9vbCBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hh
dmVDaGlsZHJlbjsgfQogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgYm9vbCBuZWVkc1RvVXBkYXRlQ2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0
ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlU3VidHJl
ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOworICAg
IGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBh
cmVudCgpOworICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlOwogI2Vsc2UKLSAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIHsgfQorICAgIHZvaWQgZGV0YWNoRnJv
bVBhcmVudCgpIG92ZXJyaWRlIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCBib29sIGlzRGV0YWNo
ZWRGcm9tUGFyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBjYW5I
YXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVz
Y2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQot
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgeyB9Ci0gICAgYm9vbCBp
c0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KikgY29uc3Q7Ci0g
ICAgYm9vbCBpc0FuY2VzdG9yT2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCopIGNv
bnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgp
IGNvbnN0OworICAgIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdmlzaWJsZUNo
aWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9
CisgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRh
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBoYW5kbGVB
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgaGFuZGxlQXJp
YUV4cGFuZGVkQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZP
YmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Fu
Y2VzdG9yT2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgYXJp
YVJvbGVUb1dlYkNvcmVSb2xlKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGJvb2wgaGFzVGFnTmFt
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZp
c2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdl
KCkgY29uc3Q7CisgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3Np
dGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKTsgfQorCisgICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2UoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rl
cihOb2RlKiByZXBsYWNlZE5vZGUpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZp
c2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsK
LSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxlZnRMaW5lVmlz
aWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VG
b3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSBwYXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugdmlz
aWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0Owot
ICAgIFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQbGFp
blRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OworCisgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHBvc2l0aW9uT2ZSaWdodFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5n
ZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzZW50ZW5j
ZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxl
UmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsK
KyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBTdHJpbmcg
c3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2Um
KTsKLSAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29uc3Q7Ci0gICAg
dmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2li
bGVQb3NpdGlvblJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVh
bCBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IHsgcmV0
dXJuIEludFJlY3QoKTsgfQotICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRT
ZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikg
Y29uc3QgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yQm91bmRz
KGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zKSBjb25zdCB7IHJldHVybiB2aXNpYmxlUG9zLm5leHQoKTsgfQotICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3MpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVQb3MucHJldmlvdXMoKTsg
fQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEVuZChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdDsKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lRW5kUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IHByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNl
U3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gbmV4dFBhcmFncmFwaEVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0OwotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhP
SyAqLykgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNp
YmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gMDsgfQot
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwotICAgIGludCBsaW5lRm9yUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7Ci0gICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5U
ZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGluZUJyZWFrcyhWZWN0
b3I8aW50PiYpIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdl
Rm9yTGluZSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAg
IFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29u
c3Q7Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRleCh1bnNpZ25l
ZCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBsYWluVGV4dFJhbmdl
IGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBT
dHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAg
dmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgU3Ry
aW5nIHN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlOworICAgIElu
dFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0
IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZv
ckJvdW5kcykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHZpc2libGVQb3MubmV4dCgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlz
aWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdmlzaWJsZVBvcy5wcmV2aW91cygpOyB9CisgICAgVmlzaWJsZVBvc2l0
aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRTdGFydChjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBo
RW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKworICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGluZUZvclBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4
dFJhbmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXgoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KKworICAgIHZvaWQg
bGluZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIFBsYWluVGV4
dFJhbmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4dFJhbmdl
IGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFp
blRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRl
eCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgZG9BWFN0cmluZ0ZvclJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5n
KCk7IH0KKyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIEludFJlY3QgZG9B
WEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2Um
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KICAgICBzdGF0aWMgU3RyaW5n
IGxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mKTsKIAotICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpOworICAg
IHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpIG92ZXJyaWRlOwogCi0gICAgU3Ry
aW5nIGNvbXB1dGVkUm9sZVN0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBjb21wdXRlZFJvbGVT
dHJpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVl
Rm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNv
bnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpOyB9CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNB
QSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgU3RyaW5nIHN0cmlu
Z1JvbGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBT
dHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKTsgfQorCisgICAgU3RyaW5nIHBhc3N3b3Jk
RmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgYm9v
bCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWYWx1ZUF1
dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXV0b0ZpbGxCdXR0b25UeXBl
IHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdDsKLSAgICBib29sIGlzVmFsdWVBdXRv
ZmlsbEF2YWlsYWJsZSgpIGNvbnN0OwotICAgIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9m
aWxsQnV0dG9uVHlwZSgpIGNvbnN0OwotICAgIAogICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVl
IHRvIGdldCBhbGwgaXRzIHJvd3MuCi0gICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7CisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRl
bSB0byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KLSAg
ICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJik7Ci0gICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25seSBpdHMg
Y29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLiAKLSAgICB2
b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0g
ICAgCisgICAgdm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIG92ZXJyaWRlOworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIGl0ZW0g
dG8gZ2V0IG9ubHkgaXRzIGNvbnRlbnQsIGFuZCBub3QgaXRzIGNoaWxkIHRyZWUgaXRlbXMgYW5k
IGdyb3Vwcy4KKyAgICB2b2lkIGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUklBIGxpdmUtcmVnaW9uIGZlYXR1cmVz
LgotICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkg
Y29uc3Q7Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0
cnVlKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3Io
Ym9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCB7IHJldHVybiBudWxs
QXRvbSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0g
dHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCBl
eGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBv
dmVycmlkZTsKKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxl
dmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBib29sIGxp
dmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5
Um9sZSk7CiAgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBB
dG9tU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY29udGVudEVkaXRhYmxlQXR0cmlidXRlSXNF
bmFibGVkKEVsZW1lbnQqKTsKLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNl
dCgpIGNvbnN0OworICAgIGJvb2wgaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c1Jl
YWRPbmx5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25z
dCBvdmVycmlkZTsKKworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
Ym9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBhdXRvQ29tcGxl
dGVWYWx1ZSgpIGNvbnN0OwotICAgIAotICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygp
IGNvbnN0OwotICAgIAogICAgIC8vIENTUzMgU3BlZWNoIHByb3BlcnRpZXMuCi0gICAgdmlydHVh
bCBPcHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gT3B0
aW9uU2V0PFNwZWFrQXM+IHsgfTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJv
cGVydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcHRpb25TZXQ8U3BlYWtBcz4geyB9OyB9
CiAKICAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xsaW5nIGFzIG1hbnkg
bmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgotICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2Fu
J3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRp
bmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMo
Y29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gU2Nyb2xsIHRo
aXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0
b3AtbGV2ZWwgd2luZG93LgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNv
bnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgCi0gICAgZW51bSBjbGFzcyBTY3JvbGxCeVBhZ2VE
aXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsKLSAgICBib29sIHNjcm9sbEJ5UGFn
ZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0OwotICAgIEludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdDsgICAg
Ci0gICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKLSAgICB2b2lk
IHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBj
b25zdDsKLSAgICAKLSAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCk7Ci0gICAgdm9p
ZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKTsKKyAgICB2b2lkIHNjcm9sbFRvR2xv
YmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgc2Ny
b2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIHNjcm9s
bENvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJs
ZUNvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKIAogICAgIC8vIEZpcmVz
IGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJ
Z25vcmVkIHZhbHVlIGNoYW5nZWQuCi0gICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5n
ZWQoKTsKKyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlOwog
CiAgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0aEVsZW1lbnQo
KS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRleHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlT3BlcmF0
b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBh
cmF0b3JPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9i
amVjdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWF0
aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBl
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNNYXRoUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlz
TWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlw
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhUb2tl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01hdGhTY3Jp
cHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNj
ZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIAorICAgIEFYQ29yZU9iamVjdCogbWF0aFJhZGljYW5k
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCog
bWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAg
IC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGhVbmRlck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICAgICAvLyBGcmFjdGlvbiBjb21wb25lbnRzLgotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5vbWluYXRv
ck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1l
cmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQVhDb3JlT2Jq
ZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAKICAgICAvLyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1h
dGhTdXBlcnNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAKKyAgICBBWENv
cmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIC8vIEZlbmNlZCBjb21wb25lbnRzLgot
ICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgaW50IG1hdGhMaW5lVGhpY2tu
ZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Fub255bW91c01h
dGhPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCisgICAgU3RyaW5nIG1h
dGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
KyAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU3RyaW5nKCk7IH0KKyAgICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9u
ZW50cy4KLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8QWNjZXNzaWJpbGl0eU9iamVjdCos
IEFjY2Vzc2liaWxpdHlPYmplY3QqPj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJz
OwotICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0UGFpcnMmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vz
c2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQotICAgIAorICAgIHZvaWQgbWF0aFBy
ZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBh
aXJzJikgb3ZlcnJpZGUgeyB9CisKICAgICAvLyBWaXNpYmlsaXR5LgotICAgIGJvb2wgaXNBWEhp
ZGRlbigpIGNvbnN0OwotICAgIGJvb2wgaXNET01IaWRkZW4oKSBjb25zdDsKLSAgICBib29sIGlz
SGlkZGVuKCkgY29uc3QgeyByZXR1cm4gaXNBWEhpZGRlbigpIHx8IGlzRE9NSGlkZGVuKCk7IH0K
KyAgICBib29sIGlzQVhIaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRE9NSGlk
ZGVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGlzQVhIaWRkZW4oKSB8fCBpc0RPTUhpZGRlbigpOyB9CiAKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWSkKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgeyBtX3dyYXBwZXIg
PSB3cmFwcGVyOyB9CisgICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKiB3cmFwcGVyKSBvdmVycmlkZSB7IG1fd3JhcHBlciA9IHdyYXBwZXI7IH0KICNlbHNlCiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZv
aWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCk7
CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQp
IG92ZXJyaWRlOwogI2Vsc2UKLSAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nl
c3NpYmlsaXR5T2JqZWN0KikgeyB9CisgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQo
QVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZKQogICAgIC8vIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWV0aG9kIGZvciBkZXRl
cm1pbmluZyBpZiBhbiBhdHRhY2htZW50IGlzIGlnbm9yZWQKLSAgICBib29sIGFjY2Vzc2liaWxp
dHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Q7CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3Jl
QXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUg
b3Bwb3J0dW5pdHkgdG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGlu
Y2x1ZGVkCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxh
dGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlk
ZTsKICNlbHNlCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vz
c2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CisgICAgYm9vbCBhY2Nlc3Np
YmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUlu
Y2x1ZGVzT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVj
dEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVuZ3RoKCk7Ci0g
ICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdDsKLSAgICBib29sIGlzSW5wdXRU
eXBlUG9wdXBCdXR0b24oKSBjb25zdDsKKyAgICBpbnQgYWNjZXNzaWJpbGl0eVBhc3N3b3JkRmll
bGRMZW5ndGgoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCi0gICAgCisKICAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxp
dHlPYmplY3QgdG8gdXBkYXRlIGl0cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCiAgICAgLy8gb3Ro
ZXIgb3BlcmF0aW9ucyB1cGRhdGUgdHlwZSBvcGVyYXRpb25zCi0gICAgdm9pZCB1cGRhdGVCYWNr
aW5nU3RvcmUoKTsKLSAgICAKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG92ZXJyaWRl
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoKGJvb2wpOwotICAgIGJvb2wgZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0
bGUoKSBjb25zdDsKKyAgICBib29sIHByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0
Y2goYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVl
SW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzcGVlY2hIaW50QXR0cmlidXRl
VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdDsK
LSAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIGJvb2wgY2FyZXRC
cm93c2luZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENhcmV0QnJvd3Np
bmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmb2N1c2FibGVBbmNlc3RvcigpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVkaXRh
YmxlQW5jZXN0b3IoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoaWdoZXN0RWRpdGFibGVB
bmNlc3RvcigpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzYWJsZUFuY2VzdG9yKCkg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWRpdGFibGVBbmNlc3RvcigpIG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9y
KCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0
b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdDsKKyAgICBj
b25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGF0aWMgY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWF0Y2hlZFBhcmVudChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmKT4mKTsKLSAgICAKLSAgICB2b2lkIGNsZWFySXNJZ25vcmVkRnJv
bVBhcmVudERhdGEoKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsgfQotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBh
cmVudERhdGFGb3JDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7Ci0gICAgCisKKyAgICB2b2lk
IGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlkZSB7IG1faXNJZ25vcmVkRnJv
bVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsgfQor
ICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3Qq
KSBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIEFYSUQgbV9pZCB7IDAgfTsKICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKQEAgLTEwMjEsMjQgKzc3OCwyNCBA
QCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAg
ICBib29sIG1faXNvbGF0ZWRUcmVlTm9kZUluaXRpYWxpemVkIHsgZmFsc2UgfTsKICNlbmRpZgot
ICAgIAotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlz
SWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEg
PSBkYXRhOyB9CisKKyAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSYgZGF0YSkgb3ZlcnJpZGUgeyBtX2lzSWdub3Jl
ZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCiAgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IAorCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBpdHMgU2Ny
b2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFy
ZWFJZlNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgeyB9CiAgICAgU2Nyb2xsYWJsZUFy
ZWEqIHNjcm9sbGFibGVBcmVhQW5jZXN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbEFyZWFB
bmRBbmNlc3RvcihzdGQ6OnBhaXI8U2Nyb2xsYWJsZUFyZWEqLCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4mKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3RT
ZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFy
Y2hDcml0ZXJpYSosIHNpemVfdCk7Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2Jq
ZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYSopOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRj
aChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKik7Ci0g
ICAgc3RhdGljIGJvb2wgb2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0
KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJp
bGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
U2VhcmNoQ3JpdGVyaWEqLCBzaXplX3QpOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eU9iamVjdFNlYXJjaE1hdGNoKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0
ZXJpYSopOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChB
WENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKKyAgICBzdGF0aWMg
Ym9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQVhDb3JlT2Jq
ZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBidXR0b25Sb2xlVHlwZSgp
IGNvbnN0OwotICAgIGJvb2wgaXNPbnNjcmVlbigpIGNvbnN0OworICAgIGJvb2wgaXNPblNjcmVl
bigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZGlzcGF0Y2hUb3VjaEV2ZW50KCk7CiAKICAg
ICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwpAQCAtMTA2NCwxMCArODIxLDEwIEBA
IHByb3RlY3RlZDoKIH07CiAKICNpZiAhRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCi1pbmxpbmUgY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSB7IHJldHVybiBtX2NoaWxkcmVuOyB9Citp
bmxpbmUgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGlsZHJlbihib29sKSBvdmVycmlkZSB7IHJldHVy
biBtX2NoaWxkcmVuOyB9CiBpbmxpbmUgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY3Rpb25WZXJiKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogaW5saW5lIGlu
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgeyByZXR1cm4gLTE7IH0KLWlubGluZSB2b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpIHsgfQoraW5saW5lIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogQWNjZXNz
aWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSos
IGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBp
c0FjY2Vzc2libGUpOwpAQCAtMTA3Niw5ICs4MzMsOSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBm
aXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBOb2RlKiwgY29uc3QgV1RGOjpGdW5j
dAogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShUb1ZhbHVl
VHlwZU5hbWUsIHByZWRpY2F0ZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpUb1ZhbHVlVHlwZU5hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVybiBvYmplY3QucHJlZGlj
YXRlOyB9IFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5wcmVkaWNhdGU7IH0gXAogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3QpCi1zdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5p
c0FjY2Vzc2liaWxpdHlPYmplY3QoKTsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkFYQ29yZU9iamVjdCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0FjY2Vzc2liaWxp
dHlPYmplY3QoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaAppbmRleCA5OGZmYjMxNWUyMTBiMGNiMzVkYmU3OWJjYzIwZjkxMTAyMTc4YmJjLi4y
OTAzZGUxOTg4YzY1ZDUyYjViMjA3YjAwNjA1MTFlZGY1MzgxNzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaApAQCAtMjUsNyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNp
bmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCisjaW5j
bHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC00NSw2
ICs1MCwyMyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBOb2RlOworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFJlbmRlck9i
amVjdDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBQYXRoOworY2xhc3MgV2lkZ2V0Owor
Y2xhc3MgUGFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRnJhbWU7CitjbGFzcyBGcmFtZVZp
ZXc7CitjbGFzcyBTY3JvbGxWaWV3OworY2xhc3MgQVhPYmplY3RDYWNoZTsKK2NsYXNzIEFYQ29y
ZU9iamVjdDsKK2NsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Oworc3RydWN0IEFjY2Vzc2li
aWxpdHlUZXh0Oworc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zOworCiB0eXBlZGVm
IHVuc2lnbmVkIEFYSUQ7CiBleHRlcm4gY29uc3QgQVhJRCBJbnZhbGlkQVhJRDsKIHR5cGVkZWYg
dW5zaWduZWQgQVhJc29sYXRlZFRyZWVJRDsgICAgCkBAIC0yMDMsMzYgKzIyNSw4NTYgQEAgZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgV2luZG93LAogfTsKIAotY2xhc3MgQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSB7CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkLCBFbGVtZW50Q2hh
bmdlIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSB7IFNjcmVl
biwgUGFnZSB9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewor
ICAgIE5leHQgPSAxLAorICAgIFByZXZpb3VzLAorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5IHsKKyAgICBBbnlUeXBlID0gMSwKKyAgICBBcnRpY2xlLAorICAgIEJsb2Nr
cXVvdGVTYW1lTGV2ZWwsCisgICAgQmxvY2txdW90ZSwKKyAgICBCb2xkRm9udCwKKyAgICBCdXR0
b24sCisgICAgQ2hlY2tCb3gsCisgICAgQ29udHJvbCwKKyAgICBEaWZmZXJlbnRUeXBlLAorICAg
IEZvbnRDaGFuZ2UsCisgICAgRm9udENvbG9yQ2hhbmdlLAorICAgIEZyYW1lLAorICAgIEdyYXBo
aWMsCisgICAgSGVhZGluZ0xldmVsMSwKKyAgICBIZWFkaW5nTGV2ZWwyLAorICAgIEhlYWRpbmdM
ZXZlbDMsCisgICAgSGVhZGluZ0xldmVsNCwKKyAgICBIZWFkaW5nTGV2ZWw1LAorICAgIEhlYWRp
bmdMZXZlbDYsCisgICAgSGVhZGluZ1NhbWVMZXZlbCwKKyAgICBIZWFkaW5nLAorICAgIEhpZ2hs
aWdodGVkLAorICAgIEl0YWxpY0ZvbnQsCisgICAgS2V5Ym9hcmRGb2N1c2FibGUsCisgICAgTGFu
ZG1hcmssCisgICAgTGluaywKKyAgICBMaXN0LAorICAgIExpdmVSZWdpb24sCisgICAgTWlzc3Bl
bGxlZFdvcmQsCisgICAgT3V0bGluZSwKKyAgICBQbGFpblRleHQsCisgICAgUmFkaW9Hcm91cCwK
KyAgICBTYW1lVHlwZSwKKyAgICBTdGF0aWNUZXh0LAorICAgIFN0eWxlQ2hhbmdlLAorICAgIFRh
YmxlU2FtZUxldmVsLAorICAgIFRhYmxlLAorICAgIFRleHRGaWVsZCwKKyAgICBVbmRlcmxpbmUs
CisgICAgVW52aXNpdGVkTGluaywKKyAgICBWaXNpdGVkTGluaywKK307CisKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgeworICAgIEFYQ29yZU9iamVjdCogc3RhcnRPYmplY3Q7
CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb247CisgICAg
VmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IHNlYXJjaEtleXM7CisgICAgU3RyaW5nIHNl
YXJjaFRleHQ7CisgICAgdW5zaWduZWQgcmVzdWx0c0xpbWl0OworICAgIGJvb2wgdmlzaWJsZU9u
bHk7CisgICAgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHk7CisKKyAgICBBY2Nlc3NpYmls
aXR5U2VhcmNoQ3JpdGVyaWEoQVhDb3JlT2JqZWN0KiBzdGFydE9iamVjdCwgQWNjZXNzaWJpbGl0
eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rpb24sIFN0cmluZyBzZWFyY2hUZXh0LCB1bnNp
Z25lZCByZXN1bHRzTGltaXQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2Vu
ZGFudHNPbmx5KQorICAgICAgICA6IHN0YXJ0T2JqZWN0KHN0YXJ0T2JqZWN0KQorICAgICAgICAs
IHNlYXJjaERpcmVjdGlvbihzZWFyY2hEaXJlY3Rpb24pCisgICAgICAgICwgc2VhcmNoVGV4dChz
ZWFyY2hUZXh0KQorICAgICAgICAsIHJlc3VsdHNMaW1pdChyZXN1bHRzTGltaXQpCisgICAgICAg
ICwgdmlzaWJsZU9ubHkodmlzaWJsZU9ubHkpCisgICAgICAgICwgaW1tZWRpYXRlRGVzY2VuZGFu
dHNPbmx5KGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKKyAgICB7IH0KK307CisKK2VudW0gY2xh
c3MgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiB7CisgICAgSW5jbHVkZU9iamVjdCwKKyAg
ICBJZ25vcmVPYmplY3QsCisgICAgRGVmYXVsdEJlaGF2aW9yLAorfTsKKworZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIHsgRmFsc2UsIFRydWUsIFBhZ2UsIFN0ZXAsIExvY2F0
aW9uLCBEYXRlLCBUaW1lIH07CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
IHsKKyAgICBPZmYgPSAwLAorICAgIE9uLAorICAgIE1peGVkLAorfTsKKworZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiB7CisgICAgTm9uZSwKKyAgICBBc2NlbmRpbmcsCisg
ICAgRGVzY2VuZGluZywKKyAgICBPdGhlciwKKyAgICBJbnZhbGlkLAorfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFN0YXJ0RnJvbSB7CisgICAgQmVnaW4sIC8vIFNlYXJj
aCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVsZW1lbnQuCisgICAgU2VsZWN0aW9uLCAvLyBT
ZWFyY2ggZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgorICAgIEVu
ZCAvLyBTZWFyY2ggZnJvbSB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorfTsKKworZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiB7CisgICAgRm9yd2FyZCwgLy8gT2Nj
dXJyZW5jZSBhZnRlciB0aGUgc3RhcnRpbmcgcmFuZ2UuCisgICAgQmFja3dhcmQsIC8vIE9jY3Vy
cmVuY2UgYmVmb3JlIHRoZSBzdGFydGluZyByYW5nZS4KKyAgICBDbG9zZXN0LCAvLyBDbG9zZXN0
IG9jY3VycmVuY2UgdG8gdGhlIHN0YXJ0aW5nIHJhbmdlLCB3aGV0aGVyIGFmdGVyIG9yIGJlZm9y
ZS4KKyAgICBBbGwgLy8gQWxsIG9jY3VycmVuY2VzCit9OworCitzdHJ1Y3QgQWNjZXNzaWJpbGl0
eVNlYXJjaFRleHRDcml0ZXJpYSB7CisgICAgVmVjdG9yPFN0cmluZz4gc2VhcmNoU3RyaW5nczsg
Ly8gVGV4dCBzdHJpbmdzIHRvIHNlYXJjaCBmb3IuCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHRTdGFydEZyb20gc3RhcnQ7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uOworCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSgpCisgICAg
ICAgIDogc3RhcnQoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRTdGFydEZyb206OlNlbGVjdGlvbikK
KyAgICAgICAgLCBkaXJlY3Rpb24oQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb246OkZv
cndhcmQpCisgICAgeyB9Cit9OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0
aW9uVHlwZSB7CisgICAgU2VsZWN0LAorICAgIFJlcGxhY2UsCisgICAgQ2FwaXRhbGl6ZSwKKyAg
ICBMb3dlcmNhc2UsCisgICAgVXBwZXJjYXNlCit9OworCitzdHJ1Y3QgQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb24geworICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2VzOyAvLyB0
ZXh0IG9uIHdoaWNoIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4KKyAgICBBY2Nlc3NpYmlsaXR5VGV4
dE9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRUZXh0OyAvLyBGb3Ig
dHlwZSA9IHJlcGxhY2UuCisKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbigpCisgICAg
ICAgIDogdHlwZShBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblR5cGU6OlNlbGVjdCkKKyAgICB7
IH0KK307CisKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKKyAgICBWZXJ0
aWNhbCwKKyAgICBIb3Jpem9udGFsLAorICAgIFVuZGVmaW5lZCwKK307CisKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgeworICAgIGVudW0gQ2hpbGRyZW5JbmNsdXNp
b24geworICAgICAgICBUZXh0VW5kZXJFbGVtZW50TW9kZVNraXBJZ25vcmVkQ2hpbGRyZW4sCisg
ICAgICAgIFRleHRVbmRlckVsZW1lbnRNb2RlSW5jbHVkZUFsbENoaWxkcmVuLAorICAgICAgICBU
ZXh0VW5kZXJFbGVtZW50TW9kZUluY2x1ZGVOYW1lRnJvbUNvbnRlbnRzQ2hpbGRyZW4sIC8vIFRo
aXMgY29ycmVzcG9uZHMgdG8gQVJJQSBjb25jZXB0OiBuYW1lRnJvbQorICAgIH07CisKKyAgICBD
aGlsZHJlbkluY2x1c2lvbiBjaGlsZHJlbkluY2x1c2lvbjsKKyAgICBib29sIGluY2x1ZGVGb2N1
c2FibGVDb250ZW50OworICAgIE5vZGUqIGlnbm9yZWRDaGlsZE5vZGU7CisKKyAgICBBY2Nlc3Np
YmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoQ2hpbGRyZW5JbmNsdXNpb24gYyA9IFRleHRVbmRl
ckVsZW1lbnRNb2RlU2tpcElnbm9yZWRDaGlsZHJlbiwgYm9vbCBpID0gZmFsc2UsIE5vZGUqIGln
bm9yZWQgPSBudWxscHRyKQorICAgICAgICA6IGNoaWxkcmVuSW5jbHVzaW9uKGMpCisgICAgICAg
ICwgaW5jbHVkZUZvY3VzYWJsZUNvbnRlbnQoaSkKKyAgICAgICAgLCBpZ25vcmVkQ2hpbGROb2Rl
KGlnbm9yZWQpCisgICAgeyB9Cit9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCit0eXBlZGVmIHN0
cnVjdCBfTlNSYW5nZSBOU1JhbmdlOworI2VuZGlmCisKK3N0cnVjdCBQbGFpblRleHRSYW5nZSB7
CisgICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CisgICAgdW5zaWduZWQgbGVuZ3RoIHsgMCB9Owor
CisgICAgUGxhaW5UZXh0UmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBQbGFpblRleHRSYW5nZSh1
bnNpZ25lZCBzLCB1bnNpZ25lZCBsKQorICAgICAgICA6IHN0YXJ0KHMpCisgICAgICAgICwgbGVu
Z3RoKGwpCisgICAgeyB9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGFpblRleHRSYW5n
ZShOU1JhbmdlKTsKKyNlbmRpZgorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAh
c3RhcnQgJiYgIWxlbmd0aDsgfQorfTsKKworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzIHsKKyAgICBGaXJzdCwKKyAgICBMYXN0LAorfTsKKworc3RydWN0
IFZpc2libGVQb3NpdGlvblJhbmdlIHsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQ7CisgICAg
VmlzaWJsZVBvc2l0aW9uIGVuZDsKKworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKCkgPSBkZWZh
dWx0OworICAgIFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcywg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlKQorICAgICAgICA6IHN0YXJ0KHMpCisgICAgICAgICwg
ZW5kKGUpCisgICAgeyB9CisKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb24pCisgICAgICAgIDogc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCkp
CisgICAgICAgICwgZW5kKHNlbGVjdGlvbi5lbmQoKSkKKyAgICB7IH0KKworICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpOyB9Cit9
OworCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNj
cmlwdCwgU3VwZXJzY3JpcHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2Ny
aXB0LCBQb3N0U3VwZXJzY3JpcHQgfTsKKworLy8gVXNlIHRoaXMgc3RydWN0IHRvIHN0b3JlIHRo
ZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNvIHRoYXQgaW4g
YWRkQ2hpbGRyZW4oKQorLy8gd2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBmb3Ig
ZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwgaW5mb3Jt
YXRpb24gYWxyZWFkeS4KK3N0cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEgeworICAgIEFYQ29yZU9iamVjdCogcGFyZW50IHsgbnVsbHB0ciB9OworICAgIGJvb2wgaXNB
WEhpZGRlbiB7IGZhbHNlIH07CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFS
b2xlIHsgZmFsc2UgfTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50IHsgZmFs
c2UgfTsKKworICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBWENvcmVP
YmplY3QqIHBhcmVudCA9IG51bGxwdHIpCisgICAgICAgIDogcGFyZW50KHBhcmVudCkKKyAgICB7
IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBhcmVudDsgfQorfTsKKwor
Y2xhc3MgQVhDb3JlT2JqZWN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYQ29yZU9i
amVjdD4gewogcHVibGljOgotICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QVhDb3JlT2JqZWN0KCkgPSBkZWZhdWx0Owog
Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICAvLyBBZnRlciBjb25zdHJ1
Y3RpbmcgYW4gYWNjZXNzaWJsZSBvYmplY3QsIGl0IG11c3QgYmUgZ2l2ZW4gYQorICAgIC8vIHVu
aXF1ZSBJRCwgdGhlbiBhZGRlZCB0byBBWE9iamVjdENhY2hlLCBhbmQgZmluYWxseSBpbml0KCkg
bXVzdAorICAgIC8vIGJlIGNhbGxlZCBsYXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRPYmplY3RJ
RChBWElEKSA9IDA7CisgICAgdmlydHVhbCBBWElEIG9iamVjdElEKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBpbml0KCkgPSAwOworCisgICAgLy8gV2hlbiB0aGUgY29ycmVzcG9uZGlu
ZyBXZWJDb3JlIG9iamVjdCB0aGF0IHRoaXMgYWNjZXNzaWJsZSBvYmplY3QKKyAgICAvLyByZXBy
ZXNlbnRzIGlzIGRlbGV0ZWQsIGl0IG11c3QgYmUgZGV0YWNoZWQuCisgICAgdmlydHVhbCB2b2lk
IGRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUsIEFYT2JqZWN0Q2FjaGUqID0gbnVs
bHB0cikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgPSAwOworCisg
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvcjsKKworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50KCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzTGluaygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0
aXZlSW1hZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VCdXR0b24oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNz
d29yZEZpZWxkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQ2hlY2tib3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXR0
YWNobWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TWVudUJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QnV0dG9uKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVz
c0luZGljYXRvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQ29udHJvbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1RhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFUYWJsZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNUYWJsZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRmllbGRzZXQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51
TGlzdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
cGluQnV0dG9uUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrT2JqZWN0
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbExhYmVsKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1N3aXRjaCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNU
b2dnbGVCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2wo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzVGFiSXRlbSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0dyb3Vw
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1RyZWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
VHJlZUdyaWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVHJlZUl0ZW0oKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0J1dHRvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0SXRl
bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUG9w
VXBCdXR0b24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQmxvY2txdW90ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
UmFuZ2VDb250cm9sKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwbGl0dGVyKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3R5
bGVGb3JtYXRHcm91cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaWd1cmVFbGVt
ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzT3V0cHV0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlz
Q2hlY2tlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSG92ZXJl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCA9IDA7CisgICAgLy8gRklYTUUgc2hvdWxk
IG5lZWQganVzdCBvbmUgc2luY2Ugb25zY3JlZW4gc2hvdWxkIGJlICFvZmZzY3JlZW4uCisgICAg
dmlydHVhbCBib29sIGlzT25TY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
T2ZmU2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRy
aWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29sbGFwc2Vk
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogcGFyZW50T2JqZWN0SW50ZXJmYWNl
VW5pZ25vcmVkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZSogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKyAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYs
IEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKKworICAgIC8vIEluIGEg
bXVsdGktc2VsZWN0IGxpc3QsIG1hbnkgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ1dCBvbmx5IG9u
ZSBpcyBhY3RpdmUgYXQgYSB0aW1lLgorICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkT3B0aW9u
QWN0aXZlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShSZWZQdHI8UmFuZ2U+IGNvbnN0JiBzdGFy
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNQbGFpblRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZv
bnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1Nh
bWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU3Rh
dGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE5v
ZGUqIG5vZGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRl
ZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBoZWFkaW5n
TGV2ZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdGFibGVMZXZlbCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBjaGVja2JveE9yUmFkaW9W
YWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxv
YXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmpl
Y3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IHNlbGVjdGVkVGFiSXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogc2VsZWN0
ZWRMaXN0SXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIGludCBsYXlvdXRDb3VudCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVy
ZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURldGFpbHNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYUVycm9yTWVzc2Fn
ZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNQb3B1cCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBwb3B1cFZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhbGlzdCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGludmFsaWRTdGF0dXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
UHJlc3NlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBhbmRlZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBU
aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4g
dGhlcmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCisgICAgdmlydHVhbCBib29sIGlnbm9y
ZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2Rh
bERlc2NlbmRhbnQoTm9kZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2RhbE5v
ZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXRTaXplKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHNldFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgcG9z
SW5TZXQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBBUklBIGRyYWcgYW5kIGRyb3AKKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0FSSUFHcmFiYmVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBUklBR3JhYmJlZChib29s
KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJvcEVmZmVj
dHMoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0IHRvIHJldHVy
biB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVj
dCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisgICAg
Ly8gQ2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWlu
ZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCisgICAgdmly
dHVhbCBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlF
bGVtZW50KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGxhc3RDaGlsZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxp
bWl0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHByZXZpb3VzU2libGlu
Z1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVj
dCogcGFyZW50T2JqZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmpl
Y3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBm
aW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50
T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFu
dE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QgPSAwOworCisgICAgLy8gVGV4dCBzZWxl
Y3Rpb24KKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhB
Y2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb24gY29uc3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogb2Jz
ZXJ2YWJsZU9iamVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVs
RWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogc2Nyb2xsQmFy
KEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIEFjY2Vzc2liaWxpdHkgVGV4dAorICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5
VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3QgPSAwOworICAgIC8vIEEgc2lu
Z2xlIG1ldGhvZCBmb3IgZ2V0dGluZyBhIGNvbXB1dGVkIGxhYmVsIGZvciBhbiBBWE9iamVjdC4g
SXQgY29uZGVuc2VzIHRoZSBudWFuY2VzIG9mIGFjY2Vzc2liaWxpdHlUZXh0LiBVc2VkIGJ5IElu
c3BlY3Rvci4KKyAgICB2aXJ0dWFsIFN0cmluZyBjb21wdXRlZExhYmVsKCkgPSAwOworCisgICAg
Ly8gQSBwcm9ncmFtbWF0aWMgd2F5IHRvIHNldCBhIG5hbWUgb24gYW4gQWNjZXNzaWJsZU9iamVj
dC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRvbVN0cmluZyYp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5jbHVzaW9u
KCkgY29uc3QgPSAwOworCisgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0IC0gKFRvIGJlIGRlcHJl
Y2F0ZWQpLgorICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ldGhvZHMgZm9yIGRl
dGVybWluaW5nIGFjY2Vzc2liaWxpdHkgdGV4dC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBU3Rh
dGljVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxp
dHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZSgpKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5n
IGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
YXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGFj
Y2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3QgPSAwOworCisgICAgLy8gQWJi
cmV2aWF0aW9ucworICAgIHZpcnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxl
bWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIC8vIE9ubHkg
aWYgaXNDb2xvcldlbGwoKQorICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGludCYgciwgaW50
JiBnLCBpbnQmIGIpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWE9iamVjdENhY2hlKiBheE9i
amVjdENhY2hlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVt
ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ByZXNzQWN0aW9uKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9p
bnQgY2xpY2tQb2ludCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhdGggZWxlbWVudFBhdGgoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0
UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRl
eHRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
c2VsZWN0ZWRUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYg
YWNjZXNzS2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBhY3Rpb25W
ZXJiKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUGFnZSogcGFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyYW1lVmlldyogZG9jdW1l
bnRGcmFtZVZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogZnJhbWUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Ny
b2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOworICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBh
cmlhLWxldmVsIHNwZWMuCisgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmlu
ZyYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBlcmZvcm1EZWZh
dWx0QWN0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dENoYW5nZWQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgPSAwOworICAg
IHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29s
IHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkcmVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3Qq
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2ln
bmVkKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzVG9VcGRhdGVTdWJ0cmVlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVu
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNh
bkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFu
Z2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVP
YmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQW5jZXN0b3JPZk9iamVjdChj
b25zdCBBWENvcmVPYmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9v
bCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRl
cmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9u
T2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIGxl
ZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBw
YXJhZ3JhcGhGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIGxpbmVSYW5n
ZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4
dFJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yUmFuZ2Uo
UmVmUHRyPFJhbmdlPikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdl
PikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGxlbmd0aEZvclZpc2libGVQb3NpdGlvblJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBv
c2l0aW9uRm9yQm91bmRzKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gbmV4dFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRT
dGFydChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzU2Vu
dGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
IHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFj
Y2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJh
bmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVu
c2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VG
b3JQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYWlu
VGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGRvQVhCb3VuZHNG
b3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGRvQVhMaW5lRm9y
SW5kZXgodW5zaWduZWQpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGNvbXB1dGVkUm9sZVN0
cmluZygpIGNvbnN0ID0gMDsKKworICAgIC8vIE1TQUEKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJp
bmdWYWx1ZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nUm9s
ZUZvck1TQUEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25Gb3JNU0FBKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEF1dG9GaWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9uVHlwZSgpIGNv
bnN0ID0gMDsKKworICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRvIGdldCBhbGwgaXRzIHJv
d3MuCisgICAgdmlydHVhbCB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgYWxs
IG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KKyAgICB2aXJ0dWFsIHZv
aWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSA9IDA7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25seSBpdHMg
Y29udGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLgorICAgIHZp
cnR1YWwgdm9pZCBhcmlhVHJlZUl0ZW1Db250ZW50KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpID0gMDsKKworICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24gZmVhdHVyZXMuCisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlm
T2ZmID0gdHJ1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBsaXZlUmVn
aW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQnVzeSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZW50RWRpdGFi
bGVBdHRyaWJ1dGVTZXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNS
ZWFkT25seSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkT25seVZhbHVlKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7
CisKKyAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgorICAgIHZpcnR1YWwgT3B0aW9uU2V0
PFNwZWFrQXM+IHNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1ha2UgdGhp
cyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxpbmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2
aWV3cyBhcyBuZWVkZWQuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBj
b25zdCA9IDA7CisgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUg
bWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMu
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3Qg
SW50UmVjdCYpIGNvbnN0ID0gMDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZl
biBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25z
dCA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3du
LCBMZWZ0LCBSaWdodCB9OworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQ
YWdlRGlyZWN0aW9uKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXpl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJl
Y3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29u
c3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpID0gMDsKKworICAgIC8vIEZpcmVzIGEgY2hp
bGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVk
IHZhbHVlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hh
bmdlZCgpID0gMDsKKworICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBp
c01hdGhFbGVtZW50KCkuCisgICAgdmlydHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
TWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhSb3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFVuZGVyT3Zlcigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTnVt
YmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhU
YWJsZVJvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5
cGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3Qo
QWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0ID0gMDsKKworICAg
IC8vIFJvb3QgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aFJhZGlj
YW5kT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBtYXRoUm9vdEluZGV4
T2JqZWN0KCkgPSAwOworCisgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgorICAgIHZpcnR1
YWwgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBBWENv
cmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgPSAwOworCisgICAgLy8gRnJhY3Rpb24gY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpID0g
MDsKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgPSAw
OworCisgICAgLy8gU3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVh
bCBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3Jl
T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSA9IDA7CisKKyAgICAvLyBGZW5jZWQgY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3QgPSAwOworCisgICAgLy8g
TXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPEFY
Q29yZU9iamVjdCosIEFYQ29yZU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcnM7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRz
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpID0gMDsKKworICAgIC8vIFZpc2li
aWxpdHkuCisgICAgdmlydHVhbCBib29sIGlzQVhIaWRkZW4oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzRE9NSGlkZGVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0hp
ZGRlbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIqIHdyYXBwZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFdyYXBwZXIoQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgb3ZlcnJp
ZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KSA9IDA7CisKKyAgICAvLyBh
IHBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgaWYgYW4gYXR0YWNobWVu
dCBpcyBpZ25vcmVkCisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2ht
ZW50KCkgY29uc3QgPSAwOworICAgIC8vIGdpdmVzIHBsYXRmb3JtcyB0aGUgb3Bwb3J0dW5pdHkg
dG8gaW5kaWNhdGUgaWYgYW5kIGhvdyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9y
bUluY2x1ZGVzT2JqZWN0KCkgY29uc3QgPSAwOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICB2aXJ0dWFsIGludCBhY2Nlc3NpYmlsaXR5UGFzc3dvcmRGaWVsZExlbmd0aCgpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0lucHV0VHlwZVBvcHVwQnV0dG9uKCkgY29uc3QgPSAwOworI2VuZGlm
CisKKyAgICAvLyBhbGxvd3MgZm9yIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgdG8gdXBkYXRlIGl0
cyByZW5kZXIgdHJlZSBvciBwZXJmb3JtCisgICAgLy8gb3RoZXIgb3BlcmF0aW9ucyB1cGRhdGUg
dHlwZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpID0g
MDsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgYm9vbCBwcmV2ZW50S2V5Ym9h
cmRET01FdmVudERpc3BhdGNoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
ZmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogI2VuZGlmCiAK
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSA9IDA7CisjaWYgUExBVEZPUk0oQ09DT0EpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZpcnR1YWwgYm9vbCBjYXJldEJyb3dzaW5nRW5h
YmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJs
ZWQoYm9vbCkgPSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZm9jdXNh
YmxlQW5jZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGVkaXRhYmxlQW5j
ZXN0b3IoKSA9IDA7CisgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGhpZ2hlc3RFZGl0YWJsZUFu
Y2VzdG9yKCkgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dyogYW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCopID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDUzMzRk
Yzc2NmVjNTFmNTY3MWMxMjQ2YzRhZmFhMDk4MzRjYmZkNmMuLjdjMGJlNzQ3MzU1MGIxZjkyMmFl
NmM4NzNmNjU3ZTc0ZjE2MWFjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtOTc2LDcgKzk3
Niw3IEBAIE9wdGlvblNldDxTcGVha0FzPiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzcGVh
a0FzUHJvcGVydHkoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpLnNwZWFr
QXMoKTsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmFkaW9C
dXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCwgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdAordm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQVhDb3JlT2Jq
ZWN0KiBwYXJlbnQsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGlua2VkVUlFbGVtZW50
cykgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50LT5jaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvQnV0dG9uKQpAQCAtMTI4MSw3ICsxMjgxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAKICAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIHN0YXRpYyB0
ZXh0IGJlbmVhdGggTWVudUl0ZW1zIGFuZCBNZW51QnV0dG9ucyBhcmUganVzdCByZXBvcnRlZCBh
bG9uZyB3aXRoIHRoZSBtZW51IGl0ZW0sIHNvIGl0J3MgaWdub3JlZCBvbiBhbiBpbmRpdmlkdWFs
IGxldmVsCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOworICAgICAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQtPmlzTWVudUl0ZW0o
KSB8fCBwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVCdXR0b24pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8mIHJlbmRl
clRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcik7CkBAIC0xNDMzLDcgKzE0
MzMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJlci0+aXNMaXN0
TWFya2VyKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNM
aXN0SXRlbSgpOwogICAgIH0KIApAQCAtMjM3MCw3ICsyMzcwLDcgQEAgSW50UmVjdCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNl
dChjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3Qo
SFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1h
cEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFhcmVhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzOTMs
NyArMjM5Myw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxl
bWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJlbW90ZSA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0ZSk7CiAgICAg
aWYgKCFyZW1vdGUpCkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVz
dAogICAgIHJldHVybiByZW1vdGUtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KG9mZnNl
dCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVt
ZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewog
ICAgIGlmIChpc1NWR0ltYWdlKCkpCiAgICAgICAgIHJldHVybiByZW1vdGVTVkdFbGVtZW50SGl0
VGVzdChwb2ludCk7CkBAIC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VT
aGFkb3dIb3N0Rm9ySGl0VGVzdGluZyhOb2RlKiBzaGFkb3dIb3N0KQogICAgIHJldHVybiBzaGFk
b3dIb3N0ICYmICFzaGFkb3dIb3N0LT5oYXNUYWdOYW1lKHZpZGVvVGFnKTsKIH0KIAotQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQVhDb3JlT2JqZWN0
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRl
cmVyLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NTAsNyArMjQ1
MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvCiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlc3VsdCA9IG9i
ai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG9iaik7CisgICAgQVhD
b3JlT2JqZWN0KiByZXN1bHQgPSBvYmotPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShvYmopOwogICAgIHJlc3VsdC0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwog
CiAgICAgLy8gQWxsb3cgdGhlIGVsZW1lbnQgdG8gcGVyZm9ybSBhbnkgaGl0LXRlc3RpbmcgaXQg
bWlnaHQgbmVlZCB0byBkbyB0byByZWFjaCBub24tcmVuZGVyIGNoaWxkcmVuLgpAQCAtMjQ1OCw3
ICsyNDU4LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY28KICAgICAKICAgICBpZiAocmVzdWx0
ICYmIHJlc3VsdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgIC8vIElmIHRo
aXMgZWxlbWVudCBpcyB0aGUgbGFiZWwgb2YgYSBjb250cm9sLCBhIGhpdCB0ZXN0IHNob3VsZCBy
ZXR1cm4gdGhlIGNvbnRyb2wuCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvbnRyb2xP
YmplY3QgPSByZXN1bHQtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCk7Cisg
ICAgICAgIEFYQ29yZU9iamVjdCogY29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29ycmVzcG9uZGlu
Z0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRyb2xPYmplY3QgJiYg
IWNvbnRyb2xPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0
dXJuIGNvbnRyb2xPYmplY3Q7CiAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiAgICAgICAgIGlmICghYXJl
YU9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBtX2NoaWxkcmVu
LmFwcGVuZCgmYXJlYU9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGF4T2JqZWN0
Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3QuYXhPYmplY3RJRCgpKTsKKyAgICAgICAgICAgIGF4
T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlKGFyZWFPYmplY3Qub2JqZWN0SUQoKSk7CiAgICAgfQogfQog
CkBAIC0zMzA4LDcgKzMzMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFk
ZEhpZGRlbkNoaWxkcmVuKCkKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
Y2hpbGQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdoZXJlIHRoZSBs
YXN0IHJlbmRlciBzaWJsaW5nIGlzIGxvY2F0ZWQgd2l0aGluIG1fY2hpbGRyZW4uCi0gICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogY2hpbGRP
YmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldChjaGlsZC0+cmVuZGVyZXIoKSk7CiAgICAgICAg
ICAgICBpZiAoY2hpbGRPYmplY3QgJiYgY2hpbGRPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkcmVuID0gY2hpbGRPYmplY3QtPmNo
aWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUoKSkKQEAgLTM1MjUs
NyArMzUyNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWRDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlCiAgICAgICAgIGFyaWFTZWxlY3Rl
ZFJvd3MocmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRhYkxpc3Q6Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFRh
YiA9IHNlbGVjdGVkVGFiSXRlbSgpKQorICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBzZWxlY3Rl
ZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzZWxl
Y3RlZFRhYik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAwYjE5ZGE1MmFiZTZjMWYxNTg3Mjk4MGIyNzRlNWRk
NGFhZTAyYmZjLi4zOTYxNzMwNGNlYTM3MGY0OTdiZjM0YzVmNTE0NzIxMDE3ZGJiNzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGFyaWFS
b2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAg
IC8vIFNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8g
a2ljayBvZmYgYSBoaXQgdGVzdC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBh
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHRleHRMZW5ndGgo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdDsKKyAgICBjb25zdCBT
dHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTIzNSwxMSArMjM1LDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0OwogICAgIExheW91dFJlY3QgY2hlY2ti
b3hPclJhZGlvUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgYWRkUmFkaW9CdXR0b25Hcm91cE1lbWJl
cnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdDsK
LSAgICB2b2lkIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CisgICAgdm9pZCBhZGRSYWRp
b0J1dHRvbkdyb3VwQ2hpbGRyZW4oQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJuYWxMaW5rRWxl
bWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFn
ZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAg
ICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVt
ZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
Y2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBjb25zdDsKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGVs
ZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2JqZWN0JikgY29u
c3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25zdDsKQEAgLTI1
MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoUmVtb3RlU1ZHUm9vdCgpOwog
ICAgIGVudW0gQ3JlYXRpb25DaG9pY2UgeyBDcmVhdGUsIFJldHJpZXZlIH07CiAgICAgQWNjZXNz
aWJpbGl0eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KENyZWF0aW9uQ2hvaWNlIGNyZWF0
ZUlmTmVjZXNzYXJ5KSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBy
ZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIEFYQ29y
ZU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
ICAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0
JikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcAppbmRleCA1MTc4YjlmYTUzZDU0MjYyYzlmYWE3ODRmZWU0OThjNzZjNjgyYTNl
Li5kMTE2ZWRkZmQ3ZTY5MTBiYTk2MzljZjZjZjViMWJhMjJiZTRkOGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwogICAgIGlmICghd2ViQXJlYSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aAppbmRleCA2NmZmNTk0N2Q2YTFkZWNlYjBlYjFhMTVmODdiMjRhZDg4YWQwYTNiLi45YmZhZjE1
NWFkYjIzMmE1NjYzZjU4Y2IwOGMxMmMxMzNlMmMzNTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC01OSw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGlsZHJlbigp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2hp
bGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZUNo
aWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAgdm9pZCB1
cGRhdGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBiM2ZmMGE5NzUxMDhmMTM4M2E5NjgyZmUw
MmMxNmM2OTA5NWY2N2QzLi5jYzZjYjgxOGU4YjNlMzZjOTE2Y2ZmMDRjMTdhNTBkMDVkZDllZTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjph
ZGRDaGlsZHJlbigpCiAgICAgLy8gQmVmb3JlIGFjdHVhbGx5IGFkZGluZyB0aGUgdmFsdWUgaW5k
aWNhdG9yIHRvIHRoZSBoaWVyYXJjaHksCiAgICAgLy8gYWxsb3cgdGhlIHBsYXRmb3JtIHRvIG1h
a2UgYSBmaW5hbCBkZWNpc2lvbiBhYm91dCBpdC4KICAgICBpZiAodGh1bWIuYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQotICAgICAgICBjYWNoZS0+cmVtb3ZlKHRodW1iLmF4T2JqZWN0SUQoKSk7
CisgICAgICAgIGNhY2hlLT5yZW1vdmUodGh1bWIub2JqZWN0SUQoKSk7CiAgICAgZWxzZQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmdGh1bWIpOwogfQpAQCAtMTAwLDcgKzEwMCw3IEBAIGNv
bnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1CiAgICAgcmV0dXJuIGlucHV0RWxlbWVudCgpLT5nZXRBdHRy
aWJ1dGUoYXR0cmlidXRlKTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0CitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAg
aWYgKG1fY2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVChtX2NoaWxkcmVuLnNpemUo
KSA9PSAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmgKaW5kZXggNDY5ZDIxNzAxYmVjNTNhZjE5ZDk3YmY0NWUwZWVlMWJkYzIyNmM0
NS4uOTFjNzA5MjVlNmQ5MmY1MzJlYTJhMmZiYzc3MjM5ZGQ3OGEyZGRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9CiAgICAg
Ym9vbCBpc1NsaWRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU1LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgZmxvYXQgdmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAppbmRleCBjM2NjMDgyNmE5M2Y2MmFj
YTQ2ZTY2ZjMyNTNiMzNkNzM4YzM2YWVjLi43ZDBhNmE0M2FhNTEwOTE2OWRiZWJhYTQyNGM2ZGY5
NGI3ZjNkYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbjo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKQogCiBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6fkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCkgPSBkZWZhdWx0OwogICAgIAot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmluY3JlbWVudEJ1
dHRvbigpCitBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRC
dXR0b24oKQogewogICAgIGlmICghbV9oYXZlQ2hpbGRyZW4pCiAgICAgICAgIGFkZENoaWxkcmVu
KCk7CkBAIC01NSw3ICs1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjppbmNyZW1lbnRCdXR0b24oKQogICAgIHJldHVybiBtX2NoaWxkcmVuWzBdLmdl
dCgpOwogfQogICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bjo6ZGVjcmVtZW50QnV0dG9uKCkKK0FYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b246OmRlY3JlbWVudEJ1dHRvbigpCiB7CiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAg
ICAgYWRkQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAppbmRleCA2M2Q1ZjM3ZWVlZmFlZDNiNjQ5OTdh
NjE1MGU2MWRhMTE3NDIyYWRiLi4wMGU5MGEyOTNmNDc5ZTA4OTU3NmQ5Y2E4YTQxNjMxMjFlNDFi
NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTcGluQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5oCkBAIC0zNyw4ICszNyw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHNldFNwaW5CdXR0b25FbGVtZW50KFNwaW5CdXR0b25FbGVtZW50KiBzcGluQnV0dG9uKSB7
IG1fc3BpbkJ1dHRvbkVsZW1lbnQgPSBzcGluQnV0dG9uOyB9CiAgICAgCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogaW5jcmVtZW50QnV0dG9uKCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
ZGVjcmVtZW50QnV0dG9uKCk7CisgICAgQVhDb3JlT2JqZWN0KiBpbmNyZW1lbnRCdXR0b24oKTsK
KyAgICBBWENvcmVPYmplY3QqIGRlY3JlbWVudEJ1dHRvbigpOwogCiAgICAgdm9pZCBzdGVwKGlu
dCBhbW91bnQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGY1YmY1YjJmNjBmZjg1N2M4YTZkZTkyNWEwYmQz
MGY3Y2Q4NmZlMDEuLjI3MzFiMDc4ODZhZWY5YmMyNzU2NmI3YjE0ZThlNjRhOGFlNzAxZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1u
SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnNDb3B5ID0gbV9jb2x1bW5zOwogICAgIAogICAg
IGZvciAoY29uc3QgYXV0byYgY29sdW1uIDogY29sdW1uc0NvcHkpIHsKLSAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbj4oKmNvbHVtbikuaGVhZGVyT2JqZWN0KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3Qq
IGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmNvbHVtbikuaGVh
ZGVyT2JqZWN0KCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOwogICAgIH0K
IH0KQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm93SGVhZGVy
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5ID0gbV9yb3dzOwogICAgIAogICAgIGZvciAoY29uc3Qg
YXV0byYgcm93IDogcm93c0NvcHkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvdykuaGVhZGVyT2Jq
ZWN0KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGhlYWRlciA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZVJvdz4oKnJvdykuaGVhZGVyT2JqZWN0KCkpCiAgICAgICAgICAgICBoZWFk
ZXJzLmFwcGVuZChoZWFkZXIpOwogICAgIH0KIH0KQEAgLTYyMiw3ICs2MjIsNyBAQCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsKiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3co
dW5zaWduZWQgY29sdW1uLAogICAgICAgICAvLyBjZWxsIHRvIGRldGVybWluZSB3aGljaCBpcyB0
aGUgcmlnaHQgb25lLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbEluZGV4Q291bnRlciA9IHN0
ZDo6bWluKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGlsZHJlbi5zaXplKCkpLCBjb2x1bW4gKyAx
KTsgY29sSW5kZXhDb3VudGVyID4gMDsgLS1jb2xJbmRleENvdW50ZXIpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGNvbEluZGV4ID0gY29sSW5kZXhDb3VudGVyIC0gMTsKLSAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhdLmdldCgpOworICAg
ICAgICAgICAgQVhDb3JlT2JqZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsK
ICAgICAgICAgICAgIEFTU0VSVChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpKTsK
ICAgICAgICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNoaWxkKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDliYmFkMTEyOTZlNWUx
YzcwNTkzNzI1YjYyOTg0NmZhOTU2YjQ0MDAuLmRiNTA0MWM5Mzg5NzkyOGZiMWQ3NDRkNzdkYjVl
YTdmNjlhYWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIGhlYWRlcnMpCiAKIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDo6cGFyZW50Um93KCkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9
IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Um93PigqcGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAppbmRl
eCAzY2I3ZjE1YTIxNzZlNDQ1ZGZjODYzZDhjYjEyMmYzNmQxMmYyNDZiLi5mZGM2N2Y4YWMxNTZh
NWFkYmJhYTYxMzU3NmI4NjgyYWU2MjcxNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBAIC03MCw3
ICs3MCw3IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjplbGVtZW50UmVj
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbHVtblJlY3Q7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKK0FYQ29yZU9iamVj
dCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQogewogICAgIGlmICgh
bV9wYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKaW5kZXggOWZj
ZGI1Y2YzNmUyNzk2M2FlODIwMGIyNDAwYzM3M2JiNWUzOThjNS4uNTY5N2NjMWM4MmYyZDhjYTA4
YjczZGVjZDc3NjI2OGRmNDQzODYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCkBAIC00MCw5ICs0MCw5IEBA
IGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbiBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bigpOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwotICAg
ICAgICAKKworICAgIEFYQ29yZU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisKICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29s
dW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5k
ZXggYmI5ZDllMDRjNGRmNDg2YWRiNzU2YzMzYWRlZjFkYTA1NTk5MzI3Zi4uN2I0OWMyOGJjMGNk
Njg0MTQyNmQ2N2RhNTM0ODJjMTMwYzNiNjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTEwLDcgKzEx
MCw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpwYXJlbnRU
YWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCitBWENvcmVPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVSb3coKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xMjAsNyArMTIwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKICAgICAvLyBjaGVjayB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcm93IHRvIHNlZSBpZiBp
dCBpcyBhIFRIIGVsZW1lbnQKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0gcm93Q2hp
bGRyZW5bMF0uZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBjZWxsID0gcm93Q2hpbGRyZW5bMF0u
Z2V0KCk7CiAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2VsbCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggOTg4ZTI0NTkyMTNlNzBkNTRm
ZmVlNGNiYWI2MTIxM2JmMzUzMzEzOS4uNzliZjA1ZmZhZGQxZDg0ODlhMTMzYTM1MzgwOTdlNGFi
ZWY5Y2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKTsKIAogICAgIC8vIHJldHJpZXZlcyB0aGUgInJvdyIg
aGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOworICAgIHZpcnR1YWwgQVhDb3JlT2Jq
ZWN0KiBoZWFkZXJPYmplY3QoKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFy
ZW50VGFibGUoKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldFJvd0luZGV4KGludCByb3dJbmRl
eCkgeyBtX3Jvd0luZGV4ID0gcm93SW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggMjg0ZTM2ZDA4YTk4
YTJlYjM3YWQ0MmQ0MGZkNDMyNmE1MDg4MjM0NS4uZDgzYzA3NDZlMGJmNWJmNzk5ODhkMzQxMjc1
YTk2MDEzOWI3N2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnBsYXRmb3JtUGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQogICAgIG1fZGVm
ZXJyZWREZXRhY2hlZFdyYXBwZXJMaXN0LmNsZWFyKCk7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBnZXRMaXN0T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3N0
YXRpYyBBWENvcmVPYmplY3QqIGdldExpc3RPYmplY3QoQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgLy8gT25seSBsaXN0IGJveGVzIGFuZCBtZW51IGxpc3RzIHN1cHBvcnRlZCBzbyBmYXIu
CiAgICAgaWYgKCFvYmplY3QtPmlzTGlzdEJveCgpICYmICFvYmplY3QtPmlzTWVudUxpc3QoKSkK
QEAgLTEzNiwyMSArMTM2LDIxIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRMaXN0
T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIWNoaWxkcmVuLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0
T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBsaXN0T2Jq
ZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0T2JqZWN0LT5pc01lbnVM
aXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbGlzdE9iamVjdDsK
IH0KIAotc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25D
aGFuZ2UoQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhpcyBzdGF0aWMgdmFyaWFi
bGVzIGFyZSBuZWVkZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgb2xkCiAgICAgLy8gZm9jdXNlZCBv
YmplY3QgYW5kIGl0cyBhc3NvY2lhdGVkIGxpc3Qgb2JqZWN0LCBhcyBwZXIgcHJldmlvdXMKICAg
ICAvLyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBpbiBvcmRlciB0byBwcm9wZXJseSBkZWNpZGUg
d2hldGhlciB0bwogICAgIC8vIGVtaXQgc29tZSBzaWduYWxzIG9yIG5vdC4KLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBvbGRMaXN0T2JqZWN0
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+
IG9sZEZvY3VzZWRPYmplY3Q7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxBWENv
cmVPYmplY3Q+PiBvbGRMaXN0T2JqZWN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQ
dHI8QVhDb3JlT2JqZWN0Pj4gb2xkRm9jdXNlZE9iamVjdDsKIAogICAgIC8vIE9ubHkgbGlzdCBi
b3hlcyBhbmQgbWVudSBsaXN0cyBzdXBwb3J0ZWQgc28gZmFyLgogICAgIGlmICghb2JqZWN0IHx8
ICEob2JqZWN0LT5pc0xpc3RCb3goKSB8fCBvYmplY3QtPmlzTWVudUxpc3QoKSkpCkBAIC0xNjgs
NyArMTY4LDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3Qg
PSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpOwogICAgIGludCBjaGFuZ2VkSXRl
bUluZGV4ID0gc2VsZWN0LmFjdGl2ZVNlbGVjdGlvblN0YXJ0TGlzdEluZGV4KCk7CiAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0T2JqZWN0ID0gZ2V0TGlzdE9iamVjdChvYmplY3QpOwor
ICAgIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdCA9IGdldExpc3RPYmplY3Qob2JqZWN0KTsKICAg
ICBpZiAoIWxpc3RPYmplY3QpIHsKICAgICAgICAgb2xkTGlzdE9iamVjdC5nZXQoKSA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybjsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBub3Rp
ZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAg
ICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBpdGVtcyA9IGxpc3RPYmplY3QtPmNoaWxkcmVuKCk7CiAgICAgaWYgKGNoYW5nZWRJdGVtSW5k
ZXggPCAwIHx8IGNoYW5nZWRJdGVtSW5kZXggPj0gc3RhdGljX2Nhc3Q8aW50PihpdGVtcy5zaXpl
KCkpKQogICAgICAgICByZXR1cm47Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaXRlbSA9IGl0
ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOworICAgIEFYQ29yZU9iamVjdCogaXRlbSA9
IGl0ZW1zLmF0KGNoYW5nZWRJdGVtSW5kZXgpLmdldCgpOwogCiAgICAgLy8gRW5zdXJlIHRoZSBj
dXJyZW50IGxpc3Qgb2JqZWN0IGlzIHRoZSBzYW1lIHRoYW4gdGhlIG9sZCBvbmUgc28KICAgICAv
LyBmdXJ0aGVyIGNvbXBhcmlzb25zIG1ha2Ugc2Vuc2UuIE90aGVyd2lzZSwganVzdCByZXNldApA
QCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hh
bmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBvbGRGb2N1c2VkT2JqZWN0Lmdl
dCgpID0gaXRlbTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVhOb3RpZmljYXRpb24gbm90
aWZpY2F0aW9uKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24o
QVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7
CiAgICAgYXV0byogYXhPYmplY3QgPSBBVEtfT0JKRUNUKGNvcmVPYmplY3QtPndyYXBwZXIoKSk7
CiAgICAgaWYgKCFheE9iamVjdCkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0LCBBWAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBjb3Jl
T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgICAgIGlmIChBWENvcmVPYmplY3QqIGRl
c2NlbmRhbnQgPSBjb3JlT2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICBw
bGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKG51bGxwdHIsIGRlc2NlbmRhbnQt
Pm5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamUKICAgICBpZiAoIW9iamVjdCB8fCB0ZXh0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gb2Jq
ZWN0LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBvYmplY3QtPnBhcmVudE9i
amVjdFVuaWdub3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0gb2JqZWN0
LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkgPyBvYmplY3QgOiBvYmplY3QtPnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZS5jcHAKaW5kZXggMTJhZTQzNWJkMTcxZWNmNmUxOTQyM2U2MGI0YWE1YjUxOTQ4ODAxOS4u
ZDMyYzgyMmFlMWM0NTIxOTY5MDZmYmZkYWFlMTk5ODQxNjc1MGQwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKQEAg
LTExNjUsNyArMTE2NSw3IEBAIHN0YXRpYyBib29sIHJvbGVJc1RleHRUeXBlKEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUpCiAgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uR3JvdXA7CiB9CiAKLXN0YXRpYyBndWludDE2IGludGVyZmFjZU1hc2tGcm9tT2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCitzdGF0aWMgZ3VpbnQxNiBpbnRlcmZh
Y2VNYXNrRnJvbU9iamVjdChBWENvcmVPYmplY3QqIGNvcmVPYmplY3QpCiB7CiAgICAgZ3VpbnQx
NiBpbnRlcmZhY2VNYXNrID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCA3
MjQ1MDI0MWE0NmM0ODNiN2FmZWViNmNhMzE4NDFkODdjMGJlMjAxLi5iMGY3M2U2YTRmYWEwY2Zj
ZWM4MTQ3M2I2ODU1NTMwOTdlNDAxZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBnaW50IHJhbmdlTGVuZ3RoRm9yT2JqZWN0KEFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iaiwgUmFuZ2UqIHJhbmdlKQogCiAgICAgLy8gQ2hlY2sgd2hldGhl
ciB0aGUgY3VycmVudCBoeXBlcmxpbmsgYmVsb25ncyB0byBhIGxpc3QgaXRlbS4KICAgICAvLyBJ
ZiBzbywgd2UgbmVlZCB0byBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBpdGVtJ3MgbWFya2Vy
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gb2JqLnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOworICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gb2JqLnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdCgpIHx8ICFwYXJlbnQtPmlzTGlzdEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIGJhc2VM
ZW5ndGg7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgZ2ludCByYW5nZUxlbmd0aEZvck9i
amVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIFJhbmdlKiByYW5nZSkKICAgICAvLyBUZWNo
bm9sb2dpZXMsIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBtZWFzdXJlIHRoZWlyIGxlbmd0aAog
ICAgIC8vIGZvciB0aG9zZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkIHRvIHRha2UgaXQgaW50byBh
Y2NvdW50CiAgICAgLy8gc2VwYXJhdGVseSAoYXMgaW4gZ2V0QWNjZXNzaWJpbGl0eU9iamVjdEZv
ck9mZnNldCkKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXJrZXJPYmogPSBwYXJlbnQtPmZp
cnN0Q2hpbGQoKTsKKyAgICBBWENvcmVPYmplY3QqIG1hcmtlck9iaiA9IHBhcmVudC0+Zmlyc3RD
aGlsZCgpOwogICAgIGlmICghbWFya2VyT2JqKQogICAgICAgICByZXR1cm4gYmFzZUxlbmd0aDsK
IApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxp
bmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICByZXR1cm5WYWxJZldlYktp
dEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5r
SW1wbCwgMCk7CiAKICAgICBhdXRvJiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFj
Y2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1w
bCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVj
dC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudFVuaWdu
b3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJl
bnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yMDYsNyArMjA2LDcgQEAgc3Rh
dGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGlu
ayogbGluaykKICAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNz
aWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCwgMCk7CiAKICAgICBhdXRvJiBjb3Jl
T2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJs
ZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50VW5pZ25vcmVkID0gY29yZU9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsK
KyAgICBBWENvcmVPYmplY3QqIHBhcmVudFVuaWdub3JlZCA9IGNvcmVPYmplY3QucGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnRVbmlnbm9yZWQpCiAgICAgICAgIHJldHVy
biAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwCmluZGV4
IDhhMzM4M2QzZTQxZmZmNjE2YWY0Y2VmOGQzYmQzMzgzM2E2YmRmYzAuLmE3OGQ4ODMyYWE0ZDNk
ZWMzODljZTc5ZTdjMWM2ZWNhY2RmMDZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VIeXBlcnRleHQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBBdGtIeXBlcmxpbmsq
IHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0a0h5cGVydGV4dCogaHlwZXJ0ZXh0
LCBnCiAKICAgICBnaW50IGN1cnJlbnRMaW5rID0gLTE7CiAgICAgZm9yIChjb25zdCBhdXRvJiBj
aGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVDaGls
ZCA9IGNoaWxkLmdldCgpOworICAgICAgICBBWENvcmVPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxk
LmdldCgpOwogICAgICAgICBpZiAoIWNvcmVDaGlsZC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
KSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGNvcmVDaGlsZC0+d3JhcHBlcigpOwog
ICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX0hZUEVSTElOS19JTVBMKGF4T2Jq
ZWN0KSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVy
dGV4dEdldE5MaW5rcyhBdGtIeXBlcnRleHQqIGh5cGVydGV4dCkKICAgICBjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gY29y
ZShoeXBlcnRleHQpLT5jaGlsZHJlbigpOwogICAgIGdpbnQgbGlua3NGb3VuZCA9IDA7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOworICAgICAgICBBWENvcmVPYmplY3Qq
IGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOwogICAgICAgICBpZiAoIWNvcmVDaGlsZC0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGNvcmVD
aGlsZC0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKGF4T2JqZWN0ICYmIEFUS19JU19IWVBF
UkxJTktfSU1QTChheE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxl
Y3Rpb24uY3BwCmluZGV4IDE3Yjk4MDY0YWRhNmMzMDIwYjAxOGE3MmFmOTg0YmNmZmQ2OGJlZGYu
LjZlYTU3MDgxMzdiNDU3YThmNTMzNWJkZmY1Y2IzMmI3ZDdhZmVjOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VT
ZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRp
YyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uKQogICAg
IHJldHVybiAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FD
Q0VTU0lCTEUoc2VsZWN0aW9uKSk7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBs
aXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0
aW9uKQorc3RhdGljIEFYQ29yZU9iamVjdCogbGlzdE9iamVjdEZvckNvcmVTZWxlY3Rpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbikKIHsKICAgICAvLyBPbmx5IGxpc3QgYm94
ZXMgYW5kIG1lbnUgbGlzdHMgc3VwcG9ydGVkIHNvIGZhci4KICAgICBpZiAoIWNvcmVTZWxlY3Rp
b24tPmlzTGlzdEJveCgpICYmICFjb3JlU2VsZWN0aW9uLT5pc01lbnVMaXN0KCkpCkBAIC02Nywy
MSArNjcsMjEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPYmplY3RGb3JDb3Jl
U2VsZWN0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUKICAgICBpZiAoIWNoaWxkcmVuLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CisgICAgQVhDb3JlT2JqZWN0KiBs
aXN0T2JqZWN0ID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CiAgICAgaWYgKCFsaXN0T2JqZWN0LT5p
c01lbnVMaXN0UG9wdXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
bGlzdE9iamVjdDsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZyb21M
aXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIEFYQ29yZU9i
amVjdCogb3B0aW9uRnJvbUxpc3QoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgp
CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0
aW9uKTsKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgaW5kZXggPCAwKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIE5lZWQgdG8gc2VsZWN0IHRoZSBwcm9wZXIgbGlzdCBvYmpl
Y3QgZGVwZW5kaW5nIG9uIHRoZSB0eXBlLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RP
YmplY3QgPSBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihjb3JlU2VsZWN0aW9uKTsKKyAgICBB
WENvcmVPYmplY3QqIGxpc3RPYmplY3QgPSBsaXN0T2JqZWN0Rm9yQ29yZVNlbGVjdGlvbihjb3Jl
U2VsZWN0aW9uKTsKICAgICBpZiAoIWxpc3RPYmplY3QpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb25G
cm9tTGlzdChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpbmRleCkKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZyb21TZWxl
Y3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaW5kZXgpCitzdGF0aWMgQVhDb3Jl
T2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50
IGluZGV4KQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3Jl
KHNlbGVjdGlvbik7CiAgICAgaWYgKCFjb3JlU2VsZWN0aW9uIHx8ICFjb3JlU2VsZWN0aW9uLT5p
c0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSB8fCBpbmRleCA8IDApCkBAIC0xMjAsNyArMTIw
LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVTZWxlY3Rpb25BZGRTZWxlY3Rp
b24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGcKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24pCiAg
ICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9
IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaW5kZXgpOworICAgIEFYQ29yZU9iamVjdCogb3B0
aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CiAgICAgaWYgKG9wdGlvbiAm
JiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgfHwgY29yZVNlbGVjdGlvbi0+aXNNZW51TGlz
dCgpKSkgewogICAgICAgICBvcHRpb24tPnNldFNlbGVjdGVkKHRydWUpOwogICAgICAgICByZXR1
cm4gb3B0aW9uLT5pc1NlbGVjdGVkKCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIEF0a09i
amVjdCogd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvblJlZlNlbGVjdGlvbihBdGtTZWxlY3Rpb24q
IHNlbGVjdGlvbiwKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfU0VMRUNUSU9OKHNlbGVj
dGlvbiksIG51bGxwdHIpOwogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxp
ZChXRUJLSVRfQUNDRVNTSUJMRShzZWxlY3Rpb24pLCBudWxscHRyKTsKIAotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpbmRl
eCk7CisgICAgQVhDb3JlT2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tU2VsZWN0aW9uKHNlbGVj
dGlvbiwgaW5kZXgpOwogICAgIGlmIChvcHRpb24pIHsKICAgICAgICAgYXV0byogY2hpbGQgPSBv
cHRpb24tPndyYXBwZXIoKTsKICAgICAgICAgZ19vYmplY3RfcmVmKGNoaWxkKTsKQEAgLTE5Niw3
ICsxOTYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvbklzQ2hp
bGRTZWxlY3RlZChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbgogICAgIGlmICghY29yZVNlbGVjdGlv
bikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0
aW9uID0gb3B0aW9uRnJvbUxpc3Qoc2VsZWN0aW9uLCBpbmRleCk7CisgICAgQVhDb3JlT2JqZWN0
KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGluZGV4KTsKICAgICBpZiAob3B0
aW9uICYmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8fCBjb3JlU2VsZWN0aW9uLT5pc01l
bnVMaXN0KCkpKQogICAgICAgICByZXR1cm4gb3B0aW9uLT5pc1NlbGVjdGVkKCk7CiAKQEAgLTIx
Miw3ICsyMTIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvblJl
bW92ZVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbgogICAgIGlmICghY29yZVNlbGVj
dGlvbikKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGluZGV4KTsKKyAgICBBWENv
cmVPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpbmRleCk7
CiAgICAgaWYgKG9wdGlvbiAmJiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkgfHwgY29yZVNl
bGVjdGlvbi0+aXNNZW51TGlzdCgpKSkgewogICAgICAgICBvcHRpb24tPnNldFNlbGVjdGVkKGZh
bHNlKTsKICAgICAgICAgcmV0dXJuICFvcHRpb24tPmlzU2VsZWN0ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCA0OTZlMjYyMjg4NWM3OGQ1MDViZTA0MThjZmZm
NGM2ZDNmOTBjZDAxLi5iMjcxNWM3YzUzY2FlOWQwNGFmM2U0YzBmOTNhZjk3NWY2M2RiNTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAg
c3RhdGljIEludFJlY3QgdGV4dEV4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFydE9mZnNl
dCwgZ2ludCBsZW5ndGgsIEF0a0Nvb3IKICAgICByZXR1cm4gZXh0ZW50czsKIH0KIAotc3RhdGlj
IGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0oY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KQorc3RhdGljIGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0oY29uc3Qg
QVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdGhlIG9m
ZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGluCiAgICAgLy8gTGVmdC1Uby1SaWdodCB0
ZXh0LCBzaW5jZSB3ZSBleHBvc2UgaXQgdG9nZXRoZXIgd2l0aCB0aGUgdGV4dC4KQEAgLTM0NSw3
ICszNDUsNyBAQCBzdGF0aWMgaW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp
bnQgd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCwgaW50IG9mZnNldCkKK3N0YXRpYyBpbnQgd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNv
bnN0IEFYQ29yZU9iamVjdCogb2JqZWN0LCBpbnQgb2Zmc2V0KQogewogICAgIGlmICghb2JqZWN0
LT5pc0xpc3RJdGVtKCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CkBAIC05OTAsNyArOTkwLDcg
QEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRleHRHZXRDYXJldE9mZnNldChBdGtUZXh0
KiB0ZXh0KQogCiAgICAgLy8gY29yZU9iamVjdCBpcyB0aGUgdW5pZ25vcmVkIG9iamVjdCB3aG9z
ZSBvZmZzZXQgdGhlIGNhbGxlciBpcyByZXF1ZXN0aW5nLgogICAgIC8vIGZvY3VzZWRPYmplY3Qg
aXMgdGhlIG9iamVjdCB3aXRoIHRoZSBjYXJldC4gSXQgaXMgbGlrZWx5IGlnbm9yZWQgLS0gdW5s
ZXNzIGl0J3MgYSBsaW5rLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBj
b3JlKHRleHQpOworICAgIEFYQ29yZU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAg
ICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAppbmRleCBhM2I4NzFiNDRjYTAwYTZhMDc1
NmI3N2RiYzIxZGY1NGJjZGFjM2Q5Li41NjM5MmMwYmQ4M2QxYTJhN2NiNzZhNzU0YjllYjg4M2Yy
MGNmZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgYm9vbCBzZWxl
Y3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlz
aWJsZVNlbGVjdGlvbiYKICAgICAgICAgJiYgKCZyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBs
YXN0RGVzY2VuZGFudCB8fCByYW5nZS0+c3RhcnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0KTsKIH0K
IAotQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25v
cmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlZmVyZW5jZU9iamVjdCwgaW50JiBvZmZzZXQpCitB
WENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBWENvcmVP
YmplY3QqIHJlZmVyZW5jZU9iamVjdCwgaW50JiBvZmZzZXQpCiB7CiAgICAgLy8gSW5kaWNhdGlv
biB0aGF0IHNvbWV0aGluZyBib2d1cyBoYXMgdHJhbnNwaXJlZC4KICAgICBvZmZzZXQgPSAtMTsK
QEAgLTE5OCw3ICsxOTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5k
Q2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIExvb2sgZm9yIHRoZSBhY3R1YWwgKG5vdCBpZ25vcmluZyBh
Y2Nlc3NpYmlsaXR5KSBzZWxlY3RlZCBvYmplY3QuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Zmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmb2N1c2VkT2JqZWN0OworICAgIEFYQ29yZU9iamVjdCog
Zmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmb2N1c2VkT2JqZWN0OwogICAgIGlmIChmaXJzdFVuaWdu
b3JlZFBhcmVudC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAgICAgICBmaXJzdFVuaWdu
b3JlZFBhcmVudCA9IGZpcnN0VW5pZ25vcmVkUGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KTsKICAgICBpZiAoIWZpcnN0VW5pZ25vcmVkUGFyZW50KQpAQCAtMjI0LDcgKzIyNCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBpdCB0byBi
ZSByZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9mCiAgICAgICAgIC8vIHJlZmVyZW5jZSwgbm90IGp1
c3QgdG8gdGhlIGZvY3VzZWQgb2JqZWN0ICh3aGljaCBjb3VsZCBoYXZlCiAgICAgICAgIC8vIHBy
ZXZpb3VzIHNpYmxpbmdzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdG9vKS4K
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGaXJzdENoaWxkID0gcmVmZXJlbmNlT2Jq
ZWN0LT5maXJzdENoaWxkKCk7CisgICAgICAgIEFYQ29yZU9iamVjdCogYXhGaXJzdENoaWxkID0g
cmVmZXJlbmNlT2JqZWN0LT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmIChheEZpcnN0Q2hpbGQp
CiAgICAgICAgICAgICBzdGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuaAppbmRleCBmNmFjNzY0NjUxYzQ4MmJlYmU1MmZmNjRhYjAwMTFjNDc5YWVmM2Zj
Li5hMmZhY2FmODUyOGRhNDc1Y2Y5ZjdkNTdmZjQxZjg3M2M0NjM4NTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGls
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQVhDb3JlT2JqZWN0OwogY2xhc3MgQWNjZXNzaWJp
bGl0eU9iamVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAt
NjYsNiArNjcsNiBAQCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3QqKTsKIAogYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mKTsK
IAotV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zm
c2V0VW5pZ25vcmVkKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBpbnQmIG9mZnNldCk7
CitXZWJDb3JlOjpBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdu
b3JlZChXZWJDb3JlOjpBWENvcmVPYmplY3QqLCBpbnQmIG9mZnNldCk7CiAKICNlbmRpZiAvLyBF
TkFCTEUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IDY4N2YxYWVkZjc4ODE2YWUzMTVhZDg2
ZmRmMWU3YzczZjlkMDVlYWIuLmRmNThlZmE3NjUzZjY4MDUzMWM4Y2U5MzkzOWU3YjA2NjMxNzM4
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0
Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmpl
Y3RDYWNoZUlPUy5tbQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFj
aFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3
cmFwcGVyLmdldCgpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3Rp
ZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENv
cmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewogICAgIGlmICgh
b2JqKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQppbmRleCA0ZGUzOTI0MDJj
OTU4NzViNmQ1ZGFjZWNkOTZiMjFhZTA5NTA0NzIyLi43ZTA1YWNmZmZjOWFlYTdmZDI0YWY2NDlk
OTdhN2Q0OGE2OTJkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KQEAgLTQ3LDcgKzQ3LDcgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5U
aXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KikKK3Zv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9i
amVjdCopCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmluZGV4IGJjY2YzN2U0ZjRiNjJkNDA5MTMxNGRjNzZkYTVhZDdkZWRjODYzOTYuLjg3YmZiOWUx
OTMwOGRhZTBjYWEwOThkYTY2OWFjOTUyMGVjZTI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJp
bGl0eU8KICAgICAgICAgaWYgKFt3cmFwcGVyIGlzQXR0YWNobWVudF0gJiYgIVtbd3JhcHBlciBh
dHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUlzSWdub3JlZF0pCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmpl
Y3QgPSBvYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBBWENvcmVPYmpl
Y3QqIHBhcmVudE9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAg
ICAgIGlmICghcGFyZW50T2JqZWN0KQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTM4OCw3ICsz
ODgsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlV
bmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogICAgICAgICByZXR1cm4gbmlsOwogICAg
IAogICAgIC8vIFRyeSBhIGZ1enp5IGhpdCB0ZXN0IGZpcnN0IHRvIGZpbmQgYW4gYWNjZXNzaWJs
ZSBlbGVtZW50LgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UgKmF4T2JqZWN0ID0g
bnVsbHB0cjsKKyAgICBBWENvcmVPYmplY3QgKmF4T2JqZWN0ID0gbnVsbHB0cjsKICAgICB7CiAg
ICAgICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyIGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9i
amVjdENhY2hlKCkpOwogICAgICAgICBheE9iamVjdCA9IG1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5
SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgc3RhdGljIHZv
aWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5n
ICpzdHJpbmcpCiAgICAgCiAgICAgdW5zaWduZWQgY29sdW1uUmFuZ2VJbmRleCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb2x1bW5SYW5nZS5maXJzdCk7CiAgICAgaWYgKGNvbHVtblJhbmdlSW5k
ZXggPCBjb2x1bW5IZWFkZXJzLnNpemUoKSkgewotICAgICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gY29sdW1uSGVhZGVyID0gY29sdW1uSGVhZGVyc1tjb2x1bW5SYW5nZS5maXJzdF07
CisgICAgICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNvbHVtbkhlYWRlciA9IGNvbHVtbkhlYWRl
cnNbY29sdW1uUmFuZ2UuZmlyc3RdOwogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciogd3JhcHBlciA9IGNvbHVtbkhlYWRlci0+d3JhcHBlcigpOwogICAgICAgICBpZiAod3JhcHBl
cikKICAgICAgICAgICAgIFtoZWFkZXJzIGFkZE9iamVjdDp3cmFwcGVyXTsKQEAgLTE2NjQsNyAr
MTY2NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmlu
ZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVy
IGVuYWJsZUNhY2hlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCkpOwogICAgIAogICAgIC8vIEFz
IGxvbmcgYXMgdGhlcmUncyBhIHBhcmVudCB3cmFwcGVyLCB0aGF0J3MgdGhlIGNvcnJlY3QgY2hh
aW4gdG8gY2xpbWIuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpOyAKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IG1f
b2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAocGFyZW50KQogICAgICAg
ICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAKQEAgLTE4MDAsNyArMTgwMCw3IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0
cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gSWYgdGhpcyBzdGF0
aWMgdGV4dCBpbnNpZGUgb2YgYSBsaW5rLCBpdCBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyBsaW5r
ZWQgZWxlbWVudC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7
CisgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7CiAgICAgaWYgKG1fb2JqZWN0
LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCAmJiBtX29iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQogICAgICAgICBlbGVtZW50ID0g
bV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmNwcAppbmRleCBkOGRiYjlmMmM5N2M4YmNmZGY3ODE1OTMzYTRhZTE5YmVmZjA3ZGIy
Li43OTM5Mjk5NTFkZDJkYzZhNDAxYzQ1ODI2Njg2YWVlMjM5YTczYjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAKQEAgLTk4LDE5ICs5OCwxOSBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlTm9kZTo6c2V0VHJlZUlkZW50aWZpZXIoQVhJc29sYXRlZFRyZWVJRCB0cmVlSWRlbnRpZmll
cikKICAgICAgICAgbV9jYWNoZWRUcmVlID0gdHJlZTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZSogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QK
K0FYQ29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkgY29u
c3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2VkRWxlbWVudCA9IHRyZWUoKS0+Zm9jdXNlZFVJRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gZm9jdXNlZEVsZW1lbnQuZ2V0KCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xh
dGVkVHJlZU5vZGU6OnBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0CitBWENv
cmVPYmplY3QqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6cGFyZW50T2JqZWN0SW50ZXJmYWNlVW5pZ25v
cmVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJlZSgpLT5ub2RlRm9ySUQocGFyZW50KCkpLmdl
dCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5v
ZGU6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FY
Q29yZU9iamVjdCogQVhJc29sYXRlZFRyZWVOb2RlOjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFyZWxhdGl2ZUZyYW1lKCkuY29u
dGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmgKaW5kZXggOTM0ZDYzZjRhOWEyMzFlOWY3MmY4M2U5YjViZmM0NjBiNDQ3NzcwOS4u
YzM1NDZmYmU4Mjc1MmU5OWVmYWE3ZWRkZmE2Mjc2NzZkNTQyYTYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogCi1jbGFzcyBB
WElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlTm9kZT4gewor
Y2xhc3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFYQ29yZU9iamVjdCwgcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlTm9kZT4gewogCiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4X3QgewpAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlTm9kZShjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Jik7CiAgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlRGF0YShjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Jik7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBhY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFY
Q29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVycmlkZSB7
IH0KIAogICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZWRpYUNvbnRyb2xMYWJl
bCk7IH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNJbWFnZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNJbWFnZSk7IH0KICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGaWxlVXBsb2Fk
QnV0dG9uKTsgfQogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBY2Nlc3Np
YmlsaXR5SWdub3JlZCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBwYXJl
bnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVP
YmplY3QqIHBhcmVudE9iamVjdEludGVyZmFjZVVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNUcmVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWUpOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c1RyZWVJdGVtKTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2Nyb2xsYmFyKTsgfQpA
QCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9CiAgICAgU3RyaW5nIGhlbHBUZXh0QXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SGVscFRleHQpOyB9CiAgICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6VGl0bGUpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogZm9j
dXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogZm9jdXNl
ZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdXNpbmcgQXR0cmlidXRlVmFsdWVW
YXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2ln
bmVkLCBkb3VibGUsIE9wdGlvbmFsPEZsb2F0UmVjdD4+OwogICAgIHZvaWQgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCYmLCBib29sIHNob3VsZFJlbW92
ZSA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDJmNzVmOTY1MDhkMDcyMWM4NDAyMDc3NGIyMjMzMTQ3
NjhmNDg2YzYuLmM5YTg5M2JjMzA5OTZkOTlmZTQ1Y2IxYjcyMTllMzZhYzczYTBmZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1h
Yy5tbQpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIEFYUG9zdE5vdGlmaWNhdGlvbldp
dGhVc2VySW5mbyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqb2JqZWN0LCBOCiAgICAgTlNB
Y2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QsIG5vdGlmaWNh
dGlvbiwgdXNlckluZm8pOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFY
Q29yZU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYg
KCFvYmopCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCmluZGV4IDZiOTU1MDIy
ZWQzY2RmZGU0ZWY5MGMyMWE2ZjUxMDA0MWQwNjRlNjIuLjJjZGJjNzNhYjg5OGJmYjVjMzJlZWZl
YjVjN2RhYmM0NjYyMTlhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtNDMsNyArNDMsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQoKQogICAgICAgICBv
dmVycmlkZUF0dGFjaG1lbnRQYXJlbnQobnVsbHB0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50
KEFYQ29yZU9iamVjdCogcGFyZW50KQogewogICAgIGlmICghaXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKaW5kZXgg
ZmZlZDg1NWM4NGRkYzhmYzJkOWZkNWU0MWVlYWVkZWIxMDc0NzE3ZS4uODg1OGJlYTNkMDg3YjFi
YjYyNjVkNzg3ZmQ4ODA1OGQ3MTI2MmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogLSAo
Qk9PTCl1cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7CiAKIC8vIFRoaXMgY2FuIGJlIGVpdGhlciBh
biBBY2Nlc3NpYmlsaXR5T2JqZWN0IG9yIGFuIEFYSXNvbGF0ZWRUcmVlTm9kZQotLSAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhCYWNraW5nT2JqZWN0OworLSAoV2Vi
Q29yZTo6QVhDb3JlT2JqZWN0KilheEJhY2tpbmdPYmplY3Q7CiAKIC8vIFRoZXNlIGFyZSBwcmUt
Zml4ZWQgd2l0aCBiYXNlIHNvIHRoYXQgQXBwS2l0IGRvZXMgbm90IGVuZCB1cCBjYWxsaW5nIGlu
dG8gdGhlc2UgZGlyZWN0bHkgKGJ5cGFzc2luZyBzYWZldHkgY2hlY2tzKS4KIC0gKE5TU3RyaW5n
ICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQppbmRleCBkYWYzNGYxNTBmNTdhMzcyMjE3MTdhNmUwYTIyYTFhYmJjNWY1ZTY0
Li5mYTg5YjZhZDk4MDkzYmRmN2ExODU3Zjk2N2IwNzAxMjlkYTYyNTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGlj
IE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGkKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLXN0YXRpYyB2b2lkIGFk
ZENoaWxkVG9BcnJheShBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlJiBjaGlsZCwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBhcnJheSkKK3N0YXRpYyB2b2lkIGFkZENoaWxkVG9BcnJheShB
WENvcmVPYmplY3QmIGNoaWxkLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5KQogewog
ICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICp3cmFwcGVyID0gY2hpbGQud3JhcHBl
cigpOwogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2htZW50IHZpZXcgaW5zdGVh
ZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVudCwKQEAgLTMwNiw3ICsz
MDYsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZAogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgbV9vYmplY3QgPSBheE9iamVjdDsKLSAgICBfaWRlbnRpZmllciA9IG1fb2JqZWN0LT5heE9i
amVjdElEKCk7CisgICAgX2lkZW50aWZpZXIgPSBtX29iamVjdC0+b2JqZWN0SUQoKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtMzg2LDcgKzM4Niw3IEBAIE5TQXJyYXkgKmNvbnZlcnRUb05T
QXJyYXkoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkCiAgICAgcmV0dXJuIF9heEJhY2tpbmdPYmplY3QtPnRpdGxlQXR0cmlidXRlVmFsdWUoKTsK
IH0KIAotLSAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSopYXhCYWNraW5n
T2JqZWN0CistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWF4QmFja2luZ09iamVjdAogewogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgaWYgKF9BWFVJRWxlbWVu
dFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5QVhUaHJlYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMDE1MGZjYWU3YWZkMTE1Nzg1NWUwNjZhMzcwNTRj
YzU2N2U4YjQ5My4uYzU3MDk0OWM1NjBiNWZhMTFiYzQ0MzAwOTBlMjI1M2M2OTVjOGUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTI2NjcsMTUgKzI2Njcs
MTUgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIAogICAg
ICAgICAvLyBUcmVlIGl0ZW0gKGNoYW5nZWQgdG8gQVhSb3dzKSBjYW4gb25seSByZXBvcnQgdGhl
IHRyZWUgKEFYT3V0bGluZSkgYXMgaXRzIHBhcmVudC4KICAgICAgICAgaWYgKF9heEJhY2tpbmdP
YmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgYXV0byBwYXJlbnQgPSBfYXhCYWNr
aW5nT2JqZWN0LT5wYXJlbnRPYmplY3RJbnRlcmZhY2VVbmlnbm9yZWQoKTsKKyAgICAgICAgICAg
IGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhcmVu
dC0+aXNUcmVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIo
KTsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdEludGVyZmFj
ZVVuaWdub3JlZCgpOworICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0SW50ZXJmYWNl
VW5pZ25vcmVkKCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gX2F4QmFja2luZ09iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIGlmICghcGFyZW50KQogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAgICAgCkBAIC0yODYxLDE0ICsyODYxLDE0IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAKICAgICAgICAgLy8gcmFkaW8gZ3Jv
dXBzIHJldHVybiB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uIGFzIHRoZSBBWFZhbHVlCiAgICAg
ICAgIGlmIChtX29iamVjdC0+aXNSYWRpb0dyb3VwKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJhZGlvQnV0dG9uID0gbV9vYmplY3QtPnNlbGVjdGVkUmFkaW9CdXR0b24o
KTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogcmFkaW9CdXR0b24gPSBtX29iamVjdC0+c2Vs
ZWN0ZWRSYWRpb0J1dHRvbigpOwogICAgICAgICAgICAgaWYgKCFyYWRpb0J1dHRvbikKICAgICAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAgcmV0dXJuIHJhZGlvQnV0dG9uLT53
cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX29iamVjdC0+aXNU
YWJMaXN0KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYkl0ZW0gPSBt
X29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CisgICAgICAgICAgICBBWENvcmVPYmplY3QqIHRh
Ykl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CiAgICAgICAgICAgICBpZiAoIXRh
Ykl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiB0
YWJJdGVtLT53cmFwcGVyKCk7CkBAIC0zMDYzLDcgKzMwNjMsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGNvbHVtbi5jaGlsZHJlbigpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IGNvbHVtbi5oZWFkZXJPYmpl
Y3QoKTsKKyAgICAgICAgICAgIEFYQ29yZU9iamVjdCogaGVhZGVyID0gY29sdW1uLmhlYWRlck9i
amVjdCgpOwogICAgICAgICAgICAgaWYgKCFoZWFkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAgICAgICAgIHJldHVybiBoZWFkZXItPndyYXBwZXIoKTsKQEAgLTMxNjgsNyAr
MzE2OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfSBlbHNlIGlmIChpczxBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJvdyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdz4oKm1f
b2JqZWN0KS5kaXNjbG9zZWRCeVJvdygpOworICAgICAgICAgICAgQVhDb3JlT2JqZWN0KiByb3cg
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c+KCptX29iamVjdCkuZGlzY2xvc2Vk
QnlSb3coKTsKICAgICAgICAgICAgIGlmICghcm93KQogICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgICAgICAgICByZXR1cm4gcm93LT53cmFwcGVyKCk7CkBAIC0zNTExLDcgKzM1MTEs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAKICAgICBfYXhCYWNraW5nT2JqZWN0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNz
YXJ5KCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSogYXhPYmplY3QgPSBfYXhC
YWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCkpOworICAg
IEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBfYXhCYWNraW5nT2JqZWN0LT5hY2Nlc3NpYmlsaXR5
SGl0VGVzdChJbnRQb2ludChwb2ludCkpOwogICAgIGlmIChheE9iamVjdCkgewogICAgICAgICBp
ZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFj
aG1lbnRWaWV3XSkKICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRh
Y2htZW50Vmlld107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dp
bi9BWE9iamVjdENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2lu
L0FYT2JqZWN0Q2FjaGVXaW4uY3BwCmluZGV4IDQ5MDlhNmIyMjA4Y2Q5YmU1OGQzNmMzMzE2NTZk
YmE1NDJmY2RhNjYuLjMxMmIwMjA4NDU3M2ZjNjA0ODc5NWE1MWU4NDAyMzZiYjI4NTdmZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2Fj
aGVXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlU2Ny
b2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKQogICAgIHBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9t
Tm9kZShhbmNob3JOb2RlKSwgQVhTY3JvbGxlZFRvQW5jaG9yKTsKIH0KIAotdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90
aWZpY2F0aW9uKQogewogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CkBAIC0xMTcsMTAg
KzExNywxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpYwogICAgIC8vIG5lZ2F0ZSB0aGUgQVhJ
RCBzbyB3ZSBrbm93IHRoYXQgdGhlIGNhbGxlciBpcyBwYXNzaW5nIHRoZSBJRCBvZiBhbgogICAg
IC8vIGVsZW1lbnQsIG5vdCB0aGUgaW5kZXggb2YgYSBjaGlsZCBlbGVtZW50LgogCi0gICAgQVNT
RVJUKG9iai0+YXhPYmplY3RJRCgpID49IDEpOwotICAgIEFTU0VSVChvYmotPmF4T2JqZWN0SUQo
KSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPExPTkc+OjptYXgoKSk7CisgICAgQVNTRVJUKG9iai0+
b2JqZWN0SUQoKSA+PSAxKTsKKyAgICBBU1NFUlQob2JqLT5vYmplY3RJRCgpIDw9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8TE9ORz46Om1heCgpKTsKIAotICAgIE5vdGlmeVdpbkV2ZW50KG1zYWFFdmVu
dCwgcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCksIE9CSklEX0NMSUVOVCwgLXN0
YXRpY19jYXN0PExPTkc+KG9iai0+YXhPYmplY3RJRCgpKSk7CisgICAgTm90aWZ5V2luRXZlbnQo
bXNhYUV2ZW50LCBwYWdlLT5jaHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKSwgT0JKSURfQ0xJ
RU5ULCAtc3RhdGljX2Nhc3Q8TE9ORz4ob2JqLT5vYmplY3RJRCgpKSk7CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmls
aXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJ
RWxlbWVudENoYW5nZWQoTm9kZSosIE5vZGUqIG5ld0ZvY3VzZQogICAgIGlmICghcGFnZSB8fCAh
cGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBmb2N1c2VkVUlFbGVtZW50
Rm9yUGFnZShwYWdlKTsKKyAgICBBWENvcmVPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBmb2N1c2Vk
VUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKICAgICBpZiAoIWZvY3VzZWRPYmplY3QpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVT
ZWxlY3Rpb25BdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rp
b25BdGsuY3BwCmluZGV4IDI5MzU0NzNhMjgxYmEwOWE2YjQ3MjQ0OWVjMmFlNzExZjFjZWQ5NjYu
LjI3MmUzNGJlYjc5MjY0ZWI2NzFkYzlhODZkN2FkYTg3NTZiZTcyYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBlbWl0VGV4dFNlbGVj
dGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uLCBpbnQgb2Zmc2V0KQorc3RhdGljIHZvaWQgZW1pdFRleHRTZWxlY3Rpb25DaGFu
Z2UoQVhDb3JlT2JqZWN0KiBvYmplY3QsIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uLCBpbnQg
b2Zmc2V0KQogewogICAgIGF1dG8qIGF4T2JqZWN0ID0gb2JqZWN0LT53cmFwcGVyKCk7CiAgICAg
aWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX1RFWFQoYXhPYmplY3QpKQpAQCAtNTIsMTIgKzUyLDEy
IEBAIHN0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCwgVmlzaWJsZVNlbGVjdGlvCiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShheE9iamVjdCwgInRleHQtc2VsZWN0aW9uLWNoYW5nZWQiKTsKIH0KIAotc3RhdGljIHZvaWQg
bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYmIG9i
amVjdCkKK3N0YXRpYyB2b2lkIG1heWJlRW1pdFRleHRGb2N1c0NoYW5nZShSZWZQdHI8QVhDb3Jl
T2JqZWN0PiYmIG9iamVjdCkKIHsKICAgICAvLyBUaGlzIHN0YXRpYyB2YXJpYWJsZSBpcyBuZWVk
ZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgb2xkIG9iamVjdAogICAgIC8vIGFzIHBlciBwcmV2aW91
cyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBpbiBvcmRlciB0byBwcm9wZXJseQogICAgIC8vIGRl
Y2lkZSB3aGV0aGVyIHRvIGVtaXQgc29tZSBzaWduYWxzIG9yIG5vdC4KLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBvbGRPYmplY3Q7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvbGRPYmplY3Q7CiAK
ICAgICAvLyBFbnN1cmUgdGhlIG9sZE9iamVjdCBiZWxvbmdzIHRvIHRoZSBzYW1lIGRvY3VtZW50
IHRoYXQgdGhlCiAgICAgLy8gY3VycmVudCBvYmplY3Qgc28gZnVydGhlciBjb21wYXJpc29ucyBt
YWtlIHNlbnNlLiBPdGhlcndpc2UsCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBGcmFtZVNlbGVj
dGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZShjb25zdCBBWFRleHRT
dGF0ZUNoYW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IG9mZnNldDsKLSAgICBSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqZWN0ID0gb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0
VW5pZ25vcmVkKGFjY2Vzc2liaWxpdHlPYmplY3QsIG9mZnNldCk7CisgICAgUmVmUHRyPEFYQ29y
ZU9iamVjdD4gb2JqZWN0ID0gb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKGFj
Y2Vzc2liaWxpdHlPYmplY3QsIG9mZnNldCk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAxY2U1YzlhODAxNGQxMmJh
ODRkZjM0OGM3ZmY0OGVmMTJhYzQ4OTJjLi5lMWUyM2E3NmE0ZDk0NmY5ZWEyN2Y2MjZhMjJiMmNj
Nzc4YTk0ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjksNyArMjksNyBA
QAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2Rl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC01Myw3
ICs1Myw3IEBAIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6SW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0KEluc3BlY3RvckF1CiB7CiB9CiAKLXN0YXRpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKE5vZGUmIG5vZGUpCitzdGF0
aWMgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKE5vZGUmIG5vZGUpCiB7
CiAgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAg
ICBBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CkBAIC03MSw3ICs3MSw3IEBA
IEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8Tm9kZT4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmdldEVsZW1lbnRzQnlDCiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CiAK
ICAgICBmb3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoaXM8Q29udGFp
bmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIp
IDogZG9jdW1lbnQpKSB7Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKEFY
Q29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKGVsZW1lbnQp
KSB7CiAgICAgICAgICAgICBpZiAoYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpID09IHJv
bGUpCiAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICB9CkBA
IC04NCwxNyArODQsMTcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEFjdGl2ZURlc2NlbmRhbnQKIHsKICAgICBFUlJPUl9J
Rl9OT19BQ1RJVkVfQVVESVQoKTsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
amVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKLSAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQgPSBheE9iamVjdC0+YWN0aXZlRGVz
Y2VuZGFudCgpKQorICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBhY3RpdmVE
ZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURlc2NlbmRhbnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBhY3RpdmVEZXNjZW5kYW50LT5ub2RlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QmIHBh
cmVudE9iamVjdCwgVmVjdG9yPFJlZlB0cjxOb2RlPj4mIGNoaWxkTm9kZXMpCitzdGF0aWMgdm9p
ZCBhZGRDaGlsZHJlbihBWENvcmVPYmplY3QmIHBhcmVudE9iamVjdCwgVmVjdG9yPFJlZlB0cjxO
b2RlPj4mIGNoaWxkTm9kZXMpCiB7Ci0gICAgZm9yIChjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4mIGNoaWxkT2JqZWN0IDogcGFyZW50T2JqZWN0LmNoaWxkcmVuKCkpIHsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkT2JqZWN0IDogcGFyZW50T2JqZWN0LmNoaWxkcmVuKCkpIHsK
ICAgICAgICAgaWYgKE5vZGUqIGNoaWxkTm9kZSA9IGNoaWxkT2JqZWN0LT5ub2RlKCkpCiAgICAg
ICAgICAgICBjaGlsZE5vZGVzLmFwcGVuZChjaGlsZE5vZGUpOwogICAgICAgICBlbHNlCkBAIC0x
MDgsNyArMTA4LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+
PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlvbmFsPFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVj
dCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgaWYg
KEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUp
KSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNoaWxkTm9kZXM7CiAgICAgICAgIGFk
ZENoaWxkcmVuKCpheE9iamVjdCwgY2hpbGROb2Rlcyk7CiAgICAgICAgIHJlc3VsdCA9IFdURk1v
dmUoY2hpbGROb2Rlcyk7CkBAIC0xMjMsMTAgKzEyMywxMCBAQCBFeGNlcHRpb25PcjxPcHRpb25h
bDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4+
IElucwogCiAgICAgT3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpD
b21wdXRlZFByb3BlcnRpZXM+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKKyAgICBpZiAo
QVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkp
IHsKICAgICAgICAgQ29tcHV0ZWRQcm9wZXJ0aWVzIGNvbXB1dGVkUHJvcGVydGllczsKIAotICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7CisgICAgICAgIEFY
Q29yZU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0OwogICAgICAgICB3aGlsZSAoY3VycmVudCAm
JiAoIWNvbXB1dGVkUHJvcGVydGllcy5idXN5IHx8ICFjb21wdXRlZFByb3BlcnRpZXMuYnVzeS52
YWx1ZSgpKSkgewogICAgICAgICAgICAgY29tcHV0ZWRQcm9wZXJ0aWVzLmJ1c3kgPSBjdXJyZW50
LT5pc0J1c3koKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPYmplY3Qo
KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRy
PE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6ZwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKIAotICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsK
KyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5v
ZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gY29udHJvbGxlZE5vZGVz
OwogCiAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gY29udHJvbGxlZEVsZW1lbnRzOwpAQCAtMjY5
LDcgKzI2OSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4g
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAKICAgICBPcHRpb25hbDxWZWN0
b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCi0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgeworICAgIGlmIChB
WENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkg
ewogICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBmbG93ZWROb2RlczsKIAogICAgICAgICBW
ZWN0b3I8RWxlbWVudCo+IGZsb3dlZEVsZW1lbnRzOwpAQCAtMjg5LDcgKzI4OSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxOb2RlPj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpn
ZXRNb3VzZUV2ZW50Tm9kZShOCiB7CiAgICAgRVJST1JfSUZfTk9fQUNUSVZFX0FVRElUKCk7CiAK
LSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmpl
Y3RGb3JOb2RlKG5vZGUpKSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nl
c3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdD4oYXhPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0PihheE9iamVjdCktPm1vdXNlQnV0dG9uTGlzdGVuZXIoTW91
c2VCdXR0b25MaXN0ZW5lclJlc3VsdEZpbHRlcjo6SW5jbHVkZUJvZHlFbGVtZW50KTsKICAgICB9
CkBAIC0zMDMsNyArMzAzLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxO
b2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7Cisg
ICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2Rl
KG5vZGUpKSB7CiAgICAgICAgIGlmIChheE9iamVjdC0+c3VwcG9ydHNBUklBT3ducygpKSB7CiAg
ICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBvd25lZE5vZGVzOwogCkBAIC0zMjUsOCAr
MzI1LDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmdldFBhcmVudE5vZGUoTm9kZSYKIHsKICAgICBFUlJPUl9JRl9OT19BQ1RJ
VkVfQVVESVQoKTsKIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGFj
Y2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCA9IGF4T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KSkKKyAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZv
ck5vZGUobm9kZSkpIHsKKyAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0ID0g
YXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBh
cmVudE9iamVjdC0+bm9kZSgpOwogICAgIH0KIApAQCAtMzM5LDEyICszMzksMTIgQEAgRXhjZXB0
aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmcKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiBy
ZXN1bHQ7CiAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3Np
YmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CisgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmpl
Y3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8Tm9kZT4+IHNlbGVjdGVkQ2hpbGROb2RlczsKIAotICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKKyAg
ICAgICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRD
aGlsZHJlbjsKICAgICAgICAgYXhPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGls
ZHJlbik7Ci0gICAgICAgIGZvciAoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBzZWxlY3Rl
ZENoaWxkT2JqZWN0IDogc2VsZWN0ZWRDaGlsZHJlbikgeworICAgICAgICBmb3IgKGF1dG8mIHNl
bGVjdGVkQ2hpbGRPYmplY3QgOiBzZWxlY3RlZENoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAo
Tm9kZSogc2VsZWN0ZWRDaGlsZE5vZGUgPSBzZWxlY3RlZENoaWxkT2JqZWN0LT5ub2RlKCkpCiAg
ICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVzLmFwcGVuZChzZWxlY3RlZENoaWxkTm9k
ZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNjA0ZGI1MmQ5NjgxNmQ3ODlhYzBiMTY1OGJh
OWY4MzZhMDU5OTczYS4uM2VhZDEzNWFkMzQ0YTVlMmExZGMzNmVmYzA0ZTc0NDE0ZTcxN2Y3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwcm9jZXNz
QWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqZWN0LCBKU09O
OjpBcnJheU9mPGludD4mIGNoaWxkTm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBy
b2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgSlNPTjo6
QXJyYXlPZjxpbnQ+JiBjaGlsZE5vZGVJZHMpCiB7CiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4g
PSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKQpAQCAtMTgy
NCwxMyArMTgyNCwxMyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgIHVuc2lnbmVkIGxl
dmVsID0gMDsKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlID0gbm9kZS0+
ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkpIHsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGF4T2JqZWN0ID0gYXhPYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUobm9kZSkpIHsKKyAg
ICAgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNy
ZWF0ZShub2RlKSkgewogCi0gICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0
aXZlRGVzY2VuZGFudCA9IGF4T2JqZWN0LT5hY3RpdmVEZXNjZW5kYW50KCkpCisgICAgICAgICAg
ICBpZiAoQVhDb3JlT2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50ID0gYXhPYmplY3QtPmFjdGl2ZURl
c2NlbmRhbnQoKSkKICAgICAgICAgICAgICAgICBhY3RpdmVEZXNjZW5kYW50Tm9kZSA9IGFjdGl2
ZURlc2NlbmRhbnQtPm5vZGUoKTsKIAogICAgICAgICAgICAgLy8gQW4gQVggb2JqZWN0IGlzICJi
dXN5IiBpZiBpdCBvciBhbnkgYW5jZXN0b3IgaGFzIGFyaWEtYnVzeT0idHJ1ZSIgc2V0LgotICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY3VycmVudCA9IGF4T2JqZWN0OworICAgICAg
ICAgICAgQVhDb3JlT2JqZWN0KiBjdXJyZW50ID0gYXhPYmplY3Q7CiAgICAgICAgICAgICB3aGls
ZSAoIWJ1c3kgJiYgY3VycmVudCkgewogICAgICAgICAgICAgICAgIGJ1c3kgPSBjdXJyZW50LT5p
c0J1c3koKTsKICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T2JqZWN0
KCk7CkBAIC0xOTcxLDcgKzE5NzEsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCA9IGF4T2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQo
KSkKKyAgICAgICAgICAgIGlmIChBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdCA9IGF4T2JqZWN0
LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkKICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0g
cGFyZW50T2JqZWN0LT5ub2RlKCk7CiAKICAgICAgICAgICAgIHN1cHBvcnRzUHJlc3NlZCA9IGF4
T2JqZWN0LT5wcmVzc2VkSXNQcmVzZW50KCk7CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aQogICAgICAgICAgICAgcm9sZSA9IGF4T2JqZWN0LT5jb21wdXRlZFJv
bGVTdHJpbmcoKTsKICAgICAgICAgICAgIHNlbGVjdGVkID0gYXhPYmplY3QtPmlzU2VsZWN0ZWQo
KTsKIAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CisgICAgICAgICAgICBBWENvcmVPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICAgICAg
YXhPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbik7CiAgICAgICAgICAg
ICBpZiAoc2VsZWN0ZWRDaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBzZWxlY3Rl
ZENoaWxkTm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXgg
Y2I3YmVhYTEzYWMzNTRlOTRmODA3YjViODM2NTkyNTMyYzk5ZDRiNS4uZDkxN2U1MDIxNzkxNDVj
ODAwYjUyMDY4ZDVmMjUzNTY2ZmZjMjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFz
cyBKU1ZhbHVlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlP
YmplY3Q7CitjbGFzcyBBWENvcmVPYmplY3Q7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3Mg
RE9NRWRpdG9yOwogY2xhc3MgRG9jdW1lbnQ7CkBAIC0yMjUsNyArMjI1LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lkTWFw
KiBub2Rlc01hcCk7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0
ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyJiwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWls
ZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5vZGUqKTsKLSAgICB2b2lkIHByb2Nl
c3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCYsIEpTT046OkFycmF5
T2Y8aW50PiYpOworICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBWENvcmVP
YmplY3QmLCBKU09OOjpBcnJheU9mPGludD4mKTsKICAgICAKICAgICBOb2RlKiBub2RlRm9yUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBT
dHJpbmcmIG9iamVjdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggMjQ0ZTVi
OTU0OGZmZTM5YWE1OGNjM2VmODE5ZTc2YmJjYzUyOTI3Ny4uYjhlYWVkOTNmNmMyMGRhZGVhMjc3
Njc1NjQyNzk5ZGQ3NDZmOTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAKICNpbmNsdWRlICJXZWJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIldlYlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCogV0tBY2Nlc3NpYmlsaXR5
Um9vdE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICAKICAgICBXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CiAKLSAgICBXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0KiByb290ID0gY29yZS5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCkt
PnJvb3RPYmplY3QoKTsKKyAgICBXZWJDb3JlOjpBWENvcmVPYmplY3QqIHJvb3QgPSBjb3JlLmRv
Y3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOwogICAgIGlmICghcm9vdCkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCogV0tBY2Nl
c3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIAogICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKIAotICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBXZWJDb3JlOjpBWENv
cmVPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2Vk
VUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKICAgICBpZiAoIWZvY3VzZWRPYmplY3QpCiAgICAgICAg
IHJldHVybiAwOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNj
ZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2Uu
Y3BwCmluZGV4IDdiY2NlNGI3MjI0NGEzZjZhZWJkMDBjN2MxMWI2N2VmZTRjY2NiY2QuLmZmZDMx
ZmQ1YTFhN2EyMDdhNjBiNzk3Nzg0NWM0ZDUxYzZmMjQxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBIUkVTVUxUIEFj
Y2Vzc2libGVCYXNlOjpnZXRfdW5pcXVlSUQoX091dF8gbG9uZyogdW5pcXVlSUQpCiAgICAgaWYg
KCFtX29iamVjdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICp1bmlxdWVJRCA9IHN0
YXRpY19jYXN0PGxvbmc+KG1fb2JqZWN0LT5heE9iamVjdElEKCkpOworICAgICp1bmlxdWVJRCA9
IHN0YXRpY19jYXN0PGxvbmc+KG1fb2JqZWN0LT5vYmplY3RJRCgpKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9h
Y2NQYXJlbnQoX0NPTV9PdXRwdHJfb3B0XyBJRGlzcGF0Y2gqKiBwYXJlbnQpCiAgICAgaWYgKCFt
X29iamVjdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudE9iamVjdCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QgPSBkeW5hbWljX2Nhc3Q8QWNjZXNz
aWJpbGl0eU9iamVjdCo+KG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7CiAgICAg
aWYgKHBhcmVudE9iamVjdCkgewogICAgICAgICAqcGFyZW50ID0gd3JhcHBlcihwYXJlbnRPYmpl
Y3QpOwogICAgICAgICAoKnBhcmVudCktPkFkZFJlZigpOwpAQCAtNjQzLDcgKzY0Myw3IEBAIEhS
RVNVTFQgQWNjZXNzaWJsZUJhc2U6OmFjY1NlbGVjdChsb25nIHNlbGVjdGlvbkZsYWdzLCBWQVJJ
QU5UIHZDaGlsZCkKIAogICAgIGlmIChzZWxlY3Rpb25GbGFncyAmIFNFTEZMQUdfVEFLRVNFTEVD
VElPTikgewogICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eUxpc3RCb3g+KCpwYXJlbnRPYmpl
Y3QpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+ID4g
c2VsZWN0ZWRDaGlsZHJlbigxKTsKKyAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2Jq
ZWN0PiA+IHNlbGVjdGVkQ2hpbGRyZW4oMSk7CiAgICAgICAgICAgICBzZWxlY3RlZENoaWxkcmVu
WzBdID0gY2hpbGRPYmplY3Q7CiAgICAgICAgICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGlz
dEJveD4oKnBhcmVudE9iamVjdCkuc2V0U2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVu
KTsKICAgICAgICAgfSBlbHNlIHsgLy8gYW55IGVsZW1lbnQgbWF5IGJlIHNlbGVjdGFibGUgYnkg
dmlydHVlIG9mIGl0IGhhdmluZyB0aGUgYXJpYS1zZWxlY3RlZCBwcm9wZXJ0eQpAQCAtMTA0NSw3
ICsxMDQ1LDcgQEAgSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0QWNjZXNzaWJpbGl0eU9iamVj
dEZvckNoaWxkKFZBUklBTlQgdkNoaWxkLCBBY2Nlc3NpYmkKIAogICAgICAgICBpZiAoY2hpbGRJ
bmRleCA+PSBtX29iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4g
RV9GQUlMOwotICAgICAgICBjaGlsZE9iaiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpLmF0KGNoaWxk
SW5kZXgpLmdldCgpOworICAgICAgICBjaGlsZE9iaiA9IGR5bmFtaWNfY2FzdDxBY2Nlc3NpYmls
aXR5T2JqZWN0Kj4obV9vYmplY3QtPmNoaWxkcmVuKCkuYXQoY2hpbGRJbmRleCkuZ2V0KCkpOwog
ICAgIH0KIAogICAgIGlmICghY2hpbGRPYmopCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>