<?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>101263</bug_id>
          
          <creation_ts>2012-11-05 14:58:06 -0800</creation_ts>
          <short_desc>AX: MathML types need to be semantically identified in AX tree</short_desc>
          <delta_ts>2012-11-13 15:30:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>abarth</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bdakin</cc>
    
    <cc>davidc</cc>
    
    <cc>dbarton</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>jdiggs</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>758931</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-11-05 14:58:06 -0800</bug_when>
    <thetext>We need to expose the semantic MathML types through the AX tree so that screen readers can effectively output math equations.

rdar://12637680</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758939</commentid>
    <comment_count>1</comment_count>
      <attachid>172414</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-11-05 15:05:35 -0800</bug_when>
    <thetext>Created attachment 172414
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759004</commentid>
    <comment_count>2</comment_count>
      <attachid>172432</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-11-05 16:20:46 -0800</bug_when>
    <thetext>Created attachment 172432
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759006</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 16:23:23 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759007</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 16:23:45 -0800</bug_when>
    <thetext>Attachment 172432 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
Source/WebCore/rendering/mathml/RenderMathMLFenced.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 22 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>759016</commentid>
    <comment_count>5</comment_count>
      <attachid>172432</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-05 16:30:45 -0800</bug_when>
    <thetext>Comment on attachment 172432
patch

Attachment 172432 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14745225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759019</commentid>
    <comment_count>6</comment_count>
      <attachid>172432</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-05 16:31:45 -0800</bug_when>
    <thetext>Comment on attachment 172432
patch

Attachment 172432 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14726781</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759063</commentid>
    <comment_count>7</comment_count>
      <attachid>172447</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-11-05 17:07:25 -0800</bug_when>
    <thetext>Created attachment 172447
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759281</commentid>
    <comment_count>8</comment_count>
      <attachid>172447</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-11-05 22:56:33 -0800</bug_when>
    <thetext>Comment on attachment 172447
patch

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

Unofficial review looks good.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:251
&gt; +        if (r-&gt;node()-&gt;isElementNode() &amp;&amp; toElement(r-&gt;node())-&gt;isMathMLElement())

Should this line be in #if ENABLE(MATHML)? Have you tested compiling with and without this flag?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1197
&gt; +    if (isIgnoredElementWithinMathTree())

It&apos;s unfortunate to have to add yet another method that walks the whole parent chain every time accessibilityIsIgnored is called - but we can try to improve this in another change.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2433
&gt; +    if (isMathElement())

#if ENABLE(MATHML)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759849</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-11-06 10:40:53 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 172447 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172447&amp;action=review
&gt; 
&gt; Unofficial review looks good.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:251
&gt; &gt; +        if (r-&gt;node()-&gt;isElementNode() &amp;&amp; toElement(r-&gt;node())-&gt;isMathMLElement())
&gt; 
&gt; Should this line be in #if ENABLE(MATHML)? Have you tested compiling with and without this flag?
&gt; 

Doing so now

&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1197
&gt; &gt; +    if (isIgnoredElementWithinMathTree())
&gt; 
&gt; It&apos;s unfortunate to have to add yet another method that walks the whole parent chain every time accessibilityIsIgnored is called - but we can try to improve this in another change.

https://bugs.webkit.org/show_bug.cgi?id=101370

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2433
&gt; &gt; +    if (isMathElement())
&gt; 
&gt; #if ENABLE(MATHML)

This one is actually OK since isMathElement() is just on AXObject and returns false by default without any MathML requirements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765940</commentid>
    <comment_count>10</comment_count>
      <attachid>172447</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-11-13 12:36:16 -0800</bug_when>
    <thetext>Comment on attachment 172447
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3548
&gt; +    if (node()-&gt;hasTagName(MathMLNames::munderTag) || node()-&gt;hasTagName(MathMLNames::munderoverTag))

Do you need to null-check node() here?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3563
&gt; +    if (node()-&gt;hasTagName(MathMLNames::moverTag))

Do you need to null-check node() here?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3593
&gt; +    if (node()-&gt;hasTagName(MathMLNames::msubTag) || node()-&gt;hasTagName(MathMLNames::msubsupTag))

Do you need to null-check node() here?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3608
&gt; +    if (node()-&gt;hasTagName(MathMLNames::msupTag))

Do you need to null-check node() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766108</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-11-13 15:30:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134496</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172414</attachid>
            <date>2012-11-05 15:05:35 -0800</date>
            <delta_ts>2012-11-05 16:20:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>61608</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCShyZXZpc2lvbiAxMzI5MTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3
IEBACiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlSW1h
Z2VNYXBMaW5rLCBJbWFnZU1hcExpbmtSb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVJbWFnZU1hcCwgSW1hZ2VNYXBSb2xlKTsKIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVMaXN0TWFya2VyLCBMaXN0
TWFya2VyUm9sZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxp
dHlSb2xlTWF0aEVsZW1lbnQsIE1hdGhFbGVtZW50Um9sZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlV2ViQXJlYSwgV2ViQXJlYVJvbGUpOwogQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUhlYWRpbmcsIEhl
YWRpbmdSb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0
eVJvbGVMaXN0Qm94LCBMaXN0Qm94Um9sZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTMzNTMxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0wNSAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBNYXRoTUwgdHlwZXMgbmVl
ZCB0byBiZSBzZW1hbnRpY2FsbHkgaWRlbnRpZmllZCBpbiBBWCB0cmVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyNjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmls
aXR5Um9sZS5oOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAg
ICAgICAgIEFkZCBuZXcgYWNjZXNzaWJpbGl0eSByb2xlLgorCiAyMDEyLTExLTA1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1Y4XSBJbnRydXNpdmVET01XcmFw
cGVyTWFwIHNob3VsZCBiZSB1c2FibGUgZm9yIG1vcmUgdGhhbiBqdXN0IE5vZGVzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlS
b2xlLmgJKHJldmlzaW9uIDEzMjkxNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAK
ICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3RCb3hPcHRpb24sCiAgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVMaXN0SXRlbSwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3RNYXJrZXIsCisg
ICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVNYXRoRWxlbWVudCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5
Um9sZU1hdHRlLAogICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWVudSwKICAgICBXZWJBY2Nlc3Np
YmlsaXR5Um9sZU1lbnVCYXIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzM1MzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMzEgQEAK
KzIwMTItMTEtMDUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAg
ICAgICBBWDogTWF0aE1MIHR5cGVzIG5lZWQgdG8gYmUgc2VtYW50aWNhbGx5IGlkZW50aWZpZWQg
aW4gQVggdHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAxMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2VtYW50aWNhbGx5IGlkZW50aWZ5IHZhcmlvdXMgTWF0aE1MIGVsZW1lbnRzIHdpdGhpbiB0
aGUgQVggdHJlZS4gVGhpcyB3aWxsIGFsbG93CisgICAgICAgIHNjcmVlbiByZWFkZXJzIHRvIGlk
ZW50aWZ5IG1hdGggdHlwZXMgc28gdGhhdCBlcXVhdGlvbnMgY2FuIGJlIG91dHB1dCBtb3JlIGFj
Y3VyYXRlbHkuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0
aG1sLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhSb3cpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVW5kZXJPdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFJvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoU3F1YXJlUm9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhGZW5jZU9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aElkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVSb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhSYWRpY2FuZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoUm9vdEluZGV4T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJh
dG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhE
ZW5vbWluYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRoU3Vic2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkT3BlblN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzdGFydE9mQ29udGludWF0aW9ucyk6CisgICAgICAgICAgICBIYW5kbGUgYSBjYXNlIHdo
ZXJlIGEgTWF0aE1MIHJlbmRlciBlbGVtZW50IGlzIGNyZWF0ZWQgd2l0aCB0aGUgbm9kZSBvZiB0
aGVpciBwYXJlbnQgKHdoaWNoIGNvdWxkIGxlYWQgdG8gYW4gYXNzZXJ0KS4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQpOgorICAg
ICAgICAgICAgSGFuZGxlIHRoZSBjYXNlcyBmb3IgUmVuZGVyTWF0aE1MT3BlcmF0b3JzIHdoaWNo
IHVzZSB0aGUgbm9kZSBvZiB0aGVpciBwYXJlbnQsIHdoaWNoIGNvbmZ1c2VzIHRoZSBub3JtYWwg
dGV4dFVuZGVyRWxlbWVudCgpIHJvdXRpbmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgICAgIEhh
bmRsZSBpZ25vcmVkIGNhc2VzIGZvciBtYXRoIGVsZW1lbnRzCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aEZy
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
TWF0aEZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhSb3cpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVW5kZXJPdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFNxdWFyZVJvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoUm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhPcGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhGZW5jZU9w
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
TWF0aFNlcGFyYXRvck9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmlzTWF0aFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVSb3cpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSWdub3JlZEVsZW1l
bnRXaXRoaW5NYXRoVHJlZSk6CisgICAgICAgICAgICBNYWtlIHN1cmUgYW5vbnltb3VzZSBibG9j
a3MgYXJlIGlnbm9yZWQgd2l0aGluIG1hdGggdHJlZTsgbWFrZSBzdXJlIG5vbi1lbGVtZW50IHR5
cGUgb2JqZWN0cyBhcmUgaWdub3JlZCAobGlrZSA8bXN0eWxlPikuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoUmFkaWNhbmRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFJvb3RJbmRleE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoTnVt
ZXJhdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om1hdGhEZW5vbWluYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aE92ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoU3VwZXJz
Y3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6bWF0aEZlbmNlZE9wZW5TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWF0aEZlbmNlZENsb3NlU3RyaW5nKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAg
IChjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIHN1YnJvbGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxGZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MUm9vdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjppc1JlbmRlck1hdGhNTFN1YlN1cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxVbmRlck92
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnNldElnbm9yZUluQWNj
ZXNzaWJpbGl0eVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Omln
bm9yZUluQWNjZXNzaWJpbGl0eVRyZWUpOgorICAgICAgICAgICAgQWRkIGFiaWxpdHkgdG8gaWRl
bnRpZnkgYW5vbnltb3VzIHJlbmRlciBibG9ja3MgYXMgaXRlbXMgdGhhdCBBWCBzaG91bGQgaWdu
b3JlLgorICAgICAgICAoUmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAgICAgSWRlbnRpZnkg
d2hpY2gga2luZCBvZiBtYXRoIG9wZXJhdG9yIGlzIGJlaW5nIGNyZWF0ZWQgb24gdGhlIGZseSAo
RmVuY2Ugb3IgU2VwYXJhdG9yKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2Vk
OjptYWtlRmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6YWRk
Q2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OmlzUmVuZGVyTWF0aE1MRmVu
Y2VkKToKKyAgICAgICAgKFJlbmRlck1hdGhNTEZlbmNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRnJhY3Rpb246OmlzUmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlR2x5cGgpOgorICAgICAgICAg
ICAgIE1hcmsgYW5vbnltb3VzIHJlbmRlciBibG9ja3MgYXMgQVggaWdub3JlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c2V0T3BlcmF0b3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpvcGVyYXRvclR5cGUpOgorICAgICAgICAoUmVu
ZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6aXNSZW5kZXJN
YXRoTUxSb290KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OmlzUmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTdWJTdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6aXNS
ZW5kZXJNYXRoTUxTdWJTdXApOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6
OmlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKToKKwogMjAxMi0xMS0wNSAgUGVuZyBIdWFuZyAgPHBl
bmdodWFuZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFdlYmtpdCBkb2VzIG5vdCBoYW5kbGUgc29t
ZSBtZWRpYSBrZXlzIGNvcnJlY3RseSBPbiBMaW51eCBndGsgcGxhdGZvcm0uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gMTMyOTE1KQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMzOCw2ICszMzgsMTkgQEAKICNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYSW5kZXhG
b3JUZXh0TWFya2VyIgogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyRm9ySW5kZXhQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhUZXh0TWFya2VyRm9ySW5kZXgiCiAKKy8vIE1hdGgg
YXR0cmlidXRlcworI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJhZGljYW5kQXR0cmli
dXRlIEAiQVhNYXRoUm9vdFJhZGljYW5kIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUm9v
dEluZGV4QXR0cmlidXRlIEAiQVhNYXRoUm9vdEluZGV4IgorI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlNYXRoRnJhY3Rpb25EZW5vbWluYXRvckF0dHJpYnV0ZSBAIkFYTWF0aEZyYWN0aW9uRGVub21p
bmF0b3IiCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVyYXRvckF0dHJp
YnV0ZSBAIkFYTWF0aEZyYWN0aW9uTnVtZXJhdG9yIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlN
YXRoQmFzZUF0dHJpYnV0ZSBAIkFYTWF0aEJhc2UiCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1h
dGhTdWJzY3JpcHRBdHRyaWJ1dGUgQCJBWE1hdGhTdWJzY3JpcHQiCisjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eU1hdGhTdXBlcnNjcmlwdEF0dHJpYnV0ZSBAIkFYTWF0aFN1cGVyc2NyaXB0IgorI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoVW5kZXJBdHRyaWJ1dGUgQCJBWE1hdGhVbmRlciIKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aE92ZXJBdHRyaWJ1dGUgQCJBWE1hdGhPdmVyIgorI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZSBAIkFYTWF0aEZlbmNl
ZE9wZW4iCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRDbG9zZUF0dHJpYnV0ZSBA
IkFYTWF0aEZlbmNlZENsb3NlIgorCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3Np
YmlsaXR5QXJyYXlDYXRlZ29yeSkKIAogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhP
ZkNoaWxkOihpZCljaGlsZDsKQEAgLTk5Nyw2ICsxMDEwLDI3IEBACiAgICAgaWYgKG1fb2JqZWN0
LT5hcmlhSGFzUG9wdXAoKSkKICAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUhhc1BvcHVwQXR0cmlidXRlXTsKICAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzTWF0
aFJvb3QoKSkgeworICAgICAgICAvLyBUaGUgaW5kZXggb2YgYSBzcXVhcmUgcm9vdCBpcyBhbHdh
eXMga25vd24sIHNvIHRoZXJlJ3Mgbm8gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBpdC4KKyAgICAg
ICAgaWYgKCFtX29iamVjdC0+aXNNYXRoU3F1YXJlUm9vdCgpKQorICAgICAgICAgICAgW2FkZGl0
aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhSb290SW5kZXhBdHRyaWJ1dGVdOwor
ICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRp
Y2FuZEF0dHJpYnV0ZV07CisgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNNYXRoRnJhY3Rpb24o
KSkgeworICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEZy
YWN0aW9uTnVtZXJhdG9yQXR0cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbkRlbm9taW5hdG9yQXR0cmlidXRlXTsKKyAgICB9
IGVsc2UgaWYgKG1fb2JqZWN0LT5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpKSB7CisgICAg
ICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoQmFzZUF0dHJpYnV0
ZV07CisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoU3Vi
c2NyaXB0QXR0cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eU1hdGhTdXBlcnNjcmlwdEF0dHJpYnV0ZV07CisgICAgfSBlbHNlIGlmIChtX29iamVj
dC0+aXNNYXRoVW5kZXJPdmVyKCkpIHsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhVbmRlckF0dHJpYnV0ZV07CisgICAgICAgIFthZGRp
dGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoT3ZlckF0dHJpYnV0ZV07CisgICAg
fSBlbHNlIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkpIHsKKyAgICAgICAgW2FkZGl0aW9u
YWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRlXTsKKyAg
ICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRDbG9z
ZUF0dHJpYnV0ZV07CisgICAgfQorCiAgICAgcmV0dXJuIGFkZGl0aW9uYWw7CiB9CiAKQEAgLTE1
OTgsNyArMTYzMiw4IEBACiAgICAgICAgIHsgVG9nZ2xlQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmls
aXR5QnV0dG9uUm9sZSB9LAogICAgICAgICB7IENhbnZhc1JvbGUsIE5TQWNjZXNzaWJpbGl0eUlt
YWdlUm9sZSB9LAogICAgICAgICB7IFNWR1Jvb3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBMZWdlbmRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQor
ICAgICAgICB7IExlZ2VuZFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAg
ICB7IE1hdGhFbGVtZW50Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0KICAgICB9Owog
ICAgIEFjY2Vzc2liaWxpdHlSb2xlTWFwJiByb2xlTWFwID0gKm5ldyBBY2Nlc3NpYmlsaXR5Um9s
ZU1hcDsKICAgICAKQEAgLTE3MTUsNiArMTc1MCw0MSBAQAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIAorICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gTWF0aEVsZW1lbnRS
b2xlKSB7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRnJhY3Rpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybiBAIkFYTWF0aEZyYWN0aW9uIjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01h
dGhGZW5jZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aEZlbmNlZCI7CisgICAgICAg
IGlmIChtX29iamVjdC0+aXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSkKKyAgICAgICAgICAg
IHJldHVybiBAIkFYTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0IjsKKyAgICAgICAgaWYgKG1fb2Jq
ZWN0LT5pc01hdGhSb3coKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFJvdyI7CisgICAg
ICAgIGlmIChtX29iamVjdC0+aXNNYXRoVW5kZXJPdmVyKCkpCisgICAgICAgICAgICByZXR1cm4g
QCJBWE1hdGhVbmRlck92ZXIiOworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFNxdWFyZVJv
b3QoKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFNxdWFyZVJvb3QiOworICAgICAgICBp
ZiAobV9vYmplY3QtPmlzTWF0aFJvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFJv
b3QiOworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFRleHQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBAIkFYTWF0aFRleHQiOworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aE51bWJlcigp
KQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoTnVtYmVyIjsKKyAgICAgICAgaWYgKG1fb2Jq
ZWN0LT5pc01hdGhJZGVudGlmaWVyKCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhJZGVu
dGlmaWVyIjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhUYWJsZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIEAiQVhNYXRoVGFibGUiOworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFRh
YmxlUm93KCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhUYWJsZVJvdyI7CisgICAgICAg
IGlmIChtX29iamVjdC0+aXNNYXRoVGFibGVDZWxsKCkpCisgICAgICAgICAgICByZXR1cm4gQCJB
WE1hdGhUYWJsZUNlbGwiOworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aEZlbmNlT3BlcmF0
b3IoKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aEZlbmNlT3BlcmF0b3IiOworICAgICAg
ICBpZiAobV9vYmplY3QtPmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkpCisgICAgICAgICAgICBy
ZXR1cm4gQCJBWE1hdGhTZXBhcmF0b3JPcGVyYXRvciI7CisgICAgICAgIGlmIChtX29iamVjdC0+
aXNNYXRoT3BlcmF0b3IoKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aE9wZXJhdG9yIjsK
KyAgICB9CisgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc01lZGlhVGltZWxpbmUoKSkKICAgICAg
ICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVRpbWVsaW5lU3Vicm9sZTsKIApAQCAtMjUyNiw2ICsy
NTk2LDMyIEBACiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmpl
Y3QtPmFyaWFMaXZlUmVnaW9uQXRvbWljKCldOwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUJ1c3lBdHRyaWJ1dGVdKQogICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5hcmlhTGl2ZVJlZ2lvbkJ1
c3koKV07CisKKyAgICAvLyBNYXRoTUwgQXR0cmlidXRlcy4KKyAgICBpZiAobV9vYmplY3QtPmlz
TWF0aEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhSb290SW5kZXhBdHRyaWJ1dGVdKQorICAgICAgICAgICAg
cmV0dXJuIChtX29iamVjdC0+bWF0aFJvb3RJbmRleE9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRo
Um9vdEluZGV4T2JqZWN0KCktPndyYXBwZXIoKSA6IDA7CisgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRpY2FuZEF0dHJp
YnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoUmFkaWNhbmRPYmplY3Qo
KSkgPyBtX29iamVjdC0+bWF0aFJhZGljYW5kT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7CisgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0
aEZyYWN0aW9uTnVtZXJhdG9yQXR0cmlidXRlXSkKKyAgICAgICAgICAgIHJldHVybiAobV9vYmpl
Y3QtPm1hdGhOdW1lcmF0b3JPYmplY3QoKSkgPyBtX29iamVjdC0+bWF0aE51bWVyYXRvck9iamVj
dCgpLT53cmFwcGVyKCkgOiAwOworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbkRlbm9taW5hdG9yQXR0cmlidXRlXSkK
KyAgICAgICAgICAgIHJldHVybiAobV9vYmplY3QtPm1hdGhEZW5vbWluYXRvck9iamVjdCgpKSA/
IG1fb2JqZWN0LT5tYXRoRGVub21pbmF0b3JPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKKyAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRo
QmFzZUF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoQmFzZU9i
amVjdCgpKSA/IG1fb2JqZWN0LT5tYXRoQmFzZU9iamVjdCgpLT53cmFwcGVyKCkgOiAwOworICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1h
dGhTdWJzY3JpcHRBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0
aFN1YnNjcmlwdE9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRoU3Vic2NyaXB0T2JqZWN0KCktPndy
YXBwZXIoKSA6IDA7CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlXSkKKyAgICAgICAgICAgIHJl
dHVybiAobV9vYmplY3QtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRo
U3VwZXJzY3JpcHRPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKKyAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoVW5kZXJBdHRyaWJ1dGVd
KQorICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aFVuZGVyT2JqZWN0KCkpID8gbV9v
YmplY3QtPm1hdGhVbmRlck9iamVjdCgpLT53cmFwcGVyKCkgOiAwOworICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhPdmVyQXR0cmli
dXRlXSkKKyAgICAgICAgICAgIHJldHVybiAobV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCkpID8g
bV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7CisgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZE9w
ZW5BdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5tYXRoRmVuY2VkT3Bl
blN0cmluZygpOworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRDbG9zZUF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1
cm4gbV9vYmplY3QtPm1hdGhGZW5jZWRDbG9zZVN0cmluZygpOworICAgIH0KICAgICAKICAgICAv
LyB0aGlzIGlzIHVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSBmb3IgdGVzdGluZwogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWENsaWNrUG9pbnQiXSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCShyZXZpc2lvbiAxMzI5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBACiAg
ICAgTGlzdEJveE9wdGlvblJvbGUsCiAgICAgTGlzdEl0ZW1Sb2xlLAogICAgIExpc3RNYXJrZXJS
b2xlLAorICAgIE1hdGhFbGVtZW50Um9sZSwKICAgICBNYXR0ZVJvbGUsCiAgICAgTWVudVJvbGUs
CiAgICAgTWVudUJhclJvbGUsCkBAIC03MzcsNiArNzM4LDQ2IEBACiAgICAgLy8gRmlyZXMgYSBj
aGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlmIHRoZSBpc0lnbm9y
ZWQgdmFsdWUgY2hhbmdlZC4KICAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgp
OwogCisgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0aEVsZW1l
bnQoKS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb290KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0aFRleHQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlT3Bl
cmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhT
ZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAK
KyAgICAvLyBSb290IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIAor
ICAgIC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhVbmRlck9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgeyByZXR1cm4gMDsgfQorCisgICAgLy8g
RnJhY3Rpb24gY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1h
dGhOdW1lcmF0b3JPYmplY3QoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSB7IHJldHVybiAwOyB9CisKKyAgICAv
LyBTdWJzY3JpcHQvc3VwZXJzY3JpcHQgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgp
IHsgcmV0dXJuIDA7IH0KKyAgICAKKyAgICAvLyBGZW5jZWQgY29tcG9uZW50cy4KKyAgICB2aXJ0
dWFsIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9CisgICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KKyAgICAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTMyOTE1KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw2ICsyNzcsNTIgQEAKICAgICB2aXJ0dWFsIGJvb2wgYXJpYUxpdmVSZWdp
b25CdXN5KCkgY29uc3Q7ICAgIAogICAgIAogICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25h
bFJvbGUoKSBjb25zdDsKKyAgICAKKyNpZiBFTkFCTEUoTUFUSE1MKQorICAgIC8vIEFsbCBtYXRo
IGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBpc01hdGhFbGVtZW50KCkuCisgICAgdmlydHVhbCBi
b29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rp
b24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGlzTWF0aFJvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRl
ck92ZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aFRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTnVtYmVyKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGlzTWF0aEZlbmNlT3BlcmF0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
YXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoSWRl
bnRpZmllcigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdDsKKyAgICAKKyAgICAvLyBHZW5lcmljIGNvbXBvbmVu
dHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpOwor
ICAgIAorICAgIC8vIFJvb3QgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpOworICAgIAorICAgIC8vIEZyYWN0aW9uIGNvbXBv
bmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2Jq
ZWN0KCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JP
YmplY3QoKTsKKworICAgIC8vIFVuZGVyIG92ZXIgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogbWF0aE92ZXJPYmplY3QoKTsKKyAgICAKKyAgICAvLyBTdWJzY3JpcHQv
c3VwZXJzY3JpcHQgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG1hdGhTdWJzY3JpcHRPYmplY3QoKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpOworICAgIAorICAgIC8vIEZlbmNlZCBjb21wb25lbnRz
LgorICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Q7CisKKyAgICBib29s
IGlzSWdub3JlZEVsZW1lbnRXaXRoaW5NYXRoVHJlZSgpIGNvbnN0OworI2VuZGlmCiB9OwogCiBp
bmxpbmUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogdG9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAkocmV2aXNpb24gMTMyOTE1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOCBA
QAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5oIgog
I2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9j
ay5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TWVudUxpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dENvbnRyb2wuaCIKQEAgLTI0Miw4ICsyNDQsMTUgQEAKIAogc3RhdGljIGlubGluZSBSZW5kZXJJ
bmxpbmUqIHN0YXJ0T2ZDb250aW51YXRpb25zKFJlbmRlck9iamVjdCogcikKIHsKLSAgICBpZiAo
ci0+aXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpCisgICAgaWYgKHItPmlzSW5saW5lRWxl
bWVudENvbnRpbnVhdGlvbigpKSB7CisgICAgICAgIC8vIE1hdGhNTCBlbGVtZW50cyBtYWtlIGFu
b255bW91cyBSZW5kZXJPYmplY3RzLCB0aGVuIHNldCB0aGVpciBub2RlIHRvIHRoZSBwYXJlbnQn
cyBub2RlLgorICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHNvIHRoYXQgdGhlIHJlbmRlcmVyKCkg
IT0gcmVuZGVyZXIoKS0+bm9kZSgpLT5yZW5kZXJlcigpCisgICAgICAgIC8vICh3aGljaCBpcyB3
aGF0IGlzSW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpIHVzZXMgYXMgYSBkZXRlcm1pbmFudCku
CisgICAgICAgIGlmIChyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQoci0+
bm9kZSgpKS0+aXNNYXRoTUxFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgCiAgICAgICAgIHJldHVybiB0b1JlbmRlcklubGluZShyLT5ub2RlKCktPnJlbmRlcmVyKCkp
OworICAgIH0KIAogICAgIC8vIEJsb2NrcyB3aXRoIGEgcHJldmlvdXMgY29udGludWF0aW9uIGFs
d2F5cyBoYXZlIGEgbmV4dCBjb250aW51YXRpb24KICAgICBpZiAoci0+aXNSZW5kZXJCbG9jaygp
ICYmIHRvUmVuZGVyQmxvY2sociktPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkKQEAgLTYx
Nyw2ICs2MjYsMTggQEAKICAgICAgICAgcmV0dXJuIHRvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wo
bV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IG1fcmVu
ZGVyZXItPm5vZGUoKTsKKworI2lmIEVOQUJMRShNQVRITUwpCisgICAgLy8gTWF0aCBvcGVyYXRv
cnMgY3JlYXRlIFJlbmRlclRleHQgbm9kZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3QgdGllZCBp
bnRvIHRoZSBET00gaW4gYSByZWFzb25hYmxlIHdheSwKKyAgICAvLyBzbyByYW5nZU9mQ29udGVu
dHMgZG9lcyBub3Qgd29yayBmb3IgdGhlbSAobm9yIGRvZXMgcmVndWxhciB0ZXh0IHNlbGVjdGlv
bikuCisgICAgaWYgKG1fcmVuZGVyZXItPmlzVGV4dCgpICYmIGlzTWF0aEVsZW1lbnQoKSkgewor
ICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogcGFyZW50ID0gbV9yZW5kZXJlci0+cGFyZW50KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkgeworICAgICAgICAgICAgaWYgKHBh
cmVudC0+aXNSZW5kZXJNYXRoTUxCbG9jaygpICYmIHRvUmVuZGVyTWF0aE1MQmxvY2socGFyZW50
KS0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKQorICAgICAgICAgICAgICAgIHJldHVybiB0b1Jl
bmRlclRleHQobV9yZW5kZXJlciktPnRleHQoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
ICAgIAogICAgIGlmIChub2RlKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAvLyBjYXRjaCBzdGFsZSBXZWJDb3Jl
QVhPYmplY3QgKHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2MDE5Nj4pCkBAIC0xMTcxLDYgKzExOTIs
MTMgQEAKICAgICBpZiAoc3VwcG9ydHNBUklBQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdp
dGhpbiB0aGUgbWF0aCB0cmVlIHRoYXQgbmVlZHMgdG8gYmUgaWdub3JlZC4KKyAgICBpZiAoaXNJ
Z25vcmVkRWxlbWVudFdpdGhpbk1hdGhUcmVlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IC8vIE90aGVyd2lzZSBhbGwgb3RoZXIgbWF0aCBlbGVtZW50cyBhcmUgaW4gdGhlIHRyZWUuCisg
ICAgaWYgKGlzTWF0aEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAg
IC8vIDxzcGFuPiB0YWdzIGFyZSBpbmxpbmUgdGFncyBhbmQgbm90IG1lYW50IHRvIGNvbnZleSBp
bmZvcm1hdGlvbiBpZiB0aGV5IGhhdmUgbm8gb3RoZXIgYXJpYQogICAgIC8vIGluZm9ybWF0aW9u
IG9uIHRoZW0uIElmIHdlIGRvbid0IGlnbm9yZSB0aGVtLCB0aGV5IG1heSBlbWl0IHNpZ25hbHMg
ZXhwZWN0ZWQgdG8gY29tZSBmcm9tCiAgICAgLy8gdGhlaXIgcGFyZW50LiBJbiBhZGRpdGlvbiwg
YmVjYXVzZSBpbmNsdWRlZCBzcGFucyBhcmUgR3JvdXBSb2xlIG9iamVjdHMsIGFuZCBHcm91cFJv
bGUKQEAgLTIzOTgsNiArMjQyNiwxMCBAQAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05h
bWUoTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXRoUm9s
ZTsKICNlbmRpZgorICAgIC8vIEl0J3Mgbm90IGNsZWFyIHdoaWNoIHJvbGUgYSBwbGF0Zm9ybSBz
aG91bGQgY2hvb3NlIGZvciBhIG1hdGggZWxlbWVudC4KKyAgICAvLyBEZWNsYXJpbmcgYSBtYXRo
IGVsZW1lbnQgcm9sZSBzaG91bGQgZ2l2ZSBmbGV4aWJpbGl0eSB0byBwbGF0Zm9ybXMgdG8gY2hv
b3NlLgorICAgIGlmIChpc01hdGhFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBNYXRoRWxlbWVu
dFJvbGU7CiAgICAgCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkZFRhZykpCiAg
ICAgICAgIHJldHVybiBEZWZpbml0aW9uTGlzdERlZmluaXRpb25Sb2xlOwpAQCAtMzI4Niw0ICsz
MzE4LDMxNSBAQAogICAgIGxheWVyLT5zY3JvbGxUb09mZnNldCh0b1NpemUocG9pbnQpLCBSZW5k
ZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiB9CiAKKyNpZiBFTkFCTEUoTUFUSE1MKQor
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhFbGVtZW50KCkgY29uc3QKK3sK
KyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbV9yZW5kZXJlciB8fCAh
bm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBub2RlLT5pc0Vs
ZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5pc01hdGhNTEVsZW1lbnQoKTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhGcmFjdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2Nr
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJNYXRo
TUxCbG9jayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxGcmFjdGlvbigpOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aEZlbmNlZCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJNYXRoTUxCbG9j
ayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxGZW5jZWQoKTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2Nr
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJNYXRo
TUxCbG9jayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxTdWJTdXAoKTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhSb3coKSBjb25zdAoreworICAgIGlmICgh
bV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxvY2sobV9y
ZW5kZXJlciktPmlzUmVuZGVyTWF0aE1MUm93KCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNNYXRoVW5kZXJPdmVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVy
ZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIHJldHVybiB0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIp
LT5pc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJl
ciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxvY2sobV9yZW5kZXJlcikt
PmlzUmVuZGVyTWF0aE1MU3F1YXJlUm9vdCgpOworfQorICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc01hdGhSb290KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIg
fHwgIW1fcmVuZGVyZXItPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIHJldHVybiB0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5p
c1JlbmRlck1hdGhNTFJvb3QoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc01hdGhPcGVyYXRvcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3Jl
bmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IGEgcmVuZGVyIE1hdGhNTCBv
cGVyYXRvciBiZWNhdXNlCisgICAgLy8gTWF0aE1MIHdpbGwgY3JlYXRlIE1hdGhNTEJsb2NrcyBh
bmQgdXNlIHRoZSBvcmlnaW5hbCBub2RlIGFzIHRoZSBub2RlCisgICAgLy8gb2YgdGhpcyBuZXcg
YmxvY2sgdGhhdCBpcyBub3QgdGllZCB0byB0aGUgRE9NLgorICAgIGlmICghdG9SZW5kZXJNYXRo
TUxCbG9jayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIGlzTWF0aEVsZW1lbnQoKSAmJiBub2RlKCkt
Pmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRl
cmVyKS0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIG1hdGhPcGVyYXRvciA9IHRvUmVuZGVyTWF0
aE1MT3BlcmF0b3IodG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRlcmVyKSk7CisgICAgcmV0dXJu
IG1hdGhPcGVyYXRvci0+b3BlcmF0b3JUeXBlKCkgPT0gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OkZl
bmNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFNlcGFyYXRv
ck9wZXJhdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXIt
PmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlmICghdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxPcGVy
YXRvcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IqIG1hdGhPcGVyYXRvciA9IHRvUmVuZGVyTWF0aE1MT3BlcmF0b3IodG9SZW5kZXJNYXRo
TUxCbG9jayhtX3JlbmRlcmVyKSk7CisgICAgcmV0dXJuIG1hdGhPcGVyYXRvci0+b3BlcmF0b3JU
eXBlKCkgPT0gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlNlcGFyYXRvcjsKK30KKyAgICAKK2Jvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10ZXh0VGFnKTsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhOdW1iZXIoKSBjb25z
dAoreworICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
OjptblRhZyk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoSWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05h
bWUoTWF0aE1MTmFtZXM6Om1pVGFnKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc01hdGhUYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCkt
Pmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10YWJsZVRhZyk7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVSb3coKSBjb25zdAoreworICAgIHJldHVybiBu
b2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdHJUYWcpOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10
ZFRhZyk7Cit9CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSWdub3Jl
ZEVsZW1lbnRXaXRoaW5NYXRoVHJlZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAvLyBJZ25vcmUgaXRlbXMgdGhhdCB3ZXJl
IGNyZWF0ZWQgZm9yIGxheW91dCBwdXJwb3NlcyBvbmx5LgorICAgIGlmIChtX3JlbmRlcmVyLT5p
c1JlbmRlck1hdGhNTEJsb2NrKCkgJiYgdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRlcmVyKS0+
aWdub3JlSW5BY2Nlc3NpYmlsaXR5VHJlZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIElnbm9yZSBhbm9ueW1vdXMgcmVuZGVyZXJzIGluc2lkZSBtYXRoIGJsb2Nrcy4KKyAgICBp
ZiAobV9yZW5kZXJlci0+aXNBbm9ueW1vdXMoKSkgeworICAgICAgICBmb3IgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzTWF0aEVsZW1l
bnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIE9ubHkgbWF0aCBlbGVtZW50cyB0aGF0IHdlIGV4cGxpY2l0bHkgcmVjb2duaXplIHNo
b3VsZCBiZSBpbmNsdWRlZAorICAgIC8vIFdlIGRvbid0IHdhbnQgdGhpbmdzIGxpa2UgPG1zdHls
ZT4gdG8gYXBwZWFyIGluIHRoZSB0cmVlLgorICAgIGlmIChpc01hdGhFbGVtZW50KCkpIHsKKyAg
ICAgICAgaWYgKGlzTWF0aEZyYWN0aW9uKCkgfHwgaXNNYXRoRmVuY2VkKCkgfHwgaXNNYXRoU3Vi
c2NyaXB0U3VwZXJzY3JpcHQoKSB8fCBpc01hdGhSb3coKQorICAgICAgICAgICAgfHwgaXNNYXRo
VW5kZXJPdmVyKCkgfHwgaXNNYXRoUm9vdCgpIHx8IGlzTWF0aFRleHQoKSB8fCBpc01hdGhOdW1i
ZXIoKQorICAgICAgICAgICAgfHwgaXNNYXRoT3BlcmF0b3IoKSB8fCBpc01hdGhGZW5jZU9wZXJh
dG9yKCkgfHwgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKQorICAgICAgICAgICAgfHwgaXNNYXRo
SWRlbnRpZmllcigpIHx8IGlzTWF0aFRhYmxlKCkgfHwgaXNNYXRoVGFibGVSb3coKSB8fCBpc01h
dGhUYWJsZUNlbGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoUmFkaWNhbmRPYmplY3QoKQorewor
ICAgIGlmICghaXNNYXRoUm9vdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0
aGlzLT5jaGlsZHJlbigpOworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPCAxKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICAvLyBUaGUgcmFkaWNhbmQgaXMgdGhlIHZhbHVlIGJlaW5nIHJv
b3RlZCBhbmQgbXVzdCBiZSBsaXN0ZWQgZmlyc3QuCisgICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdl
dCgpOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjptYXRoUm9vdEluZGV4T2JqZWN0KCkKK3sKKyAgICBpZiAoIWlzTWF0aFJvb3QoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY2hp
bGRyZW4uc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gVGhlIGluZGV4
IGluIGEgcm9vdCBpcyB0aGUgdmFsdWUgd2hpY2ggZGV0ZXJtaW5lcyBpZiBpdCdzIGEgc3F1YXJl
LCBjdWJlLCBldGMsIHJvb3QKKyAgICAvLyBhbmQgbXVzdCBiZSBsaXN0ZWQgc2Vjb25kLgorICAg
IHJldHVybiBjaGlsZHJlblsxXS5nZXQoKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aE51bWVyYXRvck9iamVjdCgpCit7CisgICAgaWYg
KCFpc01hdGhGcmFjdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlz
LT5jaGlsZHJlbigpOworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgCisgICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdldCgpOworfQorICAgIAorQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aERlbm9taW5h
dG9yT2JqZWN0KCkKK3sKKyAgICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgp
ICE9IDIpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBjaGlsZHJlblsxXS5n
ZXQoKTsKK30KKyAgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Om1hdGhVbmRlck9iamVjdCgpCit7CisgICAgaWYgKCFpc01hdGhVbmRlck92ZXIoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpIDwg
MikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bXVuZGVyVGFnKSB8fCBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om11bmRlcm92ZXJUYWcpKQorICAgICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6Om1hdGhPdmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIWlzTWF0aFVuZGVyT3Zl
cigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOworICAgIGlmIChjaGlsZHJlbi5zaXpl
KCkgPCAyKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAobm9kZSgpLT5oYXNUYWdO
YW1lKE1hdGhNTE5hbWVzOjptb3ZlclRhZykpCisgICAgICAgIHJldHVybiBjaGlsZHJlblsxXS5n
ZXQoKTsKKyAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdW5kZXJvdmVy
VGFnKSkKKyAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzJdLmdldCgpOworCisgICAgcmV0dXJuIDA7
Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1h
dGhCYXNlT2JqZWN0KCkKK3sKKyAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkg
JiYgIWlzTWF0aFVuZGVyT3ZlcigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOworICAg
IC8vIFRoZSBiYXNlIG9iamVjdCBpbiBxdWVzdGlvbiBpcyBhbHdheXMgdGhlIGZpcnN0IGNoaWxk
LgorICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPiAwKQorICAgICAgICByZXR1cm4gY2hpbGRyZW5b
MF0uZ2V0KCk7CisKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCgpCit7CisgICAgaWYg
KCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJl
bigpOworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zdWJUYWcpIHx8IG5vZGUo
KS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXN1YnN1cFRhZykpCisgICAgICAgIHJldHVybiBj
aGlsZHJlblsxXS5nZXQoKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFN1cGVyc2NyaXB0T2JqZWN0
KCkKK3sKKyAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IHRoaXMtPmNoaWxkcmVuKCk7CisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA8IDIpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1zdXBUYWcpKQorICAgICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CisgICAgaWYgKG5v
ZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXN1YnN1cFRhZykpCisgICAgICAgIHJldHVy
biBjaGlsZHJlblsyXS5nZXQoKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyAgICAKK1N0cmlu
ZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0
Cit7CisgICAgaWYgKCFpc01hdGhGZW5jZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
ICAgIAorICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6Om9wZW5BdHRyKTsKK30K
KworU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhGZW5jZWRDbG9zZVN0cmlu
ZygpIGNvbnN0Cit7CisgICAgaWYgKCFpc01hdGhGZW5jZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIAorICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmNsb3Nl
QXR0cik7Cit9CisKKyNlbmRpZgorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAJKHJldmlzaW9uIDEzMjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBACiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50KQogICAgICwgbV9z
dHJldGNoSGVpZ2h0KDApCiAgICAgLCBtX29wZXJhdG9yKDApCisgICAgLCBtX29wZXJhdG9yVHlw
ZShEZWZhdWx0KQogewogfQogCkBAIC01MCw2ICs1MSw3IEBACiAgICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhub2RlKQogICAgICwgbV9zdHJldGNoSGVpZ2h0KDApCiAgICAgLCBtX29wZXJhdG9yKGNv
bnZlcnRIeXBoZW5NaW51c1RvTWludXNTaWduKG9wZXJhdG9yQ2hhcikpCisgICAgLCBtX29wZXJh
dG9yVHlwZShEZWZhdWx0KQogewogfQogCkBAIC0yMDEsNiArMjAzLDggQEAKICAgICBpZiAoc3Ry
ZXRjaERpc2FibGVkIHx8ICFzaG91bGRTdGFjaykgewogICAgICAgICBtX2lzU3RhY2tlZCA9IGZh
bHNlOwogICAgICAgICBSZW5kZXJCbG9jayogY29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgp
KSBSZW5kZXJNYXRoTUxCbG9jayhub2RlKCkpOworICAgICAgICAvLyBUaGlzIGNvbnRhaW5lciBk
b2Vzbid0IG9mZmVyIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eS4KKyAg
ICAgICAgdG9SZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpLT5zZXRJZ25vcmVJbkFjY2Vzc2li
aWxpdHlUcmVlKHRydWUpOwogICAgICAgICAKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBu
ZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgbmV3U3R5bGUtPmluaGVy
aXRGcm9tKHN0eWxlKCkpOwpAQCAtMjkzLDYgKzI5Nyw3IEBACiBSZW5kZXJCbG9jayogUmVuZGVy
TWF0aE1MT3BlcmF0b3I6OmNyZWF0ZUdseXBoKFVDaGFyIGdseXBoLCBpbnQgbWF4SGVpZ2h0Rm9y
UmVuZGVyZXIsIGludCBjaGFyUmVsYXRpdmUpCiB7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5l
ciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKKyAgICB0
b1JlbmRlck1hdGhNTEJsb2NrKGNvbnRhaW5lciktPnNldElnbm9yZUluQWNjZXNzaWJpbGl0eVRy
ZWUodHJ1ZSk7CiAgICAgY29udGFpbmVyLT5zZXRTdHlsZShjcmVhdGVTdGFja2FibGVTdHlsZSht
YXhIZWlnaHRGb3JSZW5kZXJlcikpOwogICAgIGFkZENoaWxkKGNvbnRhaW5lcik7CiAgICAgUmVu
ZGVyQmxvY2sqIHBhcmVudCA9IGNvbnRhaW5lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgJKHJldmlzaW9uIDEzMjkx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTIgQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTWF0aE1MUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxGZW5jZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTEZyYWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxT
cXVhcmVSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxTdWJTdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCiAgICAgLy8gTWF0aE1MIGRlZmluZXMgYW4gImVtYmVsbGlzaGVkIG9wZXJhdG9yIiBhcyBy
b3VnaGx5IGFuIDxtbz4gdGhhdCBtYXkgaGF2ZSBzdWJzY3JpcHRzLAogICAgIC8vIHN1cGVyc2Ny
aXB0cywgdW5kZXJzY3JpcHRzLCBvdmVyc2NyaXB0cywgb3IgYSBkZW5vbWluYXRvciAoYXMgaW4g
ZC9keCwgd2hlcmUgImQiIGlzIHNvbWUKQEAgLTg3LDggKzkzLDEyIEBACiAgICAgLy8gQ3JlYXRl
IGEgbmV3IFJlbmRlck1hdGhNTEJsb2NrLCB3aXRoIGEgbmV3IHN0eWxlIGluaGVyaXRpbmcgZnJv
bSB0aGlzLT5zdHlsZSgpLgogICAgIFJlbmRlck1hdGhNTEJsb2NrKiBjcmVhdGVBbm9ueW1vdXNN
YXRoTUxCbG9jayhFRGlzcGxheSA9IEZMRVgpOwogICAgIAorICAgIHZvaWQgc2V0SWdub3JlSW5B
Y2Nlc3NpYmlsaXR5VHJlZShib29sIGZsYWcpIHsgbV9pZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVl
ID0gZmxhZzsgfQorICAgIGJvb2wgaWdub3JlSW5BY2Nlc3NpYmlsaXR5VHJlZSgpIGNvbnN0IHsg
cmV0dXJuIG1faWdub3JlSW5BY2Nlc3NpYmlsaXR5VHJlZTsgfQorICAgIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICBi
b29sIG1faWdub3JlSW5BY2Nlc3NpYmlsaXR5VHJlZTsKICAgICAKIHByb3RlY3RlZDoKICAgICAv
LyBTZXQgb3VyIGxvZ2ljYWwgd2lkdGggdG8gYSBsYXJnZSB2YWx1ZSwgYW5kIGNvbXB1dGUgb3Vy
IGNoaWxkcmVuJ3MgcHJlZmVycmVkIGxvZ2ljYWwgaGVpZ2h0cy4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJ
KHJldmlzaW9uIDEzMjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsMTEgQEAKICAg
ICB2b2lkIHN0cmV0Y2hUb0hlaWdodChpbnQgcGl4ZWxIZWlnaHQpOwogICAgIAogICAgIHZpcnR1
YWwgaW50IGZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIAor
ICAgIAorICAgIGVudW0gT3BlcmF0b3JUeXBlIHsgRGVmYXVsdCwgU2VwYXJhdG9yLCBGZW5jZSB9
OworICAgIHZvaWQgc2V0T3BlcmF0b3JUeXBlKE9wZXJhdG9yVHlwZSB0eXBlKSB7IG1fb3BlcmF0
b3JUeXBlID0gdHlwZTsgfQorICAgIE9wZXJhdG9yVHlwZSBvcGVyYXRvclR5cGUoKSBjb25zdCB7
IHJldHVybiBtX29wZXJhdG9yVHlwZTsgfQorICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwogICAgIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0YWNrYWJsZVN0eWxlKGludCBtYXhIZWlnaHRGb3JS
ZW5kZXJlcik7CkBAIC02Miw2ICs2Niw3IEBACiAgICAgaW50IG1fc3RyZXRjaEhlaWdodDsKICAg
ICBib29sIG1faXNTdGFja2VkOwogICAgIFVDaGFyIG1fb3BlcmF0b3I7CisgICAgT3BlcmF0b3JU
eXBlIG1fb3BlcmF0b3JUeXBlOwogfTsKIAogaW5saW5lIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB0
b1JlbmRlck1hdGhNTE9wZXJhdG9yKFJlbmRlck1hdGhNTEJsb2NrKiBibG9jaykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U3F1YXJlUm9vdC5oCShyZXZpc2lvbiAxMzI5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCopOwogICAgIAog
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTcXVhcmVSb290IjsgfQogfTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmgJKHJldmlzaW9uIDEzMjkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICAKIHByaXZhdGU6Cisg
ICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MRnJhY3Rpb24oKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdm9pZCBmaXhDaGlsZFN0eWxlKFJlbmRlck9iamVjdCogY2hpbGQpOwogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAkocmV2aXNp
b24gMTMyOTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxVbmRlck92ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogICAgIHZpcnR1
YWwgaW50IGZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiBwcml2
YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVW5kZXJPdmVyIjsgfQogCiAgICAgZW51bSBVbmRlck92
ZXJUeXBlIHsgVW5kZXIsIE92ZXIsIFVuZGVyT3ZlciB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkocmV2
aXNpb24gMTMyOTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGZW5jZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwyMiArODIsMjMgQEAKICAgICAg
ICAgbWFrZUZlbmNlcygpOwogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1M
RmVuY2VkOjpjcmVhdGVNYXRoTUxPcGVyYXRvcihVQ2hhciB1Q2hhciwgT3BlcmF0b3JUeXBlIG9w
ZXJhdG9yVHlwZSkKK1JlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxGZW5jZWQ6OmNy
ZWF0ZU1hdGhNTE9wZXJhdG9yKFVDaGFyIHVDaGFyLCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6T3Bl
cmF0b3JUeXBlIG9wZXJhdG9yVHlwZSkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUo
KSwgRkxFWCk7CiAgICAgbmV3U3R5bGUtPnNldEZsZXhEaXJlY3Rpb24oRmxvd0NvbHVtbik7Ci0g
ICAgbmV3U3R5bGUtPnNldE1hcmdpbkVuZChMZW5ndGgoKG9wZXJhdG9yVHlwZSA9PSBGZW5jZSA/
IGdGZW5jZU1hcmdpbkVtcyA6IGdTZXBhcmF0b3JNYXJnaW5FbmRFbXMpICogc3R5bGUoKS0+Zm9u
dFNpemUoKSwgRml4ZWQpKTsKLSAgICBpZiAob3BlcmF0b3JUeXBlID09IEZlbmNlKQorICAgIG5l
d1N0eWxlLT5zZXRNYXJnaW5FbmQoTGVuZ3RoKChvcGVyYXRvclR5cGUgPT0gUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OkZlbmNlID8gZ0ZlbmNlTWFyZ2luRW1zIDogZ1NlcGFyYXRvck1hcmdpbkVuZEVt
cykgKiBzdHlsZSgpLT5mb250U2l6ZSgpLCBGaXhlZCkpOworICAgIGlmIChvcGVyYXRvclR5cGUg
PT0gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OkZlbmNlKQogICAgICAgICBuZXdTdHlsZS0+c2V0TWFy
Z2luU3RhcnQoTGVuZ3RoKGdGZW5jZU1hcmdpbkVtcyAqIHN0eWxlKCktPmZvbnRTaXplKCksIEZp
eGVkKSk7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIG5ld09wZXJhdG9yID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxPcGVyYXRvcihub2RlKCkgLyogImFsbW9zdCBhbm9ueW1v
dXMiICovLCB1Q2hhcik7CisgICAgbmV3T3BlcmF0b3ItPnNldE9wZXJhdG9yVHlwZShvcGVyYXRv
clR5cGUpOwogICAgIG5ld09wZXJhdG9yLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwog
ICAgIHJldHVybiBuZXdPcGVyYXRvcjsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6Om1h
a2VGZW5jZXMoKQogewotICAgIFJlbmRlck1hdGhNTFJvdzo6YWRkQ2hpbGQoY3JlYXRlTWF0aE1M
T3BlcmF0b3IobV9vcGVuLCBGZW5jZSksIGZpcnN0Q2hpbGQoKSk7Ci0gICAgbV9jbG9zZUZlbmNl
UmVuZGVyZXIgPSBjcmVhdGVNYXRoTUxPcGVyYXRvcihtX2Nsb3NlLCBGZW5jZSk7CisgICAgUmVu
ZGVyTWF0aE1MUm93OjphZGRDaGlsZChjcmVhdGVNYXRoTUxPcGVyYXRvcihtX29wZW4sIFJlbmRl
ck1hdGhNTE9wZXJhdG9yOjpGZW5jZSksIGZpcnN0Q2hpbGQoKSk7CisgICAgbV9jbG9zZUZlbmNl
UmVuZGVyZXIgPSBjcmVhdGVNYXRoTUxPcGVyYXRvcihtX2Nsb3NlLCBSZW5kZXJNYXRoTUxPcGVy
YXRvcjo6RmVuY2UpOwogICAgIFJlbmRlck1hdGhNTFJvdzo6YWRkQ2hpbGQobV9jbG9zZUZlbmNl
UmVuZGVyZXIpOwogfQogCkBAIC0xMzIsNyArMTMzLDcgQEAKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBzZXBhcmF0b3IgPSAoKm1fc2VwYXJhdG9ycy5nZXQoKSlbY291bnQgLSAx
XTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHNlcGFyYXRvclJlbmRlcmVyID0gY3Jl
YXRlTWF0aE1MT3BlcmF0b3Ioc2VwYXJhdG9yLCBTZXBhcmF0b3IpOworICAgICAgICAgICAgc2Vw
YXJhdG9yUmVuZGVyZXIgPSBjcmVhdGVNYXRoTUxPcGVyYXRvcihzZXBhcmF0b3IsIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpTZXBhcmF0b3IpOwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1
YlN1cC5oCShyZXZpc2lvbiAxMzI5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBA
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJNYXRoTUxTdWJTdXAoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
dm9pZCBmaXhTY3JpcHRzU3R5bGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvb3QuaAkocmV2aXNpb24gMTMyOTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcg
QEAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBPVkVSUklERTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxS
b290KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxSb290IjsgfQogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZlbmNlZC5oCShyZXZpc2lvbiAxMzI5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKE1BVEhNTCkKIAogI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvdy5o
IgorI2luY2x1ZGUgIlJlbmRlck1hdGhNTE9wZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKQEAgLTM5LDExICs0MCwxMCBAQAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9t
RWxlbWVudCgpOwogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRo
TUxGZW5jZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZlbmNlZCI7IH0KIAot
ICAgIC8vIEZJWE1FOiBPcGVyYXRvclR5cGUgaGVyZSB3aWxsIGdvIGF3YXkgd2hlbiBkZWZhdWx0
IG9wZXJhdG9yIG1hcmdpbnMgYXJlIGRldGVybWluZWQgYnkgdGhlIE1hdGhNTCBvcGVyYXRvciBk
aWN0aW9uYXJ5LgotICAgIGVudW0gT3BlcmF0b3JUeXBlIHsgU2VwYXJhdG9yLCBGZW5jZSB9Owot
ICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBjcmVhdGVNYXRoTUxPcGVyYXRvcihVQ2hhciwgT3Bl
cmF0b3JUeXBlKTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogY3JlYXRlTWF0aE1MT3BlcmF0
b3IoVUNoYXIsIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpPcGVyYXRvclR5cGUpOwogICAgIHZvaWQg
bWFrZUZlbmNlcygpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcAkocmV2aXNpb24gMTMyOTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDcgQEAKICAgICAKIFJlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhOb2RlKiBj
b250YWluZXIpIAogICAgIDogUmVuZGVyRmxleGlibGVCb3goY29udGFpbmVyKQorICAgICwgbV9p
Z25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlKGZhbHNlKQogICAgICwgbV9pbnRyaW5zaWNQYWRkaW5n
QmVmb3JlKDApCiAgICAgLCBtX2ludHJpbnNpY1BhZGRpbmdBZnRlcigwKQogICAgICwgbV9pbnRy
aW5zaWNQYWRkaW5nU3RhcnQoMCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzUzMSkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEx
LTA1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6
IE1hdGhNTCB0eXBlcyBuZWVkIHRvIGJlIHNlbWFudGljYWxseSBpZGVudGlmaWVkIGluIEFYIHRy
ZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRz
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA1ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5j
b20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgdG8gLXdlYmtpdC1saW5lLWJyZWFrIHByb3BlcnR5
IGZvciBDU1MzIFRleHQgbGluZS1icmVhayBwcm9wZXJ0eSB2YWx1ZXMgYW5kIHNlbWFudGljcy4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1lbGVt
ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1lbGVtZW50
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI0IEBACithCisyCisKK2EK
KzIKKworYQorCiszCithCisKKzIKK2EKK2UKKworMgorc3ViCisKKzIKK3N1cAorCisyCitzdWIK
K3N1cAorCiszCit1bmRlcgorCiszCitvdmVyCisKKzMKK3VuZGVyCitvdmVyCisKKzMKKzIKKzEK
K1RoaXMgdGVzdHMgZW5zdXJlcyB0aGF0IE1hYyBzcGVjaWZpYyBhdHRyaWJ1dGVzIGFuZCByb2xl
cyBmb3IgTWF0aE1MIGVsZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHJvdy5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNT
IHJvdy5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFJvdycKK1BBU1Mgcm93LmNoaWxkQXRJ
bmRleCgwKS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInCitQQVNTIHJv
dy5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVl
OiBhJworUEFTUyByb3cuY2hpbGRBdEluZGV4KDEpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhN
YXRoTnVtYmVyJworUEFTUyByb3cuY2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgwKS5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogMicKK1BBU1MgZnJhY3Rpb24uc3Vicm9sZSBpcyAnQVhTdWJy
b2xlOiBBWE1hdGhGcmFjdGlvbicKK1BBU1MgZnJhY3Rpb25EZW5vbWluYXRvci5zdWJyb2xlIGlz
ICdBWFN1YnJvbGU6IEFYTWF0aE51bWJlcicKK1BBU1MgZnJhY3Rpb25EZW5vbWluYXRvci5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDInCitQQVNTIGZyYWN0aW9uRGVu
b21pbmF0b3IuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoJ2ZyYWN0aW9uRGVub21pbmF0b3InKSkgaXMgdHJ1ZQorUEFTUyBmcmFjdGlvbk51bWVy
YXRvci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInCitQQVNTIGZyYWN0
aW9uTnVtZXJhdG9yLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogYScK
K1BBU1MgZnJhY3Rpb25OdW1lcmF0b3IuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ZyYWN0aW9uTnVtZXJhdG9yJykpIGlzIHRydWUKK1BBU1Mg
c3FydC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIHNxcnQuc3Vicm9sZSBpcyAnQVhT
dWJyb2xlOiBBWE1hdGhTcXVhcmVSb290JworUEFTUyBzcXJ0UmFkaWNhbmQuc3Vicm9sZSBpcyAn
QVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFTUyBzcXJ0UmFkaWNhbmQuY2hpbGRBdElu
ZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBhJworUEFTUyBzcXJ0UmFkaWNhbmQuaXNF
cXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3NxcnRS
YWRpY2FuZCcpKSBpcyB0cnVlCitQQVNTIHJvb3Qucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJwor
UEFTUyByb290LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoUm9vdCcKK1BBU1Mgcm9vdElu
ZGV4LmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdyb290SW5kZXgnKSkgaXMgdHJ1ZQorUEFTUyByb290UmFkaWNhbmQuaXNFcXVhbChhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3Jvb3RSYWRpY2FuZCcpKSBp
cyB0cnVlCitQQVNTIGZlbmNlZC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIGZlbmNl
ZC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aEZlbmNlZCcKK1BBU1MgZmVuY2VkLnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKCdBWE1hdGhGZW5jZWRPcGVuJykgaXMgJ3snCitQQVNTIGZlbmNlZC5z
dHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhNYXRoRmVuY2VkQ2xvc2UnKSBpcyAnfScKK1BBU1MgY2hp
bGQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiB7JworUEFTUyBjaGls
ZC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDInCitQQVNTIGNoaWxk
LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogLCcKK1BBU1MgY2hpbGQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBhJworUEFTUyBjaGlsZC5j
aGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6ICwnCitQQVNTIGNoaWxkLmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogZScKK1BBU1MgY2hpbGQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiB9JworUEFTUyBzdWIucm9sZSBp
cyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBzdWIuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1h
dGhTdWJzY3JpcHRTdXBlcnNjcmlwdCcKK1BBU1Mgc3ViQmFzZS5zdWJyb2xlIGlzICdBWFN1YnJv
bGU6IEFYTWF0aElkZW50aWZpZXInCitQQVNTIHN1YlN1Yi5zdWJyb2xlIGlzICdBWFN1YnJvbGU6
IEFYTWF0aFRleHQnCitQQVNTIHN1YkJhc2UuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3N1YkJhc2UnKSkgaXMgdHJ1ZQorUEFTUyBzdWJTdWIu
aXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3N1
YlN1YicpKSBpcyB0cnVlCitQQVNTIHN1cC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNT
IHN1cC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0Jwor
UEFTUyBzdXBCYXNlLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllcicKK1BB
U1Mgc3VwU3VwLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoVGV4dCcKK1BBU1Mgc3VwQmFz
ZS5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgn
c3VwQmFzZScpKSBpcyB0cnVlCitQQVNTIHN1cFN1cC5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3VwU3VwJykpIGlzIHRydWUKK1BBU1Mgc3Vi
c3VwLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgc3Vic3VwLnN1YnJvbGUgaXMgJ0FY
U3Vicm9sZTogQVhNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQnCitQQVNTIHN1YnN1cEJhc2Uuc3Vi
cm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFTUyBzdWJzdXBTdXAuc3Vi
cm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhUZXh0JworUEFTUyBzdWJzdXBTdWIuc3Vicm9sZSBp
cyAnQVhTdWJyb2xlOiBBWE1hdGhUZXh0JworUEFTUyBzdWJzdXBCYXNlLmlzRXF1YWwoYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdWJzdXBCYXNlJykpIGlz
IHRydWUKK1BBU1Mgc3Vic3VwU3ViLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdzdWJzdXBTdWInKSkgaXMgdHJ1ZQorUEFTUyBzdWJzdXBTdXAu
aXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3N1
YnN1cFN1cCcpKSBpcyB0cnVlCitQQVNTIHVuZGVyLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcK
K1BBU1MgdW5kZXIuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhVbmRlck92ZXInCitQQVNT
IHVuZGVyQmFzZS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInCitQQVNT
IHVuZGVyVW5kZXIuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhUZXh0JworUEFTUyB1bmRl
clVuZGVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCd1bmRlclVuZGVyJykpIGlzIHRydWUKK1BBU1Mgb3Zlci5yb2xlIGlzICdBWFJvbGU6IEFY
R3JvdXAnCitQQVNTIG92ZXIuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhVbmRlck92ZXIn
CitQQVNTIG92ZXJCYXNlLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllcicK
K1BBU1Mgb3Zlck92ZXIuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhUZXh0JworUEFTUyBv
dmVyQmFzZS5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgnb3ZlckJhc2UnKSkgaXMgdHJ1ZQorUEFTUyBvdmVyT3Zlci5pc0VxdWFsKGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnb3Zlck92ZXInKSkgaXMgdHJ1
ZQorUEFTUyB1bmRlcm92ZXIucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyB1bmRlcm92
ZXIuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhVbmRlck92ZXInCitQQVNTIHVuZGVyT3Zl
ckJhc2Uuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFTUyB1bmRl
ck92ZXJVbmRlci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIHVuZGVy
T3Zlck92ZXIuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhUZXh0JworUEFTUyB1bmRlck92
ZXJCYXNlLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCd1bmRlck92ZXJCYXNlJykpIGlzIHRydWUKK1BBU1MgdW5kZXJPdmVyVW5kZXIuaXNFcXVh
bChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3VuZGVyT3Zl
clVuZGVyJykpIGlzIHRydWUKK1BBU1MgdW5kZXJPdmVyT3Zlci5pc0VxdWFsKGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndW5kZXJPdmVyT3ZlcicpKSBpcyB0
cnVlCitQQVNTIHRhYmxlLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgdGFibGUuc3Vi
cm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhUYWJsZScKK1BBU1Mgcm93LnN1YnJvbGUgaXMgJ0FY
U3Vicm9sZTogQVhNYXRoVGFibGVSb3cnCitQQVNTIGNlbGwuc3Vicm9sZSBpcyAnQVhTdWJyb2xl
OiBBWE1hdGhUYWJsZUNlbGwnCitQQVNTIGNlbGwuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUgaXMg
J0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllcicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9tYXRobWwtZWxlbWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYXRobWwtZWxlbWVudHMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGht
bC1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwMyBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPG1hdGggaWQ9InJvdyI+Cis8bXJv
dz48bWk+YTwvbWk+PG1uPjI8L21uPjwvbXJvdz4KKzwvbWF0aD48YnI+CisKKzxtYXRoIGlkPSJm
cmFjdGlvbiI+Cis8bWZyYWM+PG1pIGlkPSJmcmFjdGlvbk51bWVyYXRvciI+YTwvbWk+PG1uIGlk
PSJmcmFjdGlvbkRlbm9taW5hdG9yIj4yPC9tbj48L21mcmFjPgorPC9tYXRoPjxicj4KKworPG1h
dGggaWQ9InNxcnQiPgorPG1zcXJ0PjxtaSBpZD0ic3FydFJhZGljYW5kIj5hPC9taT48L21zcXJ0
PgorPC9tYXRoPjxicj4KKworPG1hdGggaWQ9InJvb3QiPgorPG1yb290PjxtbiBpZD0icm9vdFJh
ZGljYW5kIj4zPC9tbj48bWkgaWQ9InJvb3RJbmRleCI+YTwvbWk+PC9tcm9vdD4KKzwvbWF0aD48
YnI+CisKKzxtYXRoIGlkPSJmZW5jZWQiPgorPG1mZW5jZWQgb3Blbj0ieyIgY2xvc2U9In0iIHNl
cGFyYXRvcnM9IiwsIj48bWk+MjwvbWk+PG1pPmE8L21pPjxtaT5lPC9taT48L21yb290PgorPC9t
YXRoPjxicj4KKworPG1hdGggaWQ9InN1YiI+Cis8bXN1Yj48bWkgaWQ9InN1YkJhc2UiPjI8L21p
PjxtdGV4dCBpZD0ic3ViU3ViIj5zdWI8L210ZXh0PjwvbXN1Yj4KKzwvbWF0aD48YnI+CisKKzxt
YXRoIGlkPSJzdXAiPgorPG1zdXA+PG1pIGlkPSJzdXBCYXNlIj4yPC9taT48bXRleHQgaWQ9InN1
cFN1cCI+c3VwPC9tdGV4dD48L21zdXA+Cis8L21hdGg+PGJyPgorCis8bWF0aCBpZD0ic3Vic3Vw
Ij4KKzxtc3Vic3VwPjxtaSBpZD0ic3Vic3VwQmFzZSI+MjwvbWk+PG10ZXh0IGlkPSJzdWJzdXBT
dWIiPnN1YjwvbXRleHQ+PG10ZXh0IGlkPSJzdWJzdXBTdXAiPnN1cDwvbXRleHQ+PC9tc3Vic3Vw
PgorPC9tYXRoPjxicj4KKwkKKzxtYXRoIGlkPSJ1bmRlciI+Cis8bXVuZGVyPjxtaSBpZD0idW5k
ZXJCYXNlIj4zPC9taT48bXRleHQgaWQ9InVuZGVyVW5kZXIiPnVuZGVyPC9tdGV4dD48L211bmRl
cj4KKzwvbWF0aD48YnI+CisKKzxtYXRoIGlkPSJvdmVyIj4KKzxtb3Zlcj48bWkgaWQ9Im92ZXJC
YXNlIj4zPC9taT48bXRleHQgaWQ9Im92ZXJPdmVyIj5vdmVyPC9tdGV4dD48L21vdmVyPgorPC9t
YXRoPjxicj4KKworPG1hdGggaWQ9InVuZGVyb3ZlciI+Cis8bXVuZGVyb3Zlcj48bWkgaWQ9InVu
ZGVyT3ZlckJhc2UiPjM8L21pPjxtdGV4dCBpZD0idW5kZXJPdmVyVW5kZXIiPnVuZGVyPC9tdGV4
dD48bXRleHQgaWQ9InVuZGVyT3Zlck92ZXIiPm92ZXI8L210ZXh0PjwvbXVuZGVyb3Zlcj4KKzwv
bWF0aD48YnI+CisKKzxtYXRoIGlkPSJ0YWJsZSI+Cis8bXRhYmxlPgorPG10cj48bXRkPjxtaT4z
PC9taT48L210ZD48L210cj4KKzxtdHI+PG10ZD48bWk+MjwvbWk+PC9tdGQ+PC9tdHI+Cis8bXRy
PjxtdGQ+PG1pPjE8L21pPjwvbXRkPjwvbXRyPgorPC9tdGFibGU+Cis8L21hdGg+CisKKworPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyBlbnN1cmVzIHRoYXQgTWFjIHNwZWNpZmljIGF0dHJpYnV0ZXMgYW5kIHJvbGVzIGZvciBNYXRo
TUwgZWxlbWVudHMgd29yayBhcyBleHBlY3RlZC4iKQorCitpZiAod2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAgIC8vIFJvdworICAgdmFy
IHJvdyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicm93
IikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoInJvdy5yb2xlIiwgIidBWFJvbGU6IEFY
R3JvdXAnIik7CisgICBzaG91bGRCZSgicm93LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRo
Um93JyIpOworICAgc2hvdWxkQmUoInJvdy5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSIsICInQVhT
dWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJyIpOworICAgc2hvdWxkQmUoInJvdy5jaGlsZEF0SW5k
ZXgoMCkuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBhJyIpOworICAg
c2hvdWxkQmUoInJvdy5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1h
dGhOdW1iZXInIik7CisgICBzaG91bGRCZSgicm93LmNoaWxkQXRJbmRleCgxKS5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDInIik7CisKKyAgIC8vIEZyYWN0aW9uCisg
ICB2YXIgZnJhY3Rpb24gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImZyYWN0aW9uIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoImZyYWN0aW9u
LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoRnJhY3Rpb24nIik7CisgICB2YXIgZnJhY3Rp
b25EZW5vbWluYXRvciA9IGZyYWN0aW9uLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhG
cmFjdGlvbkRlbm9taW5hdG9yIik7CisgICB2YXIgZnJhY3Rpb25OdW1lcmF0b3IgPSBmcmFjdGlv
bi51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoRnJhY3Rpb25OdW1lcmF0b3IiKTsKKyAg
IHNob3VsZEJlKCJmcmFjdGlvbkRlbm9taW5hdG9yLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhN
YXRoTnVtYmVyJyIpOworICAgc2hvdWxkQmUoImZyYWN0aW9uRGVub21pbmF0b3IuY2hpbGRBdElu
ZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAyJyIpOworICAgc2hvdWxkQmVUcnVlKCJm
cmFjdGlvbkRlbm9taW5hdG9yLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdmcmFjdGlvbkRlbm9taW5hdG9yJykpIik7CisgICBzaG91bGRCZSgi
ZnJhY3Rpb25OdW1lcmF0b3Iuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVy
JyIpOworICAgc2hvdWxkQmUoImZyYWN0aW9uTnVtZXJhdG9yLmNoaWxkQXRJbmRleCgwKS5zdHJp
bmdWYWx1ZSIsICInQVhWYWx1ZTogYSciKTsKKyAgIHNob3VsZEJlVHJ1ZSgiZnJhY3Rpb25OdW1l
cmF0b3IuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2ZyYWN0aW9uTnVtZXJhdG9yJykpIik7CisKKyAgIC8vIFNxdWFyZSByb290CisgICB2YXIg
c3FydCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic3Fy
dCIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJlKCJzcXJ0LnJvbGUiLCAiJ0FYUm9sZTog
QVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJzcXJ0LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhN
YXRoU3F1YXJlUm9vdCciKTsKKyAgIHZhciBzcXJ0UmFkaWNhbmQgPSBzcXJ0LnVpRWxlbWVudEF0
dHJpYnV0ZVZhbHVlKCJBWE1hdGhSb290UmFkaWNhbmQiKTsKKyAgIHNob3VsZEJlKCJzcXJ0UmFk
aWNhbmQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJyIpOworICAgc2hv
dWxkQmUoInNxcnRSYWRpY2FuZC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFs
dWU6IGEnIik7CisgICBzaG91bGRCZVRydWUoInNxcnRSYWRpY2FuZC5pc0VxdWFsKGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3FydFJhZGljYW5kJykpIik7
CisKKyAgIC8vIEdlbmVyaWMgcm9vdAorICAgdmFyIHJvb3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvb3QiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBz
aG91bGRCZSgicm9vdC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICBzaG91bGRCZSgi
cm9vdC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFJvb3QnIik7CisgICB2YXIgcm9vdElu
ZGV4ID0gcm9vdC51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoUm9vdEluZGV4Iik7Cisg
ICB2YXIgcm9vdFJhZGljYW5kID0gcm9vdC51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRo
Um9vdFJhZGljYW5kIik7CisgICBzaG91bGRCZVRydWUoInJvb3RJbmRleC5pc0VxdWFsKGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncm9vdEluZGV4JykpIik7
CisgICBzaG91bGRCZVRydWUoInJvb3RSYWRpY2FuZC5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncm9vdFJhZGljYW5kJykpIik7CisKKyAgIC8v
IEZlbmNlZAorICAgdmFyIGZlbmNlZCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgiZmVuY2VkIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoImZl
bmNlZC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICBzaG91bGRCZSgiZmVuY2VkLnN1
YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoRmVuY2VkJyIpOworICAgc2hvdWxkQmUoImZlbmNl
ZC5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhNYXRoRmVuY2VkT3BlbicpIiwgIid7JyIpOworICAg
c2hvdWxkQmUoImZlbmNlZC5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhNYXRoRmVuY2VkQ2xvc2Un
KSIsICInfSciKTsKKyAgIHZhciBmZW5jZVZhbHVlcyA9IG5ldyBBcnJheSgieyIsICIyIiwgIiwi
LCAiYSIsICIsIiwgImUiLCAifSIpOworICAgZm9yICh2YXIgayA9IDA7IGsgPCBmZW5jZVZhbHVl
cy5sZW5ndGg7IGsrKykgeworICAgICAgdmFyIGNoaWxkID0gZmVuY2VkLmNoaWxkQXRJbmRleChr
KTsKKyAgICAgIHNob3VsZEJlKCJjaGlsZC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6ICIgKyBmZW5jZVZhbHVlc1trXSArICInIik7CisgICB9CisKKyAgIC8vIFN1YnNj
cmlwdAorICAgdmFyIHN1YiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgic3ViIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoInN1Yi5yb2xlIiwg
IidBWFJvbGU6IEFYR3JvdXAnIik7CisgICBzaG91bGRCZSgic3ViLnN1YnJvbGUiLCAiJ0FYU3Vi
cm9sZTogQVhNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQnIik7CisgICB2YXIgc3ViQmFzZSA9IHN1
Yi51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoQmFzZSIpOworICAgc2hvdWxkQmUoInN1
YkJhc2Uuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJyIpOworICAgdmFy
IHN1YlN1YiA9IHN1Yi51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoU3Vic2NyaXB0Iik7
CisgICBzaG91bGRCZSgic3ViU3ViLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVGV4dCci
KTsKKyAgIHNob3VsZEJlVHJ1ZSgic3ViQmFzZS5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3ViQmFzZScpKSIpOworICAgc2hvdWxkQmVUcnVl
KCJzdWJTdWIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoJ3N1YlN1YicpKSIpOworCisgICAvLyBTdXBlcnNjcmlwdAorICAgdmFyIHN1cCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic3VwIikuY2hpbGRB
dEluZGV4KDApOworICAgc2hvdWxkQmUoInN1cC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7
CisgICBzaG91bGRCZSgic3VwLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQnIik7CisgICB2YXIgc3VwQmFzZSA9IHN1cC51aUVsZW1lbnRBdHRyaWJ1dGVW
YWx1ZSgiQVhNYXRoQmFzZSIpOworICAgc2hvdWxkQmUoInN1cEJhc2Uuc3Vicm9sZSIsICInQVhT
dWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJyIpOworICAgdmFyIHN1cFN1cCA9IHN1cC51aUVsZW1l
bnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoU3VwZXJzY3JpcHQiKTsKKyAgIHNob3VsZEJlKCJzdXBT
dXAuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhUZXh0JyIpOworICAgc2hvdWxkQmVUcnVl
KCJzdXBCYXNlLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdzdXBCYXNlJykpIik7CisgICBzaG91bGRCZVRydWUoInN1cFN1cC5pc0VxdWFsKGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3VwU3VwJykpIik7
CisKKyAgIC8vIFN1YnN1cGVyc2NyaXB0CisgICB2YXIgc3Vic3VwID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzdWJzdXAiKS5jaGlsZEF0SW5kZXgoMCk7
CisgICBzaG91bGRCZSgic3Vic3VwLnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgIHNo
b3VsZEJlKCJzdWJzdXAuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhTdWJzY3JpcHRTdXBl
cnNjcmlwdCciKTsKKyAgIHZhciBzdWJzdXBCYXNlID0gc3Vic3VwLnVpRWxlbWVudEF0dHJpYnV0
ZVZhbHVlKCJBWE1hdGhCYXNlIik7CisgICBzaG91bGRCZSgic3Vic3VwQmFzZS5zdWJyb2xlIiwg
IidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICB2YXIgc3Vic3VwU3VwID0gc3Vi
c3VwLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhTdXBlcnNjcmlwdCIpOworICAgc2hv
dWxkQmUoInN1YnN1cFN1cC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFRleHQnIik7Cisg
ICB2YXIgc3Vic3VwU3ViID0gc3Vic3VwLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhT
dWJzY3JpcHQiKTsKKyAgIHNob3VsZEJlKCJzdWJzdXBTdWIuc3Vicm9sZSIsICInQVhTdWJyb2xl
OiBBWE1hdGhUZXh0JyIpOworICAgc2hvdWxkQmVUcnVlKCJzdWJzdXBCYXNlLmlzRXF1YWwoYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdWJzdXBCYXNlJykp
Iik7CisgICBzaG91bGRCZVRydWUoInN1YnN1cFN1Yi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3Vic3VwU3ViJykpIik7CisgICBzaG91bGRC
ZVRydWUoInN1YnN1cFN1cC5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnc3Vic3VwU3VwJykpIik7CisKKyAgIC8vIFVuZGVyCisgICB2YXIgdW5k
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInVuZGVy
IikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoInVuZGVyLnJvbGUiLCAiJ0FYUm9sZTog
QVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJ1bmRlci5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFY
TWF0aFVuZGVyT3ZlciciKTsKKyAgIHZhciB1bmRlckJhc2UgPSB1bmRlci51aUVsZW1lbnRBdHRy
aWJ1dGVWYWx1ZSgiQVhNYXRoQmFzZSIpOworICAgc2hvdWxkQmUoInVuZGVyQmFzZS5zdWJyb2xl
IiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICB2YXIgdW5kZXJVbmRlciA9
IHVuZGVyLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhVbmRlciIpOworICAgc2hvdWxk
QmUoInVuZGVyVW5kZXIuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhUZXh0JyIpOworICAg
c2hvdWxkQmVUcnVlKCJ1bmRlclVuZGVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd1bmRlclVuZGVyJykpIik7CisKKyAgIC8vIE92ZXIKKyAg
IHZhciBvdmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJvdmVyIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoIm92ZXIucm9sZSIsICInQVhS
b2xlOiBBWEdyb3VwJyIpOworICAgc2hvdWxkQmUoIm92ZXIuc3Vicm9sZSIsICInQVhTdWJyb2xl
OiBBWE1hdGhVbmRlck92ZXInIik7CisgICB2YXIgb3ZlckJhc2UgPSBvdmVyLnVpRWxlbWVudEF0
dHJpYnV0ZVZhbHVlKCJBWE1hdGhCYXNlIik7CisgICBzaG91bGRCZSgib3ZlckJhc2Uuc3Vicm9s
ZSIsICInQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJyIpOworICAgdmFyIG92ZXJPdmVyID0g
b3Zlci51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoT3ZlciIpOworICAgc2hvdWxkQmUo
Im92ZXJPdmVyLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVGV4dCciKTsKKyAgIHNob3Vs
ZEJlVHJ1ZSgib3ZlckJhc2UuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ292ZXJCYXNlJykpIik7CisgICBzaG91bGRCZVRydWUoIm92ZXJPdmVy
LmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdv
dmVyT3ZlcicpKSIpOworCisgICAvLyBVbmRlck92ZXIKKyAgIHZhciB1bmRlcm92ZXIgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInVuZGVyb3ZlciIpLmNo
aWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJlKCJ1bmRlcm92ZXIucm9sZSIsICInQVhSb2xlOiBB
WEdyb3VwJyIpOworICAgc2hvdWxkQmUoInVuZGVyb3Zlci5zdWJyb2xlIiwgIidBWFN1YnJvbGU6
IEFYTWF0aFVuZGVyT3ZlciciKTsKKyAgIHZhciB1bmRlck92ZXJCYXNlID0gdW5kZXJvdmVyLnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhCYXNlIik7CisgICBzaG91bGRCZSgidW5kZXJP
dmVyQmFzZS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICB2
YXIgdW5kZXJPdmVyVW5kZXIgPSB1bmRlcm92ZXIudWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFY
TWF0aFVuZGVyIik7CisgICBzaG91bGRCZSgidW5kZXJPdmVyVW5kZXIuc3Vicm9sZSIsICInQVhT
dWJyb2xlOiBBWE1hdGhUZXh0JyIpOworICAgdmFyIHVuZGVyT3Zlck92ZXIgPSB1bmRlcm92ZXIu
dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aE92ZXIiKTsKKyAgIHNob3VsZEJlKCJ1bmRl
ck92ZXJPdmVyLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVGV4dCciKTsKKyAgIHNob3Vs
ZEJlVHJ1ZSgidW5kZXJPdmVyQmFzZS5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgndW5kZXJPdmVyQmFzZScpKSIpOworICAgc2hvdWxkQmVUcnVl
KCJ1bmRlck92ZXJVbmRlci5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgndW5kZXJPdmVyVW5kZXInKSkiKTsKKyAgIHNob3VsZEJlVHJ1ZSgidW5k
ZXJPdmVyT3Zlci5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgndW5kZXJPdmVyT3ZlcicpKSIpOworCisgICAvLyBUYWJsZQorICAgdmFyIHRhYmxl
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZSIp
LmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJlKCJ0YWJsZS5yb2xlIiwgIidBWFJvbGU6IEFY
R3JvdXAnIik7CisgICBzaG91bGRCZSgidGFibGUuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1h
dGhUYWJsZSciKTsKKyAgIHZhciByb3cgPSB0YWJsZS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91
bGRCZSgicm93LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVGFibGVSb3cnIik7CisgICB2
YXIgY2VsbCA9IHJvdy5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgiY2VsbC5zdWJyb2xl
IiwgIidBWFN1YnJvbGU6IEFYTWF0aFRhYmxlQ2VsbCciKTsKKyAgIHNob3VsZEJlKCJjZWxsLmNo
aWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7
Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172432</attachid>
            <date>2012-11-05 16:20:46 -0800</date>
            <delta_ts>2012-11-05 17:07:25 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>61580</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTExLTA1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisK
KyAgICAgICAgQVg6IE1hdGhNTCB0eXBlcyBuZWVkIHRvIGJlIHNlbWFudGljYWxseSBpZGVudGlm
aWVkIGluIEFYIHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlSb2xlLmg6CisgICAgICAgICogc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAgICAgQWRkIG5ldyBhY2Nlc3NpYmlsaXR5
IHJvbGUuCisKIDIwMTItMTEtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbVjhdIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgc2hvdWxkIGJlIHVzYWJsZSBmb3Ig
bW9yZSB0aGFuIGp1c3QgTm9kZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE2LDYgKzIxNiw3IEBACiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YkFjY2Vzc2liaWxpdHlSb2xlSW1hZ2VNYXBMaW5rLCBJbWFnZU1hcExpbmtSb2xlKTsKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVJbWFnZU1hcCwgSW1h
Z2VNYXBSb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0
eVJvbGVMaXN0TWFya2VyLCBMaXN0TWFya2VyUm9sZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlTWF0aEVsZW1lbnQsIE1hdGhFbGVtZW50Um9sZSk7
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlV2ViQXJl
YSwgV2ViQXJlYVJvbGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3Np
YmlsaXR5Um9sZUhlYWRpbmcsIEhlYWRpbmdSb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVMaXN0Qm94LCBMaXN0Qm94Um9sZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlS
b2xlLmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAK
ICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3RCb3hPcHRpb24sCiAgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVMaXN0SXRlbSwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3RNYXJrZXIsCisg
ICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVNYXRoRWxlbWVudCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5
Um9sZU1hdHRlLAogICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWVudSwKICAgICBXZWJBY2Nlc3Np
YmlsaXR5Um9sZU1lbnVCYXIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzM1MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMzEgQEAK
KzIwMTItMTEtMDUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAg
ICAgICBBWDogTWF0aE1MIHR5cGVzIG5lZWQgdG8gYmUgc2VtYW50aWNhbGx5IGlkZW50aWZpZWQg
aW4gQVggdHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAxMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2VtYW50aWNhbGx5IGlkZW50aWZ5IHZhcmlvdXMgTWF0aE1MIGVsZW1lbnRzIHdpdGhpbiB0
aGUgQVggdHJlZS4gVGhpcyB3aWxsIGFsbG93CisgICAgICAgIHNjcmVlbiByZWFkZXJzIHRvIGlk
ZW50aWZ5IG1hdGggdHlwZXMgc28gdGhhdCBlcXVhdGlvbnMgY2FuIGJlIG91dHB1dCBtb3JlIGFj
Y3VyYXRlbHkuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0
aG1sLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhSb3cpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVW5kZXJPdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFJvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoU3F1YXJlUm9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhGZW5jZU9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aElkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVSb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhSYWRpY2FuZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoUm9vdEluZGV4T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJh
dG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhE
ZW5vbWluYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRoU3Vic2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkT3BlblN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzdGFydE9mQ29udGludWF0aW9ucyk6CisgICAgICAgICAgICBIYW5kbGUgYSBjYXNlIHdo
ZXJlIGEgTWF0aE1MIHJlbmRlciBlbGVtZW50IGlzIGNyZWF0ZWQgd2l0aCB0aGUgbm9kZSBvZiB0
aGVpciBwYXJlbnQgKHdoaWNoIGNvdWxkIGxlYWQgdG8gYW4gYXNzZXJ0KS4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQpOgorICAg
ICAgICAgICAgSGFuZGxlIHRoZSBjYXNlcyBmb3IgUmVuZGVyTWF0aE1MT3BlcmF0b3JzIHdoaWNo
IHVzZSB0aGUgbm9kZSBvZiB0aGVpciBwYXJlbnQsIHdoaWNoIGNvbmZ1c2VzIHRoZSBub3JtYWwg
dGV4dFVuZGVyRWxlbWVudCgpIHJvdXRpbmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgICAgIEhh
bmRsZSBpZ25vcmVkIGNhc2VzIGZvciBtYXRoIGVsZW1lbnRzCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aEZy
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
TWF0aEZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhSb3cpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVW5kZXJPdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFNxdWFyZVJvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoUm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhPcGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhGZW5jZU9w
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
TWF0aFNlcGFyYXRvck9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmlzTWF0aFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVSb3cpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSWdub3JlZEVsZW1l
bnRXaXRoaW5NYXRoVHJlZSk6CisgICAgICAgICAgICBNYWtlIHN1cmUgYW5vbnltb3VzZSBibG9j
a3MgYXJlIGlnbm9yZWQgd2l0aGluIG1hdGggdHJlZTsgbWFrZSBzdXJlIG5vbi1lbGVtZW50IHR5
cGUgb2JqZWN0cyBhcmUgaWdub3JlZCAobGlrZSA8bXN0eWxlPikuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoUmFkaWNhbmRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFJvb3RJbmRleE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoTnVt
ZXJhdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om1hdGhEZW5vbWluYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aE92ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoU3VwZXJz
Y3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6bWF0aEZlbmNlZE9wZW5TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWF0aEZlbmNlZENsb3NlU3RyaW5nKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAg
IChjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIHN1YnJvbGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxGZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MUm9vdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjppc1JlbmRlck1hdGhNTFN1YlN1cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxVbmRlck92
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnNldElnbm9yZUluQWNj
ZXNzaWJpbGl0eVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Omln
bm9yZUluQWNjZXNzaWJpbGl0eVRyZWUpOgorICAgICAgICAgICAgQWRkIGFiaWxpdHkgdG8gaWRl
bnRpZnkgYW5vbnltb3VzIHJlbmRlciBibG9ja3MgYXMgaXRlbXMgdGhhdCBBWCBzaG91bGQgaWdu
b3JlLgorICAgICAgICAoUmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAgICAgSWRlbnRpZnkg
d2hpY2gga2luZCBvZiBtYXRoIG9wZXJhdG9yIGlzIGJlaW5nIGNyZWF0ZWQgb24gdGhlIGZseSAo
RmVuY2Ugb3IgU2VwYXJhdG9yKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2Vk
OjptYWtlRmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6YWRk
Q2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OmlzUmVuZGVyTWF0aE1MRmVu
Y2VkKToKKyAgICAgICAgKFJlbmRlck1hdGhNTEZlbmNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRnJhY3Rpb246OmlzUmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlR2x5cGgpOgorICAgICAgICAg
ICAgIE1hcmsgYW5vbnltb3VzIHJlbmRlciBibG9ja3MgYXMgQVggaWdub3JlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c2V0T3BlcmF0b3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpvcGVyYXRvclR5cGUpOgorICAgICAgICAoUmVu
ZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6aXNSZW5kZXJN
YXRoTUxSb290KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OmlzUmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTdWJTdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6aXNS
ZW5kZXJNYXRoTUxTdWJTdXApOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6
OmlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKToKKwogMjAxMi0xMS0wNSAgUGhpbGlwIFJvZ2VycyAg
PHBkckBnb29nbGUuY29tPgogCiAgICAgICAgIFVuYmxvY2sgU1ZHIGV4dGVybmFsIHJlZmVyZW5j
ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiAxMzM1
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM4LDYgKzMzOCwxOSBAQAogI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlJbmRleEZvclRleHRNYXJrZXJQYXJhbWV0ZXJpemVkQXR0cmli
dXRlIEAiQVhJbmRleEZvclRleHRNYXJrZXIiCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWFRleHRNYXJrZXJGb3JJbmRl
eCIKIAorLy8gTWF0aCBhdHRyaWJ1dGVzCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhSb290
UmFkaWNhbmRBdHRyaWJ1dGUgQCJBWE1hdGhSb290UmFkaWNhbmQiCisjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eU1hdGhSb290SW5kZXhBdHRyaWJ1dGUgQCJBWE1hdGhSb290SW5kZXgiCisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbkRlbm9taW5hdG9yQXR0cmlidXRlIEAiQVhNYXRo
RnJhY3Rpb25EZW5vbWluYXRvciIKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9u
TnVtZXJhdG9yQXR0cmlidXRlIEAiQVhNYXRoRnJhY3Rpb25OdW1lcmF0b3IiCisjZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlIEAiQVhNYXRoQmFzZSIKKyNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZSBAIkFYTWF0aFN1YnNjcmlwdCIKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlIEAiQVhNYXRoU3Vw
ZXJzY3JpcHQiCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhVbmRlckF0dHJpYnV0ZSBAIkFY
TWF0aFVuZGVyIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoT3ZlckF0dHJpYnV0ZSBAIkFY
TWF0aE92ZXIiCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRl
IEAiQVhNYXRoRmVuY2VkT3BlbiIKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENs
b3NlQXR0cmlidXRlIEAiQVhNYXRoRmVuY2VkQ2xvc2UiCisKIEBpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYktpdEFjY2Vzc2liaWxpdHlBcnJheUNhdGVnb3J5KQogCiAtIChOU1VJbnRlZ2VyKWFjY2Vz
c2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOwpAQCAtOTk3LDYgKzEwMTAsMjcgQEAKICAg
ICBpZiAobV9vYmplY3QtPmFyaWFIYXNQb3B1cCgpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGVdOwogICAgIAorICAgIGlmICht
X29iamVjdC0+aXNNYXRoUm9vdCgpKSB7CisgICAgICAgIC8vIFRoZSBpbmRleCBvZiBhIHNxdWFy
ZSByb290IGlzIGFsd2F5cyBrbm93biwgc28gdGhlcmUncyBubyBvYmplY3QgYXNzb2NpYXRlZCB3
aXRoIGl0LgorICAgICAgICBpZiAoIW1fb2JqZWN0LT5pc01hdGhTcXVhcmVSb290KCkpCisgICAg
ICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RJbmRl
eEF0dHJpYnV0ZV07CisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlNYXRoUm9vdFJhZGljYW5kQXR0cmlidXRlXTsKKyAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5p
c01hdGhGcmFjdGlvbigpKSB7CisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlNYXRoRnJhY3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRp
b25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9uRGVub21pbmF0b3JBdHRy
aWJ1dGVdOworICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPmlzTWF0aFN1YnNjcmlwdFN1cGVyc2Ny
aXB0KCkpIHsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1h
dGhCYXNlQXR0cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eU1hdGhTdWJzY3JpcHRBdHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRpb25hbCBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlXTsKKyAgICB9IGVs
c2UgaWYgKG1fb2JqZWN0LT5pc01hdGhVbmRlck92ZXIoKSkgeworICAgICAgICBbYWRkaXRpb25h
bCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEJhc2VBdHRyaWJ1dGVdOworICAgICAgICBb
YWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFVuZGVyQXR0cmlidXRlXTsK
KyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhPdmVyQXR0
cmlidXRlXTsKKyAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc01hdGhGZW5jZWQoKSkgeworICAg
ICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZE9wZW5B
dHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
TWF0aEZlbmNlZENsb3NlQXR0cmlidXRlXTsKKyAgICB9CisKICAgICByZXR1cm4gYWRkaXRpb25h
bDsKIH0KIApAQCAtMTU5OCw3ICsxNjMyLDggQEAKICAgICAgICAgeyBUb2dnbGVCdXR0b25Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCiAgICAgICAgIHsgQ2FudmFzUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5SW1hZ2VSb2xlIH0sCiAgICAgICAgIHsgU1ZHUm9vdFJvbGUsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExlZ2VuZFJvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9CisgICAgICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCisgICAgICAgIHsgTWF0aEVsZW1lbnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfQogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAqbmV3IEFj
Y2Vzc2liaWxpdHlSb2xlTWFwOwogICAgIApAQCAtMTcxNSw2ICsxNzUwLDQxIEBACiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9
PSBNYXRoRWxlbWVudFJvbGUpIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGcmFjdGlv
bigpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoRnJhY3Rpb24iOworICAgICAgICBpZiAo
bV9vYmplY3QtPmlzTWF0aEZlbmNlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoRmVu
Y2VkIjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgp
KQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQiOworICAg
ICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFJvdygpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhN
YXRoUm93IjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhVbmRlck92ZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybiBAIkFYTWF0aFVuZGVyT3ZlciI7CisgICAgICAgIGlmIChtX29iamVjdC0+
aXNNYXRoU3F1YXJlUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoU3F1YXJlUm9v
dCI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoUm9vdCgpKQorICAgICAgICAgICAgcmV0
dXJuIEAiQVhNYXRoUm9vdCI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoVGV4dCgpKQor
ICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoVGV4dCI7CisgICAgICAgIGlmIChtX29iamVjdC0+
aXNNYXRoTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhOdW1iZXIiOworICAg
ICAgICBpZiAobV9vYmplY3QtPmlzTWF0aElkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIHJldHVy
biBAIkFYTWF0aElkZW50aWZpZXIiOworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFRhYmxl
KCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhUYWJsZSI7CisgICAgICAgIGlmIChtX29i
amVjdC0+aXNNYXRoVGFibGVSb3coKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFRhYmxl
Um93IjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhUYWJsZUNlbGwoKSkKKyAgICAgICAg
ICAgIHJldHVybiBAIkFYTWF0aFRhYmxlQ2VsbCI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNN
YXRoRmVuY2VPcGVyYXRvcigpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoRmVuY2VPcGVy
YXRvciI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSkK
KyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFNlcGFyYXRvck9wZXJhdG9yIjsKKyAgICAgICAg
aWYgKG1fb2JqZWN0LT5pc01hdGhPcGVyYXRvcigpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhN
YXRoT3BlcmF0b3IiOworICAgIH0KKyAgICAKICAgICBpZiAobV9vYmplY3QtPmlzTWVkaWFUaW1l
bGluZSgpKQogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VGltZWxpbmVTdWJyb2xlOwog
CkBAIC0yNTI2LDYgKzI1OTYsMzIgQEAKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDptX29iamVjdC0+YXJpYUxpdmVSZWdpb25BdG9taWMoKV07CiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQnVzeUF0dHJpYnV0
ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmFy
aWFMaXZlUmVnaW9uQnVzeSgpXTsKKworICAgIC8vIE1hdGhNTCBBdHRyaWJ1dGVzLgorICAgIGlm
IChtX29iamVjdC0+aXNNYXRoRWxlbWVudCgpKSB7CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RJbmRleEF0dHJpYnV0ZV0p
CisgICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoUm9vdEluZGV4T2JqZWN0KCkpID8g
bV9vYmplY3QtPm1hdGhSb290SW5kZXhPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKKyAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUm9v
dFJhZGljYW5kQXR0cmlidXRlXSkKKyAgICAgICAgICAgIHJldHVybiAobV9vYmplY3QtPm1hdGhS
YWRpY2FuZE9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRoUmFkaWNhbmRPYmplY3QoKS0+d3JhcHBl
cigpIDogMDsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlNYXRoRnJhY3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdKQorICAgICAgICAgICAg
cmV0dXJuIChtX29iamVjdC0+bWF0aE51bWVyYXRvck9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRo
TnVtZXJhdG9yT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7CisgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9uRGVub21pbmF0
b3JBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aERlbm9taW5h
dG9yT2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhEZW5vbWluYXRvck9iamVjdCgpLT53cmFwcGVy
KCkgOiAwOworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXSkKKyAgICAgICAgICAgIHJldHVybiAobV9vYmpl
Y3QtPm1hdGhCYXNlT2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhCYXNlT2JqZWN0KCktPndyYXBw
ZXIoKSA6IDA7CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4g
KG1fb2JqZWN0LT5tYXRoU3Vic2NyaXB0T2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhTdWJzY3Jp
cHRPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoU3VwZXJzY3JpcHRBdHRyaWJ1dGVdKQor
ICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkpID8g
bV9vYmplY3QtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgpLT53cmFwcGVyKCkgOiAwOworICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhV
bmRlckF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoVW5kZXJP
YmplY3QoKSkgPyBtX29iamVjdC0+bWF0aFVuZGVyT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7Cisg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
TWF0aE92ZXJBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aE92
ZXJPYmplY3QoKSkgPyBtX29iamVjdC0+bWF0aE92ZXJPYmplY3QoKS0+d3JhcHBlcigpIDogMDsK
KyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gbV9vYmplY3Qt
Pm1hdGhGZW5jZWRPcGVuU3RyaW5nKCk7CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3NlQXR0cmlidXRlXSkKKyAg
ICAgICAgICAgIHJldHVybiBtX29iamVjdC0+bWF0aEZlbmNlZENsb3NlU3RyaW5nKCk7CisgICAg
fQogICAgIAogICAgIC8vIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIGZvciB0
ZXN0aW5nCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQ2xpY2tQ
b2ludCJdKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDUyIEBACiAgICAgdmlydHVhbCBib29sIGFyaWFMaXZl
UmVnaW9uQnVzeSgpIGNvbnN0OyAgICAKICAgICAKICAgICBib29sIGluaGVyaXRzUHJlc2VudGF0
aW9uYWxSb2xlKCkgY29uc3Q7CisgICAgCisjaWYgRU5BQkxFKE1BVEhNTCkKKyAgICAvLyBBbGwg
bWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBmb3IgaXNNYXRoRWxlbWVudCgpLgorICAgIHZpcnR1
YWwgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZy
YWN0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRo
VW5kZXJPdmVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFJvb3QoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBpc01hdGhUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE51bWJlcigp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0
aElkZW50aWZpZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Q7CisgICAgCisgICAgLy8gR2VuZXJpYyBjb21w
b25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aEJhc2VPYmplY3Qo
KTsKKyAgICAKKyAgICAvLyBSb290IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1hdGhSb290SW5kZXhPYmplY3QoKTsKKyAgICAKKyAgICAvLyBGcmFjdGlvbiBj
b21wb25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRv
ck9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aERlbm9taW5h
dG9yT2JqZWN0KCk7CisKKyAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKTsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCk7CisgICAgCisgICAgLy8gU3Vic2Ny
aXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKTsKKyAgICAKKyAgICAvLyBGZW5jZWQgY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0Owor
ICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0OworCisgICAg
Ym9vbCBpc0lnbm9yZWRFbGVtZW50V2l0aGluTWF0aFRyZWUoKSBjb25zdDsKKyNlbmRpZgogfTsK
IAogaW5saW5lIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIHRvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24g
MTMzNTM5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQAogICAgIExpc3RCb3hPcHRp
b25Sb2xlLAogICAgIExpc3RJdGVtUm9sZSwKICAgICBMaXN0TWFya2VyUm9sZSwKKyAgICBNYXRo
RWxlbWVudFJvbGUsCiAgICAgTWF0dGVSb2xlLAogICAgIE1lbnVSb2xlLAogICAgIE1lbnVCYXJS
b2xlLApAQCAtNzM3LDYgKzczOCw0NiBAQAogICAgIC8vIEZpcmVzIGEgY2hpbGRyZW4gY2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVkIHZhbHVlIGNoYW5n
ZWQuCiAgICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKTsKIAorICAgIC8vIEFs
bCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBpc01hdGhFbGVtZW50KCkuCisgICAgdmly
dHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm93KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUZXh0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0
b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRo
VGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhU
YWJsZVJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0
aFRhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgLy8gUm9vdCBj
b21wb25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJhZGljYW5k
T2JqZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
bWF0aFJvb3RJbmRleE9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAgICAKKyAgICAvLyBVbmRlciBv
dmVyIGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoVW5k
ZXJPYmplY3QoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBtYXRoT3Zlck9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKworICAgIC8vIEZyYWN0aW9uIGNvbXBv
bmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2Jq
ZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0
aERlbm9taW5hdG9yT2JqZWN0KCkgeyByZXR1cm4gMDsgfQorCisgICAgLy8gU3Vic2NyaXB0L3N1
cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBt
YXRoQmFzZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSB7IHJldHVybiAwOyB9
CisgICAgCisgICAgLy8gRmVuY2VkIGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBTdHJpbmcgbWF0
aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9CisgICAgCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw2ICs3Miw4IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtlci5oIgorI2luY2x1ZGUgIlJl
bmRlck1hdGhNTEJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNs
dWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgpAQCAtMjQyLDggKzI0NCwxNSBAQAogCiBzdGF0aWMg
aW5saW5lIFJlbmRlcklubGluZSogc3RhcnRPZkNvbnRpbnVhdGlvbnMoUmVuZGVyT2JqZWN0KiBy
KQogewotICAgIGlmIChyLT5pc0lubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkKKyAgICBpZiAo
ci0+aXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpIHsKKyAgICAgICAgLy8gTWF0aE1MIGVs
ZW1lbnRzIG1ha2UgYW5vbnltb3VzIFJlbmRlck9iamVjdHMsIHRoZW4gc2V0IHRoZWlyIG5vZGUg
dG8gdGhlIHBhcmVudCdzIG5vZGUuCisgICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgc28gdGhhdCB0
aGUgcmVuZGVyZXIoKSAhPSByZW5kZXJlcigpLT5ub2RlKCktPnJlbmRlcmVyKCkKKyAgICAgICAg
Ly8gKHdoaWNoIGlzIHdoYXQgaXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgdXNlcyBhcyBh
IGRldGVybWluYW50KS4KKyAgICAgICAgaWYgKHItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYm
IHRvRWxlbWVudChyLT5ub2RlKCkpLT5pc01hdGhNTEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAKICAgICAgICAgcmV0dXJuIHRvUmVuZGVySW5saW5lKHItPm5vZGUo
KS0+cmVuZGVyZXIoKSk7CisgICAgfQogCiAgICAgLy8gQmxvY2tzIHdpdGggYSBwcmV2aW91cyBj
b250aW51YXRpb24gYWx3YXlzIGhhdmUgYSBuZXh0IGNvbnRpbnVhdGlvbgogICAgIGlmIChyLT5p
c1JlbmRlckJsb2NrKCkgJiYgdG9SZW5kZXJCbG9jayhyKS0+aW5saW5lRWxlbWVudENvbnRpbnVh
dGlvbigpKQpAQCAtNjE3LDYgKzYyNiwxOCBAQAogICAgICAgICByZXR1cm4gdG9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbChtX3JlbmRlcmVyKS0+YnV0dG9uVmFsdWUoKTsKICAgICAKICAgICBOb2Rl
KiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOworCisjaWYgRU5BQkxFKE1BVEhNTCkKKyAgICAv
LyBNYXRoIG9wZXJhdG9ycyBjcmVhdGUgUmVuZGVyVGV4dCBub2RlcyBvbiB0aGUgZmx5IHRoYXQg
YXJlIG5vdCB0aWVkIGludG8gdGhlIERPTSBpbiBhIHJlYXNvbmFibGUgd2F5LAorICAgIC8vIHNv
IHJhbmdlT2ZDb250ZW50cyBkb2VzIG5vdCB3b3JrIGZvciB0aGVtIChub3IgZG9lcyByZWd1bGFy
IHRleHQgc2VsZWN0aW9uKS4KKyAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkgJiYgaXNNYXRo
RWxlbWVudCgpKSB7CisgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBtX3JlbmRl
cmVyLT5wYXJlbnQoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKSB7CisgICAg
ICAgICAgICBpZiAocGFyZW50LT5pc1JlbmRlck1hdGhNTEJsb2NrKCkgJiYgdG9SZW5kZXJNYXRo
TUxCbG9jayhwYXJlbnQpLT5pc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRvUmVuZGVyVGV4dChtX3JlbmRlcmVyKS0+dGV4dCgpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisgICAgCiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgICAgIC8vIGNhdGNo
IHN0YWxlIFdlYkNvcmVBWE9iamVjdCAoc2VlIDxyZGFyOi8vcHJvYmxlbS8zOTYwMTk2PikKQEAg
LTExNzEsNiArMTE5MiwxMyBAQAogICAgIGlmIChzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgaXMgYSBz
cGVjaWFsIGNhc2Ugd2l0aGluIHRoZSBtYXRoIHRyZWUgdGhhdCBuZWVkcyB0byBiZSBpZ25vcmVk
LgorICAgIGlmIChpc0lnbm9yZWRFbGVtZW50V2l0aGluTWF0aFRyZWUoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgLy8gT3RoZXJ3aXNlIGFsbCBvdGhlciBtYXRoIGVsZW1lbnRzIGFyZSBp
biB0aGUgdHJlZS4KKyAgICBpZiAoaXNNYXRoRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCiAgICAgLy8gPHNwYW4+IHRhZ3MgYXJlIGlubGluZSB0YWdzIGFuZCBub3QgbWVh
bnQgdG8gY29udmV5IGluZm9ybWF0aW9uIGlmIHRoZXkgaGF2ZSBubyBvdGhlciBhcmlhCiAgICAg
Ly8gaW5mb3JtYXRpb24gb24gdGhlbS4gSWYgd2UgZG9uJ3QgaWdub3JlIHRoZW0sIHRoZXkgbWF5
IGVtaXQgc2lnbmFscyBleHBlY3RlZCB0byBjb21lIGZyb20KICAgICAvLyB0aGVpciBwYXJlbnQu
IEluIGFkZGl0aW9uLCBiZWNhdXNlIGluY2x1ZGVkIHNwYW5zIGFyZSBHcm91cFJvbGUgb2JqZWN0
cywgYW5kIEdyb3VwUm9sZQpAQCAtMjM5OCw2ICsyNDI2LDEwIEBACiAgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWF0aFRhZykpCiAgICAgICAgIHJldHVybiBE
b2N1bWVudE1hdGhSb2xlOwogI2VuZGlmCisgICAgLy8gSXQncyBub3QgY2xlYXIgd2hpY2ggcm9s
ZSBhIHBsYXRmb3JtIHNob3VsZCBjaG9vc2UgZm9yIGEgbWF0aCBlbGVtZW50LgorICAgIC8vIERl
Y2xhcmluZyBhIG1hdGggZWxlbWVudCByb2xlIHNob3VsZCBnaXZlIGZsZXhpYmlsaXR5IHRvIHBs
YXRmb3JtcyB0byBjaG9vc2UuCisgICAgaWYgKGlzTWF0aEVsZW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIE1hdGhFbGVtZW50Um9sZTsKICAgICAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdO
YW1lKGRkVGFnKSkKICAgICAgICAgcmV0dXJuIERlZmluaXRpb25MaXN0RGVmaW5pdGlvblJvbGU7
CkBAIC0zMjg2LDQgKzMzMTgsMzE1IEBACiAgICAgbGF5ZXItPnNjcm9sbFRvT2Zmc2V0KHRvU2l6
ZShwb2ludCksIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKIH0KIAorI2lmIEVO
QUJMRShNQVRITUwpCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aEVsZW1l
bnQoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFt
X3JlbmRlcmVyIHx8ICFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0
dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmlzTWF0aE1MRWxl
bWVudCgpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aEZyYWN0
aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVu
ZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biB0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5pc1JlbmRlck1hdGhNTEZyYWN0aW9u
KCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoRmVuY2VkKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVuZGVyTWF0
aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0b1Jl
bmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5pc1JlbmRlck1hdGhNTEZlbmNlZCgpOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFN1YnNjcmlwdFN1cGVyc2Ny
aXB0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVu
ZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biB0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5pc1JlbmRlck1hdGhNTFN1YlN1cCgp
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFJvdygpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJs
b2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJN
YXRoTUxCbG9jayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxSb3coKTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhVbmRlck92ZXIoKSBjb25zdAoreworICAg
IGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxv
Y2sobV9yZW5kZXJlciktPmlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKCk7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJNYXRoTUxCbG9j
ayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCk7Cit9CisgICAgCitib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFJvb3QoKSBjb25zdAoreworICAgIGlm
ICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxvY2so
bV9yZW5kZXJlciktPmlzUmVuZGVyTWF0aE1MUm9vdCgpOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzTWF0aE9wZXJhdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVu
ZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoaXMgaXMgYWN0dWFsbHkgYSBy
ZW5kZXIgTWF0aE1MIG9wZXJhdG9yIGJlY2F1c2UKKyAgICAvLyBNYXRoTUwgd2lsbCBjcmVhdGUg
TWF0aE1MQmxvY2tzIGFuZCB1c2UgdGhlIG9yaWdpbmFsIG5vZGUgYXMgdGhlIG5vZGUKKyAgICAv
LyBvZiB0aGlzIG5ldyBibG9jayB0aGF0IGlzIG5vdCB0aWVkIHRvIHRoZSBET00uCisgICAgaWYg
KCF0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5pc1JlbmRlck1hdGhNTE9wZXJhdG9y
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gaXNNYXRoRWxlbWVu
dCgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aEZlbmNlT3BlcmF0b3IoKSBjb25zdAor
eworICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJNYXRoTUxCbG9j
aygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCF0b1JlbmRlck1hdGhN
TEJsb2NrKG1fcmVuZGVyZXIpLT5pc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogbWF0aE9wZXJhdG9y
ID0gdG9SZW5kZXJNYXRoTUxPcGVyYXRvcih0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIp
KTsKKyAgICByZXR1cm4gbWF0aE9wZXJhdG9yLT5vcGVyYXRvclR5cGUoKSA9PSBSZW5kZXJNYXRo
TUxPcGVyYXRvcjo6RmVuY2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8
fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKCF0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5pc1Jl
bmRlck1hdGhNTE9wZXJhdG9yKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBS
ZW5kZXJNYXRoTUxPcGVyYXRvciogbWF0aE9wZXJhdG9yID0gdG9SZW5kZXJNYXRoTUxPcGVyYXRv
cih0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpKTsKKyAgICByZXR1cm4gbWF0aE9wZXJh
dG9yLT5vcGVyYXRvclR5cGUoKSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6U2VwYXJhdG9yOwor
fQorICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhUZXh0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1l
czo6bXRleHRUYWcpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0
aE51bWJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05h
bWUoTWF0aE1MTmFtZXM6Om1uVGFnKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc01hdGhJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbm9kZSgpICYmIG5v
ZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFRhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbm9k
ZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXRhYmxlVGFnKTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhUYWJsZVJvdygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10
clRhZyk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVD
ZWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bXRkVGFnKTsKK30KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNJZ25vcmVkRWxlbWVudFdpdGhpbk1hdGhUcmVlKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIC8vIElnbm9yZSBp
dGVtcyB0aGF0IHdlcmUgY3JlYXRlZCBmb3IgbGF5b3V0IHB1cnBvc2VzIG9ubHkuCisgICAgaWYg
KG1fcmVuZGVyZXItPmlzUmVuZGVyTWF0aE1MQmxvY2soKSAmJiB0b1JlbmRlck1hdGhNTEJsb2Nr
KG1fcmVuZGVyZXIpLT5pZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gSWdub3JlIGFub255bW91cyByZW5kZXJlcnMgaW5zaWRlIG1hdGgg
YmxvY2tzLgorICAgIGlmIChtX3JlbmRlcmVyLT5pc0Fub255bW91cygpKSB7CisgICAgICAgIGZv
ciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICAgICAgaWYgKHBhcmVu
dC0+aXNNYXRoRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gT25seSBtYXRoIGVsZW1lbnRzIHRoYXQgd2UgZXhwbGljaXRs
eSByZWNvZ25pemUgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGlu
Z3MgbGlrZSA8bXN0eWxlPiB0byBhcHBlYXIgaW4gdGhlIHRyZWUuCisgICAgaWYgKGlzTWF0aEVs
ZW1lbnQoKSkgeworICAgICAgICBpZiAoaXNNYXRoRnJhY3Rpb24oKSB8fCBpc01hdGhGZW5jZWQo
KSB8fCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIHx8IGlzTWF0aFJvdygpCisgICAgICAg
ICAgICB8fCBpc01hdGhVbmRlck92ZXIoKSB8fCBpc01hdGhSb290KCkgfHwgaXNNYXRoVGV4dCgp
IHx8IGlzTWF0aE51bWJlcigpCisgICAgICAgICAgICB8fCBpc01hdGhPcGVyYXRvcigpIHx8IGlz
TWF0aEZlbmNlT3BlcmF0b3IoKSB8fCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpCisgICAgICAg
ICAgICB8fCBpc01hdGhJZGVudGlmaWVyKCkgfHwgaXNNYXRoVGFibGUoKSB8fCBpc01hdGhUYWJs
ZVJvdygpIHx8IGlzTWF0aFRhYmxlQ2VsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0Fj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhSYWRpY2Fu
ZE9iamVjdCgpCit7CisgICAgaWYgKCFpc01hdGhSb290KCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA8
IDEpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIC8vIFRoZSByYWRpY2FuZCBpcyB0aGUg
dmFsdWUgYmVpbmcgcm9vdGVkIGFuZCBtdXN0IGJlIGxpc3RlZCBmaXJzdC4KKyAgICByZXR1cm4g
Y2hpbGRyZW5bMF0uZ2V0KCk7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Om1hdGhSb290SW5kZXhPYmplY3QoKQoreworICAgIGlmICghaXNNYXRo
Um9vdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigp
OworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICAvLyBUaGUgaW5kZXggaW4gYSByb290IGlzIHRoZSB2YWx1ZSB3aGljaCBkZXRlcm1pbmVzIGlm
IGl0J3MgYSBzcXVhcmUsIGN1YmUsIGV0Yywgcm9vdAorICAgIC8vIGFuZCBtdXN0IGJlIGxpc3Rl
ZCBzZWNvbmQuCisgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgpOworfQorCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoTnVtZXJhdG9yT2JqZWN0
KCkKK3sKKyAgICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBj
aGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSAhPSAy
KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gY2hpbGRyZW5bMF0uZ2V0KCk7
Cit9CisgICAgCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjptYXRoRGVub21pbmF0b3JPYmplY3QoKQoreworICAgIGlmICghaXNNYXRoRnJhY3Rpb24oKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOworICAgIGlmIChj
aGlsZHJlbi5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJu
IGNoaWxkcmVuWzFdLmdldCgpOworfQorICAgIAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFVuZGVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIWlzTWF0
aFVuZGVyT3ZlcigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOworICAgIGlmIChjaGls
ZHJlbi5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAobm9kZSgp
LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdW5kZXJUYWcpIHx8IG5vZGUoKS0+aGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6bXVuZGVyb3ZlclRhZykpCisgICAgICAgIHJldHVybiBjaGlsZHJlblsx
XS5nZXQoKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aE92ZXJPYmplY3QoKQoreworICAgIGlmICgh
aXNNYXRoVW5kZXJPdmVyKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CisgICAgaWYg
KGNoaWxkcmVuLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmIChu
b2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vdmVyVGFnKSkKKyAgICAgICAgcmV0dXJu
IGNoaWxkcmVuWzFdLmdldCgpOworICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFt
ZXM6Om11bmRlcm92ZXJUYWcpKQorICAgICAgICByZXR1cm4gY2hpbGRyZW5bMl0uZ2V0KCk7CisK
KyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6bWF0aEJhc2VPYmplY3QoKQoreworICAgIGlmICghaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSAmJiAhaXNNYXRoVW5kZXJPdmVyKCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHRoaXMtPmNo
aWxkcmVuKCk7CisgICAgLy8gVGhlIGJhc2Ugb2JqZWN0IGluIHF1ZXN0aW9uIGlzIGFsd2F5cyB0
aGUgZmlyc3QgY2hpbGQuCisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA+IDApCisgICAgICAgIHJl
dHVybiBjaGlsZHJlblswXS5nZXQoKTsKKworICAgIHJldHVybiAwOworfQorCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoU3Vic2NyaXB0T2JqZWN0
KCkKK3sKKyAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IHRoaXMtPmNoaWxkcmVuKCk7CisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA8IDIpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXN1
YlRhZykgfHwgbm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3Vic3VwVGFnKSkKKyAg
ICAgICAgcmV0dXJuIGNoaWxkcmVuWzFdLmdldCgpOworICAgIAorICAgIHJldHVybiAwOworfQor
CitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoU3Vw
ZXJzY3JpcHRPYmplY3QoKQoreworICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgp
IDwgMikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6bXN1cFRhZykpCisgICAgICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQo
KTsKKyAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc3Vic3VwVGFnKSkK
KyAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzJdLmdldCgpOworICAgIAorICAgIHJldHVybiAwOwor
fQorICAgIAorU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhGZW5jZWRPcGVu
U3RyaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTWF0aEZlbmNlZCgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgCisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6
b3BlbkF0dHIpOworfQorCitTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aEZl
bmNlZENsb3NlU3RyaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTWF0aEZlbmNlZCgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgCisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShNYXRo
TUxOYW1lczo6Y2xvc2VBdHRyKTsKK30KKworI2VuZGlmCisgICAgCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkocmV2aXNpb24gMTMzNTM5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1l
bnQpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHQoMCkKICAgICAsIG1fb3BlcmF0b3IoMCkKKyAgICAs
IG1fb3BlcmF0b3JUeXBlKERlZmF1bHQpCiB7CiB9CiAKQEAgLTUwLDYgKzUxLDcgQEAKICAgICA6
IFJlbmRlck1hdGhNTEJsb2NrKG5vZGUpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHQoMCkKICAgICAs
IG1fb3BlcmF0b3IoY29udmVydEh5cGhlbk1pbnVzVG9NaW51c1NpZ24ob3BlcmF0b3JDaGFyKSkK
KyAgICAsIG1fb3BlcmF0b3JUeXBlKERlZmF1bHQpCiB7CiB9CiAKQEAgLTIwMSw2ICsyMDMsOCBA
QAogICAgIGlmIChzdHJldGNoRGlzYWJsZWQgfHwgIXNob3VsZFN0YWNrKSB7CiAgICAgICAgIG1f
aXNTdGFja2VkID0gZmFsc2U7CiAgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluZXIgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJsb2NrKG5vZGUoKSk7CisgICAgICAgIC8vIFRo
aXMgY29udGFpbmVyIGRvZXNuJ3Qgb2ZmZXIgYW55IHVzZWZ1bCBpbmZvcm1hdGlvbiB0byBhY2Nl
c3NpYmlsaXR5LgorICAgICAgICB0b1JlbmRlck1hdGhNTEJsb2NrKGNvbnRhaW5lciktPnNldEln
bm9yZUluQWNjZXNzaWJpbGl0eVRyZWUodHJ1ZSk7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBu
ZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CkBAIC0yOTMsNiArMjk3LDcgQEAKIFJlbmRl
ckJsb2NrKiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlR2x5cGgoVUNoYXIgZ2x5cGgsIGlu
dCBtYXhIZWlnaHRGb3JSZW5kZXJlciwgaW50IGNoYXJSZWxhdGl2ZSkKIHsKICAgICBSZW5kZXJC
bG9jayogY29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayhu
b2RlKCkpOworICAgIHRvUmVuZGVyTWF0aE1MQmxvY2soY29udGFpbmVyKS0+c2V0SWdub3JlSW5B
Y2Nlc3NpYmlsaXR5VHJlZSh0cnVlKTsKICAgICBjb250YWluZXItPnNldFN0eWxlKGNyZWF0ZVN0
YWNrYWJsZVN0eWxlKG1heEhlaWdodEZvclJlbmRlcmVyKSk7CiAgICAgYWRkQ2hpbGQoY29udGFp
bmVyKTsKICAgICBSZW5kZXJCbG9jayogcGFyZW50ID0gY29udGFpbmVyOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAko
cmV2aXNpb24gMTMzNTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMiBAQAogICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb3coKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE1hdGgoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTEZlbmNlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MRnJh
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
ck1hdGhNTFJvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlck1hdGhNTFNxdWFyZVJvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFN1YlN1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAKICAgICAvLyBNYXRoTUwgZGVmaW5lcyBhbiAiZW1iZWxsaXNoZWQg
b3BlcmF0b3IiIGFzIHJvdWdobHkgYW4gPG1vPiB0aGF0IG1heSBoYXZlIHN1YnNjcmlwdHMsCiAg
ICAgLy8gc3VwZXJzY3JpcHRzLCB1bmRlcnNjcmlwdHMsIG92ZXJzY3JpcHRzLCBvciBhIGRlbm9t
aW5hdG9yIChhcyBpbiBkL2R4LCB3aGVyZSAiZCIgaXMgc29tZQpAQCAtODcsOCArOTMsMTIgQEAK
ICAgICAvLyBDcmVhdGUgYSBuZXcgUmVuZGVyTWF0aE1MQmxvY2ssIHdpdGggYSBuZXcgc3R5bGUg
aW5oZXJpdGluZyBmcm9tIHRoaXMtPnN0eWxlKCkuCiAgICAgUmVuZGVyTWF0aE1MQmxvY2sqIGNy
ZWF0ZUFub255bW91c01hdGhNTEJsb2NrKEVEaXNwbGF5ID0gRkxFWCk7CiAgICAgCisgICAgdm9p
ZCBzZXRJZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUluQWNj
ZXNzaWJpbGl0eVRyZWUgPSBmbGFnOyB9CisgICAgYm9vbCBpZ25vcmVJbkFjY2Vzc2liaWxpdHlU
cmVlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlOyB9CisgICAg
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9W
RVJSSURFOworICAgIGJvb2wgbV9pZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlOwogICAgIAogcHJv
dGVjdGVkOgogICAgIC8vIFNldCBvdXIgbG9naWNhbCB3aWR0aCB0byBhIGxhcmdlIHZhbHVlLCBh
bmQgY29tcHV0ZSBvdXIgY2hpbGRyZW4ncyBwcmVmZXJyZWQgbG9naWNhbCBoZWlnaHRzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuaAkocmV2aXNpb24gMTMzNTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0NiwxMSBAQAogICAgIHZvaWQgc3RyZXRjaFRvSGVpZ2h0KGludCBwaXhlbEhlaWdodCk7CiAg
ICAgCiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdCBPVkVSUklE
RTsKLSAgICAgICAgCisgICAgCisgICAgZW51bSBPcGVyYXRvclR5cGUgeyBEZWZhdWx0LCBTZXBh
cmF0b3IsIEZlbmNlIH07CisgICAgdm9pZCBzZXRPcGVyYXRvclR5cGUoT3BlcmF0b3JUeXBlIHR5
cGUpIHsgbV9vcGVyYXRvclR5cGUgPSB0eXBlOyB9CisgICAgT3BlcmF0b3JUeXBlIG9wZXJhdG9y
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0b3JUeXBlOyB9CisgICAgCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJ
REU7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlU3RhY2thYmxlU3R5bGUoaW50
IG1heEhlaWdodEZvclJlbmRlcmVyKTsKQEAgLTYyLDYgKzY2LDcgQEAKICAgICBpbnQgbV9zdHJl
dGNoSGVpZ2h0OwogICAgIGJvb2wgbV9pc1N0YWNrZWQ7CiAgICAgVUNoYXIgbV9vcGVyYXRvcjsK
KyAgICBPcGVyYXRvclR5cGUgbV9vcGVyYXRvclR5cGU7CiB9OwogCiBpbmxpbmUgUmVuZGVyTWF0
aE1MT3BlcmF0b3IqIHRvUmVuZGVyTWF0aE1MT3BlcmF0b3IoUmVuZGVyTWF0aE1MQmxvY2sqIGJs
b2NrKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
cXVhcmVSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChFbGVt
ZW50Kik7CiAgICAgCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFNx
dWFyZVJvb3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNxdWFyZVJvb3QiOyB9
CiB9OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAkocmV2aXNpb24gMTMzNTM5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAg
IAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxGcmFjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGZpeENoaWxkU3R5bGUoUmVuZGVyT2JqZWN0
KiBjaGlsZCk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVy
T3Zlci5oCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3
IEBACiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdCBPVkVSUklE
RTsKICAgICAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MVW5kZXJP
dmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxVbmRlck92ZXIiOyB9CiAKICAg
ICBlbnVtIFVuZGVyT3ZlclR5cGUgeyBVbmRlciwgT3ZlciwgVW5kZXJPdmVyIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
ZW5jZWQuY3BwCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDIyICs4
MiwyMyBAQAogICAgICAgICBtYWtlRmVuY2VzKCk7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9y
KiBSZW5kZXJNYXRoTUxGZW5jZWQ6OmNyZWF0ZU1hdGhNTE9wZXJhdG9yKFVDaGFyIHVDaGFyLCBP
cGVyYXRvclR5cGUgb3BlcmF0b3JUeXBlKQorUmVuZGVyTWF0aE1MT3BlcmF0b3IqIFJlbmRlck1h
dGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IoVUNoYXIgdUNoYXIsIFJlbmRlck1hdGhN
TE9wZXJhdG9yOjpPcGVyYXRvclR5cGUgb3BlcmF0b3JUeXBlKQogewogICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheShzdHlsZSgpLCBGTEVYKTsKICAgICBuZXdTdHlsZS0+c2V0RmxleERpcmVjdGlvbihG
bG93Q29sdW1uKTsKLSAgICBuZXdTdHlsZS0+c2V0TWFyZ2luRW5kKExlbmd0aCgob3BlcmF0b3JU
eXBlID09IEZlbmNlID8gZ0ZlbmNlTWFyZ2luRW1zIDogZ1NlcGFyYXRvck1hcmdpbkVuZEVtcykg
KiBzdHlsZSgpLT5mb250U2l6ZSgpLCBGaXhlZCkpOwotICAgIGlmIChvcGVyYXRvclR5cGUgPT0g
RmVuY2UpCisgICAgbmV3U3R5bGUtPnNldE1hcmdpbkVuZChMZW5ndGgoKG9wZXJhdG9yVHlwZSA9
PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2UgPyBnRmVuY2VNYXJnaW5FbXMgOiBnU2VwYXJh
dG9yTWFyZ2luRW5kRW1zKSAqIHN0eWxlKCktPmZvbnRTaXplKCksIEZpeGVkKSk7CisgICAgaWYg
KG9wZXJhdG9yVHlwZSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2UpCiAgICAgICAgIG5l
d1N0eWxlLT5zZXRNYXJnaW5TdGFydChMZW5ndGgoZ0ZlbmNlTWFyZ2luRW1zICogc3R5bGUoKS0+
Zm9udFNpemUoKSwgRml4ZWQpKTsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogbmV3T3BlcmF0
b3IgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9yKG5vZGUoKSAvKiAi
YWxtb3N0IGFub255bW91cyIgKi8sIHVDaGFyKTsKKyAgICBuZXdPcGVyYXRvci0+c2V0T3BlcmF0
b3JUeXBlKG9wZXJhdG9yVHlwZSk7CiAgICAgbmV3T3BlcmF0b3ItPnNldFN0eWxlKG5ld1N0eWxl
LnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG5ld09wZXJhdG9yOwogfQogCiB2b2lkIFJlbmRlck1h
dGhNTEZlbmNlZDo6bWFrZUZlbmNlcygpCiB7Ci0gICAgUmVuZGVyTWF0aE1MUm93OjphZGRDaGls
ZChjcmVhdGVNYXRoTUxPcGVyYXRvcihtX29wZW4sIEZlbmNlKSwgZmlyc3RDaGlsZCgpKTsKLSAg
ICBtX2Nsb3NlRmVuY2VSZW5kZXJlciA9IGNyZWF0ZU1hdGhNTE9wZXJhdG9yKG1fY2xvc2UsIEZl
bmNlKTsKKyAgICBSZW5kZXJNYXRoTUxSb3c6OmFkZENoaWxkKGNyZWF0ZU1hdGhNTE9wZXJhdG9y
KG1fb3BlbiwgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OkZlbmNlKSwgZmlyc3RDaGlsZCgpKTsKKyAg
ICBtX2Nsb3NlRmVuY2VSZW5kZXJlciA9IGNyZWF0ZU1hdGhNTE9wZXJhdG9yKG1fY2xvc2UsIFJl
bmRlck1hdGhNTE9wZXJhdG9yOjpGZW5jZSk7CiAgICAgUmVuZGVyTWF0aE1MUm93OjphZGRDaGls
ZChtX2Nsb3NlRmVuY2VSZW5kZXJlcik7CiB9CiAKQEAgLTEzMiw3ICsxMzMsNyBAQAogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICgqbV9zZXBhcmF0b3JzLmdl
dCgpKVtjb3VudCAtIDFdOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgc2VwYXJhdG9y
UmVuZGVyZXIgPSBjcmVhdGVNYXRoTUxPcGVyYXRvcihzZXBhcmF0b3IsIFNlcGFyYXRvcik7Cisg
ICAgICAgICAgICBzZXBhcmF0b3JSZW5kZXJlciA9IGNyZWF0ZU1hdGhNTE9wZXJhdG9yKHNlcGFy
YXRvciwgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlNlcGFyYXRvcik7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFN1YlN1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3ViU3VwLmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDkgQEAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgCiBwcml2YXRl
OgorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFN1YlN1cCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2b2lkIGZpeEFub255bW91c1N0eWxlcygpOworCiAgICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTdWJTdXAiOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAkocmV2aXNp
b24gMTMzNTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKIAogcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJNYXRoTUxSb290IjsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCShyZXZp
c2lvbiAxMzM1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZlbmNlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KE1BVEhNTCkKIAogI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvdy5oIgorI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTE9wZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTM5LDEx
ICs0MCwxMCBAQAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIAog
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxGZW5jZWQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZlbmNlZCI7IH0KIAotICAgIC8vIEZJWE1FOiBPcGVy
YXRvclR5cGUgaGVyZSB3aWxsIGdvIGF3YXkgd2hlbiBkZWZhdWx0IG9wZXJhdG9yIG1hcmdpbnMg
YXJlIGRldGVybWluZWQgYnkgdGhlIE1hdGhNTCBvcGVyYXRvciBkaWN0aW9uYXJ5LgotICAgIGVu
dW0gT3BlcmF0b3JUeXBlIHsgU2VwYXJhdG9yLCBGZW5jZSB9OwotICAgIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKiBjcmVhdGVNYXRoTUxPcGVyYXRvcihVQ2hhciwgT3BlcmF0b3JUeXBlKTsKKyAgICBS
ZW5kZXJNYXRoTUxPcGVyYXRvciogY3JlYXRlTWF0aE1MT3BlcmF0b3IoVUNoYXIsIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpPcGVyYXRvclR5cGUpOwogICAgIHZvaWQgbWFrZUZlbmNlcygpOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAkocmV2aXNp
b24gMTMzNTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICAKIFJlbmRl
ck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhOb2RlKiBjb250YWluZXIpIAogICAgIDog
UmVuZGVyRmxleGlibGVCb3goY29udGFpbmVyKQorICAgICwgbV9pZ25vcmVJbkFjY2Vzc2liaWxp
dHlUcmVlKGZhbHNlKQogICAgICwgbV9pbnRyaW5zaWNQYWRkaW5nQmVmb3JlKDApCiAgICAgLCBt
X2ludHJpbnNpY1BhZGRpbmdBZnRlcigwKQogICAgICwgbV9pbnRyaW5zaWNQYWRkaW5nU3RhcnQo
MCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzUzOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTExLTA1ICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCB0eXBlcyBuZWVk
IHRvIGJlIHNlbWFudGljYWxseSBpZGVudGlmaWVkIGluIEFYIHRyZWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI2MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvbWF0aG1sLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorCiAy
MDEyLTExLTA1ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5i
bG9jayBTVkcgZXh0ZXJuYWwgcmVmZXJlbmNlcwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYXRobWwtZWxlbWVu
dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMjQgQEAKK2EKKzIKKworYQorMgorCithCisKKzMKK2EKKworMgorYQorZQor
CisyCitzdWIKKworMgorc3VwCisKKzIKK3N1Ygorc3VwCisKKzMKK3VuZGVyCisKKzMKK292ZXIK
KworMwordW5kZXIKK292ZXIKKworMworMgorMQorVGhpcyB0ZXN0cyBlbnN1cmVzIHRoYXQgTWFj
IHNwZWNpZmljIGF0dHJpYnV0ZXMgYW5kIHJvbGVzIGZvciBNYXRoTUwgZWxlbWVudHMgd29yayBh
cyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgcm93LnJv
bGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgcm93LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTog
QVhNYXRoUm93JworUEFTUyByb3cuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUgaXMgJ0FYU3Vicm9s
ZTogQVhNYXRoSWRlbnRpZmllcicKK1BBU1Mgcm93LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGEnCitQQVNTIHJvdy5jaGlsZEF0SW5kZXgo
MSkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhOdW1iZXInCitQQVNTIHJvdy5jaGlsZEF0
SW5kZXgoMSkuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAyJworUEFT
UyBmcmFjdGlvbi5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aEZyYWN0aW9uJworUEFTUyBm
cmFjdGlvbkRlbm9taW5hdG9yLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoTnVtYmVyJwor
UEFTUyBmcmFjdGlvbkRlbm9taW5hdG9yLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAn
QVhWYWx1ZTogMicKK1BBU1MgZnJhY3Rpb25EZW5vbWluYXRvci5pc0VxdWFsKGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnZnJhY3Rpb25EZW5vbWluYXRvcicp
KSBpcyB0cnVlCitQQVNTIGZyYWN0aW9uTnVtZXJhdG9yLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTog
QVhNYXRoSWRlbnRpZmllcicKK1BBU1MgZnJhY3Rpb25OdW1lcmF0b3IuY2hpbGRBdEluZGV4KDAp
LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBhJworUEFTUyBmcmFjdGlvbk51bWVyYXRvci5pc0Vx
dWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnZnJhY3Rp
b25OdW1lcmF0b3InKSkgaXMgdHJ1ZQorUEFTUyBzcXJ0LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91
cCcKK1BBU1Mgc3FydC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFNxdWFyZVJvb3QnCitQ
QVNTIHNxcnRSYWRpY2FuZC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXIn
CitQQVNTIHNxcnRSYWRpY2FuZC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFs
dWU6IGEnCitQQVNTIHNxcnRSYWRpY2FuZC5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3FydFJhZGljYW5kJykpIGlzIHRydWUKK1BBU1Mgcm9v
dC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIHJvb3Quc3Vicm9sZSBpcyAnQVhTdWJy
b2xlOiBBWE1hdGhSb290JworUEFTUyByb290SW5kZXguaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3Jvb3RJbmRleCcpKSBpcyB0cnVlCitQQVNT
IHJvb3RSYWRpY2FuZC5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgncm9vdFJhZGljYW5kJykpIGlzIHRydWUKK1BBU1MgZmVuY2VkLnJvbGUgaXMg
J0FYUm9sZTogQVhHcm91cCcKK1BBU1MgZmVuY2VkLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhN
YXRoRmVuY2VkJworUEFTUyBmZW5jZWQuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYTWF0aEZlbmNl
ZE9wZW4nKSBpcyAneycKK1BBU1MgZmVuY2VkLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWE1hdGhG
ZW5jZWRDbG9zZScpIGlzICd9JworUEFTUyBjaGlsZC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFs
dWUgaXMgJ0FYVmFsdWU6IHsnCitQQVNTIGNoaWxkLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogMicKK1BBU1MgY2hpbGQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IGlzICdBWFZhbHVlOiAsJworUEFTUyBjaGlsZC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IGEnCitQQVNTIGNoaWxkLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBp
cyAnQVhWYWx1ZTogLCcKK1BBU1MgY2hpbGQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiBlJworUEFTUyBjaGlsZC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMg
J0FYVmFsdWU6IH0nCitQQVNTIHN1Yi5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIHN1
Yi5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0JworUEFT
UyBzdWJCYXNlLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllcicKK1BBU1Mg
c3ViU3ViLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoVGV4dCcKK1BBU1Mgc3ViQmFzZS5p
c0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3Vi
QmFzZScpKSBpcyB0cnVlCitQQVNTIHN1YlN1Yi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3ViU3ViJykpIGlzIHRydWUKK1BBU1Mgc3VwLnJv
bGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgc3VwLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTog
QVhNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQnCitQQVNTIHN1cEJhc2Uuc3Vicm9sZSBpcyAnQVhT
dWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFTUyBzdXBTdXAuc3Vicm9sZSBpcyAnQVhTdWJy
b2xlOiBBWE1hdGhUZXh0JworUEFTUyBzdXBCYXNlLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdXBCYXNlJykpIGlzIHRydWUKK1BBU1Mgc3Vw
U3VwLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdzdXBTdXAnKSkgaXMgdHJ1ZQorUEFTUyBzdWJzdXAucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3Vw
JworUEFTUyBzdWJzdXAuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhTdWJzY3JpcHRTdXBl
cnNjcmlwdCcKK1BBU1Mgc3Vic3VwQmFzZS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aElk
ZW50aWZpZXInCitQQVNTIHN1YnN1cFN1cC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRl
eHQnCitQQVNTIHN1YnN1cFN1Yi5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRleHQnCitQ
QVNTIHN1YnN1cEJhc2UuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ3N1YnN1cEJhc2UnKSkgaXMgdHJ1ZQorUEFTUyBzdWJzdXBTdWIuaXNFcXVh
bChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3N1YnN1cFN1
YicpKSBpcyB0cnVlCitQQVNTIHN1YnN1cFN1cC5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3Vic3VwU3VwJykpIGlzIHRydWUKK1BBU1MgdW5k
ZXIucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyB1bmRlci5zdWJyb2xlIGlzICdBWFN1
YnJvbGU6IEFYTWF0aFVuZGVyT3ZlcicKK1BBU1MgdW5kZXJCYXNlLnN1YnJvbGUgaXMgJ0FYU3Vi
cm9sZTogQVhNYXRoSWRlbnRpZmllcicKK1BBU1MgdW5kZXJVbmRlci5zdWJyb2xlIGlzICdBWFN1
YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIHVuZGVyVW5kZXIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3VuZGVyVW5kZXInKSkgaXMgdHJ1ZQor
UEFTUyBvdmVyLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgb3Zlci5zdWJyb2xlIGlz
ICdBWFN1YnJvbGU6IEFYTWF0aFVuZGVyT3ZlcicKK1BBU1Mgb3ZlckJhc2Uuc3Vicm9sZSBpcyAn
QVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFTUyBvdmVyT3Zlci5zdWJyb2xlIGlzICdB
WFN1YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIG92ZXJCYXNlLmlzRXF1YWwoYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdvdmVyQmFzZScpKSBpcyB0cnVlCitQ
QVNTIG92ZXJPdmVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdvdmVyT3ZlcicpKSBpcyB0cnVlCitQQVNTIHVuZGVyb3Zlci5yb2xlIGlzICdB
WFJvbGU6IEFYR3JvdXAnCitQQVNTIHVuZGVyb3Zlci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFY
TWF0aFVuZGVyT3ZlcicKK1BBU1MgdW5kZXJPdmVyQmFzZS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6
IEFYTWF0aElkZW50aWZpZXInCitQQVNTIHVuZGVyT3ZlclVuZGVyLnN1YnJvbGUgaXMgJ0FYU3Vi
cm9sZTogQVhNYXRoVGV4dCcKK1BBU1MgdW5kZXJPdmVyT3Zlci5zdWJyb2xlIGlzICdBWFN1YnJv
bGU6IEFYTWF0aFRleHQnCitQQVNTIHVuZGVyT3ZlckJhc2UuaXNFcXVhbChhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3VuZGVyT3ZlckJhc2UnKSkgaXMgdHJ1
ZQorUEFTUyB1bmRlck92ZXJVbmRlci5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgndW5kZXJPdmVyVW5kZXInKSkgaXMgdHJ1ZQorUEFTUyB1bmRl
ck92ZXJPdmVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCd1bmRlck92ZXJPdmVyJykpIGlzIHRydWUKK1BBU1MgdGFibGUucm9sZSBpcyAnQVhS
b2xlOiBBWEdyb3VwJworUEFTUyB0YWJsZS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRh
YmxlJworUEFTUyByb3cuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhUYWJsZVJvdycKK1BB
U1MgY2VsbC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRhYmxlQ2VsbCcKK1BBU1MgY2Vs
bC5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVy
JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1lbGVtZW50
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L21hdGhtbC1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjAzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorCis8bWF0aCBpZD0icm93Ij4KKzxtcm93PjxtaT5hPC9taT48bW4+MjwvbW4+PC9tcm93
PgorPC9tYXRoPjxicj4KKworPG1hdGggaWQ9ImZyYWN0aW9uIj4KKzxtZnJhYz48bWkgaWQ9ImZy
YWN0aW9uTnVtZXJhdG9yIj5hPC9taT48bW4gaWQ9ImZyYWN0aW9uRGVub21pbmF0b3IiPjI8L21u
PjwvbWZyYWM+Cis8L21hdGg+PGJyPgorCis8bWF0aCBpZD0ic3FydCI+Cis8bXNxcnQ+PG1pIGlk
PSJzcXJ0UmFkaWNhbmQiPmE8L21pPjwvbXNxcnQ+Cis8L21hdGg+PGJyPgorCis8bWF0aCBpZD0i
cm9vdCI+Cis8bXJvb3Q+PG1uIGlkPSJyb290UmFkaWNhbmQiPjM8L21uPjxtaSBpZD0icm9vdElu
ZGV4Ij5hPC9taT48L21yb290PgorPC9tYXRoPjxicj4KKworPG1hdGggaWQ9ImZlbmNlZCI+Cis8
bWZlbmNlZCBvcGVuPSJ7IiBjbG9zZT0ifSIgc2VwYXJhdG9ycz0iLCwiPjxtaT4yPC9taT48bWk+
YTwvbWk+PG1pPmU8L21pPjwvbXJvb3Q+Cis8L21hdGg+PGJyPgorCis8bWF0aCBpZD0ic3ViIj4K
Kzxtc3ViPjxtaSBpZD0ic3ViQmFzZSI+MjwvbWk+PG10ZXh0IGlkPSJzdWJTdWIiPnN1YjwvbXRl
eHQ+PC9tc3ViPgorPC9tYXRoPjxicj4KKworPG1hdGggaWQ9InN1cCI+Cis8bXN1cD48bWkgaWQ9
InN1cEJhc2UiPjI8L21pPjxtdGV4dCBpZD0ic3VwU3VwIj5zdXA8L210ZXh0PjwvbXN1cD4KKzwv
bWF0aD48YnI+CisKKzxtYXRoIGlkPSJzdWJzdXAiPgorPG1zdWJzdXA+PG1pIGlkPSJzdWJzdXBC
YXNlIj4yPC9taT48bXRleHQgaWQ9InN1YnN1cFN1YiI+c3ViPC9tdGV4dD48bXRleHQgaWQ9InN1
YnN1cFN1cCI+c3VwPC9tdGV4dD48L21zdWJzdXA+Cis8L21hdGg+PGJyPgorCQorPG1hdGggaWQ9
InVuZGVyIj4KKzxtdW5kZXI+PG1pIGlkPSJ1bmRlckJhc2UiPjM8L21pPjxtdGV4dCBpZD0idW5k
ZXJVbmRlciI+dW5kZXI8L210ZXh0PjwvbXVuZGVyPgorPC9tYXRoPjxicj4KKworPG1hdGggaWQ9
Im92ZXIiPgorPG1vdmVyPjxtaSBpZD0ib3ZlckJhc2UiPjM8L21pPjxtdGV4dCBpZD0ib3Zlck92
ZXIiPm92ZXI8L210ZXh0PjwvbW92ZXI+Cis8L21hdGg+PGJyPgorCis8bWF0aCBpZD0idW5kZXJv
dmVyIj4KKzxtdW5kZXJvdmVyPjxtaSBpZD0idW5kZXJPdmVyQmFzZSI+MzwvbWk+PG10ZXh0IGlk
PSJ1bmRlck92ZXJVbmRlciI+dW5kZXI8L210ZXh0PjxtdGV4dCBpZD0idW5kZXJPdmVyT3ZlciI+
b3ZlcjwvbXRleHQ+PC9tdW5kZXJvdmVyPgorPC9tYXRoPjxicj4KKworPG1hdGggaWQ9InRhYmxl
Ij4KKzxtdGFibGU+Cis8bXRyPjxtdGQ+PG1pPjM8L21pPjwvbXRkPjwvbXRyPgorPG10cj48bXRk
PjxtaT4yPC9taT48L210ZD48L210cj4KKzxtdHI+PG10ZD48bWk+MTwvbWk+PC9tdGQ+PC9tdHI+
Cis8L210YWJsZT4KKzwvbWF0aD4KKworCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGVuc3VyZXMgdGhhdCBNYWMgc3BlY2lmaWMg
YXR0cmlidXRlcyBhbmQgcm9sZXMgZm9yIE1hdGhNTCBlbGVtZW50cyB3b3JrIGFzIGV4cGVjdGVk
LiIpCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKworICAgLy8gUm93CisgICB2YXIgcm93ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJyb3ciKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91
bGRCZSgicm93LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJyb3cu
c3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhSb3cnIik7CisgICBzaG91bGRCZSgicm93LmNo
aWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7
CisgICBzaG91bGRCZSgicm93LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IGEnIik7CisgICBzaG91bGRCZSgicm93LmNoaWxkQXRJbmRleCgx
KS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aE51bWJlciciKTsKKyAgIHNob3VsZEJlKCJy
b3cuY2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogMiciKTsKKworICAgLy8gRnJhY3Rpb24KKyAgIHZhciBmcmFjdGlvbiA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZnJhY3Rpb24iKS5jaGlsZEF0SW5k
ZXgoMCk7CisgICBzaG91bGRCZSgiZnJhY3Rpb24uc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1h
dGhGcmFjdGlvbiciKTsKKyAgIHZhciBmcmFjdGlvbkRlbm9taW5hdG9yID0gZnJhY3Rpb24udWlF
bGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aEZyYWN0aW9uRGVub21pbmF0b3IiKTsKKyAgIHZh
ciBmcmFjdGlvbk51bWVyYXRvciA9IGZyYWN0aW9uLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJB
WE1hdGhGcmFjdGlvbk51bWVyYXRvciIpOworICAgc2hvdWxkQmUoImZyYWN0aW9uRGVub21pbmF0
b3Iuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhOdW1iZXInIik7CisgICBzaG91bGRCZSgi
ZnJhY3Rpb25EZW5vbWluYXRvci5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFs
dWU6IDInIik7CisgICBzaG91bGRCZVRydWUoImZyYWN0aW9uRGVub21pbmF0b3IuaXNFcXVhbChh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ZyYWN0aW9uRGVu
b21pbmF0b3InKSkiKTsKKyAgIHNob3VsZEJlKCJmcmFjdGlvbk51bWVyYXRvci5zdWJyb2xlIiwg
IidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICBzaG91bGRCZSgiZnJhY3Rpb25O
dW1lcmF0b3IuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBhJyIpOwor
ICAgc2hvdWxkQmVUcnVlKCJmcmFjdGlvbk51bWVyYXRvci5pc0VxdWFsKGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnZnJhY3Rpb25OdW1lcmF0b3InKSkiKTsK
KworICAgLy8gU3F1YXJlIHJvb3QKKyAgIHZhciBzcXJ0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzcXJ0IikuY2hpbGRBdEluZGV4KDApOworICAgc2hv
dWxkQmUoInNxcnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgc2hvdWxkQmUoInNx
cnQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhTcXVhcmVSb290JyIpOworICAgdmFyIHNx
cnRSYWRpY2FuZCA9IHNxcnQudWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aFJvb3RSYWRp
Y2FuZCIpOworICAgc2hvdWxkQmUoInNxcnRSYWRpY2FuZC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6
IEFYTWF0aElkZW50aWZpZXInIik7CisgICBzaG91bGRCZSgic3FydFJhZGljYW5kLmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogYSciKTsKKyAgIHNob3VsZEJlVHJ1ZSgi
c3FydFJhZGljYW5kLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdzcXJ0UmFkaWNhbmQnKSkiKTsKKworICAgLy8gR2VuZXJpYyByb290CisgICB2
YXIgcm9vdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
cm9vdCIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJlKCJyb290LnJvbGUiLCAiJ0FYUm9s
ZTogQVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJyb290LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTog
QVhNYXRoUm9vdCciKTsKKyAgIHZhciByb290SW5kZXggPSByb290LnVpRWxlbWVudEF0dHJpYnV0
ZVZhbHVlKCJBWE1hdGhSb290SW5kZXgiKTsKKyAgIHZhciByb290UmFkaWNhbmQgPSByb290LnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhSb290UmFkaWNhbmQiKTsKKyAgIHNob3VsZEJl
VHJ1ZSgicm9vdEluZGV4LmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdyb290SW5kZXgnKSkiKTsKKyAgIHNob3VsZEJlVHJ1ZSgicm9vdFJhZGlj
YW5kLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdyb290UmFkaWNhbmQnKSkiKTsKKworICAgLy8gRmVuY2VkCisgICB2YXIgZmVuY2VkID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJmZW5jZWQiKS5jaGls
ZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgiZmVuY2VkLnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91
cCciKTsKKyAgIHNob3VsZEJlKCJmZW5jZWQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhG
ZW5jZWQnIik7CisgICBzaG91bGRCZSgiZmVuY2VkLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWE1h
dGhGZW5jZWRPcGVuJykiLCAiJ3snIik7CisgICBzaG91bGRCZSgiZmVuY2VkLnN0cmluZ0F0dHJp
YnV0ZVZhbHVlKCdBWE1hdGhGZW5jZWRDbG9zZScpIiwgIid9JyIpOworICAgdmFyIGZlbmNlVmFs
dWVzID0gbmV3IEFycmF5KCJ7IiwgIjIiLCAiLCIsICJhIiwgIiwiLCAiZSIsICJ9Iik7CisgICBm
b3IgKHZhciBrID0gMDsgayA8IGZlbmNlVmFsdWVzLmxlbmd0aDsgaysrKSB7CisgICAgICB2YXIg
Y2hpbGQgPSBmZW5jZWQuY2hpbGRBdEluZGV4KGspOworICAgICAgc2hvdWxkQmUoImNoaWxkLmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogIiArIGZlbmNlVmFsdWVzW2td
ICsgIiciKTsKKyAgIH0KKworICAgLy8gU3Vic2NyaXB0CisgICB2YXIgc3ViID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzdWIiKS5jaGlsZEF0SW5kZXgo
MCk7CisgICBzaG91bGRCZSgic3ViLnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgIHNo
b3VsZEJlKCJzdWIuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhTdWJzY3JpcHRTdXBlcnNj
cmlwdCciKTsKKyAgIHZhciBzdWJCYXNlID0gc3ViLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJB
WE1hdGhCYXNlIik7CisgICBzaG91bGRCZSgic3ViQmFzZS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6
IEFYTWF0aElkZW50aWZpZXInIik7CisgICB2YXIgc3ViU3ViID0gc3ViLnVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlKCJBWE1hdGhTdWJzY3JpcHQiKTsKKyAgIHNob3VsZEJlKCJzdWJTdWIuc3Vicm9s
ZSIsICInQVhTdWJyb2xlOiBBWE1hdGhUZXh0JyIpOworICAgc2hvdWxkQmVUcnVlKCJzdWJCYXNl
LmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdz
dWJCYXNlJykpIik7CisgICBzaG91bGRCZVRydWUoInN1YlN1Yi5pc0VxdWFsKGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3ViU3ViJykpIik7CisKKyAgIC8v
IFN1cGVyc2NyaXB0CisgICB2YXIgc3VwID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJzdXAiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgic3Vw
LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJzdXAuc3Vicm9sZSIs
ICInQVhTdWJyb2xlOiBBWE1hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCciKTsKKyAgIHZhciBzdXBC
YXNlID0gc3VwLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhCYXNlIik7CisgICBzaG91
bGRCZSgic3VwQmFzZS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7
CisgICB2YXIgc3VwU3VwID0gc3VwLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhTdXBl
cnNjcmlwdCIpOworICAgc2hvdWxkQmUoInN1cFN1cC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFY
TWF0aFRleHQnIik7CisgICBzaG91bGRCZVRydWUoInN1cEJhc2UuaXNFcXVhbChhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3N1cEJhc2UnKSkiKTsKKyAgIHNo
b3VsZEJlVHJ1ZSgic3VwU3VwLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdzdXBTdXAnKSkiKTsKKworICAgLy8gU3Vic3VwZXJzY3JpcHQKKyAg
IHZhciBzdWJzdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoInN1YnN1cCIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJlKCJzdWJzdXAucm9sZSIs
ICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgc2hvdWxkQmUoInN1YnN1cC5zdWJyb2xlIiwgIidB
WFN1YnJvbGU6IEFYTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0JyIpOworICAgdmFyIHN1YnN1cEJh
c2UgPSBzdWJzdXAudWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aEJhc2UiKTsKKyAgIHNo
b3VsZEJlKCJzdWJzdXBCYXNlLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmll
ciciKTsKKyAgIHZhciBzdWJzdXBTdXAgPSBzdWJzdXAudWlFbGVtZW50QXR0cmlidXRlVmFsdWUo
IkFYTWF0aFN1cGVyc2NyaXB0Iik7CisgICBzaG91bGRCZSgic3Vic3VwU3VwLnN1YnJvbGUiLCAi
J0FYU3Vicm9sZTogQVhNYXRoVGV4dCciKTsKKyAgIHZhciBzdWJzdXBTdWIgPSBzdWJzdXAudWlF
bGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aFN1YnNjcmlwdCIpOworICAgc2hvdWxkQmUoInN1
YnN1cFN1Yi5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFRleHQnIik7CisgICBzaG91bGRC
ZVRydWUoInN1YnN1cEJhc2UuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ3N1YnN1cEJhc2UnKSkiKTsKKyAgIHNob3VsZEJlVHJ1ZSgic3Vic3Vw
U3ViLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdzdWJzdXBTdWInKSkiKTsKKyAgIHNob3VsZEJlVHJ1ZSgic3Vic3VwU3VwLmlzRXF1YWwoYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdWJzdXBTdXAnKSki
KTsKKworICAgLy8gVW5kZXIKKyAgIHZhciB1bmRlciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgidW5kZXIiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91
bGRCZSgidW5kZXIucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgc2hvdWxkQmUoInVu
ZGVyLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVW5kZXJPdmVyJyIpOworICAgdmFyIHVu
ZGVyQmFzZSA9IHVuZGVyLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhCYXNlIik7Cisg
ICBzaG91bGRCZSgidW5kZXJCYXNlLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRp
ZmllciciKTsKKyAgIHZhciB1bmRlclVuZGVyID0gdW5kZXIudWlFbGVtZW50QXR0cmlidXRlVmFs
dWUoIkFYTWF0aFVuZGVyIik7CisgICBzaG91bGRCZSgidW5kZXJVbmRlci5zdWJyb2xlIiwgIidB
WFN1YnJvbGU6IEFYTWF0aFRleHQnIik7CisgICBzaG91bGRCZVRydWUoInVuZGVyVW5kZXIuaXNF
cXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3VuZGVy
VW5kZXInKSkiKTsKKworICAgLy8gT3ZlcgorICAgdmFyIG92ZXIgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm92ZXIiKS5jaGlsZEF0SW5kZXgoMCk7Cisg
ICBzaG91bGRCZSgib3Zlci5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICBzaG91bGRC
ZSgib3Zlci5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFVuZGVyT3ZlciciKTsKKyAgIHZh
ciBvdmVyQmFzZSA9IG92ZXIudWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aEJhc2UiKTsK
KyAgIHNob3VsZEJlKCJvdmVyQmFzZS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50
aWZpZXInIik7CisgICB2YXIgb3Zlck92ZXIgPSBvdmVyLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVl
KCJBWE1hdGhPdmVyIik7CisgICBzaG91bGRCZSgib3Zlck92ZXIuc3Vicm9sZSIsICInQVhTdWJy
b2xlOiBBWE1hdGhUZXh0JyIpOworICAgc2hvdWxkQmVUcnVlKCJvdmVyQmFzZS5pc0VxdWFsKGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnb3ZlckJhc2UnKSki
KTsKKyAgIHNob3VsZEJlVHJ1ZSgib3Zlck92ZXIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ292ZXJPdmVyJykpIik7CisKKyAgIC8vIFVuZGVy
T3ZlcgorICAgdmFyIHVuZGVyb3ZlciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidW5kZXJvdmVyIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUo
InVuZGVyb3Zlci5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICBzaG91bGRCZSgidW5k
ZXJvdmVyLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVW5kZXJPdmVyJyIpOworICAgdmFy
IHVuZGVyT3ZlckJhc2UgPSB1bmRlcm92ZXIudWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0
aEJhc2UiKTsKKyAgIHNob3VsZEJlKCJ1bmRlck92ZXJCYXNlLnN1YnJvbGUiLCAiJ0FYU3Vicm9s
ZTogQVhNYXRoSWRlbnRpZmllciciKTsKKyAgIHZhciB1bmRlck92ZXJVbmRlciA9IHVuZGVyb3Zl
ci51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoVW5kZXIiKTsKKyAgIHNob3VsZEJlKCJ1
bmRlck92ZXJVbmRlci5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFRleHQnIik7CisgICB2
YXIgdW5kZXJPdmVyT3ZlciA9IHVuZGVyb3Zlci51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhN
YXRoT3ZlciIpOworICAgc2hvdWxkQmUoInVuZGVyT3Zlck92ZXIuc3Vicm9sZSIsICInQVhTdWJy
b2xlOiBBWE1hdGhUZXh0JyIpOworICAgc2hvdWxkQmVUcnVlKCJ1bmRlck92ZXJCYXNlLmlzRXF1
YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd1bmRlck92
ZXJCYXNlJykpIik7CisgICBzaG91bGRCZVRydWUoInVuZGVyT3ZlclVuZGVyLmlzRXF1YWwoYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd1bmRlck92ZXJVbmRl
cicpKSIpOworICAgc2hvdWxkQmVUcnVlKCJ1bmRlck92ZXJPdmVyLmlzRXF1YWwoYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd1bmRlck92ZXJPdmVyJykpIik7
CisKKyAgIC8vIFRhYmxlCisgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxk
QmUoInRhYmxlLnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJ0YWJs
ZS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFRhYmxlJyIpOworICAgdmFyIHJvdyA9IHRh
YmxlLmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJlKCJyb3cuc3Vicm9sZSIsICInQVhTdWJy
b2xlOiBBWE1hdGhUYWJsZVJvdyciKTsKKyAgIHZhciBjZWxsID0gcm93LmNoaWxkQXRJbmRleCgw
KTsKKyAgIHNob3VsZEJlKCJjZWxsLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVGFibGVD
ZWxsJyIpOworICAgc2hvdWxkQmUoImNlbGwuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUiLCAiJ0FY
U3Vicm9sZTogQVhNYXRoSWRlbnRpZmllciciKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="186746"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172447</attachid>
            <date>2012-11-05 17:07:25 -0800</date>
            <delta_ts>2012-11-13 12:36:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>61604</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTExLTA1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisK
KyAgICAgICAgQVg6IE1hdGhNTCB0eXBlcyBuZWVkIHRvIGJlIHNlbWFudGljYWxseSBpZGVudGlm
aWVkIGluIEFYIHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlSb2xlLmg6CisgICAgICAgICogc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAgICAgQWRkIG5ldyBhY2Nlc3NpYmlsaXR5
IHJvbGUuCisKIDIwMTItMTEtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbVjhdIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgc2hvdWxkIGJlIHVzYWJsZSBmb3Ig
bW9yZSB0aGFuIGp1c3QgTm9kZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE2LDYgKzIxNiw3IEBACiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YkFjY2Vzc2liaWxpdHlSb2xlSW1hZ2VNYXBMaW5rLCBJbWFnZU1hcExpbmtSb2xlKTsKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVJbWFnZU1hcCwgSW1h
Z2VNYXBSb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0
eVJvbGVMaXN0TWFya2VyLCBMaXN0TWFya2VyUm9sZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlTWF0aEVsZW1lbnQsIE1hdGhFbGVtZW50Um9sZSk7
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlV2ViQXJl
YSwgV2ViQXJlYVJvbGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3Np
YmlsaXR5Um9sZUhlYWRpbmcsIEhlYWRpbmdSb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVMaXN0Qm94LCBMaXN0Qm94Um9sZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlS
b2xlLmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAK
ICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3RCb3hPcHRpb24sCiAgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVMaXN0SXRlbSwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3RNYXJrZXIsCisg
ICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVNYXRoRWxlbWVudCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5
Um9sZU1hdHRlLAogICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWVudSwKICAgICBXZWJBY2Nlc3Np
YmlsaXR5Um9sZU1lbnVCYXIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzM1MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMzEgQEAK
KzIwMTItMTEtMDUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAg
ICAgICBBWDogTWF0aE1MIHR5cGVzIG5lZWQgdG8gYmUgc2VtYW50aWNhbGx5IGlkZW50aWZpZWQg
aW4gQVggdHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAxMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2VtYW50aWNhbGx5IGlkZW50aWZ5IHZhcmlvdXMgTWF0aE1MIGVsZW1lbnRzIHdpdGhpbiB0
aGUgQVggdHJlZS4gVGhpcyB3aWxsIGFsbG93CisgICAgICAgIHNjcmVlbiByZWFkZXJzIHRvIGlk
ZW50aWZ5IG1hdGggdHlwZXMgc28gdGhhdCBlcXVhdGlvbnMgY2FuIGJlIG91dHB1dCBtb3JlIGFj
Y3VyYXRlbHkuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0
aG1sLWVsZW1lbnRzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aEZlbmNlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhSb3cpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVW5kZXJPdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFJvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoU3F1YXJlUm9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01hdGhGZW5jZU9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aElkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVSb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNYXRoVGFibGVDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhSYWRpY2FuZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoUm9vdEluZGV4T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhVbmRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoT3Zlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoTnVtZXJh
dG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhE
ZW5vbWluYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRoQmFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRoU3Vic2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkT3BlblN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRoRmVuY2VkQ2xvc2VTdHJpbmcpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzdGFydE9mQ29udGludWF0aW9ucyk6CisgICAgICAgICAgICBIYW5kbGUgYSBjYXNlIHdo
ZXJlIGEgTWF0aE1MIHJlbmRlciBlbGVtZW50IGlzIGNyZWF0ZWQgd2l0aCB0aGUgbm9kZSBvZiB0
aGVpciBwYXJlbnQgKHdoaWNoIGNvdWxkIGxlYWQgdG8gYW4gYXNzZXJ0KS4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQpOgorICAg
ICAgICAgICAgSGFuZGxlIHRoZSBjYXNlcyBmb3IgUmVuZGVyTWF0aE1MT3BlcmF0b3JzIHdoaWNo
IHVzZSB0aGUgbm9kZSBvZiB0aGVpciBwYXJlbnQsIHdoaWNoIGNvbmZ1c2VzIHRoZSBub3JtYWwg
dGV4dFVuZGVyRWxlbWVudCgpIHJvdXRpbmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgICAgIEhh
bmRsZSBpZ25vcmVkIGNhc2VzIGZvciBtYXRoIGVsZW1lbnRzCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aEZy
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
TWF0aEZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhSb3cpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVW5kZXJPdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFNxdWFyZVJvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoUm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhPcGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhGZW5jZU9w
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
TWF0aFNlcGFyYXRvck9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmlzTWF0aFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVSb3cpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGVDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSWdub3JlZEVsZW1l
bnRXaXRoaW5NYXRoVHJlZSk6CisgICAgICAgICAgICBNYWtlIHN1cmUgYW5vbnltb3VzZSBibG9j
a3MgYXJlIGlnbm9yZWQgd2l0aGluIG1hdGggdHJlZTsgbWFrZSBzdXJlIG5vbi1lbGVtZW50IHR5
cGUgb2JqZWN0cyBhcmUgaWdub3JlZCAobGlrZSA8bXN0eWxlPikuCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoUmFkaWNhbmRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFJvb3RJbmRleE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoTnVt
ZXJhdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om1hdGhEZW5vbWluYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjptYXRoVW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aE92ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoU3VwZXJz
Y3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6bWF0aEZlbmNlZE9wZW5TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWF0aEZlbmNlZENsb3NlU3RyaW5nKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAg
IChjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIHN1YnJvbGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxGZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmlzUmVuZGVyTWF0aE1MUm9vdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjppc1JlbmRlck1hdGhNTFN1YlN1cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6aXNSZW5kZXJNYXRoTUxVbmRlck92
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnNldElnbm9yZUluQWNj
ZXNzaWJpbGl0eVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Omln
bm9yZUluQWNjZXNzaWJpbGl0eVRyZWUpOgorICAgICAgICAgICAgQWRkIGFiaWxpdHkgdG8gaWRl
bnRpZnkgYW5vbnltb3VzIHJlbmRlciBibG9ja3MgYXMgaXRlbXMgdGhhdCBBWCBzaG91bGQgaWdu
b3JlLgorICAgICAgICAoUmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAgICAgSWRlbnRpZnkg
d2hpY2gga2luZCBvZiBtYXRoIG9wZXJhdG9yIGlzIGJlaW5nIGNyZWF0ZWQgb24gdGhlIGZseSAo
RmVuY2Ugb3IgU2VwYXJhdG9yKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2Vk
OjptYWtlRmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6YWRk
Q2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OmlzUmVuZGVyTWF0aE1MRmVu
Y2VkKToKKyAgICAgICAgKFJlbmRlck1hdGhNTEZlbmNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRnJhY3Rpb246OmlzUmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlR2x5cGgpOgorICAgICAgICAg
ICAgIE1hcmsgYW5vbnltb3VzIHJlbmRlciBibG9ja3MgYXMgQVggaWdub3JlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c2V0T3BlcmF0b3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpvcGVyYXRvclR5cGUpOgorICAgICAgICAoUmVu
ZGVyTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6aXNSZW5kZXJN
YXRoTUxSb290KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OmlzUmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTdWJTdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6aXNS
ZW5kZXJNYXRoTUxTdWJTdXApOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6
OmlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKToKKwogMjAxMi0xMS0wNSAgUGhpbGlwIFJvZ2VycyAg
PHBkckBnb29nbGUuY29tPgogCiAgICAgICAgIFVuYmxvY2sgU1ZHIGV4dGVybmFsIHJlZmVyZW5j
ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiAxMzM1
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM4LDYgKzMzOCwxOSBAQAogI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlJbmRleEZvclRleHRNYXJrZXJQYXJhbWV0ZXJpemVkQXR0cmli
dXRlIEAiQVhJbmRleEZvclRleHRNYXJrZXIiCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWFRleHRNYXJrZXJGb3JJbmRl
eCIKIAorLy8gTWF0aCBhdHRyaWJ1dGVzCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhSb290
UmFkaWNhbmRBdHRyaWJ1dGUgQCJBWE1hdGhSb290UmFkaWNhbmQiCisjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eU1hdGhSb290SW5kZXhBdHRyaWJ1dGUgQCJBWE1hdGhSb290SW5kZXgiCisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbkRlbm9taW5hdG9yQXR0cmlidXRlIEAiQVhNYXRo
RnJhY3Rpb25EZW5vbWluYXRvciIKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9u
TnVtZXJhdG9yQXR0cmlidXRlIEAiQVhNYXRoRnJhY3Rpb25OdW1lcmF0b3IiCisjZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlIEAiQVhNYXRoQmFzZSIKKyNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZSBAIkFYTWF0aFN1YnNjcmlwdCIKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlIEAiQVhNYXRoU3Vw
ZXJzY3JpcHQiCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhVbmRlckF0dHJpYnV0ZSBAIkFY
TWF0aFVuZGVyIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoT3ZlckF0dHJpYnV0ZSBAIkFY
TWF0aE92ZXIiCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRl
IEAiQVhNYXRoRmVuY2VkT3BlbiIKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENs
b3NlQXR0cmlidXRlIEAiQVhNYXRoRmVuY2VkQ2xvc2UiCisKIEBpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYktpdEFjY2Vzc2liaWxpdHlBcnJheUNhdGVnb3J5KQogCiAtIChOU1VJbnRlZ2VyKWFjY2Vz
c2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOwpAQCAtOTk3LDYgKzEwMTAsMjcgQEAKICAg
ICBpZiAobV9vYmplY3QtPmFyaWFIYXNQb3B1cCgpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGVdOwogICAgIAorICAgIGlmICht
X29iamVjdC0+aXNNYXRoUm9vdCgpKSB7CisgICAgICAgIC8vIFRoZSBpbmRleCBvZiBhIHNxdWFy
ZSByb290IGlzIGFsd2F5cyBrbm93biwgc28gdGhlcmUncyBubyBvYmplY3QgYXNzb2NpYXRlZCB3
aXRoIGl0LgorICAgICAgICBpZiAoIW1fb2JqZWN0LT5pc01hdGhTcXVhcmVSb290KCkpCisgICAg
ICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RJbmRl
eEF0dHJpYnV0ZV07CisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlNYXRoUm9vdFJhZGljYW5kQXR0cmlidXRlXTsKKyAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5p
c01hdGhGcmFjdGlvbigpKSB7CisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlNYXRoRnJhY3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRp
b25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9uRGVub21pbmF0b3JBdHRy
aWJ1dGVdOworICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPmlzTWF0aFN1YnNjcmlwdFN1cGVyc2Ny
aXB0KCkpIHsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1h
dGhCYXNlQXR0cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eU1hdGhTdWJzY3JpcHRBdHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRpb25hbCBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlXTsKKyAgICB9IGVs
c2UgaWYgKG1fb2JqZWN0LT5pc01hdGhVbmRlck92ZXIoKSkgeworICAgICAgICBbYWRkaXRpb25h
bCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEJhc2VBdHRyaWJ1dGVdOworICAgICAgICBb
YWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFVuZGVyQXR0cmlidXRlXTsK
KyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhPdmVyQXR0
cmlidXRlXTsKKyAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc01hdGhGZW5jZWQoKSkgeworICAg
ICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZE9wZW5B
dHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
TWF0aEZlbmNlZENsb3NlQXR0cmlidXRlXTsKKyAgICB9CisKICAgICByZXR1cm4gYWRkaXRpb25h
bDsKIH0KIApAQCAtMTU5OCw3ICsxNjMyLDggQEAKICAgICAgICAgeyBUb2dnbGVCdXR0b25Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCiAgICAgICAgIHsgQ2FudmFzUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5SW1hZ2VSb2xlIH0sCiAgICAgICAgIHsgU1ZHUm9vdFJvbGUsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExlZ2VuZFJvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9CisgICAgICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCisgICAgICAgIHsgTWF0aEVsZW1lbnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfQogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAqbmV3IEFj
Y2Vzc2liaWxpdHlSb2xlTWFwOwogICAgIApAQCAtMTcxNSw2ICsxNzUwLDQxIEBACiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9
PSBNYXRoRWxlbWVudFJvbGUpIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGcmFjdGlv
bigpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoRnJhY3Rpb24iOworICAgICAgICBpZiAo
bV9vYmplY3QtPmlzTWF0aEZlbmNlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoRmVu
Y2VkIjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgp
KQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQiOworICAg
ICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFJvdygpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhN
YXRoUm93IjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhVbmRlck92ZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybiBAIkFYTWF0aFVuZGVyT3ZlciI7CisgICAgICAgIGlmIChtX29iamVjdC0+
aXNNYXRoU3F1YXJlUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoU3F1YXJlUm9v
dCI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoUm9vdCgpKQorICAgICAgICAgICAgcmV0
dXJuIEAiQVhNYXRoUm9vdCI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoVGV4dCgpKQor
ICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoVGV4dCI7CisgICAgICAgIGlmIChtX29iamVjdC0+
aXNNYXRoTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhOdW1iZXIiOworICAg
ICAgICBpZiAobV9vYmplY3QtPmlzTWF0aElkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIHJldHVy
biBAIkFYTWF0aElkZW50aWZpZXIiOworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFRhYmxl
KCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhUYWJsZSI7CisgICAgICAgIGlmIChtX29i
amVjdC0+aXNNYXRoVGFibGVSb3coKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFRhYmxl
Um93IjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhUYWJsZUNlbGwoKSkKKyAgICAgICAg
ICAgIHJldHVybiBAIkFYTWF0aFRhYmxlQ2VsbCI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNN
YXRoRmVuY2VPcGVyYXRvcigpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoRmVuY2VPcGVy
YXRvciI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSkK
KyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFNlcGFyYXRvck9wZXJhdG9yIjsKKyAgICAgICAg
aWYgKG1fb2JqZWN0LT5pc01hdGhPcGVyYXRvcigpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhN
YXRoT3BlcmF0b3IiOworICAgIH0KKyAgICAKICAgICBpZiAobV9vYmplY3QtPmlzTWVkaWFUaW1l
bGluZSgpKQogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VGltZWxpbmVTdWJyb2xlOwog
CkBAIC0yNTI2LDYgKzI1OTYsMzIgQEAKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDptX29iamVjdC0+YXJpYUxpdmVSZWdpb25BdG9taWMoKV07CiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQnVzeUF0dHJpYnV0
ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmFy
aWFMaXZlUmVnaW9uQnVzeSgpXTsKKworICAgIC8vIE1hdGhNTCBBdHRyaWJ1dGVzLgorICAgIGlm
IChtX29iamVjdC0+aXNNYXRoRWxlbWVudCgpKSB7CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RJbmRleEF0dHJpYnV0ZV0p
CisgICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoUm9vdEluZGV4T2JqZWN0KCkpID8g
bV9vYmplY3QtPm1hdGhSb290SW5kZXhPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKKyAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUm9v
dFJhZGljYW5kQXR0cmlidXRlXSkKKyAgICAgICAgICAgIHJldHVybiAobV9vYmplY3QtPm1hdGhS
YWRpY2FuZE9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRoUmFkaWNhbmRPYmplY3QoKS0+d3JhcHBl
cigpIDogMDsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlNYXRoRnJhY3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdKQorICAgICAgICAgICAg
cmV0dXJuIChtX29iamVjdC0+bWF0aE51bWVyYXRvck9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRo
TnVtZXJhdG9yT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7CisgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9uRGVub21pbmF0
b3JBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aERlbm9taW5h
dG9yT2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhEZW5vbWluYXRvck9iamVjdCgpLT53cmFwcGVy
KCkgOiAwOworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXSkKKyAgICAgICAgICAgIHJldHVybiAobV9vYmpl
Y3QtPm1hdGhCYXNlT2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhCYXNlT2JqZWN0KCktPndyYXBw
ZXIoKSA6IDA7CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4g
KG1fb2JqZWN0LT5tYXRoU3Vic2NyaXB0T2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhTdWJzY3Jp
cHRPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoU3VwZXJzY3JpcHRBdHRyaWJ1dGVdKQor
ICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkpID8g
bV9vYmplY3QtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgpLT53cmFwcGVyKCkgOiAwOworICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhV
bmRlckF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoVW5kZXJP
YmplY3QoKSkgPyBtX29iamVjdC0+bWF0aFVuZGVyT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7Cisg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
TWF0aE92ZXJBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aE92
ZXJPYmplY3QoKSkgPyBtX29iamVjdC0+bWF0aE92ZXJPYmplY3QoKS0+d3JhcHBlcigpIDogMDsK
KyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gbV9vYmplY3Qt
Pm1hdGhGZW5jZWRPcGVuU3RyaW5nKCk7CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3NlQXR0cmlidXRlXSkKKyAg
ICAgICAgICAgIHJldHVybiBtX29iamVjdC0+bWF0aEZlbmNlZENsb3NlU3RyaW5nKCk7CisgICAg
fQogICAgIAogICAgIC8vIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIGZvciB0
ZXN0aW5nCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQ2xpY2tQ
b2ludCJdKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDUyIEBACiAgICAgdmlydHVhbCBib29sIGFyaWFMaXZl
UmVnaW9uQnVzeSgpIGNvbnN0OyAgICAKICAgICAKICAgICBib29sIGluaGVyaXRzUHJlc2VudGF0
aW9uYWxSb2xlKCkgY29uc3Q7CisgICAgCisjaWYgRU5BQkxFKE1BVEhNTCkKKyAgICAvLyBBbGwg
bWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBmb3IgaXNNYXRoRWxlbWVudCgpLgorICAgIHZpcnR1
YWwgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZy
YWN0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRo
VW5kZXJPdmVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFJvb3QoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBpc01hdGhUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE51bWJlcigp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRvcigpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0
aElkZW50aWZpZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Q7CisgICAgCisgICAgLy8gR2VuZXJpYyBjb21w
b25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aEJhc2VPYmplY3Qo
KTsKKyAgICAKKyAgICAvLyBSb290IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1hdGhSb290SW5kZXhPYmplY3QoKTsKKyAgICAKKyAgICAvLyBGcmFjdGlvbiBj
b21wb25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51bWVyYXRv
ck9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aERlbm9taW5h
dG9yT2JqZWN0KCk7CisKKyAgICAvLyBVbmRlciBvdmVyIGNvbXBvbmVudHMuCisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKTsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCk7CisgICAgCisgICAgLy8gU3Vic2Ny
aXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKTsKKyAgICAKKyAgICAvLyBGZW5jZWQgY29tcG9u
ZW50cy4KKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0Owor
ICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0OworCisgICAg
Ym9vbCBpc0lnbm9yZWRFbGVtZW50V2l0aGluTWF0aFRyZWUoKSBjb25zdDsKKyNlbmRpZgogfTsK
IAogaW5saW5lIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIHRvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24g
MTMzNTM5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQAogICAgIExpc3RCb3hPcHRp
b25Sb2xlLAogICAgIExpc3RJdGVtUm9sZSwKICAgICBMaXN0TWFya2VyUm9sZSwKKyAgICBNYXRo
RWxlbWVudFJvbGUsCiAgICAgTWF0dGVSb2xlLAogICAgIE1lbnVSb2xlLAogICAgIE1lbnVCYXJS
b2xlLApAQCAtNzM3LDYgKzczOCw0NiBAQAogICAgIC8vIEZpcmVzIGEgY2hpbGRyZW4gY2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVkIHZhbHVlIGNoYW5n
ZWQuCiAgICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKTsKIAorICAgIC8vIEFs
bCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBpc01hdGhFbGVtZW50KCkuCisgICAgdmly
dHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm93KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUZXh0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0
b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRo
VGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhU
YWJsZVJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0
aFRhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgLy8gUm9vdCBj
b21wb25lbnRzLgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJhZGljYW5k
T2JqZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
bWF0aFJvb3RJbmRleE9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAgICAKKyAgICAvLyBVbmRlciBv
dmVyIGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoVW5k
ZXJPYmplY3QoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBtYXRoT3Zlck9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKworICAgIC8vIEZyYWN0aW9uIGNvbXBv
bmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2Jq
ZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0
aERlbm9taW5hdG9yT2JqZWN0KCkgeyByZXR1cm4gMDsgfQorCisgICAgLy8gU3Vic2NyaXB0L3N1
cGVyc2NyaXB0IGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBt
YXRoQmFzZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSB7IHJldHVybiAwOyB9
CisgICAgCisgICAgLy8gRmVuY2VkIGNvbXBvbmVudHMuCisgICAgdmlydHVhbCBTdHJpbmcgbWF0
aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9CisgICAgCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMzM1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw2ICs3Miw4IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtlci5oIgorI2luY2x1ZGUgIlJl
bmRlck1hdGhNTEJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNs
dWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgpAQCAtMjQyLDggKzI0NCwxNSBAQAogCiBzdGF0aWMg
aW5saW5lIFJlbmRlcklubGluZSogc3RhcnRPZkNvbnRpbnVhdGlvbnMoUmVuZGVyT2JqZWN0KiBy
KQogewotICAgIGlmIChyLT5pc0lubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkKKyAgICBpZiAo
ci0+aXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpIHsKKyAgICAgICAgLy8gTWF0aE1MIGVs
ZW1lbnRzIG1ha2UgYW5vbnltb3VzIFJlbmRlck9iamVjdHMsIHRoZW4gc2V0IHRoZWlyIG5vZGUg
dG8gdGhlIHBhcmVudCdzIG5vZGUuCisgICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgc28gdGhhdCB0
aGUgcmVuZGVyZXIoKSAhPSByZW5kZXJlcigpLT5ub2RlKCktPnJlbmRlcmVyKCkKKyAgICAgICAg
Ly8gKHdoaWNoIGlzIHdoYXQgaXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgdXNlcyBhcyBh
IGRldGVybWluYW50KS4KKyAgICAgICAgaWYgKHItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYm
IHRvRWxlbWVudChyLT5ub2RlKCkpLT5pc01hdGhNTEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAKICAgICAgICAgcmV0dXJuIHRvUmVuZGVySW5saW5lKHItPm5vZGUo
KS0+cmVuZGVyZXIoKSk7CisgICAgfQogCiAgICAgLy8gQmxvY2tzIHdpdGggYSBwcmV2aW91cyBj
b250aW51YXRpb24gYWx3YXlzIGhhdmUgYSBuZXh0IGNvbnRpbnVhdGlvbgogICAgIGlmIChyLT5p
c1JlbmRlckJsb2NrKCkgJiYgdG9SZW5kZXJCbG9jayhyKS0+aW5saW5lRWxlbWVudENvbnRpbnVh
dGlvbigpKQpAQCAtNjE3LDYgKzYyNiwxOCBAQAogICAgICAgICByZXR1cm4gdG9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbChtX3JlbmRlcmVyKS0+YnV0dG9uVmFsdWUoKTsKICAgICAKICAgICBOb2Rl
KiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOworCisjaWYgRU5BQkxFKE1BVEhNTCkKKyAgICAv
LyBNYXRoIG9wZXJhdG9ycyBjcmVhdGUgUmVuZGVyVGV4dCBub2RlcyBvbiB0aGUgZmx5IHRoYXQg
YXJlIG5vdCB0aWVkIGludG8gdGhlIERPTSBpbiBhIHJlYXNvbmFibGUgd2F5LAorICAgIC8vIHNv
IHJhbmdlT2ZDb250ZW50cyBkb2VzIG5vdCB3b3JrIGZvciB0aGVtIChub3IgZG9lcyByZWd1bGFy
IHRleHQgc2VsZWN0aW9uKS4KKyAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkgJiYgaXNNYXRo
RWxlbWVudCgpKSB7CisgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBtX3JlbmRl
cmVyLT5wYXJlbnQoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKSB7CisgICAg
ICAgICAgICBpZiAocGFyZW50LT5pc1JlbmRlck1hdGhNTEJsb2NrKCkgJiYgdG9SZW5kZXJNYXRo
TUxCbG9jayhwYXJlbnQpLT5pc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRvUmVuZGVyVGV4dChtX3JlbmRlcmVyKS0+dGV4dCgpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisgICAgCiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgICAgIC8vIGNhdGNo
IHN0YWxlIFdlYkNvcmVBWE9iamVjdCAoc2VlIDxyZGFyOi8vcHJvYmxlbS8zOTYwMTk2PikKQEAg
LTExNzEsNiArMTE5MiwxNSBAQAogICAgIGlmIChzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJMRShNQVRITUwpCisgICAgLy8gRmlyc3Qg
Y2hlY2sgaWYgdGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aXRoaW4gdGhlIG1hdGggdHJlZSB0aGF0
IG5lZWRzIHRvIGJlIGlnbm9yZWQuCisgICAgaWYgKGlzSWdub3JlZEVsZW1lbnRXaXRoaW5NYXRo
VHJlZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBPdGhlcndpc2UgYWxsIG90aGVy
IG1hdGggZWxlbWVudHMgYXJlIGluIHRoZSB0cmVlLgorICAgIGlmIChpc01hdGhFbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIAogICAgIC8vIDxzcGFuPiB0YWdz
IGFyZSBpbmxpbmUgdGFncyBhbmQgbm90IG1lYW50IHRvIGNvbnZleSBpbmZvcm1hdGlvbiBpZiB0
aGV5IGhhdmUgbm8gb3RoZXIgYXJpYQogICAgIC8vIGluZm9ybWF0aW9uIG9uIHRoZW0uIElmIHdl
IGRvbid0IGlnbm9yZSB0aGVtLCB0aGV5IG1heSBlbWl0IHNpZ25hbHMgZXhwZWN0ZWQgdG8gY29t
ZSBmcm9tCiAgICAgLy8gdGhlaXIgcGFyZW50LiBJbiBhZGRpdGlvbiwgYmVjYXVzZSBpbmNsdWRl
ZCBzcGFucyBhcmUgR3JvdXBSb2xlIG9iamVjdHMsIGFuZCBHcm91cFJvbGUKQEAgLTIzOTgsNiAr
MjQyOCwxMCBAQAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1hdGhUYWcpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXRoUm9sZTsKICNlbmRpZgorICAg
IC8vIEl0J3Mgbm90IGNsZWFyIHdoaWNoIHJvbGUgYSBwbGF0Zm9ybSBzaG91bGQgY2hvb3NlIGZv
ciBhIG1hdGggZWxlbWVudC4KKyAgICAvLyBEZWNsYXJpbmcgYSBtYXRoIGVsZW1lbnQgcm9sZSBz
aG91bGQgZ2l2ZSBmbGV4aWJpbGl0eSB0byBwbGF0Zm9ybXMgdG8gY2hvb3NlLgorICAgIGlmIChp
c01hdGhFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBNYXRoRWxlbWVudFJvbGU7CiAgICAgCiAg
ICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkZFRhZykpCiAgICAgICAgIHJldHVybiBE
ZWZpbml0aW9uTGlzdERlZmluaXRpb25Sb2xlOwpAQCAtMzI4Niw0ICszMzIwLDMxNSBAQAogICAg
IGxheWVyLT5zY3JvbGxUb09mZnNldCh0b1NpemUocG9pbnQpLCBSZW5kZXJMYXllcjo6U2Nyb2xs
T2Zmc2V0Q2xhbXBlZCk7CiB9CiAKKyNpZiBFTkFCTEUoTUFUSE1MKQorYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc01hdGhFbGVtZW50KCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2Rl
ID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbV9yZW5kZXJlciB8fCAhbm9kZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYg
dG9FbGVtZW50KG5vZGUpLT5pc01hdGhNTEVsZW1lbnQoKTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc01hdGhGcmFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Jl
bmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRl
cmVyKS0+aXNSZW5kZXJNYXRoTUxGcmFjdGlvbigpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmlzTWF0aEZlbmNlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVy
IHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRlcmVyKS0+
aXNSZW5kZXJNYXRoTUxGZW5jZWQoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Jl
bmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRl
cmVyKS0+aXNSZW5kZXJNYXRoTUxTdWJTdXAoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc01hdGhSb3coKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAh
bV9yZW5kZXJlci0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxvY2sobV9yZW5kZXJlciktPmlzUmVu
ZGVyTWF0aE1MUm93KCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNN
YXRoVW5kZXJPdmVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVy
ZXItPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIHJldHVybiB0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5pc1JlbmRlck1hdGhN
TFVuZGVyT3ZlcigpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0
aFNxdWFyZVJvb3QoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJl
ci0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxvY2sobV9yZW5kZXJlciktPmlzUmVuZGVyTWF0aE1M
U3F1YXJlUm9vdCgpOworfQorICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
c01hdGhSb290KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXIt
PmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IHJldHVybiB0b1JlbmRlck1hdGhNTEJsb2NrKG1fcmVuZGVyZXIpLT5pc1JlbmRlck1hdGhNTFJv
b3QoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhPcGVyYXRv
cigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRl
ck1hdGhNTEJsb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBFbnN1
cmUgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IGEgcmVuZGVyIE1hdGhNTCBvcGVyYXRvciBiZWNhdXNl
CisgICAgLy8gTWF0aE1MIHdpbGwgY3JlYXRlIE1hdGhNTEJsb2NrcyBhbmQgdXNlIHRoZSBvcmln
aW5hbCBub2RlIGFzIHRoZSBub2RlCisgICAgLy8gb2YgdGhpcyBuZXcgYmxvY2sgdGhhdCBpcyBu
b3QgdGllZCB0byB0aGUgRE9NLgorICAgIGlmICghdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRl
cmVyKS0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgcmV0dXJuIGlzTWF0aEVsZW1lbnQoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0
aE1MTmFtZXM6Om1vVGFnKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
c01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1f
cmVuZGVyZXItPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmICghdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJN
YXRoTUxPcGVyYXRvcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgUmVuZGVy
TWF0aE1MT3BlcmF0b3IqIG1hdGhPcGVyYXRvciA9IHRvUmVuZGVyTWF0aE1MT3BlcmF0b3IodG9S
ZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRlcmVyKSk7CisgICAgcmV0dXJuIG1hdGhPcGVyYXRvci0+
b3BlcmF0b3JUeXBlKCkgPT0gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OkZlbmNlOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVuZGVyTWF0aE1M
QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghdG9SZW5kZXJN
YXRoTUxCbG9jayhtX3JlbmRlcmVyKS0+aXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIG1hdGhPcGVy
YXRvciA9IHRvUmVuZGVyTWF0aE1MT3BlcmF0b3IodG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRl
cmVyKSk7CisgICAgcmV0dXJuIG1hdGhPcGVyYXRvci0+b3BlcmF0b3JUeXBlKCkgPT0gUmVuZGVy
TWF0aE1MT3BlcmF0b3I6OlNlcGFyYXRvcjsKK30KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNNYXRoVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBu
b2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10ZXh0VGFnKTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhOdW1iZXIoKSBjb25zdAoreworICAgIHJldHVy
biBub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptblRhZyk7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoSWRlbnRpZmllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1pVGFnKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhUYWJs
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0
aE1MTmFtZXM6Om10YWJsZVRhZyk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNNYXRoVGFibGVSb3coKSBjb25zdAoreworICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgp
LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdHJUYWcpOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5v
ZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10ZFRhZyk7Cit9CisgICAg
Citib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSWdub3JlZEVsZW1lbnRXaXRoaW5N
YXRoVHJlZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAKKyAgICAvLyBJZ25vcmUgaXRlbXMgdGhhdCB3ZXJlIGNyZWF0ZWQgZm9yIGxh
eW91dCBwdXJwb3NlcyBvbmx5LgorICAgIGlmIChtX3JlbmRlcmVyLT5pc1JlbmRlck1hdGhNTEJs
b2NrKCkgJiYgdG9SZW5kZXJNYXRoTUxCbG9jayhtX3JlbmRlcmVyKS0+aWdub3JlSW5BY2Nlc3Np
YmlsaXR5VHJlZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElnbm9yZSBhbm9u
eW1vdXMgcmVuZGVyZXJzIGluc2lkZSBtYXRoIGJsb2Nrcy4KKyAgICBpZiAobV9yZW5kZXJlci0+
aXNBbm9ueW1vdXMoKSkgeworICAgICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0
KCkpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzTWF0aEVsZW1lbnQoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE9ubHkgbWF0
aCBlbGVtZW50cyB0aGF0IHdlIGV4cGxpY2l0bHkgcmVjb2duaXplIHNob3VsZCBiZSBpbmNsdWRl
ZAorICAgIC8vIFdlIGRvbid0IHdhbnQgdGhpbmdzIGxpa2UgPG1zdHlsZT4gdG8gYXBwZWFyIGlu
IHRoZSB0cmVlLgorICAgIGlmIChpc01hdGhFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKGlzTWF0
aEZyYWN0aW9uKCkgfHwgaXNNYXRoRmVuY2VkKCkgfHwgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3Jp
cHQoKSB8fCBpc01hdGhSb3coKQorICAgICAgICAgICAgfHwgaXNNYXRoVW5kZXJPdmVyKCkgfHwg
aXNNYXRoUm9vdCgpIHx8IGlzTWF0aFRleHQoKSB8fCBpc01hdGhOdW1iZXIoKQorICAgICAgICAg
ICAgfHwgaXNNYXRoT3BlcmF0b3IoKSB8fCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgfHwgaXNNYXRo
U2VwYXJhdG9yT3BlcmF0b3IoKQorICAgICAgICAgICAgfHwgaXNNYXRoSWRlbnRpZmllcigpIHx8
IGlzTWF0aFRhYmxlKCkgfHwgaXNNYXRoVGFibGVSb3coKSB8fCBpc01hdGhUYWJsZUNlbGwoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjptYXRoUmFkaWNhbmRPYmplY3QoKQoreworICAgIGlmICghaXNNYXRo
Um9vdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigp
OworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPCAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICAvLyBUaGUgcmFkaWNhbmQgaXMgdGhlIHZhbHVlIGJlaW5nIHJvb3RlZCBhbmQgbXVzdCBi
ZSBsaXN0ZWQgZmlyc3QuCisgICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdldCgpOworfQorCitBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoUm9vdEluZGV4
T2JqZWN0KCkKK3sKKyAgICBpZiAoIWlzTWF0aFJvb3QoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpICE9
IDIpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gVGhlIGluZGV4IGluIGEgcm9vdCBpcyB0
aGUgdmFsdWUgd2hpY2ggZGV0ZXJtaW5lcyBpZiBpdCdzIGEgc3F1YXJlLCBjdWJlLCBldGMsIHJv
b3QKKyAgICAvLyBhbmQgbXVzdCBiZSBsaXN0ZWQgc2Vjb25kLgorICAgIHJldHVybiBjaGlsZHJl
blsxXS5nZXQoKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF0aE51bWVyYXRvck9iamVjdCgpCit7CisgICAgaWYgKCFpc01hdGhGcmFjdGlv
bigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOwor
ICAgIGlmIChjaGlsZHJlbi5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisg
ICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdldCgpOworfQorICAgIAorQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKK3sK
KyAgICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0g
dGhpcy0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpICE9IDIpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQoKTsKK30KKyAgICAK
K0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhVbmRl
ck9iamVjdCgpCit7CisgICAgaWYgKCFpc01hdGhVbmRlck92ZXIoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGhp
cy0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgCisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXVu
ZGVyVGFnKSB8fCBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om11bmRlcm92ZXJUYWcp
KQorICAgICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CisgICAgCisgICAgcmV0dXJuIDA7
Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1h
dGhPdmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIWlzTWF0aFVuZGVyT3ZlcigpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4g
PSB0aGlzLT5jaGlsZHJlbigpOworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPCAyKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
Ojptb3ZlclRhZykpCisgICAgICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQoKTsKKyAgICBpZiAo
bm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdW5kZXJvdmVyVGFnKSkKKyAgICAgICAg
cmV0dXJuIGNoaWxkcmVuWzJdLmdldCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhCYXNlT2JqZWN0KCkK
K3sKKyAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgJiYgIWlzTWF0aFVuZGVy
T3ZlcigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOworICAgIC8vIFRoZSBiYXNlIG9i
amVjdCBpbiBxdWVzdGlvbiBpcyBhbHdheXMgdGhlIGZpcnN0IGNoaWxkLgorICAgIGlmIChjaGls
ZHJlbi5zaXplKCkgPiAwKQorICAgICAgICByZXR1cm4gY2hpbGRyZW5bMF0uZ2V0KCk7CisKKyAg
ICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF0aFN1YnNjcmlwdE9iamVjdCgpCit7CisgICAgaWYgKCFpc01hdGhTdWJzY3Jp
cHRTdXBlcnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOworICAgIGlmIChj
aGlsZHJlbi5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChub2RlKCkt
Pmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zdWJUYWcpIHx8IG5vZGUoKS0+aGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bXN1YnN1cFRhZykpCisgICAgICAgIHJldHVybiBjaGlsZHJlblsxXS5nZXQo
KTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkKK3sKKyAgICBpZiAo
IWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVu
KCk7CisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zdXBUYWcpKQorICAg
ICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6bXN1YnN1cFRhZykpCisgICAgICAgIHJldHVybiBjaGlsZHJlblsyXS5n
ZXQoKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyAgICAKK1N0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjptYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKCFp
c01hdGhGZW5jZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIAorICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6Om9wZW5BdHRyKTsKK30KKworU3RyaW5nIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFpc01hdGhGZW5jZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIAor
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmNsb3NlQXR0cik7Cit9CisKKyNl
bmRpZgorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJ
KHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAg
ICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50KQogICAgICwgbV9zdHJldGNoSGVpZ2h0KDAp
CiAgICAgLCBtX29wZXJhdG9yKDApCisgICAgLCBtX29wZXJhdG9yVHlwZShEZWZhdWx0KQogewog
fQogCkBAIC01MCw2ICs1MSw3IEBACiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhub2RlKQogICAg
ICwgbV9zdHJldGNoSGVpZ2h0KDApCiAgICAgLCBtX29wZXJhdG9yKGNvbnZlcnRIeXBoZW5NaW51
c1RvTWludXNTaWduKG9wZXJhdG9yQ2hhcikpCisgICAgLCBtX29wZXJhdG9yVHlwZShEZWZhdWx0
KQogewogfQogCkBAIC0yMDEsNiArMjAzLDggQEAKICAgICBpZiAoc3RyZXRjaERpc2FibGVkIHx8
ICFzaG91bGRTdGFjaykgewogICAgICAgICBtX2lzU3RhY2tlZCA9IGZhbHNlOwogICAgICAgICBS
ZW5kZXJCbG9jayogY29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxC
bG9jayhub2RlKCkpOworICAgICAgICAvLyBUaGlzIGNvbnRhaW5lciBkb2Vzbid0IG9mZmVyIGFu
eSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eS4KKyAgICAgICAgdG9SZW5kZXJN
YXRoTUxCbG9jayhjb250YWluZXIpLT5zZXRJZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlKHRydWUp
OwogICAgICAgICAKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkp
OwpAQCAtMjkzLDYgKzI5Nyw3IEBACiBSZW5kZXJCbG9jayogUmVuZGVyTWF0aE1MT3BlcmF0b3I6
OmNyZWF0ZUdseXBoKFVDaGFyIGdseXBoLCBpbnQgbWF4SGVpZ2h0Rm9yUmVuZGVyZXIsIGludCBj
aGFyUmVsYXRpdmUpCiB7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciA9IG5ldyAocmVuZGVy
QXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKKyAgICB0b1JlbmRlck1hdGhNTEJs
b2NrKGNvbnRhaW5lciktPnNldElnbm9yZUluQWNjZXNzaWJpbGl0eVRyZWUodHJ1ZSk7CiAgICAg
Y29udGFpbmVyLT5zZXRTdHlsZShjcmVhdGVTdGFja2FibGVTdHlsZShtYXhIZWlnaHRGb3JSZW5k
ZXJlcikpOwogICAgIGFkZENoaWxkKGNvbnRhaW5lcik7CiAgICAgUmVuZGVyQmxvY2sqIHBhcmVu
dCA9IGNvbnRhaW5lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TWF0aE1MUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZW5kZXJNYXRoTUxGZW5jZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTEZyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxTdWJT
dXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1h
dGhNTFVuZGVyT3ZlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgLy8gTWF0
aE1MIGRlZmluZXMgYW4gImVtYmVsbGlzaGVkIG9wZXJhdG9yIiBhcyByb3VnaGx5IGFuIDxtbz4g
dGhhdCBtYXkgaGF2ZSBzdWJzY3JpcHRzLAogICAgIC8vIHN1cGVyc2NyaXB0cywgdW5kZXJzY3Jp
cHRzLCBvdmVyc2NyaXB0cywgb3IgYSBkZW5vbWluYXRvciAoYXMgaW4gZC9keCwgd2hlcmUgImQi
IGlzIHNvbWUKQEAgLTg3LDggKzkzLDEyIEBACiAgICAgLy8gQ3JlYXRlIGEgbmV3IFJlbmRlck1h
dGhNTEJsb2NrLCB3aXRoIGEgbmV3IHN0eWxlIGluaGVyaXRpbmcgZnJvbSB0aGlzLT5zdHlsZSgp
LgogICAgIFJlbmRlck1hdGhNTEJsb2NrKiBjcmVhdGVBbm9ueW1vdXNNYXRoTUxCbG9jayhFRGlz
cGxheSA9IEZMRVgpOwogICAgIAorICAgIHZvaWQgc2V0SWdub3JlSW5BY2Nlc3NpYmlsaXR5VHJl
ZShib29sIGZsYWcpIHsgbV9pZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlID0gZmxhZzsgfQorICAg
IGJvb2wgaWdub3JlSW5BY2Nlc3NpYmlsaXR5VHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jl
SW5BY2Nlc3NpYmlsaXR5VHJlZTsgfQorICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICBib29sIG1faWdub3JlSW5B
Y2Nlc3NpYmlsaXR5VHJlZTsKICAgICAKIHByb3RlY3RlZDoKICAgICAvLyBTZXQgb3VyIGxvZ2lj
YWwgd2lkdGggdG8gYSBsYXJnZSB2YWx1ZSwgYW5kIGNvbXB1dGUgb3VyIGNoaWxkcmVuJ3MgcHJl
ZmVycmVkIGxvZ2ljYWwgaGVpZ2h0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJKHJldmlzaW9uIDEzMzUz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsMTEgQEAKICAgICB2b2lkIHN0cmV0Y2hU
b0hlaWdodChpbnQgcGl4ZWxIZWlnaHQpOwogICAgIAogICAgIHZpcnR1YWwgaW50IGZpcnN0TGlu
ZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIAorICAgIAorICAgIGVudW0g
T3BlcmF0b3JUeXBlIHsgRGVmYXVsdCwgU2VwYXJhdG9yLCBGZW5jZSB9OworICAgIHZvaWQgc2V0
T3BlcmF0b3JUeXBlKE9wZXJhdG9yVHlwZSB0eXBlKSB7IG1fb3BlcmF0b3JUeXBlID0gdHlwZTsg
fQorICAgIE9wZXJhdG9yVHlwZSBvcGVyYXRvclR5cGUoKSBjb25zdCB7IHJldHVybiBtX29wZXJh
dG9yVHlwZTsgfQorICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IGNyZWF0ZVN0YWNrYWJsZVN0eWxlKGludCBtYXhIZWlnaHRGb3JSZW5kZXJlcik7CkBAIC02
Miw2ICs2Niw3IEBACiAgICAgaW50IG1fc3RyZXRjaEhlaWdodDsKICAgICBib29sIG1faXNTdGFj
a2VkOwogICAgIFVDaGFyIG1fb3BlcmF0b3I7CisgICAgT3BlcmF0b3JUeXBlIG1fb3BlcmF0b3JU
eXBlOwogfTsKIAogaW5saW5lIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB0b1JlbmRlck1hdGhNTE9w
ZXJhdG9yKFJlbmRlck1hdGhNTEJsb2NrKiBibG9jaykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCShy
ZXZpc2lvbiAxMzM1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNxdWFyZVJvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogICAg
IFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCopOwogICAgIAogcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSZW5kZXJNYXRoTUxTcXVhcmVSb290IjsgfQogfTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJ
KHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTWF0aE1MRnJhY3Rpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBmaXhDaGlsZFN0eWxlKFJlbmRlck9iamVjdCogY2hpbGQpOwogICAgIHZpcnR1YWwgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAkocmV2aXNpb24gMTMzNTM5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogICAgIHZpcnR1YWwgaW50IGZpcnN0TGlu
ZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiBwcml2YXRlOgorICAgIHZpcnR1
YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyIjsgfQogCiAgICAgZW51bSBVbmRlck92ZXJUeXBlIHsgVW5kZXIs
IE92ZXIsIFVuZGVyT3ZlciB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkocmV2aXNpb24gMTMzNTM5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MiwyMiArODIsMjMgQEAKICAgICAgICAgbWFrZUZlbmNlcygp
OwogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1MRmVuY2VkOjpjcmVhdGVN
YXRoTUxPcGVyYXRvcihVQ2hhciB1Q2hhciwgT3BlcmF0b3JUeXBlIG9wZXJhdG9yVHlwZSkKK1Jl
bmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxGZW5jZWQ6OmNyZWF0ZU1hdGhNTE9wZXJh
dG9yKFVDaGFyIHVDaGFyLCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6T3BlcmF0b3JUeXBlIG9wZXJh
dG9yVHlwZSkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7CiAgICAg
bmV3U3R5bGUtPnNldEZsZXhEaXJlY3Rpb24oRmxvd0NvbHVtbik7Ci0gICAgbmV3U3R5bGUtPnNl
dE1hcmdpbkVuZChMZW5ndGgoKG9wZXJhdG9yVHlwZSA9PSBGZW5jZSA/IGdGZW5jZU1hcmdpbkVt
cyA6IGdTZXBhcmF0b3JNYXJnaW5FbmRFbXMpICogc3R5bGUoKS0+Zm9udFNpemUoKSwgRml4ZWQp
KTsKLSAgICBpZiAob3BlcmF0b3JUeXBlID09IEZlbmNlKQorICAgIG5ld1N0eWxlLT5zZXRNYXJn
aW5FbmQoTGVuZ3RoKChvcGVyYXRvclR5cGUgPT0gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OkZlbmNl
ID8gZ0ZlbmNlTWFyZ2luRW1zIDogZ1NlcGFyYXRvck1hcmdpbkVuZEVtcykgKiBzdHlsZSgpLT5m
b250U2l6ZSgpLCBGaXhlZCkpOworICAgIGlmIChvcGVyYXRvclR5cGUgPT0gUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OkZlbmNlKQogICAgICAgICBuZXdTdHlsZS0+c2V0TWFyZ2luU3RhcnQoTGVuZ3Ro
KGdGZW5jZU1hcmdpbkVtcyAqIHN0eWxlKCktPmZvbnRTaXplKCksIEZpeGVkKSk7CiAgICAgUmVu
ZGVyTWF0aE1MT3BlcmF0b3IqIG5ld09wZXJhdG9yID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5k
ZXJNYXRoTUxPcGVyYXRvcihub2RlKCkgLyogImFsbW9zdCBhbm9ueW1vdXMiICovLCB1Q2hhcik7
CisgICAgbmV3T3BlcmF0b3ItPnNldE9wZXJhdG9yVHlwZShvcGVyYXRvclR5cGUpOwogICAgIG5l
d09wZXJhdG9yLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBuZXdP
cGVyYXRvcjsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6Om1ha2VGZW5jZXMoKQogewot
ICAgIFJlbmRlck1hdGhNTFJvdzo6YWRkQ2hpbGQoY3JlYXRlTWF0aE1MT3BlcmF0b3IobV9vcGVu
LCBGZW5jZSksIGZpcnN0Q2hpbGQoKSk7Ci0gICAgbV9jbG9zZUZlbmNlUmVuZGVyZXIgPSBjcmVh
dGVNYXRoTUxPcGVyYXRvcihtX2Nsb3NlLCBGZW5jZSk7CisgICAgUmVuZGVyTWF0aE1MUm93Ojph
ZGRDaGlsZChjcmVhdGVNYXRoTUxPcGVyYXRvcihtX29wZW4sIFJlbmRlck1hdGhNTE9wZXJhdG9y
OjpGZW5jZSksIGZpcnN0Q2hpbGQoKSk7CisgICAgbV9jbG9zZUZlbmNlUmVuZGVyZXIgPSBjcmVh
dGVNYXRoTUxPcGVyYXRvcihtX2Nsb3NlLCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2UpOwog
ICAgIFJlbmRlck1hdGhNTFJvdzo6YWRkQ2hpbGQobV9jbG9zZUZlbmNlUmVuZGVyZXIpOwogfQog
CkBAIC0xMzIsNyArMTMzLDcgQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBz
ZXBhcmF0b3IgPSAoKm1fc2VwYXJhdG9ycy5nZXQoKSlbY291bnQgLSAxXTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIHNlcGFyYXRvclJlbmRlcmVyID0gY3JlYXRlTWF0aE1MT3BlcmF0
b3Ioc2VwYXJhdG9yLCBTZXBhcmF0b3IpOworICAgICAgICAgICAgc2VwYXJhdG9yUmVuZGVyZXIg
PSBjcmVhdGVNYXRoTUxPcGVyYXRvcihzZXBhcmF0b3IsIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpT
ZXBhcmF0b3IpOwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCShyZXZpc2lv
biAxMzM1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFN1YlN1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw5IEBACiAgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOwogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
YXRoTUxTdWJTdXAoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBmaXhBbm9ueW1v
dXNTdHlsZXMoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTWF0aE1M
U3ViU3VwIjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290LmgJKHJldmlzaW9uIDEzMzUzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw3IEBACiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyTWF0aE1MUm9vdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm9vdCI7IH0K
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBP
VkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRmVuY2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGZW5jZWQuaAkocmV2aXNpb24gMTMzNTM5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIAorI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTE9wZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm93LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM5LDExICs0MCwxMCBAQAogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGcm9tRWxlbWVudCgpOwogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJNYXRoTUxGZW5jZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZlbmNlZCI7
IH0KIAotICAgIC8vIEZJWE1FOiBPcGVyYXRvclR5cGUgaGVyZSB3aWxsIGdvIGF3YXkgd2hlbiBk
ZWZhdWx0IG9wZXJhdG9yIG1hcmdpbnMgYXJlIGRldGVybWluZWQgYnkgdGhlIE1hdGhNTCBvcGVy
YXRvciBkaWN0aW9uYXJ5LgotICAgIGVudW0gT3BlcmF0b3JUeXBlIHsgU2VwYXJhdG9yLCBGZW5j
ZSB9OwotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBjcmVhdGVNYXRoTUxPcGVyYXRvcihVQ2hh
ciwgT3BlcmF0b3JUeXBlKTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogY3JlYXRlTWF0aE1M
T3BlcmF0b3IoVUNoYXIsIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpPcGVyYXRvclR5cGUpOwogICAg
IHZvaWQgbWFrZUZlbmNlcygpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcAkocmV2aXNpb24gMTMzNTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAKICAgICAKIFJlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhO
b2RlKiBjb250YWluZXIpIAogICAgIDogUmVuZGVyRmxleGlibGVCb3goY29udGFpbmVyKQorICAg
ICwgbV9pZ25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlKGZhbHNlKQogICAgICwgbV9pbnRyaW5zaWNQ
YWRkaW5nQmVmb3JlKDApCiAgICAgLCBtX2ludHJpbnNpY1BhZGRpbmdBZnRlcigwKQogICAgICwg
bV9pbnRyaW5zaWNQYWRkaW5nU3RhcnQoMCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzUzOSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTExLTA1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVg6IE1hdGhNTCB0eXBlcyBuZWVkIHRvIGJlIHNlbWFudGljYWxseSBpZGVudGlmaWVkIGlu
IEFYIHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVs
ZW1lbnRzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA1ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdv
b2dsZS5jb20+CiAKICAgICAgICAgVW5ibG9jayBTVkcgZXh0ZXJuYWwgcmVmZXJlbmNlcwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9tYXRobWwtZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVsZW1lbnRzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjQgQEAKK2EKKzIKKworYQorMgor
CithCisKKzMKK2EKKworMgorYQorZQorCisyCitzdWIKKworMgorc3VwCisKKzIKK3N1Ygorc3Vw
CisKKzMKK3VuZGVyCisKKzMKK292ZXIKKworMwordW5kZXIKK292ZXIKKworMworMgorMQorVGhp
cyB0ZXN0cyBlbnN1cmVzIHRoYXQgTWFjIHNwZWNpZmljIGF0dHJpYnV0ZXMgYW5kIHJvbGVzIGZv
ciBNYXRoTUwgZWxlbWVudHMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgcm93LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgcm93
LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoUm93JworUEFTUyByb3cuY2hpbGRBdEluZGV4
KDApLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllcicKK1BBU1Mgcm93LmNo
aWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGEn
CitQQVNTIHJvdy5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhO
dW1iZXInCitQQVNTIHJvdy5jaGlsZEF0SW5kZXgoMSkuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIGlzICdBWFZhbHVlOiAyJworUEFTUyBmcmFjdGlvbi5zdWJyb2xlIGlzICdBWFN1YnJvbGU6
IEFYTWF0aEZyYWN0aW9uJworUEFTUyBmcmFjdGlvbkRlbm9taW5hdG9yLnN1YnJvbGUgaXMgJ0FY
U3Vicm9sZTogQVhNYXRoTnVtYmVyJworUEFTUyBmcmFjdGlvbkRlbm9taW5hdG9yLmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMicKK1BBU1MgZnJhY3Rpb25EZW5vbWlu
YXRvci5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgnZnJhY3Rpb25EZW5vbWluYXRvcicpKSBpcyB0cnVlCitQQVNTIGZyYWN0aW9uTnVtZXJhdG9y
LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllcicKK1BBU1MgZnJhY3Rpb25O
dW1lcmF0b3IuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBhJworUEFT
UyBmcmFjdGlvbk51bWVyYXRvci5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgnZnJhY3Rpb25OdW1lcmF0b3InKSkgaXMgdHJ1ZQorUEFTUyBzcXJ0
LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgc3FydC5zdWJyb2xlIGlzICdBWFN1YnJv
bGU6IEFYTWF0aFNxdWFyZVJvb3QnCitQQVNTIHNxcnRSYWRpY2FuZC5zdWJyb2xlIGlzICdBWFN1
YnJvbGU6IEFYTWF0aElkZW50aWZpZXInCitQQVNTIHNxcnRSYWRpY2FuZC5jaGlsZEF0SW5kZXgo
MCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGEnCitQQVNTIHNxcnRSYWRpY2FuZC5pc0VxdWFs
KGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3FydFJhZGlj
YW5kJykpIGlzIHRydWUKK1BBU1Mgcm9vdC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNT
IHJvb3Quc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhSb290JworUEFTUyByb290SW5kZXgu
aXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3Jv
b3RJbmRleCcpKSBpcyB0cnVlCitQQVNTIHJvb3RSYWRpY2FuZC5pc0VxdWFsKGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncm9vdFJhZGljYW5kJykpIGlzIHRy
dWUKK1BBU1MgZmVuY2VkLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgZmVuY2VkLnN1
YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoRmVuY2VkJworUEFTUyBmZW5jZWQuc3RyaW5nQXR0
cmlidXRlVmFsdWUoJ0FYTWF0aEZlbmNlZE9wZW4nKSBpcyAneycKK1BBU1MgZmVuY2VkLnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKCdBWE1hdGhGZW5jZWRDbG9zZScpIGlzICd9JworUEFTUyBjaGlsZC5j
aGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHsnCitQQVNTIGNoaWxkLmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMicKK1BBU1MgY2hpbGQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAsJworUEFTUyBjaGlsZC5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGEnCitQQVNTIGNoaWxkLmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogLCcKK1BBU1MgY2hpbGQuY2hpbGRB
dEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBlJworUEFTUyBjaGlsZC5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IH0nCitQQVNTIHN1Yi5yb2xlIGlzICdB
WFJvbGU6IEFYR3JvdXAnCitQQVNTIHN1Yi5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFN1
YnNjcmlwdFN1cGVyc2NyaXB0JworUEFTUyBzdWJCYXNlLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTog
QVhNYXRoSWRlbnRpZmllcicKK1BBU1Mgc3ViU3ViLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhN
YXRoVGV4dCcKK1BBU1Mgc3ViQmFzZS5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgnc3ViQmFzZScpKSBpcyB0cnVlCitQQVNTIHN1YlN1Yi5pc0Vx
dWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3ViU3Vi
JykpIGlzIHRydWUKK1BBU1Mgc3VwLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgc3Vw
LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQnCitQQVNT
IHN1cEJhc2Uuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFTUyBz
dXBTdXAuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhUZXh0JworUEFTUyBzdXBCYXNlLmlz
RXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdXBC
YXNlJykpIGlzIHRydWUKK1BBU1Mgc3VwU3VwLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdXBTdXAnKSkgaXMgdHJ1ZQorUEFTUyBzdWJzdXAu
cm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBzdWJzdXAuc3Vicm9sZSBpcyAnQVhTdWJy
b2xlOiBBWE1hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCcKK1BBU1Mgc3Vic3VwQmFzZS5zdWJyb2xl
IGlzICdBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInCitQQVNTIHN1YnN1cFN1cC5zdWJyb2xl
IGlzICdBWFN1YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIHN1YnN1cFN1Yi5zdWJyb2xlIGlzICdB
WFN1YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIHN1YnN1cEJhc2UuaXNFcXVhbChhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3N1YnN1cEJhc2UnKSkgaXMgdHJ1
ZQorUEFTUyBzdWJzdXBTdWIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ3N1YnN1cFN1YicpKSBpcyB0cnVlCitQQVNTIHN1YnN1cFN1cC5pc0Vx
dWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgnc3Vic3Vw
U3VwJykpIGlzIHRydWUKK1BBU1MgdW5kZXIucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFT
UyB1bmRlci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFVuZGVyT3ZlcicKK1BBU1MgdW5k
ZXJCYXNlLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllcicKK1BBU1MgdW5k
ZXJVbmRlci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIHVuZGVyVW5k
ZXIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J3VuZGVyVW5kZXInKSkgaXMgdHJ1ZQorUEFTUyBvdmVyLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91
cCcKK1BBU1Mgb3Zlci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFVuZGVyT3ZlcicKK1BB
U1Mgb3ZlckJhc2Uuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFT
UyBvdmVyT3Zlci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIG92ZXJC
YXNlLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdvdmVyQmFzZScpKSBpcyB0cnVlCitQQVNTIG92ZXJPdmVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdvdmVyT3ZlcicpKSBpcyB0cnVlCitQ
QVNTIHVuZGVyb3Zlci5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIHVuZGVyb3Zlci5z
dWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFVuZGVyT3ZlcicKK1BBU1MgdW5kZXJPdmVyQmFz
ZS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInCitQQVNTIHVuZGVyT3Zl
clVuZGVyLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhNYXRoVGV4dCcKK1BBU1MgdW5kZXJPdmVy
T3Zlci5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aFRleHQnCitQQVNTIHVuZGVyT3ZlckJh
c2UuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J3VuZGVyT3ZlckJhc2UnKSkgaXMgdHJ1ZQorUEFTUyB1bmRlck92ZXJVbmRlci5pc0VxdWFsKGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndW5kZXJPdmVyVW5k
ZXInKSkgaXMgdHJ1ZQorUEFTUyB1bmRlck92ZXJPdmVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd1bmRlck92ZXJPdmVyJykpIGlzIHRydWUK
K1BBU1MgdGFibGUucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyB0YWJsZS5zdWJyb2xl
IGlzICdBWFN1YnJvbGU6IEFYTWF0aFRhYmxlJworUEFTUyByb3cuc3Vicm9sZSBpcyAnQVhTdWJy
b2xlOiBBWE1hdGhUYWJsZVJvdycKK1BBU1MgY2VsbC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFY
TWF0aFRhYmxlQ2VsbCcKK1BBU1MgY2VsbC5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSBpcyAnQVhT
dWJyb2xlOiBBWE1hdGhJZGVudGlmaWVyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L21hdGhtbC1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1lbGVtZW50cy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLWVs
ZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAzIEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8bWF0aCBpZD0icm93Ij4KKzxtcm93Pjxt
aT5hPC9taT48bW4+MjwvbW4+PC9tcm93PgorPC9tYXRoPjxicj4KKworPG1hdGggaWQ9ImZyYWN0
aW9uIj4KKzxtZnJhYz48bWkgaWQ9ImZyYWN0aW9uTnVtZXJhdG9yIj5hPC9taT48bW4gaWQ9ImZy
YWN0aW9uRGVub21pbmF0b3IiPjI8L21uPjwvbWZyYWM+Cis8L21hdGg+PGJyPgorCis8bWF0aCBp
ZD0ic3FydCI+Cis8bXNxcnQ+PG1pIGlkPSJzcXJ0UmFkaWNhbmQiPmE8L21pPjwvbXNxcnQ+Cis8
L21hdGg+PGJyPgorCis8bWF0aCBpZD0icm9vdCI+Cis8bXJvb3Q+PG1uIGlkPSJyb290UmFkaWNh
bmQiPjM8L21uPjxtaSBpZD0icm9vdEluZGV4Ij5hPC9taT48L21yb290PgorPC9tYXRoPjxicj4K
KworPG1hdGggaWQ9ImZlbmNlZCI+Cis8bWZlbmNlZCBvcGVuPSJ7IiBjbG9zZT0ifSIgc2VwYXJh
dG9ycz0iLCwiPjxtaT4yPC9taT48bWk+YTwvbWk+PG1pPmU8L21pPjwvbXJvb3Q+Cis8L21hdGg+
PGJyPgorCis8bWF0aCBpZD0ic3ViIj4KKzxtc3ViPjxtaSBpZD0ic3ViQmFzZSI+MjwvbWk+PG10
ZXh0IGlkPSJzdWJTdWIiPnN1YjwvbXRleHQ+PC9tc3ViPgorPC9tYXRoPjxicj4KKworPG1hdGgg
aWQ9InN1cCI+Cis8bXN1cD48bWkgaWQ9InN1cEJhc2UiPjI8L21pPjxtdGV4dCBpZD0ic3VwU3Vw
Ij5zdXA8L210ZXh0PjwvbXN1cD4KKzwvbWF0aD48YnI+CisKKzxtYXRoIGlkPSJzdWJzdXAiPgor
PG1zdWJzdXA+PG1pIGlkPSJzdWJzdXBCYXNlIj4yPC9taT48bXRleHQgaWQ9InN1YnN1cFN1YiI+
c3ViPC9tdGV4dD48bXRleHQgaWQ9InN1YnN1cFN1cCI+c3VwPC9tdGV4dD48L21zdWJzdXA+Cis8
L21hdGg+PGJyPgorCQorPG1hdGggaWQ9InVuZGVyIj4KKzxtdW5kZXI+PG1pIGlkPSJ1bmRlckJh
c2UiPjM8L21pPjxtdGV4dCBpZD0idW5kZXJVbmRlciI+dW5kZXI8L210ZXh0PjwvbXVuZGVyPgor
PC9tYXRoPjxicj4KKworPG1hdGggaWQ9Im92ZXIiPgorPG1vdmVyPjxtaSBpZD0ib3ZlckJhc2Ui
PjM8L21pPjxtdGV4dCBpZD0ib3Zlck92ZXIiPm92ZXI8L210ZXh0PjwvbW92ZXI+Cis8L21hdGg+
PGJyPgorCis8bWF0aCBpZD0idW5kZXJvdmVyIj4KKzxtdW5kZXJvdmVyPjxtaSBpZD0idW5kZXJP
dmVyQmFzZSI+MzwvbWk+PG10ZXh0IGlkPSJ1bmRlck92ZXJVbmRlciI+dW5kZXI8L210ZXh0Pjxt
dGV4dCBpZD0idW5kZXJPdmVyT3ZlciI+b3ZlcjwvbXRleHQ+PC9tdW5kZXJvdmVyPgorPC9tYXRo
Pjxicj4KKworPG1hdGggaWQ9InRhYmxlIj4KKzxtdGFibGU+Cis8bXRyPjxtdGQ+PG1pPjM8L21p
PjwvbXRkPjwvbXRyPgorPG10cj48bXRkPjxtaT4yPC9taT48L210ZD48L210cj4KKzxtdHI+PG10
ZD48bWk+MTwvbWk+PC9tdGQ+PC9tdHI+Cis8L210YWJsZT4KKzwvbWF0aD4KKworCis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGVu
c3VyZXMgdGhhdCBNYWMgc3BlY2lmaWMgYXR0cmlidXRlcyBhbmQgcm9sZXMgZm9yIE1hdGhNTCBl
bGVtZW50cyB3b3JrIGFzIGV4cGVjdGVkLiIpCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgLy8gUm93CisgICB2YXIgcm93
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJyb3ciKS5j
aGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgicm93LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91
cCciKTsKKyAgIHNob3VsZEJlKCJyb3cuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhSb3cn
Iik7CisgICBzaG91bGRCZSgicm93LmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJv
bGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICBzaG91bGRCZSgicm93LmNoaWxkQXRJbmRleCgw
KS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGEnIik7CisgICBzaG91
bGRCZSgicm93LmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aE51
bWJlciciKTsKKyAgIHNob3VsZEJlKCJyb3cuY2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgw
KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMiciKTsKKworICAgLy8gRnJhY3Rpb24KKyAgIHZh
ciBmcmFjdGlvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiZnJhY3Rpb24iKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgiZnJhY3Rpb24uc3Vi
cm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhGcmFjdGlvbiciKTsKKyAgIHZhciBmcmFjdGlvbkRl
bm9taW5hdG9yID0gZnJhY3Rpb24udWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aEZyYWN0
aW9uRGVub21pbmF0b3IiKTsKKyAgIHZhciBmcmFjdGlvbk51bWVyYXRvciA9IGZyYWN0aW9uLnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhGcmFjdGlvbk51bWVyYXRvciIpOworICAgc2hv
dWxkQmUoImZyYWN0aW9uRGVub21pbmF0b3Iuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhO
dW1iZXInIik7CisgICBzaG91bGRCZSgiZnJhY3Rpb25EZW5vbWluYXRvci5jaGlsZEF0SW5kZXgo
MCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDInIik7CisgICBzaG91bGRCZVRydWUoImZyYWN0
aW9uRGVub21pbmF0b3IuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ2ZyYWN0aW9uRGVub21pbmF0b3InKSkiKTsKKyAgIHNob3VsZEJlKCJmcmFj
dGlvbk51bWVyYXRvci5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7
CisgICBzaG91bGRCZSgiZnJhY3Rpb25OdW1lcmF0b3IuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBhJyIpOworICAgc2hvdWxkQmVUcnVlKCJmcmFjdGlvbk51bWVyYXRv
ci5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgn
ZnJhY3Rpb25OdW1lcmF0b3InKSkiKTsKKworICAgLy8gU3F1YXJlIHJvb3QKKyAgIHZhciBzcXJ0
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzcXJ0Iiku
Y2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoInNxcnQucm9sZSIsICInQVhSb2xlOiBBWEdy
b3VwJyIpOworICAgc2hvdWxkQmUoInNxcnQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhT
cXVhcmVSb290JyIpOworICAgdmFyIHNxcnRSYWRpY2FuZCA9IHNxcnQudWlFbGVtZW50QXR0cmli
dXRlVmFsdWUoIkFYTWF0aFJvb3RSYWRpY2FuZCIpOworICAgc2hvdWxkQmUoInNxcnRSYWRpY2Fu
ZC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICBzaG91bGRC
ZSgic3FydFJhZGljYW5kLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
YSciKTsKKyAgIHNob3VsZEJlVHJ1ZSgic3FydFJhZGljYW5kLmlzRXF1YWwoYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzcXJ0UmFkaWNhbmQnKSkiKTsKKwor
ICAgLy8gR2VuZXJpYyByb290CisgICB2YXIgcm9vdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgicm9vdCIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3Vs
ZEJlKCJyb290LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJyb290
LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoUm9vdCciKTsKKyAgIHZhciByb290SW5kZXgg
PSByb290LnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhSb290SW5kZXgiKTsKKyAgIHZh
ciByb290UmFkaWNhbmQgPSByb290LnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhSb290
UmFkaWNhbmQiKTsKKyAgIHNob3VsZEJlVHJ1ZSgicm9vdEluZGV4LmlzRXF1YWwoYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyb290SW5kZXgnKSkiKTsKKyAg
IHNob3VsZEJlVHJ1ZSgicm9vdFJhZGljYW5kLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyb290UmFkaWNhbmQnKSkiKTsKKworICAgLy8gRmVu
Y2VkCisgICB2YXIgZmVuY2VkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJmZW5jZWQiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgiZmVuY2Vk
LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJmZW5jZWQuc3Vicm9s
ZSIsICInQVhTdWJyb2xlOiBBWE1hdGhGZW5jZWQnIik7CisgICBzaG91bGRCZSgiZmVuY2VkLnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWE1hdGhGZW5jZWRPcGVuJykiLCAiJ3snIik7CisgICBzaG91
bGRCZSgiZmVuY2VkLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWE1hdGhGZW5jZWRDbG9zZScpIiwg
Iid9JyIpOworICAgdmFyIGZlbmNlVmFsdWVzID0gbmV3IEFycmF5KCJ7IiwgIjIiLCAiLCIsICJh
IiwgIiwiLCAiZSIsICJ9Iik7CisgICBmb3IgKHZhciBrID0gMDsgayA8IGZlbmNlVmFsdWVzLmxl
bmd0aDsgaysrKSB7CisgICAgICB2YXIgY2hpbGQgPSBmZW5jZWQuY2hpbGRBdEluZGV4KGspOwor
ICAgICAgc2hvdWxkQmUoImNoaWxkLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhW
YWx1ZTogIiArIGZlbmNlVmFsdWVzW2tdICsgIiciKTsKKyAgIH0KKworICAgLy8gU3Vic2NyaXB0
CisgICB2YXIgc3ViID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJzdWIiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgic3ViLnJvbGUiLCAiJ0FY
Um9sZTogQVhHcm91cCciKTsKKyAgIHNob3VsZEJlKCJzdWIuc3Vicm9sZSIsICInQVhTdWJyb2xl
OiBBWE1hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCciKTsKKyAgIHZhciBzdWJCYXNlID0gc3ViLnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhCYXNlIik7CisgICBzaG91bGRCZSgic3ViQmFz
ZS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICB2YXIgc3Vi
U3ViID0gc3ViLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhTdWJzY3JpcHQiKTsKKyAg
IHNob3VsZEJlKCJzdWJTdWIuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhUZXh0JyIpOwor
ICAgc2hvdWxkQmVUcnVlKCJzdWJCYXNlLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdWJCYXNlJykpIik7CisgICBzaG91bGRCZVRydWUoInN1
YlN1Yi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgnc3ViU3ViJykpIik7CisKKyAgIC8vIFN1cGVyc2NyaXB0CisgICB2YXIgc3VwID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzdXAiKS5jaGlsZEF0SW5k
ZXgoMCk7CisgICBzaG91bGRCZSgic3VwLnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAg
IHNob3VsZEJlKCJzdXAuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhTdWJzY3JpcHRTdXBl
cnNjcmlwdCciKTsKKyAgIHZhciBzdXBCYXNlID0gc3VwLnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVl
KCJBWE1hdGhCYXNlIik7CisgICBzaG91bGRCZSgic3VwQmFzZS5zdWJyb2xlIiwgIidBWFN1YnJv
bGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICB2YXIgc3VwU3VwID0gc3VwLnVpRWxlbWVudEF0
dHJpYnV0ZVZhbHVlKCJBWE1hdGhTdXBlcnNjcmlwdCIpOworICAgc2hvdWxkQmUoInN1cFN1cC5z
dWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFRleHQnIik7CisgICBzaG91bGRCZVRydWUoInN1
cEJhc2UuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ3N1cEJhc2UnKSkiKTsKKyAgIHNob3VsZEJlVHJ1ZSgic3VwU3VwLmlzRXF1YWwoYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdXBTdXAnKSkiKTsKKwor
ICAgLy8gU3Vic3VwZXJzY3JpcHQKKyAgIHZhciBzdWJzdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInN1YnN1cCIpLmNoaWxkQXRJbmRleCgwKTsKKyAg
IHNob3VsZEJlKCJzdWJzdXAucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgc2hvdWxk
QmUoInN1YnN1cC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFN1YnNjcmlwdFN1cGVyc2Ny
aXB0JyIpOworICAgdmFyIHN1YnN1cEJhc2UgPSBzdWJzdXAudWlFbGVtZW50QXR0cmlidXRlVmFs
dWUoIkFYTWF0aEJhc2UiKTsKKyAgIHNob3VsZEJlKCJzdWJzdXBCYXNlLnN1YnJvbGUiLCAiJ0FY
U3Vicm9sZTogQVhNYXRoSWRlbnRpZmllciciKTsKKyAgIHZhciBzdWJzdXBTdXAgPSBzdWJzdXAu
dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aFN1cGVyc2NyaXB0Iik7CisgICBzaG91bGRC
ZSgic3Vic3VwU3VwLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoVGV4dCciKTsKKyAgIHZh
ciBzdWJzdXBTdWIgPSBzdWJzdXAudWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aFN1YnNj
cmlwdCIpOworICAgc2hvdWxkQmUoInN1YnN1cFN1Yi5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFY
TWF0aFRleHQnIik7CisgICBzaG91bGRCZVRydWUoInN1YnN1cEJhc2UuaXNFcXVhbChhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3N1YnN1cEJhc2UnKSkiKTsK
KyAgIHNob3VsZEJlVHJ1ZSgic3Vic3VwU3ViLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdzdWJzdXBTdWInKSkiKTsKKyAgIHNob3VsZEJlVHJ1
ZSgic3Vic3VwU3VwLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdzdWJzdXBTdXAnKSkiKTsKKworICAgLy8gVW5kZXIKKyAgIHZhciB1bmRlciA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidW5kZXIiKS5j
aGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgidW5kZXIucm9sZSIsICInQVhSb2xlOiBBWEdy
b3VwJyIpOworICAgc2hvdWxkQmUoInVuZGVyLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRo
VW5kZXJPdmVyJyIpOworICAgdmFyIHVuZGVyQmFzZSA9IHVuZGVyLnVpRWxlbWVudEF0dHJpYnV0
ZVZhbHVlKCJBWE1hdGhCYXNlIik7CisgICBzaG91bGRCZSgidW5kZXJCYXNlLnN1YnJvbGUiLCAi
J0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllciciKTsKKyAgIHZhciB1bmRlclVuZGVyID0gdW5k
ZXIudWlFbGVtZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aFVuZGVyIik7CisgICBzaG91bGRCZSgi
dW5kZXJVbmRlci5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFRleHQnIik7CisgICBzaG91
bGRCZVRydWUoInVuZGVyVW5kZXIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ3VuZGVyVW5kZXInKSkiKTsKKworICAgLy8gT3ZlcgorICAgdmFy
IG92ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm92
ZXIiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgib3Zlci5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CisgICBzaG91bGRCZSgib3Zlci5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFY
TWF0aFVuZGVyT3ZlciciKTsKKyAgIHZhciBvdmVyQmFzZSA9IG92ZXIudWlFbGVtZW50QXR0cmli
dXRlVmFsdWUoIkFYTWF0aEJhc2UiKTsKKyAgIHNob3VsZEJlKCJvdmVyQmFzZS5zdWJyb2xlIiwg
IidBWFN1YnJvbGU6IEFYTWF0aElkZW50aWZpZXInIik7CisgICB2YXIgb3Zlck92ZXIgPSBvdmVy
LnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKCJBWE1hdGhPdmVyIik7CisgICBzaG91bGRCZSgib3Zl
ck92ZXIuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhUZXh0JyIpOworICAgc2hvdWxkQmVU
cnVlKCJvdmVyQmFzZS5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgnb3ZlckJhc2UnKSkiKTsKKyAgIHNob3VsZEJlVHJ1ZSgib3Zlck92ZXIuaXNF
cXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ292ZXJP
dmVyJykpIik7CisKKyAgIC8vIFVuZGVyT3ZlcgorICAgdmFyIHVuZGVyb3ZlciA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidW5kZXJvdmVyIikuY2hpbGRB
dEluZGV4KDApOworICAgc2hvdWxkQmUoInVuZGVyb3Zlci5yb2xlIiwgIidBWFJvbGU6IEFYR3Jv
dXAnIik7CisgICBzaG91bGRCZSgidW5kZXJvdmVyLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhN
YXRoVW5kZXJPdmVyJyIpOworICAgdmFyIHVuZGVyT3ZlckJhc2UgPSB1bmRlcm92ZXIudWlFbGVt
ZW50QXR0cmlidXRlVmFsdWUoIkFYTWF0aEJhc2UiKTsKKyAgIHNob3VsZEJlKCJ1bmRlck92ZXJC
YXNlLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllciciKTsKKyAgIHZhciB1
bmRlck92ZXJVbmRlciA9IHVuZGVyb3Zlci51aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRo
VW5kZXIiKTsKKyAgIHNob3VsZEJlKCJ1bmRlck92ZXJVbmRlci5zdWJyb2xlIiwgIidBWFN1YnJv
bGU6IEFYTWF0aFRleHQnIik7CisgICB2YXIgdW5kZXJPdmVyT3ZlciA9IHVuZGVyb3Zlci51aUVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZSgiQVhNYXRoT3ZlciIpOworICAgc2hvdWxkQmUoInVuZGVyT3Zl
ck92ZXIuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhUZXh0JyIpOworICAgc2hvdWxkQmVU
cnVlKCJ1bmRlck92ZXJCYXNlLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCd1bmRlck92ZXJCYXNlJykpIik7CisgICBzaG91bGRCZVRydWUoInVu
ZGVyT3ZlclVuZGVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCd1bmRlck92ZXJVbmRlcicpKSIpOworICAgc2hvdWxkQmVUcnVlKCJ1bmRlck92
ZXJPdmVyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCd1bmRlck92ZXJPdmVyJykpIik7CisKKyAgIC8vIFRhYmxlCisgICB2YXIgdGFibGUgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIikuY2hp
bGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoInRhYmxlLnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91
cCciKTsKKyAgIHNob3VsZEJlKCJ0YWJsZS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTWF0aFRh
YmxlJyIpOworICAgdmFyIHJvdyA9IHRhYmxlLmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJl
KCJyb3cuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhUYWJsZVJvdyciKTsKKyAgIHZhciBj
ZWxsID0gcm93LmNoaWxkQXRJbmRleCgwKTsKKyAgIHNob3VsZEJlKCJjZWxsLnN1YnJvbGUiLCAi
J0FYU3Vicm9sZTogQVhNYXRoVGFibGVDZWxsJyIpOworICAgc2hvdWxkQmUoImNlbGwuY2hpbGRB
dEluZGV4KDApLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhNYXRoSWRlbnRpZmllciciKTsKK30K
KworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="186759"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>