<?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>164358</bug_id>
          
          <creation_ts>2016-11-02 23:12:31 -0700</creation_ts>
          <short_desc>Purge PassRefPtr from Tools</short_desc>
          <delta_ts>2016-11-03 18:07:24 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jh718.park</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1247656</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-02 23:12:31 -0700</bug_when>
    <thetext>Purge PassRefPtr from Tools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247659</commentid>
    <comment_count>1</comment_count>
      <attachid>293749</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-02 23:14:37 -0700</bug_when>
    <thetext>Created attachment 293749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247661</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 23:18:13 -0700</bug_when>
    <thetext>Attachment 293749 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:77:  &apos;childAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:91:  &apos;linkedUIElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:185:  &apos;selectedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:187:  &apos;disclosedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:188:  &apos;rowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:191:  &apos;ariaOwnsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:192:  &apos;ariaFlowToElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:193:  &apos;ariaControlsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:249:  &apos;textMarkerForIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedInt&apos;.  [readability/naming/protected] [4]
Total errors found: 9 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247663</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-02 23:29:26 -0700</bug_when>
    <thetext>Could somebody working on linux get this building?  Also check the !HAVE(ACCESSIBILITY) build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247674</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 01:17:54 -0700</bug_when>
    <thetext>Attachment 293749 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:77:  &apos;childAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:91:  &apos;linkedUIElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:185:  &apos;selectedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:187:  &apos;disclosedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:188:  &apos;rowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:191:  &apos;ariaOwnsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:192:  &apos;ariaFlowToElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:193:  &apos;ariaControlsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:249:  &apos;textMarkerForIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedInt&apos;.  [readability/naming/protected] [4]
Total errors found: 9 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247731</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-03 09:53:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Could somebody working on linux get this building?

Yeah I have some time later today.

&gt;  Also check the !HAVE(ACCESSIBILITY) build.

WebKitGTK+ doesn&apos;t support !HAVE(ACCESSIBILITY).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247751</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-03 10:46:03 -0700</bug_when>
    <thetext>If we break the !HAVE(ACCESSIBILITY) build, then somebody who maintains that configuration  of EFL will have to fix it.  Or we could remove the !HAVE(ACCESSIBILITY) completely, but we would need some input from EFL maintainers to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247754</commentid>
    <comment_count>7</comment_count>
      <attachid>293777</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-03 10:48:38 -0700</bug_when>
    <thetext>Created attachment 293777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247757</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 10:49:56 -0700</bug_when>
    <thetext>Attachment 293777 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:77:  &apos;childAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:91:  &apos;linkedUIElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:185:  &apos;selectedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:187:  &apos;disclosedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:188:  &apos;rowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:191:  &apos;ariaOwnsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:192:  &apos;ariaFlowToElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:193:  &apos;ariaControlsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:249:  &apos;textMarkerForIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedInt&apos;.  [readability/naming/protected] [4]
Total errors found: 9 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247761</commentid>
    <comment_count>9</comment_count>
      <attachid>293781</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-03 11:01:48 -0700</bug_when>
    <thetext>Created attachment 293781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247762</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 11:03:36 -0700</bug_when>
    <thetext>Attachment 293781 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:77:  &apos;childAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:91:  &apos;linkedUIElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:185:  &apos;selectedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:187:  &apos;disclosedRowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:188:  &apos;rowAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:191:  &apos;ariaOwnsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:192:  &apos;ariaFlowToElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:193:  &apos;ariaControlsElementAtIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedUnsigned&apos;.  [readability/naming/protected] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:249:  &apos;textMarkerForIndex&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedInt&apos;.  [readability/naming/protected] [4]
Total errors found: 9 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247763</commentid>
    <comment_count>11</comment_count>
      <attachid>293781</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-03 11:04:06 -0700</bug_when>
    <thetext>Comment on attachment 293781
Patch

I fixed the GTK+ build, it just needed to use .ptr() to convert Refs to RefPtrs in a couple ternary statements. Hopefully that will fix EFL too.

In AccessibilityUIElementIOS.mm you&apos;ve replaced a few 0s with nullptrs, but missed several, and left one nil. I&apos;d either change all of them or none of them. Other than the risk of breaking !HAVE(ACCESSIBILITY), it looks straightforward. Let&apos;s see if Bugzilla lets me give r+ to myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247783</commentid>
    <comment_count>12</comment_count>
      <attachid>293781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 11:50:08 -0700</bug_when>
    <thetext>Comment on attachment 293781
Patch

Clearing flags on attachment: 293781

Committed r208338: &lt;http://trac.webkit.org/changeset/208338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247784</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 11:50:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247967</commentid>
    <comment_count>14</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-11-03 18:07:24 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 293781 [details]
&gt; Patch
&gt; 
&gt; I fixed the GTK+ build, it just needed to use .ptr() to convert Refs to
&gt; RefPtrs in a couple ternary statements. Hopefully that will fix EFL too.

Thanks, Michael ! And sorry for too late reply.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293749</attachid>
            <date>2016-11-02 23:14:37 -0700</date>
            <delta_ts>2016-11-03 10:48:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164358-20161102231037.patch</filename>
            <type>text/plain</type>
            <size>134098</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwODMyMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2NSBAQAorMjAxNi0xMS0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFB1cmdlIFBhc3NSZWZQdHIgZnJvbSBUb29scworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBJbWFnZURpZmYvZWZs
L0ltYWdlRGlmZi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjph
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3Jt
TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxkc2V0QW5jZXN0b3JFbGVtZW50KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3Jk
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNl
bnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQp
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJ
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnBhcmVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0YWtlRm9jdXMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtl
ZFVJRWxlbWVudHMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxk
cmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFy
YW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRy
aWJ1dGVWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0
ZVN1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1ByZXNzQWN0aW9uU3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Rl
Y3JlbWVudEFjdGlvblN1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvbGUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdWJyb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmls
aXR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om9yaWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6eCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnkpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
aWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhl
aWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlu
dFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWluVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjptYXhWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnZhbHVlRGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQp
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3Vz
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Zv
Y3VzYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzU2VsZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNlbGVjdGFibGUpOiBEZWxldGVkLgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0
ZWRDaGlsZEF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4
cGFuZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNDaGVja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJbmRldGVybWluYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNWaXNpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZ
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1l
bnRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRvY3VtZW50VVJJKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dXJsKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3BlYWspOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVt
bnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZSb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbklu
ZGV4UmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNvbHVtbkNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm93SGVhZGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dB
dEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYU93bnNFbGVtZW50QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdElu
ZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJp
YUlzR3JhYmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFEcm9wRWZmZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNsYXNzTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9zaXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVk
VGV4dFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KTogRGVsZXRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJh
cik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRp
Y2FsU2Nyb2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1h
cmtlckZvckJvdW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1h
cmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWlu
c0F0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4Rm9yVGV4dE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KTogRGVsZXRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJs
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9s
bFRvR2xvYmFsUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0
c0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkdDQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29u
dHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0
aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpyb290RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlckF0ay5oOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjphY2Nlc3NpYmls
aXR5RWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRl
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2Vy
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3Vu
ZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9y
UG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVu
dEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9z
ZWRSb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93
QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVk
Q2hpbGRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRSb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGl0bGVVSUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
YXJlbnRFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlz
Y2xvc2VkQnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVs
ZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJh
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJr
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2Vy
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0
V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5l
eHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9z
dHNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdXBwb3J0ZWRBY3Rpb25zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmls
aXR5RXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbToKKyAgICAgICAg
KG1ha2VWYWx1ZVJlZkZvclZhbHVlKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIgX25vdGlmaWNhdGlvblJlY2VpdmVkOl0pOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVu
dEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxv
d1RvRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxi
YXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9s
bGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFy
dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRU
ZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdv
cmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpuZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFy
YWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1h
cmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50
U2VuZGVyUHJveHlFZmwuY3BwOgorICAgICAgICAoV1RSOjprZXlQYWROYW1lKToKKyAgICAgICAg
KFdUUjo6a2V5TmFtZSk6CisKIDIwMTYtMTEtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQmF0dGVyeSBTdGF0dXMgQVBJIGZy
b20gdGhlIHRyZWUKSW5kZXg6IFRvb2xzL0ltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9JbWFnZURpZmYvZWZsL0ltYWdlRGlmZi5jcHAJKHJldmlzaW9uIDIw
ODI5OSkKKysrIFRvb2xzL0ltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2VmbC9Vbmlx
dWVQdHJFZmwuaD4KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCShyZXZp
c2lvbiAyMDgyOTkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBA
IGV4dGVybiAiQyIgewogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNp
bmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDgyOTkp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsOSBAQAogCiBuYW1lc3Bh
Y2UgV1RSIHsKIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSgpCitSZWY8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKTsKIH0KIAogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKCkKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6ZW5oYW5jZWRBYwogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBM
QVRGT1JNKEVGTCkKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKK1JlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQogewogICAgIFdLQnVuZGxl
UGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgp
OwogICAgIHZvaWQqIHJvb3QgPSBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpOwpAQCAt
ODAsNyArODAsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2VzCiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0
Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAgICAKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQorUmVm
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2Vk
RWxlbWVudCgpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJp
bGl0eUZvY3VzZWRPYmplY3QocGFnZSk7CkBAIC04OSwyNiArODksMTUgQEAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2NlcwogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVsZW1lbnRBdFBv
aW50KGludCB4LCBpbnQgeSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQogewotICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnQgPSByb290RWxlbWVudCgpOwor
ICAgIFJlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnQgPSByb290RWxlbWVudCgp
OwogICAgIHJldHVybiB1aUVsZW1lbnQtPmVsZW1lbnRBdFBvaW50KHgsIHkpOwogfQogCi0vLyBV
bnN1cHBvcnRlZCBtZXRob2RzIG9uIHZhcmlvdXMgcGxhdGZvcm1zLgotLy8gQXMgdGhleSdyZSBp
bXBsZW1lbnRlZCBvbiBvdGhlciBwbGF0Zm9ybXMgdGhpcyBsaXN0IHNob3VsZCBiZSBtb2RpZmll
ZC4KLSNpZiAoIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0o
RUZMKSkgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKLWJvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYpIHsgcmV0dXJuIGZhbHNlOyB9
Ci1ib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5l
cigpIHsgcmV0dXJuIGZhbHNlOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKSB7IHJldHVybiBudWxscHRyOyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkgeyB9Ci1KU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpIHsgcmV0dXJu
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIiIpKTsgfQotI2VuZGlmCi0KICNpZiAhSEFWRShBQ0NFU1NJQklMSVRZKSAmJiAoUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVs
ZW1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMywxNCArMjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaAotI2RlZmluZSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cl9oCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKIAogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+Ci0jaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgiCiAjZW5kaWYKIApAQCAtMzgs
NyArMzksNyBAQCBuYW1lc3BhY2UgV1RSIHsKICAgICAKIGNsYXNzIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyIDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gY3JlYXRlKCk7CiAgICAgfkFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKCk7CiAKICAgICB2b2lkIG1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09i
amVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CkBAIC01MSwxMCAr
NTIsMTAgQEAgcHVibGljOgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5h
bWUoKTsKIAogICAgIC8vIENvbnRyb2xsZXIgTWV0aG9kcyAtIHBsYXRmb3JtLWluZGVwZW5kZW50
IGltcGxlbWVudGF0aW9ucy4KLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IHJvb3RFbGVtZW50KCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBm
b2N1c2VkRWxlbWVudCgpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IGFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0
ZSk7CisgICAgUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CisgICAg
UmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZvY3VzZWRFbGVtZW50KCk7CisgICAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7Cisg
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFjY2Vzc2libGVFbGVtZW50QnlJZChK
U1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSk7CiAKICAgICBib29sIGFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAgICAgYm9vbCByZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcigpOwpAQCAtNjMsMjIgKzY0LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGxv
Z0ZvY3VzRXZlbnRzKCkgeyB9CiAgICAgdm9pZCBsb2dWYWx1ZUNoYW5nZUV2ZW50cygpIHsgfQog
ICAgIHZvaWQgbG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMoKSB7IH0KLSAgICB2b2lkIGxvZ0FjY2Vz
c2liaWxpdHlFdmVudHMoKTsKKyAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKSB7IH07
CiAKICAgICB2b2lkIHJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogcHJpdmF0ZToKICAgICBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9u
SGFuZGxlcj4gbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyOwotI2VuZGlmCi0KLSNpZiBIQVZF
KEFDQ0VTU0lCSUxJVFkpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpCisjZWxz
ZQogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxO
b3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKIAot
I2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKKyNlbmRpZiAvLyBIQVZFKEFDQ0VT
U0lCSUxJVFkpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNp
b24gMjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0ICszMywxNCBA
QAogCiBuYW1lc3BhY2UgV1RSIHsKICAgICAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2Vy
IG1hcmtlcikKK1JlZjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2VyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobWFya2VyKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobWFya2VyKSk7CiB9CiAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
OjpjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImIG1hcmtlcikKK1JlZjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShjb25z
dCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYgbWFya2VyKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobWFya2VyKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobWFya2VyKSk7CiB9CiAKIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJr
ZXIgbWFya2VyKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAkocmV2aXNpb24g
MjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTIgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaAot
I2RlZmluZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ0LDggKzQzLDggQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgOiBwdWJsaWMgSlNXcmFw
cGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyJik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRl
KFBsYXRmb3JtVGV4dE1hcmtlcik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJik7CiAKICAgICB+QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIoKTsKICAgICAKQEAgLTcxLDUgKzcwLDMgQEAgaW5saW5lIGJv
b2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdUUgotICAgIAotI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNpb24gMjA4Mjk5
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE0IEBACiAK
IG5hbWVzcGFjZSBXVFIgewogICAgIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoUGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UgbWFya2VyUmFuZ2UpCitSZWY8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtl
clJhbmdlIG1hcmtlclJhbmdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpKTsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlOjpjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYgbWFy
a2VyUmFuZ2UpCitSZWY8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UmIG1hcmtlclJhbmdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpKTsKIH0KIAogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShQbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJrZXJSYW5nZSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5oCShyZXZpc2lvbiAyMDgyOTkpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaWZuZGVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VfaAotI2RlZmluZSBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNXcmFw
cGFibGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpAQCAtNDIsOCArNDEsOCBAQCBuYW1lc3BhY2UgV1RSIHsKICAgICAKIGNsYXNzIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgOiBwdWJsaWMgSlNXcmFwcGFibGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IGNy
ZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UmKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IGNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk7CisgICAgc3RhdGljIFJlZjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSYpOwogICAgIAogICAgIH5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKCk7
CiAgICAgCkBAIC02OSw1ICs2OCwzIEBAIGlubGluZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UKICNlbmRpZgogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAkocmV2aXNpb24gMjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTQgKzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShQbGF0Zm9y
bVVJRWxlbWVudCB1aUVsZW1lbnQpCitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFBsYXRmb3JtVUlFbGVtZW50IHVpRWxlbWVudCkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQodWlFbGVtZW50
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVs
ZW1lbnQpKTsKIH0KICAgICAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQm
IHVpRWxlbWVudCkKK1JlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgdWlFbGVtZW50KQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1l
bnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KHVp
RWxlbWVudCkpOwogfQogCiBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndyYXBw
ZXJDbGFzcygpCkBAIC02MywxNSArNjMsMTUgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSQogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50
c0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1cm4gbnVsbHB0cjsgfQogdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rpb24oKSB7IH0KIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVhc2VUZXh0U2VsZWN0aW9uKCkgeyB9Ci1QYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmtlZEVsZW1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlYWRlckVsZW1lbnRBdEluZGV4
KHVuc2lnbmVkKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkRWxlbWVudCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphc3Npc3RpdmVUZWNobm9sb2d5U2ltdWxh
dGVkRm9jdXMoKSB7IHJldHVybjsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3Jv
bGxQYWdlVXAoKSB7IHJldHVybiBmYWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzY3JvbGxQYWdlRG93bigpIHsgcmV0dXJuIGZhbHNlOyB9CiBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNjcm9sbFBhZ2VMZWZ0KCkgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsUGFnZVJpZ2h0KCkgeyByZXR1cm4gZmFsc2U7IH0KIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzQ29udGFpbmVkQnlGaWVsZHNldFRyYWl0KCkg
eyByZXR1cm4gZmFsc2U7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQoKSB7IHJldHVybiBu
dWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9CiBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VhcmNoRmllbGQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRBcmVhKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtNzksMTgyICs3OSwyOSBAQCBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzVGV4dEFyZWEoCiAgICAgCiAvLyBVbnN1cHBvcnRlZCBtZXRob2Rz
IG9uIHZhcmlvdXMgcGxhdGZvcm1zLiBBcyB0aGV5J3JlIGltcGxlbWVudGVkIG9uIG90aGVyIHBs
YXRmb3JtcyB0aGlzIGxpc3Qgc2hvdWxkIGJlIG1vZGlmaWVkLgogI2lmICghUExBVEZPUk0oR1RL
KSAmJiAhUExBVEZPUk0oRUZMKSkgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKLUpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChp
bnQpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQoaW50KSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkgeyBy
ZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbnRlbmNlQXRPZmZzZXQoaW50KSB7IHJldHVybiAwOyB9Ci0jZW5kaWYKLQotI2lmICgh
UExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShFRkwpKSB8fCAh
SEFWRShBQ0NFU1NJQklMSVRZKQotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCkgeyB9Ci1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKSB7
IH0KLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCkgeyB9
Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCopIHsgcmV0dXJuIGZhbHNlOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCwgaW50KSB7IHJl
dHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQotdW5zaWdu
ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqKSB7IHJldHVybiAwOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRy
ZW5Db3VudCgpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKSB7IHJldHVybiAwOyB9
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnBhcmVudEVsZW1lbnQoKSB7IHJldHVybiAwOyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRha2VGb2N1cygpIHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtl
U2VsZWN0aW9uKCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlv
bigpIHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKSB7
IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxB
dHRyaWJ1dGVzKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKSB7IHJldHVy
biAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7IH0K
LUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZEb2N1bWVudExpbmtzKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkgeyByZXR1
cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpIHsgcmV0dXJuIDA7IH0KLXZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRlY3JlbWVudCgpIHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93
TWVudSgpIHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcygpIHsgfQotSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9Ci1KU1ZhbHVlUmVmIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgeyByZXR1cm4gMDsgfQotYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYp
IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmli
dXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmKSB7IHJldHVy
biBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1ByZXNzQWN0aW9uU3Vw
cG9ydGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3JlbWVudEFjdGlvblN1cHBvcnRlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm9sZSgpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpIHsgcmV0
dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpjb21wdXRlZFJvbGVTdHJpbmcoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKSB7IHJldHVybiAwOyB9Ci1KU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24o
KSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGFuZ3VhZ2UoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKSB7IHJldHVybiAwOyB9Ci1K
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJp
bGl0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QgeyByZXR1cm4gMDsgfQot
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OngoKSB7IHJldHVybiAwOyB9Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSgpIHsg
cmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCgpIHsgcmV0
dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKSB7IHJldHVy
biAwOyB9Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdCB7
IHJldHVybiAwOyB9Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUoKSB7
IHJldHVybiAwOyB9Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUoKSB7
IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dmFsdWVEZXNjcmlwdGlvbigpIHsgcmV0dXJuIDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKSB7IHJldHVybiAwOyB9Ci1KU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0
UmFuZ2UoKSB7IHJldHVybiAwOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5h
YmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
UmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1i
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTZWxlY3RhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqKSBjb25zdCB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2V0U2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQpIGNvbnN0IHsgfQotdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KHVuc2lnbmVkKSBjb25zdCB7
IH0KLXVuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBh
bmRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1i
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBz
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1pbnQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9
Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKSB7IHJldHVybiAw
OyB9Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkoKSB7IHJldHVy
biAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZG9jdW1lbnRFbmNvZGluZygpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpIHsgcmV0dXJuIDA7IH0KLUpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKSB7IHJl
dHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3BlYWsoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpIHsgcmV0dXJuIDA7
IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZSb3dIZWFkZXJzKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMoKSB7IHJldHVy
biAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mUm93cygpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKSB7IHJl
dHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mSGVhZGVyKCkgeyByZXR1cm4gMDsgfQotaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmluZGV4SW5UYWJsZSgpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkgeyByZXR1cm4g
MDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkluZGV4UmFuZ2UoKSB7IHJldHVybiAwOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm93Q291bnQoKSB7IHJldHVybiAwOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y29sdW1uQ291bnQoKSB7IHJldHVybiAwOyB9Ci1KU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJvd0hlYWRlcnMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci1KU1ZhbHVlUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQot
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkaXNjbG9zZWRCeVJvdygpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1
bnNpZ25lZCkgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiAw
OyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFD
b250cm9sc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiBudWxscHRyOyB9Ci1ib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3QoKSBjb25zdCB7IHJldHVy
biAwOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCkgeyBy
ZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJhbmdlRm9yTGluZShpbnQpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0aW9uKGludCwgaW50KSB7
IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Ci1i
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVk
LCB1bnNpZ25lZCkgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqKSB7IHJldHVybiBmYWxzZTsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1
cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJuIDA7
IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNN
aXNzcGVsbGVkKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1cm4gZmFsc2U7IH0KLXVuc2lnbmVk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRl
KEpTQ29udGV4dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2wsIEpTVmFsdWVSZWYs
IEpTU3RyaW5nUmVmLCBib29sLCBib29sKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBib29s
LCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZiwgYm9vbCwgYm9vbCkgeyByZXR1cm4gMDsgfQotSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdFRleHRX
aXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiwgSlNTdHJp
bmdSZWYsIEpTU3RyaW5nUmVmKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5B
bmRSb3codW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3Jv
bGxiYXIoKSBjb25zdCB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRp
b25MaXN0ZW5lcihKU1ZhbHVlUmVmKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpIHsgcmV0dXJuIGZhbHNl
OyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSB7IHJldHVybiAwOyB9Ci1pbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciopIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikg
eyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91
bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7IHJldHVybiAwOyB9Ci1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQsIGludCkgeyBy
ZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KikgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKSB7IHJldHVybiAwOyB9Ci1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjplbmRUZXh0TWFya2VyKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRy
aWJ1dGUoSlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVy
biBmYWxzZTsgfQotaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIC0xOyB9Ci1ib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KikgeyByZXR1cm4gZmFsc2U7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQpIHsgcmV0dXJu
IDA7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgp
IHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50KGlu
dCwgaW50KSB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZVdpdGhTdWJGb2N1cyhpbnQsIGludCwgaW50LCBpbnQpIHsgfQotSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25z
dCB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiAwOyB9
Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFBy
ZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25z
dCB7IHJldHVybiAwOyB9Ci0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZz
ZXQoaW50KSB7IHJldHVybiBudWxscHRyOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVsbHB0cjsg
fQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRl
bmNlQXRPZmZzZXQoaW50KSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmICFQTEFU
Rk9STShNQUMpIHx8ICFIQVZFKEFDQ0VTU0lCSUxJVFkpCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1h
cmtlclJhbmdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJh
bmdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkgeyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldEJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiwgYm9vbCkgeyB9CiAjZW5k
aWYKIAotI2lmICghUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSkgfHwgIUhBVkUoQUND
RVNTSUJJTElUWSkKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
aWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7
IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBu
dWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1Bh
cmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7
IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJl
dHVybiBudWxscHRyOyB9CisjaWYgIVBMQVRGT1JNKENPQ09BKSB8fCAhSEFWRShBQ0NFU1NJQklM
SVRZKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4g
bnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29yZEVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVs
bHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJu
IG51bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRl
bmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
IHsgcmV0dXJuIG51bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3Vz
U2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDIwODI5OSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCi0jaWZuZGVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAotI2RlZmluZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgiCkBA
IC02Miw4ICs2MSw4IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQm
KTsKIAogICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CiAKQEAgLTc0LDEyICs3MywxMiBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3Ro
ZXJFbGVtZW50KTsKICAgICAKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBjaGlsZEF0SW5kZXgodW5zaWduZWQpOworICAgIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjaGlsZEF0SW5kZXgodW5zaWduZWQpOwogICAgIHVu
c2lnbmVkIGluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kik7CiAgICAgaW50IGNo
aWxkcmVuQ291bnQoKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHRp
dGxlVUlFbGVtZW50KCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBw
YXJlbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHRpdGxl
VUlFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHBhcmVudEVs
ZW1lbnQoKTsKIAogICAgIHZvaWQgdGFrZUZvY3VzKCk7CiAgICAgdm9pZCB0YWtlU2VsZWN0aW9u
KCk7CkBAIC04OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIC0gcGxhdGZvcm0t
aW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGFsbEF0dHJpYnV0ZXMoKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRl
c09mTGlua2VkVUlFbGVtZW50cygpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gbGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IGxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQpOwogICAg
IAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtz
KCk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7
CkBAIC0xMDMsNyArMTAyLDcgQEAgcHVibGljOgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGRvdWJs
ZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIEpTVmFs
dWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
IGNvbnN0OwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsKKyAgICBSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKSBjb25zdDsKICAgICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpOwogICAgIHZvaWQgc2V0Qm9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSwgYm9vbCB2YWx1ZSk7CiAgICAgYm9vbCBpc0F0dHJpYnV0ZVN1cHBvcnRl
ZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpAQCAtMTQ1LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdDsKICAgICB2b2lk
IHJlbW92ZVNlbGVjdGlvbkF0SW5kZXgodW5zaWduZWQpIGNvbnN0OwogICAgIHVuc2lnbmVkIHNl
bGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gc2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQpIGNvbnN0OworICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25l
ZCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0V4
cGFuZGVkKCkgY29uc3Q7CkBAIC0xODMsMTUgKzE4MiwxNSBAQCBwdWJsaWM6CiAgICAgSlNWYWx1
ZVJlZiBjb2x1bW5IZWFkZXJzKCkgY29uc3Q7CiAKICAgICAvLyBUcmVlL091dGxpbmUgc3BlY2lm
aWMgYXR0cmlidXRlcwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gc2Vs
ZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IGRpc2Nsb3NlZEJ5Um93KCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvd0F0SW5kZXgodW5zaWduZWQpOworICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQpOwor
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRCeVJvdygpOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2ln
bmVkKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcm93QXRJbmRleCh1bnNp
Z25lZCk7CiAKICAgICAvLyBBUklBIHNwZWNpZmljCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBhcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1
bnNpZ25lZCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhQ29u
dHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IGFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQpOworICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQp
OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhQ29udHJvbHNFbGVtZW50
QXRJbmRleCh1bnNpZ25lZCk7CiAKICAgICAvLyBBUklBIERyYWcgYW5kIERyb3AKICAgICBib29s
IGFyaWFJc0dyYWJiZWQoKSBjb25zdDsKQEAgLTIwOCw3ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBib29sIGF0dHJpYnV0ZWRTdHJpbmdS
YW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICB1bnNpZ25lZCB1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYs
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5l
eHQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZp
c2libGVPbmx5LCBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7Ci0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoSlND
b250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNE
aXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4
dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJv
b2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2Vh
cmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkp
OwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZWxlY3RUZXh0V2l0aENyaXRlcmlhKEpT
Q29udGV4dFJlZiwgSlNTdHJpbmdSZWYgYW1iaWd1aXR5UmVzb2x1dGlvbiwgSlNWYWx1ZVJlZiBz
ZWFyY2hTdHJpbmdzLCBKU1N0cmluZ1JlZiByZXBsYWNlbWVudFN0cmluZywgSlNTdHJpbmdSZWYg
YWN0aXZpdHkpOwogCiAgICAgLy8gVGV4dC1zcGVjaWZpYwpAQCAtMjE4LDQ5ICsyMTcsNDkgQEAg
cHVibGljOgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZW50ZW5jZUF0T2Zmc2V0KGlu
dCBvZmZzZXQpOwogICAgIAogICAgIC8vIFRhYmxlLXNwZWNpZmljCi0gICAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVt
biwgdW5zaWduZWQgcm93KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY2Vs
bEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CiAKICAgICAv
LyBTY3JvbGxhcmVhLXNwZWNpZmljCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0OworICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Q7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Q7
CiAKICAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKTsKICAgICB2b2lkIHNjcm9sbFRvR2xv
YmFsUG9pbnQoaW50IHgsIGludCB5KTsKICAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRo
U3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIAogICAg
IC8vIFRleHQgbWFya2Vycy4KLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IGxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0
ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKTsgICAgCi0g
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOworICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRN
YXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpOworICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwog
ICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwotICAgIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwg
aW50IGhlaWdodCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gc3Rh
cnRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiB0ZXh0TWFya2VyRm9y
UG9pbnQoaW50IHgsIGludCB5KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0VGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBzdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IHN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiB0ZXh0TWFya2Vy
Rm9yUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IHByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gbmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CiAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgaW50IHRleHRNYXJrZXJSYW5nZUxlbmd0
aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgYm9vbCBhdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUoSlNTdHJpbmdSZWYsIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBpbnQgaW5kZXhGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CiAgICAgYm9vbCBpc1RleHRNYXJrZXJWYWxpZChBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IHRleHRNYXJrZXJGb3JJbmRleChpbnQpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlcigpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IGVuZFRleHRNYXJrZXIoKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JJbmRleChpbnQpOworICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gc3RhcnRUZXh0TWFya2VyKCk7CisgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyKCk7CiAgICAgYm9vbCBzZXRTZWxlY3Rl
ZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwotICAgIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbGVmdFdvcmRUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7Ci0gICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiByaWdodFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7Ci0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IHBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IHNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5l
eHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlvdXNT
ZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbGVmdFdvcmRU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7Cisg
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHJpZ2h0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IG5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gcGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciopOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gbmV4
dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBwcmV2aW91c1BhcmFn
cmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gc2VudGVuY2VUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0U2VudGVuY2VFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKIAogICAgIC8vIFJldHVybnMgYW4g
b3JkZXJlZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVtZW50LgogICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3Q7CkBAIC0yODMs
OCArMjgyLDggQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgZWxlbWVudHNGb3JSYW5nZSh1bnNp
Z25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB2b2lkIGluY3JlYXNlVGV4dFNl
bGVjdGlvbigpOwogICAgIHZvaWQgZGVjcmVhc2VUZXh0U2VsZWN0aW9uKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBsaW5rZWRFbGVtZW50KCk7Ci0gICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBoZWFkZXJFbGVtZW50QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGxpbmtlZEVsZW1l
bnQoKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gaGVhZGVyRWxlbWVudEF0
SW5kZXgodW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neVNpbXVs
YXRlZEZvY3VzKCk7CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1RleHRBcmVhKCkgY29uc3Q7CkBAIC0yOTYsNyArMjk1LDcgQEAgcHVibGljOgogICAgIAogICAg
IC8vIEZpZWxkc2V0CiAgICAgYm9vbCBoYXNDb250YWluZWRCeUZpZWxkc2V0VHJhaXQoKTsKLSAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZpZWxkc2V0QW5jZXN0b3JFbGVt
ZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZpZWxkc2V0QW5jZXN0
b3JFbGVtZW50KCk7CiAgICAgCiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQo
UGxhdGZvcm1VSUVsZW1lbnQpOwpAQCAtMzI3LDUgKzMyNiwzIEBAIHByaXZhdGU6CiB9OwogICAg
IAogfSAvLyBuYW1lc3BhY2UgV1RSCi0gICAgCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudF9oCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIw
ODI5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw5ICsxNjYsOSBAQCBzdGF0
aWMgV0tFdmVudE1vZGlmaWVycyBwYXJzZU1vZGlmaWVyQXJyCiAgICAgcmV0dXJuIG1vZGlmaWVy
czsKIH0KIAotUGFzc1JlZlB0cjxFdmVudFNlbmRpbmdDb250cm9sbGVyPiBFdmVudFNlbmRpbmdD
b250cm9sbGVyOjpjcmVhdGUoKQorUmVmPEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI+IEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmVu
dFNlbmRpbmdDb250cm9sbGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFdmVudFNlbmRp
bmdDb250cm9sbGVyKTsKIH0KIAogRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6RXZlbnRTZW5kaW5n
Q29udHJvbGxlcigpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24g
MjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE5ICsyMywxOCBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcl9oCi0jZGVmaW5lIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0V2
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLR2VvbWV0cnkuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNs
YXNzIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgOiBwdWJsaWMgSlNXcmFwcGFibGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBSZWY8RXZlbnRTZW5kaW5nQ29udHJvbGxlcj4gY3JlYXRlKCk7CiAgICAg
dmlydHVhbCB+RXZlbnRTZW5kaW5nQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBtYWtlV2luZG93
T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pOwpAQCAtOTIsNSArOTEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBFdmVudFNlbmRpbmdDb250cm9sbGVyX2gKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDIwODI5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIs
OSBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotUGFzc1JlZlB0cjxHQ0NvbnRyb2xsZXI+IEdDQ29u
dHJvbGxlcjo6Y3JlYXRlKCkKK1JlZjxHQ0NvbnRyb2xsZXI+IEdDQ29udHJvbGxlcjo6Y3JlYXRl
KCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdDQ29udHJvbGxlcik7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR0NDb250cm9sbGVyKTsKIH0KIAogR0NDb250cm9sbGVyOjpHQ0NvbnRy
b2xsZXIoKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9HQ0Nv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0dDQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMDgyOTkpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxNyArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEdDQ29udHJvbGxlcl9oCi0jZGVmaW5lIEdDQ29udHJvbGxlcl9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFz
cyBHQ0NvbnRyb2xsZXIgOiBwdWJsaWMgSlNXcmFwcGFibGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEdDQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxHQ0Nv
bnRyb2xsZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkdDQ29udHJvbGxlcigpOwogCiAgICAg
dm9pZCBtYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93T2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwpAQCAtNTAsNSArNDksMyBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBHQ0NvbnRyb2xsZXJfaApJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIwODI5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTAsNyArMjkwLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKFdLRGlj
dAogICAgIG1fZ2NDb250cm9sbGVyID0gR0NDb250cm9sbGVyOjpjcmVhdGUoKTsKICAgICBtX2V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIgPSBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVhdGUoKTsK
ICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUo
KTsKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKTsKKyNlbmRpZgogCiAgICAgV0tC
dW5kbGVTZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhtX2J1bmRsZSwgbV9wYWdl
R3JvdXAsIHRydWUpOwogICAgIFdLQnVuZGxlU2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZChtX2J1bmRsZSwgbV9wYWdlR3JvdXAsIHRydWUpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNp
b24gMjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVf
aAotI2RlZmluZSBJbmplY3RlZEJ1bmRsZV9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIK
QEAgLTM4LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKyNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVBhZ2U7CkBAIC01Niw3ICs1OCw5IEBAIHB1YmxpYzoKICAgICBHQ0NvbnRy
b2xsZXIqIGdjQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZ2NDb250cm9sbGVyLmdldCgpOyB9CiAg
ICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlciogZXZlbnRTZW5kaW5nQ29udHJvbGxlcigpIHsgcmV0
dXJuIG1fZXZlbnRTZW5kaW5nQ29udHJvbGxlci5nZXQoKTsgfQogICAgIFRleHRJbnB1dENvbnRy
b2xsZXIqIHRleHRJbnB1dENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3RleHRJbnB1dENvbnRyb2xs
ZXIuZ2V0KCk7IH0KKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIqIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkgeyByZXR1cm4gbV9hY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCiAKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2Uq
IHBhZ2UoKSBjb25zdDsKICAgICBzaXplX3QgcGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlcy5zaXplKCk7IH0KQEAgLTE1Miw3ICsxNTYsOSBAQCBwcml2YXRlOgogICAgIFdLQnVuZGxl
UGFnZUdyb3VwUmVmIG1fcGFnZUdyb3VwOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SW5q
ZWN0ZWRCdW5kbGVQYWdlPj4gbV9wYWdlczsKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAg
ICBSZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI7CisjZW5kaWYKICAgICBSZWZQdHI8VGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOwogICAgIFJl
ZlB0cjxHQ0NvbnRyb2xsZXI+IG1fZ2NDb250cm9sbGVyOwogICAgIFJlZlB0cjxFdmVudFNlbmRp
bmdDb250cm9sbGVyPiBtX2V2ZW50U2VuZGluZ0NvbnRyb2xsZXI7CkBAIC0xODEsNSArMTg3LDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gSW5qZWN0
ZWRCdW5kbGVfaApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyMDgyOTkpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw5ICs1Niw5IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1QYXNzUmVmUHRyPFRlc3RS
dW5uZXI+IFRlc3RSdW5uZXI6OmNyZWF0ZSgpCitSZWY8VGVzdFJ1bm5lcj4gVGVzdFJ1bm5lcjo6
Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRlc3RSdW5uZXIpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRlc3RSdW5uZXIpOwogfQogCiBUZXN0UnVubmVyOjpUZXN0UnVu
bmVyKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAyMDgyOTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgVGVzdFJ1bm5lcl9oCi0jZGVmaW5lIFRlc3RSdW5uZXJfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgpAQCAt
MzIsNyArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC01Myw3ICs1Miw3
IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0UnVubmVyIDogcHVibGljIEpTV3JhcHBh
YmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXN0UnVubmVyPiBjcmVhdGUo
KTsKKyAgICBzdGF0aWMgUmVmPFRlc3RSdW5uZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgflRl
c3RSdW5uZXIoKTsKIAogICAgIC8vIEpTV3JhcHBhYmxlCkBAIC00MDEsNSArNDAwLDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gVGVzdFJ1bm5lcl9o
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwODI5OSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAK
LVBhc3NSZWZQdHI8VGV4dElucHV0Q29udHJvbGxlcj4gVGV4dElucHV0Q29udHJvbGxlcjo6Y3Jl
YXRlKCkKK1JlZjxUZXh0SW5wdXRDb250cm9sbGVyPiBUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVh
dGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dElucHV0Q29udHJvbGxlcik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dElucHV0Q29udHJvbGxlcik7CiB9CiAKIFRleHRJ
bnB1dENvbnRyb2xsZXI6OlRleHRJbnB1dENvbnRyb2xsZXIoKQpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250
cm9sbGVyLmgJKHJldmlzaW9uIDIwODI5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywx
NyArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFRleHRJbnB1dENvbnRyb2xsZXJfaAotI2RlZmluZSBUZXh0SW5wdXRDb250cm9sbGVy
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdUUiB7
CiAKIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXIgOiBwdWJsaWMgSlNXcmFwcGFibGUgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRJbnB1dENvbnRyb2xsZXI+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBSZWY8VGV4dElucHV0Q29udHJvbGxlcj4gY3JlYXRlKCk7CiAgICAgdmly
dHVhbCB+VGV4dElucHV0Q29udHJvbGxlcigpOwogCiAgICAgLy8gSlNXcmFwcGFibGUKQEAgLTUx
LDUgKzUwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCi0jZW5kaWYg
Ly8gVGV4dElucHV0Q29udHJvbGxlcl9oCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJBdGsuY3BwCShyZXZpc2lvbiAyMDgyOTkpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSw2IEBACiAKIG5hbWVzcGFjZSBXVFIgewog
Ci12b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkK
LXsKLSAgICAvLyBObyBsb25nZXIgaW1wbGVtZW50ZWQgZm9yIEFUSy4gVXNlIGFkZE5vdGlmaWNh
dGlvbkxpc3RlbmVyKCkgaW5zdGVhZCB0bwotICAgIC8vIGNoZWNrIHRoYXQgcmVsZXZhbnQgQVRL
IHNpZ25hbHMgYXJlIGJlaW5nIGVtbWl0dGVkIGluIHJlc3BvbnNlIHRvIGV2ZW50cy4KLX0KLQog
dm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7
CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID0gbnVsbHB0cjsKQEAgLTgyLDcgKzc2
LDcgQEAgc3RhdGljIEF0a09iamVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtPYgogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQp
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKIHsKICAgICBBdGtPYmplY3Qq
IHJvb3QgPSBBVEtfT0JKRUNUKFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKSk7CiAgICAgaWYgKCFyb290KQpAQCAtMTA1
LDcgKzk5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlDbwogICAg
IHJldHVybiBwbGF0Zm9ybU5hbWU7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKK1JlZjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQog
ewogICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LnBhZ2UoKS0+cGFnZSgpOwogICAgIHZvaWQqIHJvb3QgPSBXS0FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0KHBhZ2UpOwpAQCAtMTEzLDcgKzEwNyw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXMKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRl
KHN0YXRpY19jYXN0PEF0a09iamVjdCo+KHJvb3QpKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQo
KQorUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpm
b2N1c2VkRWxlbWVudCgpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgdm9pZCogcm9vdCA9IFdLQWNj
ZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QocGFnZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
YXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgJKHJldmlzaW9uIDIwODI5
OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3LDE1ICsx
NywxMyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCi0jZGVmaW5lIEFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyQXRrX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgSEFWRShBQ0NF
U1NJQklMSVRZKQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNp
bmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8YXRrL2F0a29iamVjdC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKQEAgLTMzLDkgKzMxLDkgQEAgbmFtZXNwYWNlIFdUUiB7
CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gY3JlYXRl
KCkKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBjcmVh
dGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKSk7CiAgICAgfQogICAgIH5BY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlcigpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1FbGVtZW50KEdSZWZQ
dHI8QXRrT2JqZWN0PiBwbGF0Zm9ybUVsZW1lbnQpIHsgbV9wbGF0Zm9ybUVsZW1lbnQgPSBwbGF0
Zm9ybUVsZW1lbnQ7IH0KQEAgLTU2LDUgKzU0LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNl
IFdUUgogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQotCi0jZW5kaWYgLy8gQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGtfaApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAJKHJldmlzaW9uIDIwODI5OSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzAsNyArNzMwLDcgQEAgaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bgogICAgIHJldHVybiBhdGtfb2JqZWN0X2dldF9uX2Fj
Y2Vzc2libGVfY2hpbGRyZW4oQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKTsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpl
bGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQog
ewogICAgIGlmICghQVRLX0lTX0NPTVBPTkVOVChtX2VsZW1lbnQuZ2V0KCkpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTc1NSw3ICs3NTUsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbmRleE9mCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIUFU
S19JU19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC03NjksNyArNzY5LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
cwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBhY2Nlc3NpYmlsaXR5RWxlbWVudEF0SW5kZXgoQXRrT2JqZWN0KiBlbGVt
ZW50LCBBdGtSZWxhdGlvblR5cGUgcmVsYXRpb25UeXBlLCB1bnNpZ25lZCBpbmRleCkKK3N0YXRp
YyBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRBdElu
ZGV4KEF0a09iamVjdCogZWxlbWVudCwgQXRrUmVsYXRpb25UeXBlIHJlbGF0aW9uVHlwZSwgdW5z
aWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKGVsZW1lbnQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTc5MiwzNSArNzkyLDM1IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQKICAgICByZXR1cm4gdGFyZ2V0ID8gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKHRhcmdldCkgOiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxl
bWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0Vs
ZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5z
aWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewog
ICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5RWxlbWVudEF0SW5kZXgobV9lbGVtZW50LmdldCgpLCBB
VEtfUkVMQVRJT05fRkxPV1NfVE8sIGluZGV4KTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKIHsKICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUVsZW1lbnRBdEluZGV4KG1fZWxl
bWVudC5nZXQoKSwgQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJfRk9SLCBpbmRleCk7CiB9CiAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCiB7CiAgICAgLy8gQVRLIGRvZXNuJ3QgaGF2ZSBBUEkgdG8gZ2V0IGFuIGFjY2Vz
c2libGUgcm93IGJ5IGluZGV4IGRpcmVjdGx5LiBJdCBkb2VzLCBob3dldmVyLCBoYXZlCiAgICAg
Ly8gQVBJIHRvIGdldCBjZWxscyBpbiB0aGUgcm93IHNwZWNpZmllZCBieSBpbmRleC4gVGhlIHBh
cmVudCBvZiBhIGNlbGwgc2hvdWxkIGJlIHRoZSByb3cuCkBAIC04MzcsNyArODM3LDcgQEAgUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2NlcwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAorUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIGlmICghQVRLX1NF
TEVDVElPTihtX2VsZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg1
MywxMyArODUzLDEzIEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGUK
ICAgICByZXR1cm4gYXRrX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KEFUS19TRUxFQ1RJ
T04obV9lbGVtZW50LmdldCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQo
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRpdGxlVUlFbGVtZW50KCkKIHsKICAgICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50Lmdl
dCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04ODMsNyArODgzLDcgQEAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2NlcwogICAgIHJldHVybiB0YXJnZXQgPyBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodGFyZ2V0KSA6IG51bGxwdHI7CiB9CiAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cGFyZW50RWxlbWVudCgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCiB7CiAgICAgaWYgKCFBVEtfSVNfT0JKRUNU
KG1fZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODkyLDcgKzg5
Miw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXMKICAgICByZXR1
cm4gcGFyZW50ID8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHBhcmVudCkgOiBudWxs
cHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCiB7CiAgICAgLy8g
RklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAyOCw3ICsxMDI4LDcg
QEAgSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAg
ICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp1aUVsZW1lCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFy
dEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNT
dHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNj
ZW5kYW50c09ubHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rp
b25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9v
bCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCiB7CiAgICAgLy8g
RklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTcwNSw3ICsxNzA1LDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSQogICAgIHJldHVybiBp
bmRleFJhbmdlSW5UYWJsZShtX2VsZW1lbnQuZ2V0KCksIGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9y
Q29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQgcm93KQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRS
b3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCiB7CiAgICAgaWYgKCFBVEtfSVNfVEFCTEUo
bV9lbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzE2LDEzICsx
NzE2LDEzIEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXMKICAgICBy
ZXR1cm4gZm91bmRDZWxsID8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGZvdW5kQ2Vs
bC5nZXQoKSkgOiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdAor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhv
cml6b250YWxTY3JvbGxiYXIoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0CitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGlj
YWxTY3JvbGxiYXIoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTE5MzMsMTMgKzE5MzMsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyZW1vdmVTZWxlYwogfQogCiAvLyBUZXh0IG1hcmtlcnMKLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRN
YXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JF
bGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6
IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1MSwxMyArMTk1MSwxMyBAQCBp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhCiAgICAgcmV0dXJuIDA7CiB9
CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NjksNDMg
KzE5NjksNDMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSQogICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogfQogCi1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0
TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKQorUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKQogewogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSog
cmFuZ2UpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyhp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5k
cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICAvLyBGSVhNRTog
aW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZv
ckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQg
eSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBtYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjAyOSwxOSArMjAyOSwxOSBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzVGV4dE1hcmtlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyRm9ySW5kZXgoaW50IHRleHRJbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCB0ZXh0SW5k
ZXgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwogfQog
ICAgIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKCkKIHsKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7ICAgIAogfQogCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0
TWFya2VyKCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAg
IHJldHVybiBudWxscHRyOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJJT1MubW0JKHJldmlzaW9uIDIwODI5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02OCwxMCArNjgsNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eUNvCiAgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKIH0KIAotdm9pZCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpCi17Ci19Ci0KIHZvaWQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAgIGlm
IChtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCkBAIC05NCw3ICs5MCw3IEBAIHN0YXRpYyBp
ZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoaWQgb2IKICAgICByZXR1cm4gbmlsOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUpCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2li
bGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSkKIHsKICAgICBXS0J1bmRsZVBh
Z2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsK
ICAgICBpZCByb290ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNzaWJp
bGl0eVJvb3RPYmplY3QocGFnZSkpOwpAQCAtMTAzLDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2NlcwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUocmVzdWx0KTsKIAotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2aXNpb24gMjA4Mjk5
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2MKICAgICByZXR1cm4gcGxhdGZv
cm1VSUVsZW1lbnQoKSA9PSBvdGhlckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCk7CiB9CiAK
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aGVhZGVyRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVhZGVyRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgTlNBcnJheSAqaGVhZGVycyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRzXTsKICAgICBpZiAoaW5kZXggPCBbaGVhZGVycyBj
b3VudF0pCkBAIC0xNzIsNyArMTcyLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2NlcwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQoKQor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmtlZEVsZW1lbnQoKQogewogICAgIGlkIGxpbmtlZEVsZW1lbnQgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlMaW5rZWRFbGVtZW50XTsKICAgICBpZiAobGlua2VkRWxlbWVudCkKQEAgLTIxMSw3
ICsyMTEsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VuCiAgICAg
cmV0dXJuIGNoaWxkcmVuLnNpemUoKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50
IHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQogewogICAgIGlkIGVsZW1lbnQgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlIaXRUZXN0OkNHUG9pbnRNYWtlKHgsIHkpXTsKICAgICBpZiAo
IWVsZW1lbnQpCkBAIC0yNDcsNDkgKzI0Nyw0OSBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbmRleE9mCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CiAgICAgZ2V0Q2hpbGRyZW5X
aXRoUmFuZ2UoY2hpbGRyZW4sIGluZGV4LCAxKTsKIAogICAgIGlmIChjaGlsZHJlbi5zaXplKCkg
PT0gMSkKICAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdOwotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5k
ZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1l
bnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKIHsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBp
bmRleCkKIHsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQogewogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4
KHVuc2lnbmVkIGluZGV4KSBjb25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4
KSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25z
dApAQCAtMjk3LDI0ICsyOTcsMjQgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2VsZWN0ZQogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlF
bGVtZW50KCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
YXJlbnRFbGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKIHsKICAgICByZXR1cm4gbmlsOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRpc2Nsb3NlZEJ5Um93KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCkKQEAgLTM3MSw3ICsz
NzEsNyBAQCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0CiAKIEpTVmFs
dWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1
ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93
SGVhZGVycygpIGNvbnN0CkBAIC0zODQsOSArMzg0LDkgQEAgSlNWYWx1ZVJlZiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpjb2x1bQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVu
dEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTYxNCwxMiArNjE0
LDEyIEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgKIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZShp
bnQgbGluZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9z
aXRpb24oaW50IHgsIGludCB5KQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTY1
NSw3ICs2NTUsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wg
aXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNo
VGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVl
UmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwg
Ym9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CkBAIC03MTEsNyArNzExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNDb250
YWluZQogICAgIHJldHVybiAodHJhaXRzICYgW21fZWxlbWVudCBfYXhDb250YWluZWRCeUZpZWxk
c2V0VHJhaXRdKSA9PSBbbV9lbGVtZW50IF9heENvbnRhaW5lZEJ5RmllbGRzZXRUcmFpdF07CiB9
CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxkc2V0QW5jZXN0b3JFbGVtZW50KCkK
IHsKICAgICBpZCBhbmNlc3RvckVsZW1lbnQgPSBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5Rmll
bGRzZXRBbmNlc3Rvcl07CiAgICAgaWYgKGFuY2VzdG9yRWxlbWVudCkKQEAgLTc1OSwxOSArNzU5
LDE5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUkKICAgICByZXR1
cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JSb3c6
cm93IGFuZENvbHVtbjpjb2xdKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0CitSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxi
YXIoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGUoKQpAQCAtMTAw
NSw3ICsxMDA1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlYwog
fQogCiAvLyBUZXh0IG1hcmtlcnMKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJr
ZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBp
ZCBlbmRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOihpZCl0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+CiAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCog
ZWxlbWVudCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW2VsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCkgdGV4dE1hcmtlclJhbmdlXTsKICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CkBAIC0xMDI3LDEz
ICsxMDI3LDEzIEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmEKICAg
ICByZXR1cm4gW21fZWxlbWVudCBsZW5ndGhGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc107CiB9
CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewogICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtl
ckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHByZXZpb3VzTWFya2VyKTsKIH0K
IAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6KGlkKXRl
eHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0TWFya2VyKTsKQEAgLTEwNDcsNDMgKzEwNDcsNDMgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSQogICAgIHJldHVybiBbW21f
ZWxlbWVudCBzdHJpbmdGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc10gY3JlYXRlSlNTdHJpbmdS
ZWZdOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFy
a2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKQogewog
ICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooaWQp
c3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKSwgbmlsXTsKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50
IHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6dGV4dE1hcmtlcnNdOwogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKIH0KIAot
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWQgdGV4dE1hcmtlcnMgPSAo
aWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgdGV4dE1hcmtlciA9
IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vy
cyBpc1N0YXJ0OllFU107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUodGV4dE1hcmtlcik7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAg
aWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAg
ICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0Ok5PXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZv
ckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtl
ckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQ
b2ludChpbnQgeCwgaW50IHkpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBtYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7CiAgICAgaWQgb2JqID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CiAgICAgaWYgKG9iaikKQEAgLTExMDYsNzkgKzExMDYsNzkgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGV4dE1hcmtlckZvckluZGV4KGludCB0ZXh0SW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChp
bnQgdGV4dEluZGV4KQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXIoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQogewogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRX
b3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
dGV4dE1hcmtlcikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdv
cmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0
ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFw
aFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0
TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50
ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlw
dGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJl
c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogc3RhdGljIHZvaWQgX0NHUGF0aEVudW1lcmF0aW9uSXRlcmF0aW9uKHZv
aWQgKmluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsZW1lbnQpCkBAIC0xMjE1LDcgKzEyMTUs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJCiAKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdXBwb3J0ZWRBY3Rpb25z
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlck1hYy5tbQkocmV2aXNpb24gMjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDE1ICsyOSwxMiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaCIKIAotI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKLQorI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1
bmRsZVBhZ2UuaCIKLQogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU1N0cmluZ1JlZkNGLmg+CkBAIC03MSwxMCArNjgsNiBAQCBib29sIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpyZW1vdmVOb3RpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQotewotfQotCiB2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsK
ICAgICBpZiAobV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyKQpAQCAtMTAwLDcgKzkzLDcgQEAg
c3RhdGljIGlkIGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChpZCBvYgogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1
dGUpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZEF0dHJpYnV0ZSkKIHsKICAg
ICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdl
KCktPnBhZ2UoKTsKICAgICBpZCByb290ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+
KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSkpOwpAQCAtMTE5LDUgKzExMiwzIEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5Q28KIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RSCi0KLSNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQkocmV2aXNpb24g
MjA4Mjk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3
ICsxMzMsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtYWtlVmFsdWVSZWZGb3JWYWx1ZShKCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBbdmFsdWUgZG91YmxlVmFsdWVd
KTsKICAgICB9CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOndlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQ2xhc3MoKV0pCi0gICAgICAgIHJldHVybiB0b0pTKGNvbnRleHQsIFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVt
ZW50Pih2YWx1ZSkpLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoY29udGV4dCwgV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1l
bnQ+KHZhbHVlKSkucHRyKCkpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0
aW9uYXJ5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBtYWtlT2JqZWN0UmVmRm9yRGljdGlvbmFy
eShjb250ZXh0LCB2YWx1ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5
IGNsYXNzXV0pCkBAIC0xODksNyArMTg5LDcgQEAgLSAodm9pZClfbm90aWZpY2F0aW9uUmVjZWl2
ZWQ6KE5TTm90aWZpYwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVy
IGdldHMgdGhlIGVsZW1lbnQsIG5vdGlmaWNhdGlvbiBuYW1lIGFuZCB1c2VySW5mby4KICAgICAg
ICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbM107Ci0gICAgICAgIGFyZ3VtZW50c1swXSA9IHRvSlMo
Y29udGV4dCwgV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW25vdGlmaWNhdGlv
biBvYmplY3RdKS5nZXQoKSk7CisgICAgICAgIGFyZ3VtZW50c1swXSA9IHRvSlMoY29udGV4dCwg
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW25vdGlmaWNhdGlvbiBvYmplY3Rd
KS5wdHIoKSk7CiAgICAgICAgIGFyZ3VtZW50c1sxXSA9IG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVu
dDsKICAgICAgICAgYXJndW1lbnRzWzJdID0gdXNlckluZm9Bcmd1bWVudDsKICAgICAgICAgSlNP
YmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihtX25v
dGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spLCAwLCAzLCBhcmd1bWVudHMsIDApOwpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAyMDgy
OTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsMTEgKzQwMiwxMSBA
QCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VuCiAgICAgcmV0dXJuIGNo
aWxkcmVuLnNpemUoKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVu
dEF0UG9pbnQoaW50IHgsIGludCB5KQogewogICAgIGlkIGVsZW1lbnQgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlIaXRUZXN0Ok5TTWFrZVBvaW50KHgsIHkpXTsKICAgICBpZiAoIWVsZW1lbnQp
Ci0gICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoZWxlbWVudCk7CiB9CkBAIC00
MTYsOSArNDE2LDkgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZgog
ICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6ZWxlbWVudC0+
cGxhdGZvcm1VSUVsZW1lbnQoKV07CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4gY2hpbGRyZW47CiAgICAgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoY2hp
bGRyZW4sIGluZGV4LCAxKTsKIAogICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPT0gMSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2VzCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1l
bnRzQXR0cmlidXRlXTsKQEAgLTQzNyw3ICs0MzcsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2VzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNF
bGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkq
IG9iamVjdHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlPd25zQXR0cmlidXRlXTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2VzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07CkBAIC00NTks
NyArNDU5LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2NlcwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGFyaWFDb250cm9scyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBQ29udHJvbHMi
XTsKQEAgLTQ2OSw3ICs0NjksNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2VzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dz
QXR0cmlidXRlXTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2VzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CkBA
IC00OTEsNyArNDkxLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
cwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KSBjb25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25z
dAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkqIGFycmF5ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CkBAIC01MTEsNyArNTExLDcgQEAgdW5zaWduZWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZQogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQg
aW5kZXgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogcm93
cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07CkBAIC01MjIsNyArNTIyLDcgQEAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2NlcwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRpdGxlVUlFbGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmli
dXRlXTsKQEAgLTUzMyw3ICs1MzMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2VzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFy
ZW50RWxlbWVudCgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgYWNj
ZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV07CkBAIC01NDQsNyArNTQ0LDcgQEAgUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2NlcwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5
Um93QXR0cmlidXRlXTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlCiAgICAgcmV0dXJuIGNvbnZlcnRFbGVtZW50c1RvT2JqZWN0QXJy
YXkoY29udGV4dCwgZWxlbWVudHMpOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpT
U3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKQEAgLTExODMsNyAr
MTE4Myw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWUKICAgICBy
ZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0YXJ0RWxlbWVudCwgYm9vbCBpc0Rp
cmVjdGlvbk5leHQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0
LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgKnN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTVmFsdWVSZWYg
c2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBib29s
IGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBzZWFyY2hQcmVk
aWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoY29udGV4dCwgc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIDEsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCwgdmlz
aWJsZU9ubHksIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7CkBAIC0xMzQwLDcgKzEzNDAsNyBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVk
IHJvdykKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQgcm93KQogewog
ICAgIE5TQXJyYXkgKmNvbFJvd0FycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbTlNO
dW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNvbF0sIFtOU051bWJlciBudW1iZXJXaXRoVW5z
aWduZWRJbnQ6cm93XSwgbmlsXTsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTEz
NTAsNyArMTM1MCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXMK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2VzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVy
dGljYWxTY3JvbGxiYXIoKSBjb25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjUwLDcgKzE2NTAs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjCiB9CiAKIC8vIFRl
eHQgbWFya2VycwotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGluZVRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOwpAQCAtMTY2MCw3ICsxNjYwLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJh
bmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJr
ZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVt
ZW50KCldOwpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYQogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1RleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBm
b3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKQEAgLTE2
OTAsNyArMTY5MCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2UK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKK1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFy
dE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiB0ZXh0TWFya2VycyA9IFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwg
KGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CkBAIC0xNzIxLDcgKzE3
MjEsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VBdHRy
aWJ1dGVdOwpAQCAtMTc0Nyw3ICsxNzQ3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZXNldFNlbGVjdAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
IHJhbmdlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQp
cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9y
UGFyYW1ldGVyOihpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CkBAIC0xNzY3
LDcgKzE3NjcsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2NlCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgs
IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUVuZFRleHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0
ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0Ok5TTWFr
ZVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCldXTsKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2UKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
aWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3
aWR0aCwgaGVpZ2h0KV1dOwpAQCAtMTc4Nyw3ICsxNzg3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGlu
dCB5KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlckZv
clBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNNYWtlUG9p
bnQoeCwgeSldXTsKQEAgLTE3OTcsNyArMTc5Nyw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IG1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB1aUVsZW1l
bnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKQEAgLTE4NDMsNyArMTg0Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNUZXh0TWFya2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRl
eChpbnQgdGV4dEluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50IHRleHRJbmRleCkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JJbmRleCIgZm9y
UGFyYW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjp0ZXh0SW5kZXhdXTsKQEAgLTE4
NTMsNyArMTg1Myw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2UK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0
VGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFy
dFRleHRNYXJrZXIiXTsKQEAgLTE4NjMsNyArMTg2Myw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4
dE1hcmtlcigpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYRW5kVGV4dE1hcmtlciJdOwpAQCAtMTg3Myw3ICsxODczLDcgQEAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZQogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlZnRXb3JkVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CkBAIC0xODgzLDcgKzE4ODMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmln
aHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
XTsKQEAgLTE4OTMsNyArMTg5Myw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCBwcmV2aW91c1dvcmRTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsK
QEAgLTE5MDMsNyArMTkwMyw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdvcmRFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFdv
cmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4
dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBuZXh0V29y
ZEVuZE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhO
ZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKQEAgLTE5MTMsNyArMTkxMyw3IEBAIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2UKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBhcmFncmFwaFRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOwpAQCAtMTkyMyw3ICsxOTIzLDcgQEAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
cmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBwcmV2aW91c1BhcmFncmFwaFN0YXJ0
TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZp
b3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihp
ZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTMzLDcgKzE5MzMsNyBA
QCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2NlCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIG5leHRQYXJhZ3JhcGhFbmRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFBh
cmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKQEAgLTE5NDMsNyArMTk0Myw3IEBAIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2UKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOwpAQCAtMTk1Myw3ICsxOTUzLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2
aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1Nl
bnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTYzLDcgKzE5NjMsNyBAQCBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2NlCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL0V2
ZW50U2VuZGVyUHJveHlFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwuY3BwCShyZXZpc2lvbiAyMDgyOTkpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoTW91c2VTY3JvbGxC
eUV2ZW50KEUKICAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAsIHZl
cnRpY2FsLCAwLCAwKTsKIH0KIAotc3RhdGljIGNvbnN0IFBhc3NSZWZQdHI8S2V5RXZlbnRJbmZv
PiBrZXlQYWROYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKK3N0YXRpYyBjb25zdCBSZWZQdHI8S2V5
RXZlbnRJbmZvPiBrZXlQYWROYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKIHsKICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJsZWZ0QXJyb3ciKSkKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBLZXlFdmVudEluZm8oIktQX0xlZnQiLCAiIikpOwpAQCAtMTk2
LDcgKzE5Niw3IEBAIHN0YXRpYyBjb25zdCBQYXNzUmVmUHRyPEtleUV2ZW50SW5mbz4ga2UKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEtleUV2ZW50SW5mbyhidWZmZXIuZ2V0KCksIGJ1ZmZlci5n
ZXQoKSkpOwogfQogCi1zdGF0aWMgY29uc3QgUGFzc1JlZlB0cjxLZXlFdmVudEluZm8+IGtleU5h
bWUoV0tTdHJpbmdSZWYga2V5UmVmKQorc3RhdGljIGNvbnN0IFJlZlB0cjxLZXlFdmVudEluZm8+
IGtleU5hbWUoV0tTdHJpbmdSZWYga2V5UmVmKQogewogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKGtleVJlZiwgImxlZnRBcnJvdyIpKQogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEtleUV2ZW50SW5mbygiTGVmdCIsICIiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293777</attachid>
            <date>2016-11-03 10:48:38 -0700</date>
            <delta_ts>2016-11-03 11:01:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164358-20161103124436.patch</filename>
            <type>text/plain</type>
            <size>141005</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGM3MWQzMzAyYzIxNjc0YmJiZmY3M2M2MWZlNWNlMzgx
N2Y5MjhhMS4uNTRiM2Q4MjIyZDQ0ZGVlMzIwYjhkMzNiODI5YzAwZjcxMmVhMDRlYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
NSBAQAorMjAxNi0xMS0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFB1cmdlIFBhc3NSZWZQdHIgZnJvbSBUb29scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBJbWFnZURpZmYvZWZsL0ltYWdl
RGlmZi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpyb290RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3Np
YmxlRWxlbWVudEJ5SWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxkc2V0QW5jZXN0b3JFbGVtZW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdo
dFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlv
dXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNl
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVu
dEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0YWtlRm9jdXMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0YWtlU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxl
bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5rZWRVSUVsZW1lbnRBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVy
aXplZEF0dHJpYnV0ZU5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVW
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBv
cnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
QXR0cmlidXRlU2V0dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1ByZXNzQWN0aW9uU3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3JlbWVu
dEFjdGlvblN1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvbGUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdWJyb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxw
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9y
aWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6eCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Onkp
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhW
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZh
bHVlRGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJs
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2Vs
ZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1NlbGVjdGVkT3B0aW9uQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNlbGVjdGFibGUpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGls
ZEF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVj
a2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJ
bmRldGVybWluYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNWaXNpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNPZmZTY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNv
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRv
Y3VtZW50VVJJKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dXJsKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3BlYWspOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZSb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dD
b3VudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm93SGVhZGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNvbHVtbkhlYWRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93
bnNFbGVtZW50QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3Jh
YmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFEcm9wRWZmZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNsYXNzTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5nZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0
U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3Ry
aW5nUmFuZ2VJc01pc3NwZWxsZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcik6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Ny
b2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZv
ckJvdW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJGb3JQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcik6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJp
YnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlu
ZGV4Rm9yVGV4dE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xv
YmFsUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2Ny
aXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkdDQ29udHJvbGxlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFj
Y2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpyb290RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0ay5oOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjphY2Nlc3NpYmlsaXR5RWxl
bWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5r
ZWRVSUVsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFy
Y2hQcmVkaWNhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxs
Rm9yQ29sdW1uQW5kUm93KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbmRUZXh0TWFya2VyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVudEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dB
dEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRB
dEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRB
cnJheUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVu
ZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29yZEVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50
ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlw
dHNEZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1h
dGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdXBwb3J0ZWRBY3Rpb25zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbToKKyAgICAgICAgKG1ha2VW
YWx1ZVJlZkZvclZhbHVlKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIgX25vdGlmaWNhdGlvblJlY2VpdmVkOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxl
bWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphcmlh
Q29udHJvbHNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9y
SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBo
U3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVy
UHJveHlFZmwuY3BwOgorICAgICAgICAoV1RSOjprZXlQYWROYW1lKToKKyAgICAgICAgKFdUUjo6
a2V5TmFtZSk6CisKIDIwMTYtMTEtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQmF0dGVyeSBTdGF0dXMgQVBJIGZyb20gdGhl
IHRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcCBiL1Rv
b2xzL0ltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcAppbmRleCA0ZmUzMjk5YjA3ZGU1ZGFkZTdj
NjgxNzE4MmY4ODY4NTVlOGNiMWVhLi5mNTdiOTdiOWFlNDBmYWNkOWRhMzgzMTc1MTZjMzdhM2U5
NTdhOWFhIDEwMDY0NAotLS0gYS9Ub29scy9JbWFnZURpZmYvZWZsL0ltYWdlRGlmZi5jcHAKKysr
IGIvVG9vbHMvSW1hZ2VEaWZmL2VmbC9JbWFnZURpZmYuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1
bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvZWZsL1VuaXF1ZVB0ckVmbC5oPgogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEFjY2Vz
c2liaWxpdHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAppbmRleCBlYTRhODEyNWY5NmFlNzg5NmUwNGM1ZmMxNWNm
N2I3M2RiMWU3YmU0Li45YzZiYmRkN2MzZWQzNzY4OGJkOTVhOTIyNzZiN2RlNjc2NGRiYzA5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktp
dEFjY2Vzc2liaWxpdHkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAgZXh0ZXJu
ICJDIiB7CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUg
PHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA4YjIyM2ZlNGM5OTBiMzMxZTgyZGIzNGNk
OGJkNThhMTI5NWY1MmJiLi4wYTEzMGQ0ZThkZDNlOGY0Y2MzMTdhMzUzNjJkNzdlNTc2YzRjMWYx
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcApAQCAtMzgsOSArMzgsOSBAQAog
CiBuYW1lc3BhY2UgV1RSIHsKIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSgpCitSZWY8QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKTsKIH0KIAogQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgpCiB9
CiAKICNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKQotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQo
KQorUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
b290RWxlbWVudCgpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNz
aWJpbGl0eVJvb3RPYmplY3QocGFnZSk7CkBAIC04MCw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50
KCkKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0
PFBsYXRmb3JtVUlFbGVtZW50Pihyb290KSk7ICAgIAogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgp
CitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KCkKIHsKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKICAgICB2b2lkKiByb290ID0gV0tBY2Nl
c3NpYmlsaXR5Rm9jdXNlZE9iamVjdChwYWdlKTsKQEAgLTg5LDI2ICs4OSwxNSBAQCBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1
c2VkRWxlbWVudCgpCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCiB7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IHJvb3RFbGVtZW50KCk7CisgICAgUmVmPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IHJvb3RFbGVtZW50KCk7CiAgICAgcmV0dXJuIHVp
RWxlbWVudC0+ZWxlbWVudEF0UG9pbnQoeCwgeSk7CiB9CiAKLS8vIFVuc3VwcG9ydGVkIG1ldGhv
ZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCi0vLyBBcyB0aGV5J3JlIGltcGxlbWVudGVkIG9uIG90
aGVyIHBsYXRmb3JtcyB0aGlzIGxpc3Qgc2hvdWxkIGJlIG1vZGlmaWVkLgotI2lmICghUExBVEZP
Uk0oR1RLKSAmJiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShFRkwpKSB8fCAhSEFWRShB
Q0NFU1NJQklMSVRZKQotYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0
aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZikgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1cm4gZmFs
c2U7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vz
c2liaWxpdHlFdmVudHMoKSB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGUoKSB7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkgeyByZXR1cm4gSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOyB9Ci0j
ZW5kaWYKLQogI2lmICFIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIChQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkpCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKaW5kZXgg
ZTA5OTU0NGExMDQ5YzBjYWRkMmMzNTY1NTE0OTY0OTJkMDQ0YWUzOS4uNWNmMGQ3MzljMWVkMDQ5
ZTA5NWFjM2Q3ZTgxNGFiYmYxNTNmNWRlYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aApAQCAtMjMsMTQgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJf
aAorI3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgotI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oRUZMKSkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgogI2VuZGlmCiAKQEAgLTM4LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdUUiB7CiAgICAgCiBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI+IGNyZWF0ZSgpOwogICAgIH5BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcigpOwogCiAgICAgdm9pZCBtYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwpAQCAtNTEsMTAgKzUy
LDEwIEBAIHB1YmxpYzoKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1l
KCk7CiAKICAgICAvLyBDb250cm9sbGVyIE1ldGhvZHMgLSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBp
bXBsZW1lbnRhdGlvbnMuCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBy
b290RWxlbWVudCgpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZm9j
dXNlZEVsZW1lbnQoKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVs
ZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUp
OworICAgIFJlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiByb290RWxlbWVudCgpOworICAgIFJl
ZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOworICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNT
dHJpbmdSZWYgaWRBdHRyaWJ1dGUpOwogCiAgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0ZW5l
cihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwogICAgIGJvb2wgcmVtb3ZlTm90aWZpY2F0
aW9uTGlzdGVuZXIoKTsKQEAgLTYzLDIyICs2NCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dG
b2N1c0V2ZW50cygpIHsgfQogICAgIHZvaWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKSB7IH0KICAg
ICB2b2lkIGxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzKCkgeyB9Ci0gICAgdm9pZCBsb2dBY2Nlc3Np
YmlsaXR5RXZlbnRzKCk7CisgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkgeyB9Owog
CiAgICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKIHByaXZhdGU6CiAgICAgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5vdGlmaWNhdGlvbkhh
bmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcjsKLSNlbmRpZgotCi0jaWYgSEFWRShB
Q0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQorI2Vsc2UK
ICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlcjsKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCiAKLSNl
bmRpZiAvLyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJ
QklMSVRZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAppbmRleCAwNTExMTRkYjFk
OTMyMmIwNmYzNDI3ZDUwNDBlZDE2NTBlOTI1ODRhLi43ZTk5ZmJiMTI3ZThhN2I1OWQwNGU3OTFi
NGFiNDNmMjA0MDRjZDU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcApAQCAt
MzMsMTQgKzMzLDE0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogICAgIAotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShQbGF0
Zm9ybVRleHRNYXJrZXIgbWFya2VyKQorUmVmPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtlciBtYXJrZXIpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJr
ZXIpKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYgbWFy
a2VyKQorUmVmPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsK
IH0KIAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBs
YXRmb3JtVGV4dE1hcmtlciBtYXJrZXIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKaW5k
ZXggNzQzNDE3MThjNDk5OGNjNWM3ZDQ1ZDZhNzAyNzJmMTk4ZjMyZTExMy4uMDQxZjgxYmM3NmQ1
MDM2YjlhOTI5ZTkwYTJjNjJlNzExNzhiZWIzYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaApAQCAtMjMsMTMgKzIzLDEyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00NCw4ICs0
Myw4IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ7CiAKIGNsYXNzIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRlKFBsYXRmb3JtVGV4dE1h
cmtlcik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNy
ZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXIpOworICAgIHN0
YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciYpOwogCiAgICAgfkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKCk7CiAgICAg
CkBAIC03MSw1ICs3MCwzIEBAIGlubGluZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpp
c0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4KICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXVFIKLSAgICAKLSNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9o
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAppbmRleCA1M2Q4YmZi
ZTg5NjY0MmFmNGZhNjc5ZTJmZWVmZWZiODg3ZDZlYWZlLi43NDQ0ZjM1MjIyZWExYzU4N2I0Mjhl
ODNmODMwYWUxZWFkYzdhZjhiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5jcHAKQEAgLTMzLDE0ICszMywxNCBAQAogCiBuYW1lc3BhY2UgV1RSIHsKICAgICAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQor
UmVmPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OmNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJrZXJSYW5nZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKGNvbnN0IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmIG1hcmtlclJhbmdlKQorUmVmPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZShj
b25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJiBtYXJrZXJSYW5nZSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSk7CiB9CiAKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbWFya2Vy
UmFuZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCmluZGV4IGQzZTY4
NWIyZDQ4Njc1NjliZmNkNTZmNWQzNjEyMTQ3N2QyNzM0NjIuLjE4YzE4ZDQ4ZTQxY2RmMDk4YWM5
MTU4OGZmNjYzMTEwNjI5OTEyM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5oCkBAIC0yMywxMyArMjMsMTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5k
ZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZV9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CkBAIC00Miw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXVFIgewogICAgIAogY2xhc3MgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3JlYXRlKFBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3Jl
YXRlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlJik7CiAgICAgCiAgICAgfkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKTsKICAgICAK
QEAgLTY5LDUgKzY4LDMgQEAgaW5saW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKICNlbmRpZgogICAgIAog
fSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IGU1YjI5M2E1YzVlYzU2
MTg1ZmRiNTc3Y2I5ZmM1NmRmZWZiYzE0ZTguLjIzM2ZmN2QyMDM0NDY3NThkYTc4ZGY4ZjI0YzE4
OWU1MzI5MWY4MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtMzEsMTQg
KzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVu
dCB1aUVsZW1lbnQpCitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKFBsYXRmb3JtVUlFbGVtZW50IHVpRWxlbWVudCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQodWlFbGVtZW50KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsK
IH0KICAgICAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIHVpRWxlbWVu
dCkKK1JlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgdWlFbGVtZW50KQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KHVpRWxlbWVudCkp
OwogfQogCiBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndyYXBwZXJDbGFzcygp
CkBAIC02MywxNSArNjMsMTUgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclNlbGVjdGlvbigpIHsgcmV0dXJuIG4KIEpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudHNGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWdu
ZWQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5j
cmVhc2VUZXh0U2VsZWN0aW9uKCkgeyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRl
Y3JlYXNlVGV4dFNlbGVjdGlvbigpIHsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRFbGVtZW50KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gbnVsbHB0
cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmtlZEVsZW1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVhZGVyRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXNzaXN0aXZlVGVjaG5vbG9neVNpbXVsYXRlZEZvY3VzKCkgeyByZXR1cm47IH0KIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsUGFnZVVwKCkgeyByZXR1cm4gZmFsc2U7
IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsUGFnZURvd24oKSB7IHJldHVy
biBmYWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxQYWdlTGVmdCgp
IHsgcmV0dXJuIGZhbHNlOyB9CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFBh
Z2VSaWdodCgpIHsgcmV0dXJuIGZhbHNlOyB9CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Omhhc0NvbnRhaW5lZEJ5RmllbGRzZXRUcmFpdCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxk
c2V0QW5jZXN0b3JFbGVtZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxkc2V0QW5jZXN0b3JF
bGVtZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1NlYXJjaEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAg
LTc5LDE4MiArNzksMjkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRBcmVh
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKIC8vIFVuc3VwcG9ydGVkIG1ldGhvZHMg
b24gdmFyaW91cyBwbGF0Zm9ybXMuIEFzIHRoZXkncmUgaW1wbGVtZW50ZWQgb24gb3RoZXIgcGxh
dGZvcm1zIHRoaXMgbGlzdCBzaG91bGQgYmUgbW9kaWZpZWQuCiAjaWYgKCFQTEFURk9STShHVEsp
ICYmICFQTEFURk9STShFRkwpKSB8fCAhSEFWRShBQ0NFU1NJQklMSVRZKQotSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGlu
dCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OndvcmRBdE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50KSB7IHJl
dHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VudGVuY2VBdE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KLSNlbmRpZgotCi0jaWYgKCFQ
TEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkpIHx8ICFI
QVZFKEFDQ0VTU0lCSUxJVFkpCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KSB7IH0KLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpIHsg
fQotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKSB7IH0K
LWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KikgeyByZXR1cm4gZmFsc2U7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50LCBpbnQpIHsgcmV0
dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Ci11bnNpZ25l
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCopIHsgcmV0dXJuIDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJl
bkNvdW50KCkgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpIHsgcmV0dXJuIDA7IH0K
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIDA7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGFrZUZvY3VzKCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VT
ZWxlY3Rpb24oKSB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9u
KCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpIHsg
fQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0
dHJpYnV0ZXMoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpIHsgcmV0dXJu
IDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQot
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZkRvY3VtZW50TGlua3MoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKSB7IHJldHVy
biAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkgeyByZXR1cm4gMDsgfQotdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKSB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGVjcmVtZW50KCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNob3dN
ZW51KCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKCkgeyB9Ci1KU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsgcmV0dXJuIDA7IH0KLUpTVmFsdWVSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZikgY29uc3QgeyByZXR1cm4gMDsgfQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9Ci1ib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikg
eyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1
dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYpIHsgcmV0dXJu
IGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUHJlc3NBY3Rpb25TdXBw
b3J0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0luY3JlbWVudEFjdGlvblN1cHBvcnRlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRGVjcmVtZW50QWN0aW9uU3VwcG9ydGVkKCkgeyByZXR1cm4g
ZmFsc2U7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb2xlKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkgeyByZXR1
cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbXB1dGVkUm9sZVN0cmluZygpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpIHsgcmV0dXJuIDA7IH0KLUpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigp
IHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsYW5ndWFnZSgpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLUpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmls
aXR5VmFsdWUoKSBjb25zdCB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci1K
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiAwOyB9Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
eCgpIHsgcmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkgeyBy
ZXR1cm4gMDsgfQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKCkgeyByZXR1
cm4gMDsgfQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCgpIHsgcmV0dXJu
IDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpIHsg
cmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgpIHsg
cmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkgeyByZXR1cm4gMDsgfQotaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpIHsgcmV0dXJuIDA7IH0KLUpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRS
YW5nZSgpIHsgcmV0dXJuIDA7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFi
bGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNS
ZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWRPcHRpb25BY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1NlbGVjdGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCopIGNvbnN0IHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkgY29uc3QgeyB9Ci12b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbkF0SW5kZXgodW5zaWduZWQpIGNvbnN0IHsg
fQotdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50
KCkgY29uc3QgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkg
Y29uc3QgeyByZXR1cm4gMDsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFu
ZGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWludCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCgpIHsgcmV0dXJuIDA7
IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgpIHsgcmV0dXJu
IDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpk
b2N1bWVudEVuY29kaW5nKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkgeyByZXR1cm4gMDsgfQotSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpIHsgcmV0
dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzcGVhaygpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkgeyByZXR1cm4gMDsg
fQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZlJvd0hlYWRlcnMoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpIHsgcmV0dXJu
IDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZSb3dzKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpIHsgcmV0
dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZIZWFkZXIoKSB7IHJldHVybiAwOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5kZXhJblRhYmxlKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UoKSB7IHJldHVybiAw
OyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29s
dW1uSW5kZXhSYW5nZSgpIHsgcmV0dXJuIDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dDb3VudCgpIHsgcmV0dXJuIDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5Db3VudCgpIHsgcmV0dXJuIDA7IH0KLUpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm93SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLUpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Ci1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRpc2Nsb3NlZEJ5Um93KCkgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVu
c2lnbmVkKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7
IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
cmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNv
bnRyb2xzRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIG51bGxwdHI7IH0KLWJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYURyb3BFZmZlY3RzKCkgY29uc3QgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50KSB7IHJl
dHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmFuZ2VGb3JMaW5lKGludCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9zaXRpb24oaW50LCBpbnQpIHsg
cmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KLWJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQs
IHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopIHsgcmV0dXJuIGZhbHNlOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVy
biAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsg
fQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01p
c3NwZWxsZWQodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQotdW5zaWduZWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Q291bnRGb3JTZWFyY2hQcmVkaWNhdGUo
SlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgYm9vbCwgSlNWYWx1ZVJlZiwg
SlNTdHJpbmdSZWYsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2ws
IEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmLCBib29sLCBib29sKSB7IHJldHVybiAwOyB9Ci1KU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0VGV4dFdp
dGhDcml0ZXJpYShKU0NvbnRleHRSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmlu
Z1JlZiwgSlNTdHJpbmdSZWYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7
IHJldHVybiAwOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKEpTVmFsdWVSZWYpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1cm4gZmFsc2U7
IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIHsgcmV0dXJuIDA7IH0KLWludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKikgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7
IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3Vu
ZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsgcmV0dXJuIDA7IH0KLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhl
aWdodCkgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCwgaW50KSB7IHJl
dHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpIHsgcmV0dXJuIDA7IH0KLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVuZFRleHRNYXJrZXIoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJp
YnV0ZShKU1N0cmluZ1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJu
IGZhbHNlOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gLTE7IH0KLWJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KSB7IHJldHVybiBmYWxzZTsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCkgeyByZXR1cm4g
MDsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkg
eyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50
LCBpbnQpIHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGludCwgaW50LCBpbnQsIGludCkgeyB9Ci1KU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJl
c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KLQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVsbHB0cjsgfQorSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNl
dChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50KSB7IHJldHVybiBudWxscHRyOyB9
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVu
Y2VBdE9mZnNldChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgIVBMQVRG
T1JNKE1BQykgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UoKSB7IHJldHVybiBudWxscHRyOyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJl
c2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKSB7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0Qm9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmLCBib29sKSB7IH0KICNlbmRp
ZgogCi0jaWYgKCFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpKSB8fCAhSEFWRShBQ0NF
U1NJQklMSVRZKQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJp
Z2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsg
fQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51
bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFy
YWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsg
fQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyNpZiAhUExBVEZPUk0oQ09DT0EpIHx8ICFIQVZFKEFDQ0VTU0lCSUxJ
VFkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBu
dWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxs
cHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4g
bnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVu
Y2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikg
eyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNT
ZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IDNmMzlhMTc4MWExZGQ0YWI1MWYxYmViNGY4
YjI2MDkzNWZkNzZjZDguLjg2Y2VkZGJkODUyODNkYTJiMzI0ZmMwNzAxZTM3YWIxOGY5NjRhZTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAotI2RlZmlu
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmgiCkBAIC02Miw4ICs2MSw4IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1V
SUVsZW1lbnQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQpOworICAgIHN0
YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQmKTsKIAogICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CiAKQEAgLTc0
LDEyICs3MywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCogb3RoZXJFbGVtZW50KTsKICAgICAKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IGVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7Ci0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjaGlsZEF0SW5kZXgodW5zaWduZWQpOworICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkp
OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjaGlsZEF0SW5kZXgodW5zaWdu
ZWQpOwogICAgIHVuc2lnbmVkIGluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kik7
CiAgICAgaW50IGNoaWxkcmVuQ291bnQoKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IHRpdGxlVUlFbGVtZW50KCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBwYXJlbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IHRpdGxlVUlFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IHBhcmVudEVsZW1lbnQoKTsKIAogICAgIHZvaWQgdGFrZUZvY3VzKCk7CiAgICAgdm9pZCB0
YWtlU2VsZWN0aW9uKCk7CkBAIC04OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2Rz
IC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCiAgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGFsbEF0dHJpYnV0ZXMoKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gbGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5z
aWduZWQpOwogICAgIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZE
b2N1bWVudExpbmtzKCk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNP
ZkNoaWxkcmVuKCk7CkBAIC0xMDMsNyArMTAyLDcgQEAgcHVibGljOgogICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OwogICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OwogICAgIEpTVmFsdWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsK
KyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50QXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsKICAgICBib29sIGJvb2xBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIHZvaWQgc2V0Qm9vbEF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgYm9vbCB2YWx1ZSk7CiAgICAgYm9vbCBpc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpAQCAtMTQ1LDcgKzE0NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25z
dDsKICAgICB2b2lkIHJlbW92ZVNlbGVjdGlvbkF0SW5kZXgodW5zaWduZWQpIGNvbnN0OwogICAg
IHVuc2lnbmVkIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gc2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQpIGNv
bnN0OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBzZWxlY3RlZENoaWxkQXRJ
bmRleCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Q7CkBAIC0xODMsMTUgKzE4MiwxNSBAQCBwdWJsaWM6
CiAgICAgSlNWYWx1ZVJlZiBjb2x1bW5IZWFkZXJzKCkgY29uc3Q7CiAKICAgICAvLyBUcmVlL091
dGxpbmUgc3BlY2lmaWMgYXR0cmlidXRlcwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gc2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGRpc2Nsb3NlZEJ5Um93KCk7Ci0gICAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvd0F0SW5kZXgodW5zaWduZWQp
OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBzZWxlY3RlZFJvd0F0SW5kZXgo
dW5zaWduZWQpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRC
eVJvdygpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRSb3dB
dEluZGV4KHVuc2lnbmVkKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcm93
QXRJbmRleCh1bnNpZ25lZCk7CiAKICAgICAvLyBBUklBIHNwZWNpZmljCi0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVk
KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFGbG93VG9FbGVt
ZW50QXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBhcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQpOwor
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhRmxvd1RvRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhQ29u
dHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CiAKICAgICAvLyBBUklBIERyYWcgYW5kIERy
b3AKICAgICBib29sIGFyaWFJc0dyYWJiZWQoKSBjb25zdDsKQEAgLTIwOCw3ICsyMDcsNyBAQCBw
dWJsaWM6CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmdGb3JS
YW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBib29sIGF0dHJp
YnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICB1bnNpZ25lZCB1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZShK
U0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBp
c0RpcmVjdGlvbk5leHQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hU
ZXh0LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7Ci0g
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdS
ZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50
c09ubHkpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFy
dEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNT
dHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNj
ZW5kYW50c09ubHkpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZWxlY3RUZXh0V2l0
aENyaXRlcmlhKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYgYW1iaWd1aXR5UmVzb2x1dGlvbiwg
SlNWYWx1ZVJlZiBzZWFyY2hTdHJpbmdzLCBKU1N0cmluZ1JlZiByZXBsYWNlbWVudFN0cmluZywg
SlNTdHJpbmdSZWYgYWN0aXZpdHkpOwogCiAgICAgLy8gVGV4dC1zcGVjaWZpYwpAQCAtMjE4LDQ5
ICsyMTcsNDkgQEAgcHVibGljOgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZW50ZW5j
ZUF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIAogICAgIC8vIFRhYmxlLXNwZWNpZmljCi0gICAg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJv
dyk7CiAKICAgICAvLyBTY3JvbGxhcmVhLXNwZWNpZmljCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Owor
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBob3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3Q7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3Q7CiAKICAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKTsKICAgICB2b2lk
IHNjcm9sbFRvR2xvYmFsUG9pbnQoaW50IHgsIGludCB5KTsKICAgICB2b2lkIHNjcm9sbFRvTWFr
ZVZpc2libGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwogICAgIAogICAgIC8vIFRleHQgbWFya2Vycy4KLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IGxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqKTsgICAgCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1h
cmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7Ci0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgp
OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBsaW5lVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpOwor
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwotICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gc3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiB0
ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0VGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBz
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSopOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyRm9yQm91bmRzKGlu
dCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiB0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gbmV4dFRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKik7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgaW50IHRleHRNYXJr
ZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgYm9vbCBh
dHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUoSlNTdHJp
bmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBpbnQgaW5kZXhGb3JU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CiAgICAgYm9vbCBpc1RleHRNYXJr
ZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JJbmRleChpbnQpOwotICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlcigpOwotICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGVuZFRleHRNYXJrZXIoKTsKKyAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JJbmRleChpbnQpOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gc3RhcnRUZXh0TWFya2VyKCk7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyKCk7CiAgICAgYm9v
bCBzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbGVmdFdv
cmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7
Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiByaWdodFdvcmRU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7Ci0g
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlvdXNXb3JkU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRXb3JkRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IHNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IG5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gcHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gbGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHJpZ2h0
V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHByZXZpb3VzV29yZFN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gcGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gbmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBw
cmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0U2VudGVuY2VF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKIAogICAgIC8v
IFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVt
ZW50LgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdXBwb3J0ZWRBY3Rpb25zKCkgY29u
c3Q7CkBAIC0yODMsOCArMjgyLDggQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgZWxlbWVudHNG
b3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB2b2lkIGlu
Y3JlYXNlVGV4dFNlbGVjdGlvbigpOwogICAgIHZvaWQgZGVjcmVhc2VUZXh0U2VsZWN0aW9uKCk7
Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBsaW5rZWRFbGVtZW50KCk7
Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBoZWFkZXJFbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGxpbmtlZEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gaGVh
ZGVyRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVj
aG5vbG9neVNpbXVsYXRlZEZvY3VzKCk7CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Q7
CiAgICAgYm9vbCBpc1RleHRBcmVhKCkgY29uc3Q7CkBAIC0yOTYsNyArMjk1LDcgQEAgcHVibGlj
OgogICAgIAogICAgIC8vIEZpZWxkc2V0CiAgICAgYm9vbCBoYXNDb250YWluZWRCeUZpZWxkc2V0
VHJhaXQoKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZpZWxkc2V0
QW5jZXN0b3JFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZp
ZWxkc2V0QW5jZXN0b3JFbGVtZW50KCk7CiAgICAgCiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwpAQCAtMzI3LDUgKzMyNiwzIEBAIHByaXZh
dGU6CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0gICAgCi0jZW5kaWYgLy8gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCAz
ZTgxZGI5ZDMyOTQ3MzMyMGY0MmRjMDk3OTg2MmViN2QwZTE2Y2Q3Li5mODE5ODJjNmJmOGQyOWE5
YjEyNjFmM2IyZmNmYWIwYjJiZjBmYzg5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5j
cHAKQEAgLTE2Niw5ICsxNjYsOSBAQCBzdGF0aWMgV0tFdmVudE1vZGlmaWVycyBwYXJzZU1vZGlm
aWVyQXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgYXJyYQogICAgIHJldHVy
biBtb2RpZmllcnM7CiB9CiAKLVBhc3NSZWZQdHI8RXZlbnRTZW5kaW5nQ29udHJvbGxlcj4gRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6Y3JlYXRlKCkKK1JlZjxFdmVudFNlbmRpbmdDb250cm9sbGVy
PiBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRXZlbnRTZW5kaW5nQ29udHJvbGxlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RXZlbnRTZW5kaW5nQ29udHJvbGxlcik7CiB9CiAKIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OkV2
ZW50U2VuZGluZ0NvbnRyb2xsZXIoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAppbmRleCBj
MjNjMzZkZmFjNTU4NGY4NTFjNWY2MGZiNGQ1NjIyY2ZmNDIwMDRhLi4zZWI4MTI5YzdhMzhlMzYw
OWQ2Njg1ZTUxMTNlYTU3YTdiZmFmZWFhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaApA
QCAtMjMsMTkgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBFdmVudFNlbmRpbmdDb250cm9sbGVyX2gKLSNkZWZpbmUgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgi
CiAjaW5jbHVkZSA8V2ViS2l0L1dLRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tHZW9tZXRy
eS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgog
CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgRXZlbnRTZW5kaW5nQ29udHJvbGxlciA6IHB1Ymxp
YyBKU1dyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRTZW5k
aW5nQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxFdmVudFNlbmRpbmdDb250
cm9sbGVyPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5FdmVudFNlbmRpbmdDb250cm9sbGVyKCk7
CiAKICAgICB2b2lkIG1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3
aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CkBAIC05Miw1ICs5MSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGZkMGNjM2E3OGFhNDljOGE2ZmY0ODVmNmE5
OTAzNmYwMmYyZjJjOTIuLjkzNThmNGEwZGU1YjNkOWJjMzE2YjVlMGFkZmQwNDEyNjY0MjU4ZmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dD
Q29udHJvbGxlci5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLVBh
c3NSZWZQdHI8R0NDb250cm9sbGVyPiBHQ0NvbnRyb2xsZXI6OmNyZWF0ZSgpCitSZWY8R0NDb250
cm9sbGVyPiBHQ0NvbnRyb2xsZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHQ0NvbnRyb2xsZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQ29udHJvbGxlcik7
CiB9CiAKIEdDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxlci5oCmluZGV4IDc2MGZiYjFl
Njg1MDEzMmQwY2NiZDk0NTk1N2JmMTcxODI5ZDY4MDguLmQzNDljMWNlOTkwZTg3ZDdkZjJmY2I4
YzgyODg1YmNhMzA1NzJhMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuaApAQCAtMjMsMTcgKzIzLDE2IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHQ0NvbnRyb2xsZXJf
aAotI2RlZmluZSBHQ0NvbnRyb2xsZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dy
YXBwYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgR0NDb250cm9sbGVyIDogcHVibGljIEpT
V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHQ0NvbnRyb2xsZXI+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8R0NDb250cm9sbGVyPiBjcmVhdGUoKTsKICAgICB2
aXJ0dWFsIH5HQ0NvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQgbWFrZVdpbmRvd09iamVjdChKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsKQEAgLTUwLDUgKzQ5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgot
Ci0jZW5kaWYgLy8gR0NDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjU1MjU0NTM0
NTQ4MjUxZDAzMjFkMWQ0ZjM1NzgyZmYzZjIzOTFjYS4uMmY1YzNlNGY3NWJmMTU3MWZhMWI2ZWFk
NGMzOGViNjk3YmU4MWQ5OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI5MCw3ICsyOTAsOSBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5UmVmIHNldHRpbmdz
KQogICAgIG1fZ2NDb250cm9sbGVyID0gR0NDb250cm9sbGVyOjpjcmVhdGUoKTsKICAgICBtX2V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIgPSBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVhdGUoKTsK
ICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUo
KTsKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKTsKKyNlbmRpZgogCiAgICAgV0tC
dW5kbGVTZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhtX2J1bmRsZSwgbV9wYWdl
R3JvdXAsIHRydWUpOwogICAgIFdLQnVuZGxlU2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZChtX2J1bmRsZSwgbV9wYWdlR3JvdXAsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IGQ1MTc3MGFj
Yjg3NGUzZTI0NjUyZTExMGQwYzQxYjUzOTUxNWU5Y2EuLjA2OTk5OGJjMTlkMWZmNTE4OWMxZDQw
NTBhNzA3MGY2Njk3NmI4NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTIzLDEwICsyMyw4IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbmplY3RlZEJ1
bmRsZV9oCi0jZGVmaW5lIEluamVjdGVkQnVuZGxlX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFdmVudFNlbmRpbmdDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5l
ci5oIgpAQCAtMzgsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIGNs
YXNzIEluamVjdGVkQnVuZGxlUGFnZTsKQEAgLTU2LDcgKzU4LDkgQEAgcHVibGljOgogICAgIEdD
Q29udHJvbGxlciogZ2NDb250cm9sbGVyKCkgeyByZXR1cm4gbV9nY0NvbnRyb2xsZXIuZ2V0KCk7
IH0KICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyKiBldmVudFNlbmRpbmdDb250cm9sbGVyKCkg
eyByZXR1cm4gbV9ldmVudFNlbmRpbmdDb250cm9sbGVyLmdldCgpOyB9CiAgICAgVGV4dElucHV0
Q29udHJvbGxlciogdGV4dElucHV0Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdGV4dElucHV0Q29u
dHJvbGxlci5nZXQoKTsgfQorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKIAogICAgIEluamVjdGVkQnVuZGxl
UGFnZSogcGFnZSgpIGNvbnN0OwogICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VzLnNpemUoKTsgfQpAQCAtMTUyLDcgKzE1Niw5IEBAIHByaXZhdGU6CiAgICAgV0tC
dW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdlR3JvdXA7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJbmplY3RlZEJ1bmRsZVBhZ2U+PiBtX3BhZ2VzOwogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZ
KQogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjsKKyNlbmRpZgogICAgIFJlZlB0cjxUZXN0UnVubmVyPiBtX3Rlc3RSdW5uZXI7CiAg
ICAgUmVmUHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xsZXI7CiAgICAgUmVmUHRyPEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI+IG1fZXZlbnRTZW5kaW5nQ29udHJvbGxlcjsKQEAgLTE4MSw1ICsx
ODcsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBJ
bmplY3RlZEJ1bmRsZV9oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA3NGQzMjVhZGVmNTE5N2EwZjVlNjdjNDI0NTk1
ZjY3OGE0NzIxNjY1Li40OTJiNmIyMDM5NzhkNjcxY2RlZGEzYzEzN2QwYzljNjg0YjQ2MjYzIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKQEAgLTU2LDkgKzU2LDkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLVBhc3NSZWZQ
dHI8VGVzdFJ1bm5lcj4gVGVzdFJ1bm5lcjo6Y3JlYXRlKCkKK1JlZjxUZXN0UnVubmVyPiBUZXN0
UnVubmVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGVzdFJ1bm5lcik7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVzdFJ1bm5lcik7CiB9CiAKIFRlc3RSdW5uZXI6
OlRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBlNzU2NGFkODNmMGJjZWZhYzg3ODJlMWMzMjE4OGVjZjM5
NzMxYzFlLi4wMTM2MGM4YTVmY2M2ODMwM2IzNzJjNzZhMDNkNWFhMDRjNjU2NTI2IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApA
QCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgVGVzdFJ1bm5lcl9oCi0jZGVmaW5lIFRlc3RSdW5uZXJfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9u
cy5oIgpAQCAtMzIsNyArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVNjcmlwdFdv
cmxkLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC01
Myw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0UnVubmVyIDogcHVibGlj
IEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXN0UnVubmVy
PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFRlc3RSdW5uZXI+IGNyZWF0ZSgpOwogICAgIHZp
cnR1YWwgflRlc3RSdW5uZXIoKTsKIAogICAgIC8vIEpTV3JhcHBhYmxlCkBAIC00MDEsNSArNDAw
LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gVGVz
dFJ1bm5lcl9oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCBmNGU2OGY2OTU1OWYzOWUz
NmFmYzVkZDMyMjgwOGRhNDNlMDg4OGU5Li4yZTMwNGUyOGM1OTNkOTAxNDYzYTZmNDAyNjA1OTI2
NzczMzQ1YTMyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTM0LDkgKzM0LDkgQEAK
IAogbmFtZXNwYWNlIFdUUiB7CiAKLVBhc3NSZWZQdHI8VGV4dElucHV0Q29udHJvbGxlcj4gVGV4
dElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCkKK1JlZjxUZXh0SW5wdXRDb250cm9sbGVyPiBUZXh0
SW5wdXRDb250cm9sbGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4
dElucHV0Q29udHJvbGxlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dElucHV0Q29u
dHJvbGxlcik7CiB9CiAKIFRleHRJbnB1dENvbnRyb2xsZXI6OlRleHRJbnB1dENvbnRyb2xsZXIo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0
SW5wdXRDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1RleHRJbnB1dENvbnRyb2xsZXIuaAppbmRleCA3MWEwNDM3NTJmZTI3ZDU4YzcxYmNkMWYzMTdk
ZDI5ZDRkNjc4MWZjLi5lZDE3NDgxNmYzNTZiYTc5OTUwN2Q3MjEyYjc1YjA3ZTlhNmYxZDAxIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1RleHRJbnB1dENvbnRyb2xsZXIuaApAQCAtMjMsMTcgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBUZXh0SW5wdXRDb250cm9sbGVy
X2gKLSNkZWZpbmUgVGV4dElucHV0Q29udHJvbGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkpTV3JhcHBhYmxlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXh0SW5wdXRDb250cm9s
bGVyIDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxUZXh0SW5wdXRDb250cm9sbGVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFRleHRJbnB1
dENvbnRyb2xsZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgflRleHRJbnB1dENvbnRyb2xsZXIo
KTsKIAogICAgIC8vIEpTV3JhcHBhYmxlCkBAIC01MSw1ICs1MCwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIFRleHRJbnB1dENvbnRyb2xsZXJfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IGMxY2Iz
NDk1MTY0MmRkNzgxNzZiMWM4MTk4NzhlZTExMDgxNmIyZmIuLmExYTU1NGE5ZGZmYzBiMWY2ZDc2
OTNkM2QyYzZlZDZmOTdlMzlhM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckF0ay5jcHAKQEAgLTQxLDEyICs0MSw2IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi12
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKLXsK
LSAgICAvLyBObyBsb25nZXIgaW1wbGVtZW50ZWQgZm9yIEFUSy4gVXNlIGFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKCkgaW5zdGVhZCB0bwotICAgIC8vIGNoZWNrIHRoYXQgcmVsZXZhbnQgQVRLIHNp
Z25hbHMgYXJlIGJlaW5nIGVtbWl0dGVkIGluIHJlc3BvbnNlIHRvIGV2ZW50cy4KLX0KLQogdm9p
ZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID0gbnVsbHB0cjsKQEAgLTgyLDcgKzc2LDcg
QEAgc3RhdGljIEF0a09iamVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtPYmplY3QqIHBhcmVudCwg
Y29uc3QgY2hhciogaWQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVF
bGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkKQogewogICAgIEF0a09iamVjdCogcm9vdCA9IEFUS19PQkpFQ1QoV0tBY2Nlc3NpYmls
aXR5Um9vdE9iamVjdChJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkp
KTsKICAgICBpZiAoIXJvb3QpCkBAIC0xMDUsNyArOTksNyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCiAgICAgcmV0dXJu
IHBsYXRmb3JtTmFtZTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQorUmVmPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCiB7CiAgICAg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgp
LT5wYWdlKCk7CiAgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFn
ZSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4ocm9vdCkp
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKIHsKICAgICBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2Uo
KTsKICAgICB2b2lkKiByb290ID0gV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChwYWdlKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0
ay5oCmluZGV4IGJiMzg2OWVjZGM2NTZiNjhhYWNmYTk1MGVkNDc5MmViNDBkNTU3MzUuLmRhNWQ4
ZWNkZGIwNjMxYmJkMGY0ZmU4NGE0ZGI5NDhjN2E0YTliMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyQXRrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaApAQCAtMTcsMTUgKzE3
LDEzIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGtfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2lu
Y2x1ZGUgPGF0ay9hdGsuaD4KICNpbmNsdWRlIDxhdGsvYXRrb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KIApAQCAtMzMsOSArMzEsOSBAQCBuYW1lc3BhY2UgV1RSIHsK
IAogY2xhc3MgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBjcmVhdGUo
KQorICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IGNyZWF0
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpKTsKICAgICB9CiAgICAgfkFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyKCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybUVsZW1lbnQoR1JlZlB0
cjxBdGtPYmplY3Q+IHBsYXRmb3JtRWxlbWVudCkgeyBtX3BsYXRmb3JtRWxlbWVudCA9IHBsYXRm
b3JtRWxlbWVudDsgfQpAQCAtNTYsNSArNTQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2Ug
V1RSCiAKICNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCi0KLSNlbmRpZiAvLyBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDIyZGUzNmE5Y2UyZGQxZjNiOTBlYTVhZTVlMDE2ZDkz
ZmE1MmU4MWIuLjlkNWYzZGFhNDJjZTFmMWI3OGQ5NTNhOGEzN2M1NTJjOTc4OTFmNGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC03MzAsNyArNzMw
LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQogICAgIHJl
dHVybiBhdGtfb2JqZWN0X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oQVRLX09CSkVDVChtX2Vs
ZW1lbnQuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVu
dEF0UG9pbnQoaW50IHgsIGludCB5KQogewogICAgIGlmICghQVRLX0lTX0NPTVBPTkVOVChtX2Vs
ZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1NSw3ICs3NTUsNyBA
QCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIGlm
ICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTc2OSw3ICs3NjksNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZAogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBhY2Nlc3NpYmlsaXR5RWxlbWVudEF0SW5kZXgoQXRrT2JqZWN0KiBlbGVtZW50LCBBdGtSZWxh
dGlvblR5cGUgcmVsYXRpb25UeXBlLCB1bnNpZ25lZCBpbmRleCkKK3N0YXRpYyBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRBdEluZGV4KEF0a09iamVj
dCogZWxlbWVudCwgQXRrUmVsYXRpb25UeXBlIHJlbGF0aW9uVHlwZSwgdW5zaWduZWQgaW5kZXgp
CiB7CiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTc4OSwzOCArNzg5LDM4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IGFjY2Vzc2liaWxpdHlFbGVtZW50QXRJbmRleChBdGtPYmplY3QqCiAgICAg
QXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2FzdDxBdGtPYmplY3QqPihnX3B0cl9hcnJheV9p
bmRleCh0YXJnZXRMaXN0LCBpbmRleCkpOwogICAgIGdfb2JqZWN0X3VucmVmKHJlbGF0aW9uU2V0
KTsKIAotICAgIHJldHVybiB0YXJnZXQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUo
dGFyZ2V0KSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHRhcmdldCA/IFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PihBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodGFyZ2V0KSkgOiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
a2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRl
eCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQog
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
cmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRB
dEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5RWxlbWVu
dEF0SW5kZXgobV9lbGVtZW50LmdldCgpLCBBVEtfUkVMQVRJT05fRkxPV1NfVE8sIGluZGV4KTsK
IH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29u
dHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICByZXR1cm4gYWNjZXNz
aWJpbGl0eUVsZW1lbnRBdEluZGV4KG1fZWxlbWVudC5nZXQoKSwgQVRLX1JFTEFUSU9OX0NPTlRS
T0xMRVJfRk9SLCBpbmRleCk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCBp
bmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gQVRLIGRvZXNu
J3QgaGF2ZSBBUEkgdG8gZ2V0IGFuIGFjY2Vzc2libGUgcm93IGJ5IGluZGV4IGRpcmVjdGx5LiBJ
dCBkb2VzLCBob3dldmVyLCBoYXZlCiAgICAgLy8gQVBJIHRvIGdldCBjZWxscyBpbiB0aGUgcm93
IHNwZWNpZmllZCBieSBpbmRleC4gVGhlIHBhcmVudCBvZiBhIGNlbGwgc2hvdWxkIGJlIHRoZSBy
b3cuCkBAIC04MzAsMjAgKzgzMCwyMCBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQgaQogICAgICAg
ICAvLyBGaW5kIHRoZSBmaXJzdCBjZWxsIGluIHRoaXMgcm93IHRoYXQgb25seSBzcGFucyBvbmUg
cm93LgogICAgICAgICBpZiAoYXRrX3RhYmxlX2dldF9yb3dfZXh0ZW50X2F0KGF4VGFibGUsIGlu
ZGV4LCBjb2wpID09IDEpIHsKICAgICAgICAgICAgIEF0a09iamVjdCogY2VsbCA9IGF0a190YWJs
ZV9yZWZfYXQoYXhUYWJsZSwgaW5kZXgsIGNvbCk7Ci0gICAgICAgICAgICByZXR1cm4gY2VsbCA/
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhdGtfb2JqZWN0X2dldF9wYXJlbnQoY2Vs
bCkpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBjZWxsID8gUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhdGtfb2JqZWN0
X2dldF9wYXJlbnQoY2VsbCkpKSA6IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAg
ICBpZiAoIUFUS19TRUxFQ1RJT04obV9lbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBHUmVmUHRyPEF0a09iamVjdD4gY2hpbGQgPSBhZG9wdEdSZWYoYXRrX3Nl
bGVjdGlvbl9yZWZfc2VsZWN0aW9uKEFUS19TRUxFQ1RJT04obV9lbGVtZW50LmdldCgpKSwgaW5k
ZXgpKTsKLSAgICByZXR1cm4gY2hpbGQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUo
Y2hpbGQuZ2V0KCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hpbGQgPyBSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4oQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGNoaWxkLmdl
dCgpKSkgOiBudWxscHRyOwogfQogCiB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdApAQCAtODUzLDEzICs4NTMsMTMgQEAgdW5zaWdu
ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29uc3QK
ICAgICByZXR1cm4gYXRrX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KEFUS19TRUxFQ1RJ
T04obV9lbGVtZW50LmdldCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQo
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRpdGxlVUlFbGVtZW50KCkKIHsKICAgICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50Lmdl
dCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04ODAsMTkgKzg4MCwxOSBAQCBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRp
dGxlVUlFbGVtZW50KCkKICAgICB9CiAKICAgICBnX29iamVjdF91bnJlZihzZXQpOwotICAgIHJl
dHVybiB0YXJnZXQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodGFyZ2V0KSA6IG51
bGxwdHI7CisgICAgcmV0dXJuIHRhcmdldCA/IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PihBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodGFyZ2V0KSkgOiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnBhcmVudEVsZW1lbnQoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQogewogICAgIGlmICghQVRLX0lTX09C
SkVDVChtX2VsZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEF0
a09iamVjdCogcGFyZW50ID0gYXRrX29iamVjdF9nZXRfcGFyZW50KEFUS19PQkpFQ1QobV9lbGVt
ZW50LmdldCgpKSk7Ci0gICAgcmV0dXJuIHBhcmVudCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZShwYXJlbnQpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gcGFyZW50ID8gUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShwYXJl
bnQpKSA6IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3coKQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkK
IHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDI4
LDcgKzEwMjgsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhl
YWRlcnMoKSBjb25zdAogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50
LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCB1
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFBy
ZWRpY2F0ZShKU0NvbnRleHRSZWYgYwogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFy
Y2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1t
ZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRl
eHRSZWYgY29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29s
IGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJj
aFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQog
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MDUs
NyArMTcwNSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKICAgICByZXR1cm4gaW5kZXhSYW5nZUluVGFibGUobV9l
bGVtZW50LmdldCgpLCBmYWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25l
ZCBjb2wsIHVuc2lnbmVkIHJvdykKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5z
aWduZWQgcm93KQogewogICAgIGlmICghQVRLX0lTX1RBQkxFKG1fZWxlbWVudC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTcxMywxNiArMTcxMywxNiBAQCBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JD
b2x1bW5BbmRSb3codQogICAgIC8vIEFkb3B0IHRoZSBBdGtPYmplY3QgcmVwcmVzZW50aW5nIHRo
ZSBjZWxsIGJlY2F1c2UKICAgICAvLyBhdF90YWJsZV9yZWZfYXQoKSB0cmFuc2ZlcnMgZnVsbCBv
d25lcnNoaXAuCiAgICAgR1JlZlB0cjxBdGtPYmplY3Q+IGZvdW5kQ2VsbCA9IGFkb3B0R1JlZihh
dGtfdGFibGVfcmVmX2F0KEFUS19UQUJMRShtX2VsZW1lbnQuZ2V0KCkpLCByb3csIGNvbCkpOwot
ICAgIHJldHVybiBmb3VuZENlbGwgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoZm91
bmRDZWxsLmdldCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZvdW5kQ2VsbCA/IFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PihBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoZm91
bmRDZWxsLmdldCgpKSkgOiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBj
b25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5MzMsMTMgKzE5MzMsMTMgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogfQogCiAvLyBUZXh0IG1hcmtlcnMKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgLy8gRklYTUU6IGlt
cGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCiB7CiAg
ICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1MSwxMyAr
MTk1MSwxMyBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVu
Z3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQog
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NjksNDMgKzE5Njks
NDMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3MKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIGVuZE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IGVuZE1hcmtlcikKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KiByYW5nZSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50
IHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCiB7CiAgICAgLy8gRklYTUU6IGlt
cGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQog
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMjks
MTkgKzIwMjksMTkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJW
YWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4KQorUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9y
SW5kZXgoaW50IHRleHRJbmRleCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQorUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJr
ZXIoKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsgICAg
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKIHsKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVySU9TLm1tCmluZGV4IGQ0YzlmNDVlMWVjODQzMjlmMmE3MzI1MDZiMzI3
ZWUzOWRjNTQxNDEuLjA5ZmEyYmNlYjlhYzRhYmMxN2MzZGY1NWZiZjY5Njk0NWNiYTgyMWEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tCkBAIC02OCwxMCAr
NjgsNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnBsYXRmb3JtTmFtZSgpCiAgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpCi17Ci19Ci0KIHZv
aWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewog
ICAgIGlmIChtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCkBAIC05NCw3ICs5MCw3IEBAIHN0
YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoaWQgb2JqLCBOU1N0cmluZyAqaWRBdHRy
aWJ1dGUpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpT
U3RyaW5nUmVmIGlkQXR0cmlidXRlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYg
aWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgaWQgcm9vdCA9IHN0YXRpY19jYXN0
PFBsYXRmb3JtVUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpKTsKQEAg
LTEwMyw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJCiAgICAgaWYgKHJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShyZXN1bHQpOwog
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KaW5kZXggYzFi
NjNmNGZlMWU2OTc2NTRkYTgwNmZkNTBkNjliOTJiMDFjOTVlYS4uZjQ3YzdjNTFhMjkyNDI3ZDdj
Mzk5M2JjZjdlNDE3YThmMTRkMjViOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKICAgICBy
ZXR1cm4gcGxhdGZvcm1VSUVsZW1lbnQoKSA9PSBvdGhlckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVt
ZW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aGVhZGVyRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVhZGVy
RWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgTlNBcnJheSAqaGVhZGVycyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRzXTsKICAgICBpZiAoaW5kZXgg
PCBbaGVhZGVycyBjb3VudF0pCkBAIC0xNzIsNyArMTcyLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJ
bmRleCgKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRFbGVtZW50KCkKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRF
bGVtZW50KCkKIHsKICAgICBpZCBsaW5rZWRFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5TGlua2VkRWxlbWVudF07CiAgICAgaWYgKGxpbmtlZEVsZW1lbnQpCkBAIC0yMTEsNyArMjEx
LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQogICAgIHJl
dHVybiBjaGlsZHJlbi5zaXplKCk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBpZCBlbGVtZW50ID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpDR1BvaW50TWFrZSh4LCB5KV07CiAgICAgaWYgKCFl
bGVtZW50KQpAQCAtMjQ3LDQ5ICsyNDcsNDkgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
cmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRl
eCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4gY2hpbGRyZW47CiAgICAgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoY2hpbGRyZW4sIGlu
ZGV4LCAxKTsKIAogICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJu
IGNoaWxkcmVuWzBdOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25z
RWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICByZXR1
cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
cmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICByZXR1cm4g
MDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJv
d0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIHJl
dHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25z
dAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdApAQCAtMjk3LDI0ICsyOTcsMjQg
QEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50
KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJ
RWxlbWVudCgpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cGFyZW50RWxlbWVudCgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCiB7CiAgICAgcmV0dXJuIG5pbDsKIH0KIAot
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkaXNjbG9zZWRCeVJvdygpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3coKQogewotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpCkBAIC0zNzEsNyAr
MzcxLDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKIAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNW
YWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKCkgY29uc3QKQEAgLTM4
NCw5ICszODQsOSBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhl
YWRlcnMoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTYxNCwxMiArNjE0LDEyIEBA
IGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQogCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JM
aW5lKGludCBsaW5lKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VG
b3JQb3NpdGlvbihpbnQgeCwgaW50IHkpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQpA
QCAtNjU1LDcgKzY1NSw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjCiAgICAgcmV0dXJuIDA7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25O
ZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2
aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtl
eSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlh
dGVEZXNjZW5kYW50c09ubHkpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC03MTEsNyAr
NzExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNDb250YWluZWRCeUZpZWxk
c2V0VHJhaXQoKQogICAgIHJldHVybiAodHJhaXRzICYgW21fZWxlbWVudCBfYXhDb250YWluZWRC
eUZpZWxkc2V0VHJhaXRdKSA9PSBbbV9lbGVtZW50IF9heENvbnRhaW5lZEJ5RmllbGRzZXRUcmFp
dF07CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQoKQorUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxkc2V0QW5jZXN0b3JFbGVt
ZW50KCkKIHsKICAgICBpZCBhbmNlc3RvckVsZW1lbnQgPSBbbV9lbGVtZW50IF9hY2Nlc3NpYmls
aXR5RmllbGRzZXRBbmNlc3Rvcl07CiAgICAgaWYgKGFuY2VzdG9yRWxlbWVudCkKQEAgLTc1OSwx
OSArNzU5LDE5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKICAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3Jl
YXRlSlNTdHJpbmdSZWZdOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29s
LCB1bnNpZ25lZCByb3cpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVk
IHJvdykKIHsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JSb3c6cm93IGFuZENvbHVtbjpjb2xdKTsKIH0K
IAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNh
bFNjcm9sbGJhcigpIGNvbnN0CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAogewotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNjcm9sbFRvTWFrZVZpc2libGUoKQpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogfQogCiAvLyBUZXh0IG1hcmtl
cnMKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgaWQgc3Rh
cnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JNYXJrZXI6KGlkKXRl
eHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCBlbmRUZXh0TWFya2VyID0g
W21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFy
a2VyUgogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4
dE1hcmtlclJhbmdlKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxl
bWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlkIHRleHRNYXJr
ZXJSYW5nZSA9IFtlbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIHRleHRNYXJrZXJSYW5nZV07
CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFy
a2VyUmFuZ2UpOwpAQCAtMTAyNywxMyArMTAyNywxMyBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
CiAgICAgcmV0dXJuIFttX2VsZW1lbnQgbGVuZ3RoRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNd
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4
dE1hcmtlcikKIHsKICAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgcHJldmlvdXNN
YXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
IHsKICAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFya2VyRm9yTWFya2VyOihp
ZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dE1hcmtlcik7CkBAIC0xMDQ3LDQzICsxMDQ3LDQz
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzCiAgICAgcmV0dXJuIFtbbV9lbGVtZW50IHN0cmlu
Z0ZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXSBjcmVhdGVKU1N0cmluZ1JlZl07CiB9CiAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
c3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJr
ZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCiB7CiAgICAgTlNBcnJheSAq
dGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCBuaWxdOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJh
bmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogfQogCi1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFu
Z2UpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBz
dGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVT
XTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2Vy
KTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBpZCB0ZXh0TWFya2Vy
cyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFy
a2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRN
YXJrZXJzIGlzU3RhcnQ6Tk9dOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
Y3JlYXRlKHRleHRNYXJrZXIpOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKGlu
dCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBp
bnQgeSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1h
cmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIG1hcmtlcikKIHsKICAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlP
YmplY3RGb3JUZXh0TWFya2VyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAg
ICBpZiAob2JqKQpAQCAtMTEwNiw3OSArMTEwNiw3OSBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
awogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCB0ZXh0
SW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4KQogewotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRl
eHRNYXJrZXIoKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2Vy
KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5l
eHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3Jh
cGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4
dE1hcmtlcikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNQYXJhZ3Jh
cGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0
ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRT
ZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1Nl
bnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3RhdGljIHZvaWQgX0NH
UGF0aEVudW1lcmF0aW9uSXRlcmF0aW9uKHZvaWQgKmluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQg
KmVsZW1lbnQpCkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkgY29uc3QKIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1cHBvcnRlZEFjdGlv
bnMoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJN
YWMubW0KaW5kZXggZTY4OGM5ODI3ZTUyNTE2Y2JlMjM1ZTRiMDkxN2U2ZWMxNmNhOWJjNC4uNzUw
ZWQ4NDYyZjAyZTdiNTg2NTA0OWQwNTdkZTQ3ODY3N2M1ZGZjMiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KQEAgLTI5LDE1ICsyOSwxMiBAQAogICovCiAK
ICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgog
I2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKIAotI2lmIEhBVkUoQUNDRVNTSUJJ
TElUWSkKLQorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxl
LmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKLQogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CkBAIC03MSwxMCAr
NjgsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQotewotfQotCiB2b2lkIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBpZiAobV9nbG9i
YWxOb3RpZmljYXRpb25IYW5kbGVyKQpAQCAtMTAwLDcgKzkzLDcgQEAgc3RhdGljIGlkIGZpbmRB
Y2Nlc3NpYmxlT2JqZWN0QnlJZChpZCBvYmosIE5TU3RyaW5nICppZEF0dHJpYnV0ZSkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVm
IGlkQXR0cmlidXRlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1
dGUpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgaWQgcm9vdCA9IHN0YXRpY19jYXN0PFBsYXRmb3Jt
VUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpKTsKQEAgLTExOSw1ICsx
MTIsMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnBsYXRmb3JtTmFtZSgpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gSEFW
RShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbQppbmRleCAwMWU5OGQ1NDdkNjI5MDBlZDYyOWY1ZTQzZDg3NjViOGM0
ZjUzZDdmLi42MWQ0YjI1ODQ0NWUwM2Y2OWM0ZjA1OTUyMTc1MjRkMTAxMzg4YzY4IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQpAQCAt
MTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1ha2VWYWx1ZVJlZkZvclZhbHVlKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBpZCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
TnVtYmVyKGNvbnRleHQsIFt2YWx1ZSBkb3VibGVWYWx1ZV0pOwogICAgIH0KICAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6d2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJDbGFzcygpXSkK
LSAgICAgICAgcmV0dXJuIHRvSlMoY29udGV4dCwgV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KHZhbHVlKSkuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gdG9KUyhjb250ZXh0LCBXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4odmFsdWUpKS5wdHIoKSk7CiAg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIG1ha2VPYmplY3RSZWZGb3JEaWN0aW9uYXJ5KGNvbnRleHQsIHZhbHVlKTsKICAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKQEAgLTE4OSw3ICsx
ODksNyBAQCAtICh2b2lkKV9ub3RpZmljYXRpb25SZWNlaXZlZDooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KICAgICB9IGVsc2UgewogICAgICAgICAvLyBBIGdsb2JhbCBsaXN0ZW5lciBn
ZXRzIHRoZSBlbGVtZW50LCBub3RpZmljYXRpb24gbmFtZSBhbmQgdXNlckluZm8uCiAgICAgICAg
IEpTVmFsdWVSZWYgYXJndW1lbnRzWzNdOwotICAgICAgICBhcmd1bWVudHNbMF0gPSB0b0pTKGNv
bnRleHQsIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtub3RpZmljYXRpb24g
b2JqZWN0XSkuZ2V0KCkpOworICAgICAgICBhcmd1bWVudHNbMF0gPSB0b0pTKGNvbnRleHQsIFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtub3RpZmljYXRpb24gb2JqZWN0XSku
cHRyKCkpOwogICAgICAgICBhcmd1bWVudHNbMV0gPSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7
CiAgICAgICAgIGFyZ3VtZW50c1syXSA9IHVzZXJJbmZvQXJndW1lbnQ7CiAgICAgICAgIEpTT2Jq
ZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4obV9ub3Rp
ZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSwgMCwgMywgYXJndW1lbnRzLCAwKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGQ3MzYyZDU5YjIwNDk0YzJl
NzU5NjlmMWFkMTMwMTNjYmZmY2E5MWEuLjBjMTgyZTAwNmZhYzU1ZTlhZTVmZWViYjhiYTI4Njcw
MWY2MjMwM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpA
QCAtNDAyLDExICs0MDIsMTEgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVu
Q291bnQoKQogICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7CiB9CiAKLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9p
bnQoaW50IHgsIGludCB5KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBpZCBl
bGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpOU01ha2VQb2ludCh4LCB5
KV07CiAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3Jl
YXRlKGVsZW1lbnQpOwogfQpAQCAtNDE2LDkgKzQxNiw5IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50
KQogICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6ZWxlbWVu
dC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pj4gY2hpbGRyZW47CiAgICAgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2Uo
Y2hpbGRyZW4sIGluZGV4LCAxKTsKIAogICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPT0gMSkKQEAg
LTQyNiw3ICs0MjYsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2Vk
VUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07
CkBAIC00MzcsNyArNDM3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGUKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOwpAQCAtNDQ4
LDcgKzQ0OCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRlCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93
VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07
CkBAIC00NTksNyArNDU5LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW4KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBhcmlhQ29udHJvbHMgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQUNvbnRyb2xzIl07CkBAIC00
NjksNyArNDY5LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXQKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJv
d0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CiAgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOwpAQCAtNDgwLDcgKzQ4
MCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAg
ICAgCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93
c0F0dHJpYnV0ZV07CkBAIC00OTEsNyArNDkxLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2lnbmVkIGkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBhcnJheSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwpAQCAtNTExLDcgKzUxMSw3IEBAIHVuc2lnbmVkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVk
Um93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKQEAgLTUyMiw3ICs1
MjIsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bgogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRpdGxlVUlFbGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0
cmlidXRlXTsKQEAgLTUzMyw3ICs1MzMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UGFy
ZW50QXR0cmlidXRlXTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgYWNjZXNzaWJpbGl0eU9i
amVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBKU1ZhbHVl
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cgogICAgIHJldHVybiBjb252ZXJ0RWxlbWVudHNUb09iamVjdEFycmF5
KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CkBAIC0xMTgzLDcgKzEx
ODMsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZv
clNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgYwogICAgIHJldHVybiAwOwogfQogCi1QYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCAqc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1
ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHks
IGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShKU0NvbnRleHRSZWYgY29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCAqc3RhcnRFbGVt
ZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5n
UmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFu
dHNPbmx5KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TRGljdGlvbmFy
eSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IHNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVGb3JTZWFyY2hDcml0ZXJpYShjb250ZXh0LCBzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgMSwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0LCB2aXNpYmxlT25seSwgaW1tZWRpYXRl
RGVzY2VuZGFudHNPbmx5KTsKQEAgLTEzNDAsNyArMTM0MCw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwg
dW5zaWduZWQgcm93KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25lZCBy
b3cpCiB7CiAgICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y29sXSwgW05TTnVtYmVyIG51bWJl
cldpdGhVbnNpZ25lZEludDpyb3ddLCBuaWxdOwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHUKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFs
U2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKK1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0
aWNhbFNjcm9sbGJhcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTY1MCw3ICsxNjUwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogfQogCiAvLyBUZXh0IG1hcmtlcnMKLVBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKQEAgLTE2NjAs
NyArMTY2MCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KiBlbGVtZW50KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50IiBmb3JQYXJhbWV0ZXI6ZWxl
bWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CkBAIC0xNjgwLDcgKzE2ODAsNyBAQCBpbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIi
IGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwpAQCAt
MTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEEKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIG5leHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNz
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBlbmRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiBlbmRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJh
eSogdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpLCBuaWxdOwpAQCAtMTcyMSw3ICsxNzIxLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2UK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZUF0dHJpYnV0ZV07CkBAIC0xNzQ3LDcgKzE3NDcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdl
KCldOwpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGUKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCld
OwpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHQKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGhlaWdodCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRB
dHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwpAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1h
cmtlckZvckJvdW4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2Vy
Rm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN0YXJ0VGV4dE1h
cmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVl
IHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwpAQCAtMTc4
Nyw3ICsxNzg3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm8KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZv
clBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFRleHRNYXJrZXJGb3JQb3NpdGlvbiIgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0
aFBvaW50Ok5TTWFrZVBvaW50KHgsIHkpXV07CkBAIC0xNzk3LDcgKzE3OTcsNyBAQCBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyRm9yUG9pbnQoaQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
bWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHVpRWxlbWVu
dCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOwpAQCAtMTg0Myw3ICsxODQzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4KQor
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
ZXh0TWFya2VyRm9ySW5kZXgoaW50IHRleHRJbmRleCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JJbmRleCIgZm9yUGFyYW1ldGVyOltOU051bWJl
ciBudW1iZXJXaXRoSW50ZWdlcjp0ZXh0SW5kZXhdXTsKQEAgLTE4NTMsNyArMTg1Myw3IEBAIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJGb3JJbmRleChpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1QYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dGFydFRleHRNYXJrZXIoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyIl07CkBAIC0xODYzLDcgKzE4NjMsNyBA
QCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXIoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRU
ZXh0TWFya2VyKCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyIl07CkBAIC0xODczLDcgKzE4NzMsNyBAQCBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRU
ZXh0TWFya2VyKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRN
YXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZv
clBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwpAQCAtMTg4
Myw3ICsxODgzLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXIKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJpZ2h0V29yZFRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOwpAQCAtMTg5Myw3ICsxODkzLDcgQEAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdo
dFdvcmRUZXh0TWEKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICBpZCBwcmV2aW91c1dvcmRTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
XTsKQEAgLTE5MDMsNyArMTkwMyw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgbmV4dFdvcmRFbmRNYXJrZXIgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFdvcmRFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CkBAIC0xOTEzLDcgKzE5MTMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29yZEVuZFRleHRN
YXJrZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
ICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFy
YW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTIzLDcg
KzE5MjMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBwcmV2aW91c1BhcmFn
cmFwaFN0YXJ0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFy
YW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTMzLDcg
KzE5MzMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRQYXJhZ3JhcGhF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTQzLDcgKzE5NDMsNyBAQCBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdy
YXBoRW5kVGV4dAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4
dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTUz
LDcgKzE5NTMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcgogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgcHJldmlvdXNQYXJh
Z3JhcGhTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFy
YW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTYzLDcg
KzE5NjMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcgogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgbmV4dFBhcmFncmFwaEVuZE1hcmtlciA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0U2VudGVuY2VFbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Vm
bC9FdmVudFNlbmRlclByb3h5RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL0V2
ZW50U2VuZGVyUHJveHlFZmwuY3BwCmluZGV4IDM4YWUwNGY3OWI2OWNiYmY3NTBiMTJhOWVmYWIx
Y2E1YTU4OWQ1Y2IuLjVmZWYwMjliOTExMGVjYjIwOWEzNDQxNzI2OWM2YmQ2MWNlY2E3YzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwu
Y3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hNb3VzZVNjcm9sbEJ5
RXZlbnQoRXZhcyogZXZhcywgaW50IGhvcml6b250YWwsIGludCB2ZXJ0aWNhbCkKICAgICAgICAg
ZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAsIHZlcnRpY2FsLCAwLCAwKTsKIH0K
IAotc3RhdGljIGNvbnN0IFBhc3NSZWZQdHI8S2V5RXZlbnRJbmZvPiBrZXlQYWROYW1lKFdLU3Ry
aW5nUmVmIGtleVJlZikKK3N0YXRpYyBjb25zdCBSZWZQdHI8S2V5RXZlbnRJbmZvPiBrZXlQYWRO
YW1lKFdLU3RyaW5nUmVmIGtleVJlZikKIHsKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhrZXlSZWYsICJsZWZ0QXJyb3ciKSkKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBLZXlFdmVudEluZm8oIktQX0xlZnQiLCAiIikpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRp
YyBjb25zdCBQYXNzUmVmUHRyPEtleUV2ZW50SW5mbz4ga2V5UGFkTmFtZShXS1N0cmluZ1JlZiBr
ZXlSZWYpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBLZXlFdmVudEluZm8oYnVmZmVyLmdldCgp
LCBidWZmZXIuZ2V0KCkpKTsKIH0KIAotc3RhdGljIGNvbnN0IFBhc3NSZWZQdHI8S2V5RXZlbnRJ
bmZvPiBrZXlOYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKK3N0YXRpYyBjb25zdCBSZWZQdHI8S2V5
RXZlbnRJbmZvPiBrZXlOYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKIHsKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJsZWZ0QXJyb3ciKSkKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBLZXlFdmVudEluZm8oIkxlZnQiLCAiIikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293781</attachid>
            <date>2016-11-03 11:01:48 -0700</date>
            <delta_ts>2016-11-03 11:50:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164358-20161103125746.patch</filename>
            <type>text/plain</type>
            <size>140849</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGM3MWQzMzAyYzIxNjc0YmJiZmY3M2M2MWZlNWNlMzgx
N2Y5MjhhMS4uNTRiM2Q4MjIyZDQ0ZGVlMzIwYjhkMzNiODI5YzAwZjcxMmVhMDRlYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
NSBAQAorMjAxNi0xMS0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFB1cmdlIFBhc3NSZWZQdHIgZnJvbSBUb29scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBJbWFnZURpZmYvZWZsL0ltYWdl
RGlmZi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpyb290RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3Np
YmxlRWxlbWVudEJ5SWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxkc2V0QW5jZXN0b3JFbGVtZW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdo
dFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlv
dXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNl
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVu
dEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0YWtlRm9jdXMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0YWtlU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxl
bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5rZWRVSUVsZW1lbnRBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVy
aXplZEF0dHJpYnV0ZU5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVW
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBv
cnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
QXR0cmlidXRlU2V0dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1ByZXNzQWN0aW9uU3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3JlbWVu
dEFjdGlvblN1cHBvcnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvbGUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdWJyb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxw
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9y
aWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6eCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Onkp
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhW
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZh
bHVlRGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJs
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2Vs
ZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1NlbGVjdGVkT3B0aW9uQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNlbGVjdGFibGUpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGls
ZEF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVj
a2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJ
bmRldGVybWluYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNWaXNpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNPZmZTY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNv
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRv
Y3VtZW50VVJJKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dXJsKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3BlYWspOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZSb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dD
b3VudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm93SGVhZGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNvbHVtbkhlYWRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93
bnNFbGVtZW50QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3Jh
YmJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFEcm9wRWZmZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNsYXNzTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5nZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0
U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3Ry
aW5nUmFuZ2VJc01pc3NwZWxsZWQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcik6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Ny
b2xsYmFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZv
ckJvdW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJGb3JQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcik6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJp
YnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlu
ZGV4Rm9yVGV4dE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xv
YmFsUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2Ny
aXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkdDQ29udHJvbGxlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFj
Y2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpyb290RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0ay5oOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjphY2Nlc3NpYmlsaXR5RWxl
bWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5r
ZWRVSUVsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFy
Y2hQcmVkaWNhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxs
Rm9yQ29sdW1uQW5kUm93KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbmRUZXh0TWFya2VyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVudEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dB
dEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRB
dEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRB
cnJheUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVu
ZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0V29yZEVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50
ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlw
dHNEZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1h
dGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdXBwb3J0ZWRBY3Rpb25zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbToKKyAgICAgICAgKG1ha2VW
YWx1ZVJlZkZvclZhbHVlKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIgX25vdGlmaWNhdGlvblJlY2VpdmVkOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxl
bWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphcmlh
Q29udHJvbHNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9y
SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cmlnaHRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBo
U3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVy
UHJveHlFZmwuY3BwOgorICAgICAgICAoV1RSOjprZXlQYWROYW1lKToKKyAgICAgICAgKFdUUjo6
a2V5TmFtZSk6CisKIDIwMTYtMTEtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQmF0dGVyeSBTdGF0dXMgQVBJIGZyb20gdGhl
IHRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcCBiL1Rv
b2xzL0ltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcAppbmRleCA0ZmUzMjk5YjA3ZGU1ZGFkZTdj
NjgxNzE4MmY4ODY4NTVlOGNiMWVhLi5mNTdiOTdiOWFlNDBmYWNkOWRhMzgzMTc1MTZjMzdhM2U5
NTdhOWFhIDEwMDY0NAotLS0gYS9Ub29scy9JbWFnZURpZmYvZWZsL0ltYWdlRGlmZi5jcHAKKysr
IGIvVG9vbHMvSW1hZ2VEaWZmL2VmbC9JbWFnZURpZmYuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1
bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvZWZsL1VuaXF1ZVB0ckVmbC5oPgogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEFjY2Vz
c2liaWxpdHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAppbmRleCBlYTRhODEyNWY5NmFlNzg5NmUwNGM1ZmMxNWNm
N2I3M2RiMWU3YmU0Li45YzZiYmRkN2MzZWQzNzY4OGJkOTVhOTIyNzZiN2RlNjc2NGRiYzA5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktp
dEFjY2Vzc2liaWxpdHkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAgZXh0ZXJu
ICJDIiB7CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUg
PHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA4YjIyM2ZlNGM5OTBiMzMxZTgyZGIzNGNk
OGJkNThhMTI5NWY1MmJiLi4wYTEzMGQ0ZThkZDNlOGY0Y2MzMTdhMzUzNjJkNzdlNTc2YzRjMWYx
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcApAQCAtMzgsOSArMzgsOSBAQAog
CiBuYW1lc3BhY2UgV1RSIHsKIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSgpCitSZWY8QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKTsKIH0KIAogQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgpCiB9
CiAKICNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKQotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQo
KQorUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
b290RWxlbWVudCgpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNz
aWJpbGl0eVJvb3RPYmplY3QocGFnZSk7CkBAIC04MCw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50
KCkKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0
PFBsYXRmb3JtVUlFbGVtZW50Pihyb290KSk7ICAgIAogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgp
CitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KCkKIHsKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKICAgICB2b2lkKiByb290ID0gV0tBY2Nl
c3NpYmlsaXR5Rm9jdXNlZE9iamVjdChwYWdlKTsKQEAgLTg5LDI2ICs4OSwxNSBAQCBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1
c2VkRWxlbWVudCgpCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCiB7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IHJvb3RFbGVtZW50KCk7CisgICAgUmVmPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IHJvb3RFbGVtZW50KCk7CiAgICAgcmV0dXJuIHVp
RWxlbWVudC0+ZWxlbWVudEF0UG9pbnQoeCwgeSk7CiB9CiAKLS8vIFVuc3VwcG9ydGVkIG1ldGhv
ZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCi0vLyBBcyB0aGV5J3JlIGltcGxlbWVudGVkIG9uIG90
aGVyIHBsYXRmb3JtcyB0aGlzIGxpc3Qgc2hvdWxkIGJlIG1vZGlmaWVkLgotI2lmICghUExBVEZP
Uk0oR1RLKSAmJiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShFRkwpKSB8fCAhSEFWRShB
Q0NFU1NJQklMSVRZKQotYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0
aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZikgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1cm4gZmFs
c2U7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vz
c2liaWxpdHlFdmVudHMoKSB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGUoKSB7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkgeyByZXR1cm4gSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOyB9Ci0j
ZW5kaWYKLQogI2lmICFIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIChQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkpCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKaW5kZXgg
ZTA5OTU0NGExMDQ5YzBjYWRkMmMzNTY1NTE0OTY0OTJkMDQ0YWUzOS4uNWNmMGQ3MzljMWVkMDQ5
ZTA5NWFjM2Q3ZTgxNGFiYmYxNTNmNWRlYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aApAQCAtMjMsMTQgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJf
aAorI3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgotI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oRUZMKSkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgogI2VuZGlmCiAKQEAgLTM4LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdUUiB7CiAgICAgCiBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI+IGNyZWF0ZSgpOwogICAgIH5BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcigpOwogCiAgICAgdm9pZCBtYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwpAQCAtNTEsMTAgKzUy
LDEwIEBAIHB1YmxpYzoKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1l
KCk7CiAKICAgICAvLyBDb250cm9sbGVyIE1ldGhvZHMgLSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBp
bXBsZW1lbnRhdGlvbnMuCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBy
b290RWxlbWVudCgpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZm9j
dXNlZEVsZW1lbnQoKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVs
ZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUp
OworICAgIFJlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiByb290RWxlbWVudCgpOworICAgIFJl
ZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOworICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNT
dHJpbmdSZWYgaWRBdHRyaWJ1dGUpOwogCiAgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0ZW5l
cihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwogICAgIGJvb2wgcmVtb3ZlTm90aWZpY2F0
aW9uTGlzdGVuZXIoKTsKQEAgLTYzLDIyICs2NCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dG
b2N1c0V2ZW50cygpIHsgfQogICAgIHZvaWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKSB7IH0KICAg
ICB2b2lkIGxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzKCkgeyB9Ci0gICAgdm9pZCBsb2dBY2Nlc3Np
YmlsaXR5RXZlbnRzKCk7CisgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkgeyB9Owog
CiAgICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKIHByaXZhdGU6CiAgICAgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9S
TShJT1MpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5vdGlmaWNhdGlvbkhh
bmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcjsKLSNlbmRpZgotCi0jaWYgSEFWRShB
Q0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQorI2Vsc2UK
ICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlcjsKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCiAKLSNl
bmRpZiAvLyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJ
QklMSVRZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAppbmRleCAwNTExMTRkYjFk
OTMyMmIwNmYzNDI3ZDUwNDBlZDE2NTBlOTI1ODRhLi43ZTk5ZmJiMTI3ZThhN2I1OWQwNGU3OTFi
NGFiNDNmMjA0MDRjZDU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcApAQCAt
MzMsMTQgKzMzLDE0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogICAgIAotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShQbGF0
Zm9ybVRleHRNYXJrZXIgbWFya2VyKQorUmVmPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtlciBtYXJrZXIpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJr
ZXIpKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYgbWFy
a2VyKQorUmVmPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsK
IH0KIAogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBs
YXRmb3JtVGV4dE1hcmtlciBtYXJrZXIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKaW5k
ZXggNzQzNDE3MThjNDk5OGNjNWM3ZDQ1ZDZhNzAyNzJmMTk4ZjMyZTExMy4uMDQxZjgxYmM3NmQ1
MDM2YjlhOTI5ZTkwYTJjNjJlNzExNzhiZWIzYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaApAQCAtMjMsMTMgKzIzLDEyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00NCw4ICs0
Myw4IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ7CiAKIGNsYXNzIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRlKFBsYXRmb3JtVGV4dE1h
cmtlcik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNy
ZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXIpOworICAgIHN0
YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciYpOwogCiAgICAgfkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKCk7CiAgICAg
CkBAIC03MSw1ICs3MCwzIEBAIGlubGluZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpp
c0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4KICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXVFIKLSAgICAKLSNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9o
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAppbmRleCA1M2Q4YmZi
ZTg5NjY0MmFmNGZhNjc5ZTJmZWVmZWZiODg3ZDZlYWZlLi43NDQ0ZjM1MjIyZWExYzU4N2I0Mjhl
ODNmODMwYWUxZWFkYzdhZjhiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5jcHAKQEAgLTMzLDE0ICszMywxNCBAQAogCiBuYW1lc3BhY2UgV1RSIHsKICAgICAKLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQor
UmVmPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OmNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJrZXJSYW5nZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKGNvbnN0IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmIG1hcmtlclJhbmdlKQorUmVmPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZShj
b25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJiBtYXJrZXJSYW5nZSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSk7CiB9CiAKIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbWFya2Vy
UmFuZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCmluZGV4IGQzZTY4
NWIyZDQ4Njc1NjliZmNkNTZmNWQzNjEyMTQ3N2QyNzM0NjIuLjE4YzE4ZDQ4ZTQxY2RmMDk4YWM5
MTU4OGZmNjYzMTEwNjI5OTEyM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5oCkBAIC0yMywxMyArMjMsMTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5k
ZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZV9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CkBAIC00Miw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXVFIgewogICAgIAogY2xhc3MgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3JlYXRlKFBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3Jl
YXRlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlJik7CiAgICAgCiAgICAgfkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKTsKICAgICAK
QEAgLTY5LDUgKzY4LDMgQEAgaW5saW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKICNlbmRpZgogICAgIAog
fSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IGU1YjI5M2E1YzVlYzU2
MTg1ZmRiNTc3Y2I5ZmM1NmRmZWZiYzE0ZTguLjIzM2ZmN2QyMDM0NDY3NThkYTc4ZGY4ZjI0YzE4
OWU1MzI5MWY4MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtMzEsMTQg
KzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVu
dCB1aUVsZW1lbnQpCitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKFBsYXRmb3JtVUlFbGVtZW50IHVpRWxlbWVudCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQodWlFbGVtZW50KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsK
IH0KICAgICAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIHVpRWxlbWVu
dCkKK1JlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgdWlFbGVtZW50KQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KHVpRWxlbWVudCkp
OwogfQogCiBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndyYXBwZXJDbGFzcygp
CkBAIC02MywxNSArNjMsMTUgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclNlbGVjdGlvbigpIHsgcmV0dXJuIG4KIEpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudHNGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWdu
ZWQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5j
cmVhc2VUZXh0U2VsZWN0aW9uKCkgeyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRl
Y3JlYXNlVGV4dFNlbGVjdGlvbigpIHsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRFbGVtZW50KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gbnVsbHB0
cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmtlZEVsZW1lbnQoKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVhZGVyRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXNzaXN0aXZlVGVjaG5vbG9neVNpbXVsYXRlZEZvY3VzKCkgeyByZXR1cm47IH0KIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsUGFnZVVwKCkgeyByZXR1cm4gZmFsc2U7
IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsUGFnZURvd24oKSB7IHJldHVy
biBmYWxzZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxQYWdlTGVmdCgp
IHsgcmV0dXJuIGZhbHNlOyB9CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFBh
Z2VSaWdodCgpIHsgcmV0dXJuIGZhbHNlOyB9CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Omhhc0NvbnRhaW5lZEJ5RmllbGRzZXRUcmFpdCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxk
c2V0QW5jZXN0b3JFbGVtZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxkc2V0QW5jZXN0b3JF
bGVtZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1NlYXJjaEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAg
LTc5LDE4MiArNzksMjkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRBcmVh
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKIC8vIFVuc3VwcG9ydGVkIG1ldGhvZHMg
b24gdmFyaW91cyBwbGF0Zm9ybXMuIEFzIHRoZXkncmUgaW1wbGVtZW50ZWQgb24gb3RoZXIgcGxh
dGZvcm1zIHRoaXMgbGlzdCBzaG91bGQgYmUgbW9kaWZpZWQuCiAjaWYgKCFQTEFURk9STShHVEsp
ICYmICFQTEFURk9STShFRkwpKSB8fCAhSEFWRShBQ0NFU1NJQklMSVRZKQotSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGlu
dCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OndvcmRBdE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50KSB7IHJl
dHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VudGVuY2VBdE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KLSNlbmRpZgotCi0jaWYgKCFQ
TEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkpIHx8ICFI
QVZFKEFDQ0VTU0lCSUxJVFkpCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KSB7IH0KLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpIHsg
fQotQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKSB7IH0K
LWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KikgeyByZXR1cm4gZmFsc2U7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50LCBpbnQpIHsgcmV0
dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Ci11bnNpZ25l
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCopIHsgcmV0dXJuIDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJl
bkNvdW50KCkgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpIHsgcmV0dXJuIDA7IH0K
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIDA7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGFrZUZvY3VzKCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VT
ZWxlY3Rpb24oKSB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9u
KCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpIHsg
fQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0
dHJpYnV0ZXMoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpIHsgcmV0dXJu
IDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQot
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZkRvY3VtZW50TGlua3MoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKSB7IHJldHVy
biAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkgeyByZXR1cm4gMDsgfQotdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKSB7IH0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGVjcmVtZW50KCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNob3dN
ZW51KCkgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKCkgeyB9Ci1KU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsgcmV0dXJuIDA7IH0KLUpTVmFsdWVSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZikgY29uc3QgeyByZXR1cm4gMDsgfQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9Ci1ib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikg
eyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1
dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYpIHsgcmV0dXJu
IGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUHJlc3NBY3Rpb25TdXBw
b3J0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0luY3JlbWVudEFjdGlvblN1cHBvcnRlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRGVjcmVtZW50QWN0aW9uU3VwcG9ydGVkKCkgeyByZXR1cm4g
ZmFsc2U7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb2xlKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkgeyByZXR1
cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbXB1dGVkUm9sZVN0cmluZygpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpIHsgcmV0dXJuIDA7IH0KLUpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigp
IHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsYW5ndWFnZSgpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLUpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmls
aXR5VmFsdWUoKSBjb25zdCB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci1K
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiAwOyB9Ci1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
eCgpIHsgcmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkgeyBy
ZXR1cm4gMDsgfQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKCkgeyByZXR1
cm4gMDsgfQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCgpIHsgcmV0dXJu
IDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpIHsg
cmV0dXJuIDA7IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgpIHsg
cmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkgeyByZXR1cm4gMDsgfQotaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpIHsgcmV0dXJuIDA7IH0KLUpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRS
YW5nZSgpIHsgcmV0dXJuIDA7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFi
bGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNS
ZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWRPcHRpb25BY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1NlbGVjdGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCopIGNvbnN0IHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkgY29uc3QgeyB9Ci12b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbkF0SW5kZXgodW5zaWduZWQpIGNvbnN0IHsg
fQotdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50
KCkgY29uc3QgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkg
Y29uc3QgeyByZXR1cm4gMDsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFu
ZGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLWludCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCgpIHsgcmV0dXJuIDA7
IH0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgpIHsgcmV0dXJu
IDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpk
b2N1bWVudEVuY29kaW5nKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkgeyByZXR1cm4gMDsgfQotSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpIHsgcmV0
dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzcGVhaygpIHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkgeyByZXR1cm4gMDsg
fQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZlJvd0hlYWRlcnMoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpIHsgcmV0dXJu
IDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZSb3dzKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpIHsgcmV0
dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZIZWFkZXIoKSB7IHJldHVybiAwOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5kZXhJblRhYmxlKCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UoKSB7IHJldHVybiAw
OyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29s
dW1uSW5kZXhSYW5nZSgpIHsgcmV0dXJuIDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dDb3VudCgpIHsgcmV0dXJuIDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5Db3VudCgpIHsgcmV0dXJuIDA7IH0KLUpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm93SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLUpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Ci1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRpc2Nsb3NlZEJ5Um93KCkgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVu
c2lnbmVkKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7
IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
cmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNv
bnRyb2xzRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIG51bGxwdHI7IH0KLWJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYURyb3BFZmZlY3RzKCkgY29uc3QgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50KSB7IHJl
dHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmFuZ2VGb3JMaW5lKGludCkgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9zaXRpb24oaW50LCBpbnQpIHsg
cmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KLWJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQs
IHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopIHsgcmV0dXJuIGZhbHNlOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVy
biAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsg
fQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01p
c3NwZWxsZWQodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQotdW5zaWduZWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Q291bnRGb3JTZWFyY2hQcmVkaWNhdGUo
SlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgYm9vbCwgSlNWYWx1ZVJlZiwg
SlNTdHJpbmdSZWYsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2ws
IEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmLCBib29sLCBib29sKSB7IHJldHVybiAwOyB9Ci1KU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0VGV4dFdp
dGhDcml0ZXJpYShKU0NvbnRleHRSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmlu
Z1JlZiwgSlNTdHJpbmdSZWYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7
IHJldHVybiAwOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKEpTVmFsdWVSZWYpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgeyByZXR1cm4gZmFsc2U7
IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIHsgcmV0dXJuIDA7IH0KLWludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKikgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7
IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3Vu
ZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsgcmV0dXJuIDA7IH0KLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhl
aWdodCkgeyByZXR1cm4gMDsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCwgaW50KSB7IHJl
dHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KSB7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopIHsgcmV0dXJuIDA7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpIHsgcmV0dXJuIDA7IH0KLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVuZFRleHRNYXJrZXIoKSB7IHJldHVybiAwOyB9Ci1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9Ci1ib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJp
YnV0ZShKU1N0cmluZ1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJu
IGZhbHNlOyB9Ci1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gLTE7IH0KLWJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KSB7IHJldHVybiBmYWxzZTsgfQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCkgeyByZXR1cm4g
MDsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkg
eyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50
LCBpbnQpIHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGludCwgaW50LCBpbnQsIGludCkgeyB9Ci1KU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJl
c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQotSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KLQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVsbHB0cjsgfQorSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNl
dChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50KSB7IHJldHVybiBudWxscHRyOyB9
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVu
Y2VBdE9mZnNldChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgIVBMQVRG
T1JNKE1BQykgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UoKSB7IHJldHVybiBudWxscHRyOyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJl
c2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKSB7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0Qm9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmLCBib29sKSB7IH0KICNlbmRp
ZgogCi0jaWYgKCFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpKSB8fCAhSEFWRShBQ0NF
U1NJQklMSVRZKQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJp
Z2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsg
fQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51
bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFy
YWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopIHsgcmV0dXJuIG51bGxwdHI7IH0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsg
fQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyNpZiAhUExBVEZPUk0oQ09DT0EpIHx8ICFIQVZFKEFDQ0VTU0lCSUxJ
VFkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJpZ2h0V29yZFRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBu
dWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxs
cHRyOyB9CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4g
bnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9CitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVu
Y2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikg
eyByZXR1cm4gbnVsbHB0cjsgfQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNT
ZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IDNmMzlhMTc4MWExZGQ0YWI1MWYxYmViNGY4
YjI2MDkzNWZkNzZjZDguLjg2Y2VkZGJkODUyODNkYTJiMzI0ZmMwNzAxZTM3YWIxOGY5NjRhZTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAotI2RlZmlu
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmgiCkBAIC02Miw4ICs2MSw4IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1V
SUVsZW1lbnQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQpOworICAgIHN0
YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQmKTsKIAogICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CiAKQEAgLTc0
LDEyICs3MywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCogb3RoZXJFbGVtZW50KTsKICAgICAKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IGVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSk7Ci0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjaGlsZEF0SW5kZXgodW5zaWduZWQpOworICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkp
OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjaGlsZEF0SW5kZXgodW5zaWdu
ZWQpOwogICAgIHVuc2lnbmVkIGluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kik7
CiAgICAgaW50IGNoaWxkcmVuQ291bnQoKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IHRpdGxlVUlFbGVtZW50KCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBwYXJlbnRFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IHRpdGxlVUlFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IHBhcmVudEVsZW1lbnQoKTsKIAogICAgIHZvaWQgdGFrZUZvY3VzKCk7CiAgICAgdm9pZCB0
YWtlU2VsZWN0aW9uKCk7CkBAIC04OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2Rz
IC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCiAgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGFsbEF0dHJpYnV0ZXMoKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpOwotICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gbGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5z
aWduZWQpOwogICAgIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZE
b2N1bWVudExpbmtzKCk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNP
ZkNoaWxkcmVuKCk7CkBAIC0xMDMsNyArMTAyLDcgQEAgcHVibGljOgogICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OwogICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OwogICAgIEpTVmFsdWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsK
KyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50QXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsKICAgICBib29sIGJvb2xBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIHZvaWQgc2V0Qm9vbEF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgYm9vbCB2YWx1ZSk7CiAgICAgYm9vbCBpc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpAQCAtMTQ1LDcgKzE0NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25z
dDsKICAgICB2b2lkIHJlbW92ZVNlbGVjdGlvbkF0SW5kZXgodW5zaWduZWQpIGNvbnN0OwogICAg
IHVuc2lnbmVkIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gc2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQpIGNv
bnN0OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBzZWxlY3RlZENoaWxkQXRJ
bmRleCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Q7CkBAIC0xODMsMTUgKzE4MiwxNSBAQCBwdWJsaWM6
CiAgICAgSlNWYWx1ZVJlZiBjb2x1bW5IZWFkZXJzKCkgY29uc3Q7CiAKICAgICAvLyBUcmVlL091
dGxpbmUgc3BlY2lmaWMgYXR0cmlidXRlcwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gc2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGRpc2Nsb3NlZEJ5Um93KCk7Ci0gICAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJvd0F0SW5kZXgodW5zaWduZWQp
OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBzZWxlY3RlZFJvd0F0SW5kZXgo
dW5zaWduZWQpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRC
eVJvdygpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRSb3dB
dEluZGV4KHVuc2lnbmVkKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcm93
QXRJbmRleCh1bnNpZ25lZCk7CiAKICAgICAvLyBBUklBIHNwZWNpZmljCi0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVk
KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFGbG93VG9FbGVt
ZW50QXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBhcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQpOwor
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhRmxvd1RvRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhQ29u
dHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CiAKICAgICAvLyBBUklBIERyYWcgYW5kIERy
b3AKICAgICBib29sIGFyaWFJc0dyYWJiZWQoKSBjb25zdDsKQEAgLTIwOCw3ICsyMDcsNyBAQCBw
dWJsaWM6CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmdGb3JS
YW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBib29sIGF0dHJp
YnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICB1bnNpZ25lZCB1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZShK
U0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBp
c0RpcmVjdGlvbk5leHQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hU
ZXh0LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7Ci0g
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdS
ZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50
c09ubHkpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFy
dEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNT
dHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNj
ZW5kYW50c09ubHkpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZWxlY3RUZXh0V2l0
aENyaXRlcmlhKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYgYW1iaWd1aXR5UmVzb2x1dGlvbiwg
SlNWYWx1ZVJlZiBzZWFyY2hTdHJpbmdzLCBKU1N0cmluZ1JlZiByZXBsYWNlbWVudFN0cmluZywg
SlNTdHJpbmdSZWYgYWN0aXZpdHkpOwogCiAgICAgLy8gVGV4dC1zcGVjaWZpYwpAQCAtMjE4LDQ5
ICsyMTcsNDkgQEAgcHVibGljOgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZW50ZW5j
ZUF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIAogICAgIC8vIFRhYmxlLXNwZWNpZmljCi0gICAg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJv
dyk7CiAKICAgICAvLyBTY3JvbGxhcmVhLXNwZWNpZmljCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Owor
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBob3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3Q7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3Q7CiAKICAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKTsKICAgICB2b2lk
IHNjcm9sbFRvR2xvYmFsUG9pbnQoaW50IHgsIGludCB5KTsKICAgICB2b2lkIHNjcm9sbFRvTWFr
ZVZpc2libGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwogICAgIAogICAgIC8vIFRleHQgbWFya2Vycy4KLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IGxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqKTsgICAgCi0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1h
cmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7Ci0gICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgp
OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBsaW5lVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpOwor
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwotICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gc3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiB0
ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0VGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBz
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSopOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyRm9yQm91bmRzKGlu
dCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiB0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gbmV4dFRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKik7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgaW50IHRleHRNYXJr
ZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgYm9vbCBh
dHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUoSlNTdHJp
bmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBpbnQgaW5kZXhGb3JU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CiAgICAgYm9vbCBpc1RleHRNYXJr
ZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JJbmRleChpbnQpOwotICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlcigpOwotICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGVuZFRleHRNYXJrZXIoKTsKKyAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JJbmRleChpbnQpOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gc3RhcnRUZXh0TWFya2VyKCk7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyKCk7CiAgICAgYm9v
bCBzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbGVmdFdv
cmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7
Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiByaWdodFdvcmRU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7Ci0g
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlvdXNXb3JkU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRXb3JkRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IHNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwotICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IG5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKik7Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gcHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gbGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHJpZ2h0
V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHByZXZpb3VzV29yZFN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gcGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gbmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBw
cmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0U2VudGVuY2VF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKIAogICAgIC8v
IFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVt
ZW50LgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdXBwb3J0ZWRBY3Rpb25zKCkgY29u
c3Q7CkBAIC0yODMsOCArMjgyLDggQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgZWxlbWVudHNG
b3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB2b2lkIGlu
Y3JlYXNlVGV4dFNlbGVjdGlvbigpOwogICAgIHZvaWQgZGVjcmVhc2VUZXh0U2VsZWN0aW9uKCk7
Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBsaW5rZWRFbGVtZW50KCk7
Ci0gICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBoZWFkZXJFbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGxpbmtlZEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gaGVh
ZGVyRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVj
aG5vbG9neVNpbXVsYXRlZEZvY3VzKCk7CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Q7
CiAgICAgYm9vbCBpc1RleHRBcmVhKCkgY29uc3Q7CkBAIC0yOTYsNyArMjk1LDcgQEAgcHVibGlj
OgogICAgIAogICAgIC8vIEZpZWxkc2V0CiAgICAgYm9vbCBoYXNDb250YWluZWRCeUZpZWxkc2V0
VHJhaXQoKTsKLSAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZpZWxkc2V0
QW5jZXN0b3JFbGVtZW50KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZp
ZWxkc2V0QW5jZXN0b3JFbGVtZW50KCk7CiAgICAgCiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOwpAQCAtMzI3LDUgKzMyNiwzIEBAIHByaXZh
dGU6CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0gICAgCi0jZW5kaWYgLy8gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCAz
ZTgxZGI5ZDMyOTQ3MzMyMGY0MmRjMDk3OTg2MmViN2QwZTE2Y2Q3Li5mODE5ODJjNmJmOGQyOWE5
YjEyNjFmM2IyZmNmYWIwYjJiZjBmYzg5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5j
cHAKQEAgLTE2Niw5ICsxNjYsOSBAQCBzdGF0aWMgV0tFdmVudE1vZGlmaWVycyBwYXJzZU1vZGlm
aWVyQXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgYXJyYQogICAgIHJldHVy
biBtb2RpZmllcnM7CiB9CiAKLVBhc3NSZWZQdHI8RXZlbnRTZW5kaW5nQ29udHJvbGxlcj4gRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6Y3JlYXRlKCkKK1JlZjxFdmVudFNlbmRpbmdDb250cm9sbGVy
PiBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRXZlbnRTZW5kaW5nQ29udHJvbGxlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RXZlbnRTZW5kaW5nQ29udHJvbGxlcik7CiB9CiAKIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OkV2
ZW50U2VuZGluZ0NvbnRyb2xsZXIoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAppbmRleCBj
MjNjMzZkZmFjNTU4NGY4NTFjNWY2MGZiNGQ1NjIyY2ZmNDIwMDRhLi4zZWI4MTI5YzdhMzhlMzYw
OWQ2Njg1ZTUxMTNlYTU3YTdiZmFmZWFhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaApA
QCAtMjMsMTkgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBFdmVudFNlbmRpbmdDb250cm9sbGVyX2gKLSNkZWZpbmUgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgi
CiAjaW5jbHVkZSA8V2ViS2l0L1dLRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tHZW9tZXRy
eS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgog
CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgRXZlbnRTZW5kaW5nQ29udHJvbGxlciA6IHB1Ymxp
YyBKU1dyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRTZW5k
aW5nQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxFdmVudFNlbmRpbmdDb250
cm9sbGVyPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5FdmVudFNlbmRpbmdDb250cm9sbGVyKCk7
CiAKICAgICB2b2lkIG1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3
aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CkBAIC05Miw1ICs5MSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGZkMGNjM2E3OGFhNDljOGE2ZmY0ODVmNmE5
OTAzNmYwMmYyZjJjOTIuLjkzNThmNGEwZGU1YjNkOWJjMzE2YjVlMGFkZmQwNDEyNjY0MjU4ZmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dD
Q29udHJvbGxlci5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLVBh
c3NSZWZQdHI8R0NDb250cm9sbGVyPiBHQ0NvbnRyb2xsZXI6OmNyZWF0ZSgpCitSZWY8R0NDb250
cm9sbGVyPiBHQ0NvbnRyb2xsZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHQ0NvbnRyb2xsZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQ29udHJvbGxlcik7
CiB9CiAKIEdDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxlci5oCmluZGV4IDc2MGZiYjFl
Njg1MDEzMmQwY2NiZDk0NTk1N2JmMTcxODI5ZDY4MDguLmQzNDljMWNlOTkwZTg3ZDdkZjJmY2I4
YzgyODg1YmNhMzA1NzJhMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuaApAQCAtMjMsMTcgKzIzLDE2IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHQ0NvbnRyb2xsZXJf
aAotI2RlZmluZSBHQ0NvbnRyb2xsZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dy
YXBwYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgR0NDb250cm9sbGVyIDogcHVibGljIEpT
V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHQ0NvbnRyb2xsZXI+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8R0NDb250cm9sbGVyPiBjcmVhdGUoKTsKICAgICB2
aXJ0dWFsIH5HQ0NvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQgbWFrZVdpbmRvd09iamVjdChKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsKQEAgLTUwLDUgKzQ5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgot
Ci0jZW5kaWYgLy8gR0NDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjU1MjU0NTM0
NTQ4MjUxZDAzMjFkMWQ0ZjM1NzgyZmYzZjIzOTFjYS4uMmY1YzNlNGY3NWJmMTU3MWZhMWI2ZWFk
NGMzOGViNjk3YmU4MWQ5OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI5MCw3ICsyOTAsOSBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5UmVmIHNldHRpbmdz
KQogICAgIG1fZ2NDb250cm9sbGVyID0gR0NDb250cm9sbGVyOjpjcmVhdGUoKTsKICAgICBtX2V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIgPSBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVhdGUoKTsK
ICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUo
KTsKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKTsKKyNlbmRpZgogCiAgICAgV0tC
dW5kbGVTZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhtX2J1bmRsZSwgbV9wYWdl
R3JvdXAsIHRydWUpOwogICAgIFdLQnVuZGxlU2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZChtX2J1bmRsZSwgbV9wYWdlR3JvdXAsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IGQ1MTc3MGFj
Yjg3NGUzZTI0NjUyZTExMGQwYzQxYjUzOTUxNWU5Y2EuLjA2OTk5OGJjMTlkMWZmNTE4OWMxZDQw
NTBhNzA3MGY2Njk3NmI4NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTIzLDEwICsyMyw4IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbmplY3RlZEJ1
bmRsZV9oCi0jZGVmaW5lIEluamVjdGVkQnVuZGxlX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFdmVudFNlbmRpbmdDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5l
ci5oIgpAQCAtMzgsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIGNs
YXNzIEluamVjdGVkQnVuZGxlUGFnZTsKQEAgLTU2LDcgKzU4LDkgQEAgcHVibGljOgogICAgIEdD
Q29udHJvbGxlciogZ2NDb250cm9sbGVyKCkgeyByZXR1cm4gbV9nY0NvbnRyb2xsZXIuZ2V0KCk7
IH0KICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyKiBldmVudFNlbmRpbmdDb250cm9sbGVyKCkg
eyByZXR1cm4gbV9ldmVudFNlbmRpbmdDb250cm9sbGVyLmdldCgpOyB9CiAgICAgVGV4dElucHV0
Q29udHJvbGxlciogdGV4dElucHV0Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdGV4dElucHV0Q29u
dHJvbGxlci5nZXQoKTsgfQorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKIAogICAgIEluamVjdGVkQnVuZGxl
UGFnZSogcGFnZSgpIGNvbnN0OwogICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VzLnNpemUoKTsgfQpAQCAtMTUyLDcgKzE1Niw5IEBAIHByaXZhdGU6CiAgICAgV0tC
dW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdlR3JvdXA7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJbmplY3RlZEJ1bmRsZVBhZ2U+PiBtX3BhZ2VzOwogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZ
KQogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjsKKyNlbmRpZgogICAgIFJlZlB0cjxUZXN0UnVubmVyPiBtX3Rlc3RSdW5uZXI7CiAg
ICAgUmVmUHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xsZXI7CiAgICAgUmVmUHRyPEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI+IG1fZXZlbnRTZW5kaW5nQ29udHJvbGxlcjsKQEAgLTE4MSw1ICsx
ODcsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBJ
bmplY3RlZEJ1bmRsZV9oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA3NGQzMjVhZGVmNTE5N2EwZjVlNjdjNDI0NTk1
ZjY3OGE0NzIxNjY1Li40OTJiNmIyMDM5NzhkNjcxY2RlZGEzYzEzN2QwYzljNjg0YjQ2MjYzIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKQEAgLTU2LDkgKzU2LDkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLVBhc3NSZWZQ
dHI8VGVzdFJ1bm5lcj4gVGVzdFJ1bm5lcjo6Y3JlYXRlKCkKK1JlZjxUZXN0UnVubmVyPiBUZXN0
UnVubmVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGVzdFJ1bm5lcik7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVzdFJ1bm5lcik7CiB9CiAKIFRlc3RSdW5uZXI6
OlRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBlNzU2NGFkODNmMGJjZWZhYzg3ODJlMWMzMjE4OGVjZjM5
NzMxYzFlLi4wMTM2MGM4YTVmY2M2ODMwM2IzNzJjNzZhMDNkNWFhMDRjNjU2NTI2IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApA
QCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgVGVzdFJ1bm5lcl9oCi0jZGVmaW5lIFRlc3RSdW5uZXJfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9u
cy5oIgpAQCAtMzIsNyArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVNjcmlwdFdv
cmxkLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC01
Myw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0UnVubmVyIDogcHVibGlj
IEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXN0UnVubmVy
PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFRlc3RSdW5uZXI+IGNyZWF0ZSgpOwogICAgIHZp
cnR1YWwgflRlc3RSdW5uZXIoKTsKIAogICAgIC8vIEpTV3JhcHBhYmxlCkBAIC00MDEsNSArNDAw
LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gVGVz
dFJ1bm5lcl9oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCBmNGU2OGY2OTU1OWYzOWUz
NmFmYzVkZDMyMjgwOGRhNDNlMDg4OGU5Li4yZTMwNGUyOGM1OTNkOTAxNDYzYTZmNDAyNjA1OTI2
NzczMzQ1YTMyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTM0LDkgKzM0LDkgQEAK
IAogbmFtZXNwYWNlIFdUUiB7CiAKLVBhc3NSZWZQdHI8VGV4dElucHV0Q29udHJvbGxlcj4gVGV4
dElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCkKK1JlZjxUZXh0SW5wdXRDb250cm9sbGVyPiBUZXh0
SW5wdXRDb250cm9sbGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4
dElucHV0Q29udHJvbGxlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dElucHV0Q29u
dHJvbGxlcik7CiB9CiAKIFRleHRJbnB1dENvbnRyb2xsZXI6OlRleHRJbnB1dENvbnRyb2xsZXIo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0
SW5wdXRDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1RleHRJbnB1dENvbnRyb2xsZXIuaAppbmRleCA3MWEwNDM3NTJmZTI3ZDU4YzcxYmNkMWYzMTdk
ZDI5ZDRkNjc4MWZjLi5lZDE3NDgxNmYzNTZiYTc5OTUwN2Q3MjEyYjc1YjA3ZTlhNmYxZDAxIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1RleHRJbnB1dENvbnRyb2xsZXIuaApAQCAtMjMsMTcgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBUZXh0SW5wdXRDb250cm9sbGVy
X2gKLSNkZWZpbmUgVGV4dElucHV0Q29udHJvbGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkpTV3JhcHBhYmxlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXh0SW5wdXRDb250cm9s
bGVyIDogcHVibGljIEpTV3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxUZXh0SW5wdXRDb250cm9sbGVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFRleHRJbnB1
dENvbnRyb2xsZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgflRleHRJbnB1dENvbnRyb2xsZXIo
KTsKIAogICAgIC8vIEpTV3JhcHBhYmxlCkBAIC01MSw1ICs1MCwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIFRleHRJbnB1dENvbnRyb2xsZXJfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IGMxY2Iz
NDk1MTY0MmRkNzgxNzZiMWM4MTk4NzhlZTExMDgxNmIyZmIuLmExYTU1NGE5ZGZmYzBiMWY2ZDc2
OTNkM2QyYzZlZDZmOTdlMzlhM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckF0ay5jcHAKQEAgLTQxLDEyICs0MSw2IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi12
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKLXsK
LSAgICAvLyBObyBsb25nZXIgaW1wbGVtZW50ZWQgZm9yIEFUSy4gVXNlIGFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKCkgaW5zdGVhZCB0bwotICAgIC8vIGNoZWNrIHRoYXQgcmVsZXZhbnQgQVRLIHNp
Z25hbHMgYXJlIGJlaW5nIGVtbWl0dGVkIGluIHJlc3BvbnNlIHRvIGV2ZW50cy4KLX0KLQogdm9p
ZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID0gbnVsbHB0cjsKQEAgLTgyLDcgKzc2LDcg
QEAgc3RhdGljIEF0a09iamVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtPYmplY3QqIHBhcmVudCwg
Y29uc3QgY2hhciogaWQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVF
bGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkKQogewogICAgIEF0a09iamVjdCogcm9vdCA9IEFUS19PQkpFQ1QoV0tBY2Nlc3NpYmls
aXR5Um9vdE9iamVjdChJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkp
KTsKICAgICBpZiAoIXJvb3QpCkBAIC0xMDUsNyArOTksNyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCiAgICAgcmV0dXJu
IHBsYXRmb3JtTmFtZTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQorUmVmPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCiB7CiAgICAg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgp
LT5wYWdlKCk7CiAgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFn
ZSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4ocm9vdCkp
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKIHsKICAgICBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2Uo
KTsKICAgICB2b2lkKiByb290ID0gV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChwYWdlKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0
ay5oCmluZGV4IGJiMzg2OWVjZGM2NTZiNjhhYWNmYTk1MGVkNDc5MmViNDBkNTU3MzUuLmRhNWQ4
ZWNkZGIwNjMxYmJkMGY0ZmU4NGE0ZGI5NDhjN2E0YTliMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyQXRrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaApAQCAtMTcsMTUgKzE3
LDEzIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrX2gKLSNkZWZpbmUgQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGtfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2lu
Y2x1ZGUgPGF0ay9hdGsuaD4KICNpbmNsdWRlIDxhdGsvYXRrb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KIApAQCAtMzMsOSArMzEsOSBAQCBuYW1lc3BhY2UgV1RSIHsK
IAogY2xhc3MgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBjcmVhdGUo
KQorICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IGNyZWF0
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpKTsKICAgICB9CiAgICAgfkFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyKCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybUVsZW1lbnQoR1JlZlB0
cjxBdGtPYmplY3Q+IHBsYXRmb3JtRWxlbWVudCkgeyBtX3BsYXRmb3JtRWxlbWVudCA9IHBsYXRm
b3JtRWxlbWVudDsgfQpAQCAtNTYsNSArNTQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2Ug
V1RSCiAKICNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCi0KLSNlbmRpZiAvLyBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDIyZGUzNmE5Y2UyZGQxZjNiOTBlYTVhZTVlMDE2ZDkz
ZmE1MmU4MWIuLjY0MDY5NzY4NWRmODk3MTNjOTUyNWVkYmIxNmI4YWRhOTZlMDYyNDYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC03MzAsNyArNzMw
LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQogICAgIHJl
dHVybiBhdGtfb2JqZWN0X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oQVRLX09CSkVDVChtX2Vs
ZW1lbnQuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVu
dEF0UG9pbnQoaW50IHgsIGludCB5KQogewogICAgIGlmICghQVRLX0lTX0NPTVBPTkVOVChtX2Vs
ZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1NSw3ICs3NTUsNyBA
QCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIGlm
ICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTc2OSw3ICs3NjksNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZAogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBhY2Nlc3NpYmlsaXR5RWxlbWVudEF0SW5kZXgoQXRrT2JqZWN0KiBlbGVtZW50LCBBdGtSZWxh
dGlvblR5cGUgcmVsYXRpb25UeXBlLCB1bnNpZ25lZCBpbmRleCkKK3N0YXRpYyBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRBdEluZGV4KEF0a09iamVj
dCogZWxlbWVudCwgQXRrUmVsYXRpb25UeXBlIHJlbGF0aW9uVHlwZSwgdW5zaWduZWQgaW5kZXgp
CiB7CiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTc4OSwzOCArNzg5LDM4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IGFjY2Vzc2liaWxpdHlFbGVtZW50QXRJbmRleChBdGtPYmplY3QqCiAgICAg
QXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2FzdDxBdGtPYmplY3QqPihnX3B0cl9hcnJheV9p
bmRleCh0YXJnZXRMaXN0LCBpbmRleCkpOwogICAgIGdfb2JqZWN0X3VucmVmKHJlbGF0aW9uU2V0
KTsKIAotICAgIHJldHVybiB0YXJnZXQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUo
dGFyZ2V0KSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHRhcmdldCA/IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNyZWF0ZSh0YXJnZXQpLnB0cigpIDogbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVs
ZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNF
bGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsK
ICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUVsZW1lbnRBdEluZGV4KG1fZWxlbWVudC5nZXQoKSwg
QVRLX1JFTEFUSU9OX0ZMT1dTX1RPLCBpbmRleCk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVu
dEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCiB7CiAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlFbGVtZW50QXRJbmRleChtX2Vs
ZW1lbnQuZ2V0KCksIEFUS19SRUxBVElPTl9DT05UUk9MTEVSX0ZPUiwgaW5kZXgpOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQogewogICAgIC8vIEFUSyBkb2Vzbid0IGhhdmUgQVBJIHRvIGdldCBhbiBhY2Nl
c3NpYmxlIHJvdyBieSBpbmRleCBkaXJlY3RseS4gSXQgZG9lcywgaG93ZXZlciwgaGF2ZQogICAg
IC8vIEFQSSB0byBnZXQgY2VsbHMgaW4gdGhlIHJvdyBzcGVjaWZpZWQgYnkgaW5kZXguIFRoZSBw
YXJlbnQgb2YgYSBjZWxsIHNob3VsZCBiZSB0aGUgcm93LgpAQCAtODMwLDIwICs4MzAsMjAgQEAg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dBdEluZGV4KHVuc2lnbmVkIGkKICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgY2VsbCBp
biB0aGlzIHJvdyB0aGF0IG9ubHkgc3BhbnMgb25lIHJvdy4KICAgICAgICAgaWYgKGF0a190YWJs
ZV9nZXRfcm93X2V4dGVudF9hdChheFRhYmxlLCBpbmRleCwgY29sKSA9PSAxKSB7CiAgICAgICAg
ICAgICBBdGtPYmplY3QqIGNlbGwgPSBhdGtfdGFibGVfcmVmX2F0KGF4VGFibGUsIGluZGV4LCBj
b2wpOwotICAgICAgICAgICAgcmV0dXJuIGNlbGwgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoYXRrX29iamVjdF9nZXRfcGFyZW50KGNlbGwpKSA6IG51bGxwdHI7CisgICAgICAgICAg
ICByZXR1cm4gY2VsbCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhdGtfb2JqZWN0
X2dldF9wYXJlbnQoY2VsbCkpLnB0cigpIDogbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVk
IGluZGV4KSBjb25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAog
ewogICAgIGlmICghQVRLX1NFTEVDVElPTihtX2VsZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBjaGlsZCA9IGFkb3B0R1JlZihh
dGtfc2VsZWN0aW9uX3JlZl9zZWxlY3Rpb24oQVRLX1NFTEVDVElPTihtX2VsZW1lbnQuZ2V0KCkp
LCBpbmRleCkpOwotICAgIHJldHVybiBjaGlsZCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShjaGlsZC5nZXQoKSkgOiBudWxscHRyOworICAgIHJldHVybiBjaGlsZCA/IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShjaGlsZC5nZXQoKSkucHRyKCkgOiBudWxscHRyOwogfQog
CiB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQo
KSBjb25zdApAQCAtODUzLDEzICs4NTMsMTMgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29uc3QKICAgICByZXR1cm4gYXRrX3NlbGVj
dGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KEFUS19TRUxFQ1RJT04obV9lbGVtZW50LmdldCgpKSk7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKQorUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKIHsK
ICAgICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC04ODAsMTkgKzg4MCwxOSBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKICAgICB9
CiAKICAgICBnX29iamVjdF91bnJlZihzZXQpOwotICAgIHJldHVybiB0YXJnZXQgPyBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodGFyZ2V0KSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHRh
cmdldCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSh0YXJnZXQpLnB0cigpIDogbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKIHsKICAgICBpZiAo
IUFUS19JU19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBBdGtPYmplY3QqIHBhcmVudCA9IGF0a19vYmplY3RfZ2V0X3BhcmVudChBVEtfT0JK
RUNUKG1fZWxlbWVudC5nZXQoKSkpOwotICAgIHJldHVybiBwYXJlbnQgPyBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjcmVhdGUocGFyZW50KSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHBhcmVudCA/
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShwYXJlbnQpLnB0cigpIDogbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3coKQogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMjgsNyArMTAyOCw3IEBAIEpT
VmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0CiAj
ZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpIGNvbnN0CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBj
b25zdAogewogICAgIGlmICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2MTQsNyArMTYxNCw3IEBAIHVuc2lnbmVkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4
dFJlZiBjCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdS
ZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50
c09ubHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0
LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNp
YmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCiB7CiAgICAgLy8gRklYTUU6
IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTcwNSw3ICsxNzA1LDcgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4
UmFuZ2UoKQogICAgIHJldHVybiBpbmRleFJhbmdlSW5UYWJsZShtX2VsZW1lbnQuZ2V0KCksIGZh
bHNlKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQg
cm93KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCiB7CiAg
ICAgaWYgKCFBVEtfSVNfVEFCTEUobV9lbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xNzEzLDE2ICsxNzEzLDE2IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1CiAg
ICAgLy8gQWRvcHQgdGhlIEF0a09iamVjdCByZXByZXNlbnRpbmcgdGhlIGNlbGwgYmVjYXVzZQog
ICAgIC8vIGF0X3RhYmxlX3JlZl9hdCgpIHRyYW5zZmVycyBmdWxsIG93bmVyc2hpcC4KICAgICBH
UmVmUHRyPEF0a09iamVjdD4gZm91bmRDZWxsID0gYWRvcHRHUmVmKGF0a190YWJsZV9yZWZfYXQo
QVRLX1RBQkxFKG1fZWxlbWVudC5nZXQoKSksIHJvdywgY29sKSk7Ci0gICAgcmV0dXJuIGZvdW5k
Q2VsbCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShmb3VuZENlbGwuZ2V0KCkpIDog
bnVsbHB0cjsKKyAgICByZXR1cm4gZm91bmRDZWxsID8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y3JlYXRlKGZvdW5kQ2VsbC5nZXQoKSkucHRyKCkgOiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250
YWxTY3JvbGxiYXIoKSBjb25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNj
cm9sbGJhcigpIGNvbnN0CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5MzMsMTMgKzE5MzMsMTMgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogfQogCiAvLyBU
ZXh0IG1hcmtlcnMKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVu
dCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTk1MSwxMyArMTk1MSwxMyBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqCiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE5NjksNDMgKzE5NjksNDMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3MKICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQog
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiByYW5nZSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGlu
dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgs
IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMo
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJv
dW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQ
b2ludChpbnQgeCwgaW50IHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCiB7CiAg
ICAgLy8gRklYTUU6IGltcGxlbWVudAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFy
a2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogbWFya2VyKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIwMjksMTkgKzIwMjksMTkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50IHRleHRJbmRleCkKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIo
KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXIoKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKICAgICByZXR1
cm4gbnVsbHB0cjsgICAgCiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkK
IHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tCmluZGV4IGQ0YzlmNDVlMWVjODQz
MjlmMmE3MzI1MDZiMzI3ZWUzOWRjNTQxNDEuLjA5ZmEyYmNlYjlhYzRhYmMxN2MzZGY1NWZiZjY5
Njk0NWNiYTgyMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9T
Lm1tCkBAIC02OCwxMCArNjgsNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCiAgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsK
IH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50
cygpCi17Ci19Ci0KIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0
ZW50U3RhdGUoKQogewogICAgIGlmIChtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCkBAIC05
NCw3ICs5MCw3IEBAIHN0YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoaWQgb2JqLCBO
U1N0cmluZyAqaWRBdHRyaWJ1dGUpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlKQorUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2Ug
PSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgaWQgcm9v
dCA9IHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0KHBhZ2UpKTsKQEAgLTEwMyw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJCiAg
ICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShyZXN1bHQpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW0KaW5kZXggYzFiNjNmNGZlMWU2OTc2NTRkYTgwNmZkNTBkNjliOTJiMDFjOTVlYS4uZjQ3
YzdjNTFhMjkyNDI3ZDdjMzk5M2JjZjdlNDE3YThmMTRkMjViOCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVy
RWxlbWVudCkKICAgICByZXR1cm4gcGxhdGZvcm1VSUVsZW1lbnQoKSA9PSBvdGhlckVsZW1lbnQt
PnBsYXRmb3JtVUlFbGVtZW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVhZGVyRWxlbWVudEF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGVhZGVyRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgTlNB
cnJheSAqaGVhZGVycyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRzXTsK
ICAgICBpZiAoaW5kZXggPCBbaGVhZGVycyBjb3VudF0pCkBAIC0xNzIsNyArMTcyLDcgQEAgUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
ZWFkZXJFbGVtZW50QXRJbmRleCgKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRF
bGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5rZWRFbGVtZW50KCkKIHsKICAgICBpZCBsaW5rZWRFbGVtZW50ID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5TGlua2VkRWxlbWVudF07CiAgICAgaWYgKGxpbmtlZEVsZW1lbnQp
CkBAIC0yMTEsNyArMjExLDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVu
Q291bnQoKQogICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7CiB9CiAKLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9p
bnQoaW50IHgsIGludCB5KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBpZCBl
bGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpDR1BvaW50TWFrZSh4LCB5
KV07CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtMjQ3LDQ5ICsyNDcsNDkgQEAgdW5zaWduZWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CiAgICAgZ2V0Q2hpbGRyZW5XaXRoUmFu
Z2UoY2hpbGRyZW4sIGluZGV4LCAxKTsKIAogICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
a2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKIHsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkK
IHsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgcmV0dXJuIDA7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQogewogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KSBjb25zdAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25z
dAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB1bnNpZ25lZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdApAQCAt
Mjk3LDI0ICsyOTcsMjQgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0
ZWRDaGlsZHJlbkNvdW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJv
d0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4
KQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlF
bGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCiB7CiAgICAgcmV0
dXJuIG5pbDsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3coKQogewotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50
cygpCkBAIC0zNzEsNyArMzcxLDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51
bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKIAogSlNWYWx1ZVJlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJz
KCkgY29uc3QKQEAgLTM4NCw5ICszODQsOSBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKQEAgLTYx
NCwxMiArNjE0LDEyIEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgo
aW50IGluZGV4KQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmFuZ2VGb3JMaW5lKGludCBsaW5lKQogewotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cmFuZ2VGb3JQb3NpdGlvbihpbnQgeCwgaW50IHkpCiB7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKQpAQCAtNjU1LDcgKzY1NSw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBj
CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJv
b2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2Vh
cmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkp
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1Zh
bHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25s
eSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkBAIC03MTEsNyArNzExLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXND
b250YWluZWRCeUZpZWxkc2V0VHJhaXQoKQogICAgIHJldHVybiAodHJhaXRzICYgW21fZWxlbWVu
dCBfYXhDb250YWluZWRCeUZpZWxkc2V0VHJhaXRdKSA9PSBbbV9lbGVtZW50IF9heENvbnRhaW5l
ZEJ5RmllbGRzZXRUcmFpdF07CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmllbGRzZXRBbmNlc3RvckVsZW1lbnQoKQorUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZpZWxk
c2V0QW5jZXN0b3JFbGVtZW50KCkKIHsKICAgICBpZCBhbmNlc3RvckVsZW1lbnQgPSBbbV9lbGVt
ZW50IF9hY2Nlc3NpYmlsaXR5RmllbGRzZXRBbmNlc3Rvcl07CiAgICAgaWYgKGFuY2VzdG9yRWxl
bWVudCkKQEAgLTc1OSwxOSArNzU5LDE5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKICAgICByZXR1cm4gW3Jhbmdl
RGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRS
b3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25l
ZCBjb2wsIHVuc2lnbmVkIHJvdykKIHsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JSb3c6cm93IGFuZENv
bHVtbjpjb2xdKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFs
U2Nyb2xsYmFyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25z
dAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGUoKQpAQCAtMTAwNSw3ICsxMDA1
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogfQog
CiAvLyBUZXh0IG1hcmtlcnMKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7CiAgICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJG
b3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBpZCBl
bmRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOihpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmVUZXh0TWFya2VyUgogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQogewog
ICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtlbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIHRl
eHRNYXJrZXJSYW5nZV07CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwpAQCAtMTAyNywxMyArMTAyNywxMyBAQCBpbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqCiAgICAgcmV0dXJuIFttX2VsZW1lbnQgbGVuZ3RoRm9yVGV4dE1hcmtl
cnM6dGV4dE1hcmtlcnNdOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2Vs
ZW1lbnQgcHJldmlvdXNNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShw
cmV2aW91c01hcmtlcik7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogdGV4dE1hcmtlcikKIHsKICAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFy
a2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dE1hcmtlcik7CkBAIC0x
MDQ3LDQzICsxMDQ3LDQzIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzCiAgICAgcmV0dXJuIFtb
bV9lbGVtZW50IHN0cmluZ0ZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXSBjcmVhdGVKU1N0cmlu
Z1JlZl07CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRN
YXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCiB7
CiAgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihp
ZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpLCBuaWxdOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1l
bnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107CiAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogfQog
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSogcmFuZ2UpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBpZCB0ZXh0TWFya2VycyA9
IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2Vy
ID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJr
ZXJzIGlzU3RhcnQ6WUVTXTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSh0ZXh0TWFya2VyKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAg
ICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsK
ICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6Tk9dOwogICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2Vy
Rm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFy
a2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgs
IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZv
clBvaW50KGludCB4LCBpbnQgeSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIG1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKICAgICBpZCBvYmogPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpXTsKICAgICBpZiAob2JqKQpAQCAtMTEwNiw3OSArMTEwNiw3OSBAQCBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiB0ZXh0TWFyawogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZv
ckluZGV4KGludCB0ZXh0SW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4KQog
ewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXIoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjplbmRUZXh0TWFya2VyKCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZp
b3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhZ3JhcGhU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0
TWFya2VyKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogdGV4dE1hcmtlcikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRl
bmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0
aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
c3RhdGljIHZvaWQgX0NHUGF0aEVudW1lcmF0aW9uSXRlcmF0aW9uKHZvaWQgKmluZm8sIGNvbnN0
IENHUGF0aEVsZW1lbnQgKmVsZW1lbnQpCkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkg
Y29uc3QKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFj
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJNYWMubW0KaW5kZXggZTY4OGM5ODI3ZTUyNTE2Y2JlMjM1ZTRiMDkxN2U2
ZWMxNmNhOWJjNC4uNzUwZWQ4NDYyZjAyZTdiNTg2NTA0OWQwNTdkZTQ3ODY3N2M1ZGZjMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KQEAgLTI5LDE1ICsy
OSwxMiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKIAotI2lm
IEhBVkUoQUNDRVNTSUJJTElUWSkKLQorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQg
IkluamVjdGVkQnVuZGxlLmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKLQogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTU3RyaW5nUmVmLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNG
Lmg+CkBAIC03MSwxMCArNjgsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQotewotfQotCiB2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsK
ICAgICBpZiAobV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyKQpAQCAtMTAwLDcgKzkzLDcgQEAg
c3RhdGljIGlkIGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChpZCBvYmosIE5TU3RyaW5nICppZEF0
dHJpYnV0ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRC
eUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJp
bmdSZWYgaWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgaWQgcm9vdCA9IHN0YXRp
Y19jYXN0PFBsYXRmb3JtVUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2Up
KTsKQEAgLTExOSw1ICsxMTIsMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgot
Ci0jZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQppbmRleCAwMWU5OGQ1NDdkNjI5MDBlZDYy
OWY1ZTQzZDg3NjViOGM0ZjUzZDdmLi42MWQ0YjI1ODQ0NWUwM2Y2OWM0ZjA1OTUyMTc1MjRkMTAx
Mzg4YzY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5tbQpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1ha2VWYWx1
ZVJlZkZvclZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpZCB2YWx1ZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIFt2YWx1ZSBkb3VibGVWYWx1ZV0pOwogICAg
IH0KICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6d2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJDbGFzcygpXSkKLSAgICAgICAgcmV0dXJuIHRvSlMoY29udGV4dCwgV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KHZh
bHVlKSkuZ2V0KCkpOworICAgICAgICByZXR1cm4gdG9KUyhjb250ZXh0LCBXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4odmFs
dWUpKS5wdHIoKSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkg
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuIG1ha2VPYmplY3RSZWZGb3JEaWN0aW9uYXJ5KGNvbnRl
eHQsIHZhbHVlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3Nd
XSkKQEAgLTE4OSw3ICsxODksNyBAQCAtICh2b2lkKV9ub3RpZmljYXRpb25SZWNlaXZlZDooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KICAgICB9IGVsc2UgewogICAgICAgICAvLyBBIGds
b2JhbCBsaXN0ZW5lciBnZXRzIHRoZSBlbGVtZW50LCBub3RpZmljYXRpb24gbmFtZSBhbmQgdXNl
ckluZm8uCiAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzNdOwotICAgICAgICBhcmd1bWVu
dHNbMF0gPSB0b0pTKGNvbnRleHQsIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRl
KFtub3RpZmljYXRpb24gb2JqZWN0XSkuZ2V0KCkpOworICAgICAgICBhcmd1bWVudHNbMF0gPSB0
b0pTKGNvbnRleHQsIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtub3RpZmlj
YXRpb24gb2JqZWN0XSkucHRyKCkpOwogICAgICAgICBhcmd1bWVudHNbMV0gPSBub3RpZmljYXRp
b25OYW1lQXJndW1lbnQ7CiAgICAgICAgIGFyZ3VtZW50c1syXSA9IHVzZXJJbmZvQXJndW1lbnQ7
CiAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgY29uc3RfY2FzdDxKU09i
amVjdFJlZj4obV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSwgMCwgMywgYXJndW1lbnRz
LCAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGQ3
MzYyZDU5YjIwNDk0YzJlNzU5NjlmMWFkMTMwMTNjYmZmY2E5MWEuLjBjMTgyZTAwNmZhYzU1ZTlh
ZTVmZWViYjhiYTI4NjcwMWY2MjMwM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQpAQCAtNDAyLDExICs0MDIsMTEgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQogICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7CiB9CiAK
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQg
eSkKIHsKICAgICBpZCBlbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpO
U01ha2VQb2ludCh4LCB5KV07CiAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gbmls
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQpOwogfQpAQCAtNDE2LDkgKzQxNiw5IEBAIHVuc2ln
bmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmRl
eE9mQ2hpbGQ6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CiB9CiAKLVBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gY2hpbGRyZW47CiAgICAgZ2V0Q2hp
bGRyZW5XaXRoUmFuZ2UoY2hpbGRyZW4sIGluZGV4LCAxKTsKIAogICAgIGlmIChjaGlsZHJlbi5z
aXplKCkgPT0gMSkKQEAgLTQyNiw3ICs0MjYsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVt
ZW50c0F0dHJpYnV0ZV07CkBAIC00MzcsNyArNDM3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdElu
ZGUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU93bnNBdHRy
aWJ1dGVdOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRlCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVt
ZW50c0F0dHJpYnV0ZV07CkBAIC00NTksNyArNDU5LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0
SW4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRl
eCh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiBhcmlhQ29u
dHJvbHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQUNv
bnRyb2xzIl07CkBAIC00NjksNyArNDY5LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXQKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVd
OwpAQCAtNDgwLDcgKzQ4MCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRl
eCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBO
U0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CkBAIC00OTEsNyArNDkxLDcgQEAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdElu
ZGV4KHVuc2lnbmVkIGkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxk
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0Fy
cmF5KiBhcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwpAQCAtNTExLDcgKzUxMSw3IEBA
IHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCgp
IGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRl
XTsKQEAgLTUyMiw3ICs1MjIsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bgogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRp
dGxlVUlFbGVtZW50QXR0cmlidXRlXTsKQEAgLTUzMyw3ICs1MzMsNyBAQCBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVt
ZW50KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBhY2Nlc3Np
YmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlXTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVu
dEVsZW1lbnQoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpk
aXNjbG9zZWRCeVJvdygpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQg
YWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXTsKQEAgLTYxNCw3ICs2
MTQsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cgogICAgIHJldHVybiBjb252ZXJ0RWxlbWVu
dHNUb09iamVjdEFycmF5KGNvbnRleHQsIGVsZW1lbnRzKTsKIH0KIAotUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwogICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07
CkBAIC0xMTgzLDcgKzExODMsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgYwogICAgIHJldHVy
biAwOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgY29u
dGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCAqc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0
aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJv
b2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQorUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCAqc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFy
Y2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1t
ZWRpYXRlRGVzY2VuZGFudHNPbmx5KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IHNlYXJjaFByZWRpY2F0
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVGb3JTZWFyY2hDcml0ZXJpYShjb250ZXh0LCBzdGFydEVs
ZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgMSwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0LCB2aXNpYmxl
T25seSwgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KTsKQEAgLTEzNDAsNyArMTM0MCw3IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRl
eFJhbmdlKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93
KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQgcm93KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQg
Y29sLCB1bnNpZ25lZCByb3cpCiB7CiAgICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y29sXSwg
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyb3ddLCBuaWxdOwogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5k
Um93KHUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3QKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250
YWxTY3JvbGxiYXIoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3QKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2VsZW1l
bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY1MCw3ICsxNjUwLDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQogfQogCiAvLyBUZXh0IG1h
cmtlcnMKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKQEAgLTE2NjAsNyArMTY2MCw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVs
ZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50IiBm
b3JQYXJhbWV0ZXI6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CkBAIC0xNjgwLDcgKzE2
ODAsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJl
dmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOwpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEEK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAg
IGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UoQWNjZXNzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIs
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCiAgICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOwpAQCAtMTcyMSw3ICsxNzIxLDcgQEAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
ZXh0TWFya2VyUmFuZ2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLVBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CkBAIC0xNzQ3LDcgKzE3NDcsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSog
cmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOwpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBy
YW5nZSkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2Vy
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCldOwpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZv
clRleHQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5k
cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJv
dW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5k
c1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJl
Y3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KV1dOwpAQCAtMTc3Nyw3ICsxNzc3LDcg
QEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW4KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVN0YXJ0VGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFy
YW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KV1dOwpAQCAtMTc4Nyw3ICsxNzg3LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm8KICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQg
eSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JQb3NpdGlvbiIgZm9yUGFyYW1ldGVyOltO
U1ZhbHVlIHZhbHVlV2l0aFBvaW50Ok5TTWFrZVBvaW50KHgsIHkpXV07CkBAIC0xNzk3LDcgKzE3
OTcsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaQogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogbWFya2VyKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogbWFya2VyKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKW1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOwpAQCAtMTg0Myw3ICsxODQzLDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
dGV4dE1hcmsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChp
bnQgdGV4dEluZGV4KQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50IHRleHRJbmRleCkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JJbmRleCIgZm9yUGFy
YW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjp0ZXh0SW5kZXhdXTsKQEAgLTE4NTMs
NyArMTg1Myw3IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAgICAgCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQorUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFya2VyIl07CkBAIC0x
ODYzLDcgKzE4NjMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyIl07CkBAIC0xODczLDcgKzE4
NzMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCldOwpAQCAtMTg4Myw3ICsxODgzLDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsZWZ0V29yZFRleHRNYXIKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJp
Z2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQg
dGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjoo
aWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwpAQCAtMTg5Myw3ICsxODkzLDcg
QEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyaWdodFdvcmRUZXh0TWEKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBwcmV2aW91c1dvcmRTdGFydE1hcmtlciA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1dvcmRTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKQEAgLTE5MDMsNyArMTkwMyw3IEBAIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzV29yZFN0
YXJ0VGV4CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRXb3JkRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRX
b3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgbmV4dFdv
cmRFbmRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTEzLDcgKzE5MTMsNyBAQCBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0V29yZEVuZFRleHRNYXJrZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBh
cmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3Vz
UGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogdGV4dE1hcmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBp
ZCBwcmV2aW91c1BhcmFncmFwaFN0YXJ0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBpZCBuZXh0UGFyYWdy
YXBoRW5kTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WE5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihp
ZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CkBAIC0xOTQzLDcgKzE5NDMsNyBA
QCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4dAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9y
VGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcgogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlv
dXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
aWQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CkBAIC0xOTYzLDcgKzE5NjMsNyBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcgogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgaWQgbmV4dFBhcmFncmFw
aEVuZE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhO
ZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwuY3BwCmluZGV4IDM4YWUwNGY3OWI2OWNi
YmY3NTBiMTJhOWVmYWIxY2E1YTU4OWQ1Y2IuLjVmZWYwMjliOTExMGVjYjIwOWEzNDQxNzI2OWM2
YmQ2MWNlY2E3YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50
U2VuZGVyUHJveHlFZmwuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50
U2VuZGVyUHJveHlFZmwuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hNb3VzZVNjcm9sbEJ5RXZlbnQoRXZhcyogZXZhcywgaW50IGhvcml6b250YWwsIGludCB2ZXJ0
aWNhbCkKICAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAsIHZlcnRp
Y2FsLCAwLCAwKTsKIH0KIAotc3RhdGljIGNvbnN0IFBhc3NSZWZQdHI8S2V5RXZlbnRJbmZvPiBr
ZXlQYWROYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKK3N0YXRpYyBjb25zdCBSZWZQdHI8S2V5RXZl
bnRJbmZvPiBrZXlQYWROYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKIHsKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJsZWZ0QXJyb3ciKSkKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBLZXlFdmVudEluZm8oIktQX0xlZnQiLCAiIikpOwpAQCAtMTk2LDcg
KzE5Niw3IEBAIHN0YXRpYyBjb25zdCBQYXNzUmVmUHRyPEtleUV2ZW50SW5mbz4ga2V5UGFkTmFt
ZShXS1N0cmluZ1JlZiBrZXlSZWYpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBLZXlFdmVudElu
Zm8oYnVmZmVyLmdldCgpLCBidWZmZXIuZ2V0KCkpKTsKIH0KIAotc3RhdGljIGNvbnN0IFBhc3NS
ZWZQdHI8S2V5RXZlbnRJbmZvPiBrZXlOYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKK3N0YXRpYyBj
b25zdCBSZWZQdHI8S2V5RXZlbnRJbmZvPiBrZXlOYW1lKFdLU3RyaW5nUmVmIGtleVJlZikKIHsK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJsZWZ0QXJyb3ci
KSkKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBLZXlFdmVudEluZm8oIkxlZnQiLCAiIikp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>