<?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>236289</bug_id>
          
          <creation_ts>2022-02-08 01:51:55 -0800</creation_ts>
          <short_desc>WKHoverPlatter should scale up the platter content to make it easier to see</short_desc>
          <delta_ts>2022-02-09 01:32:18 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838567</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-08 01:51:55 -0800</bug_when>
    <thetext>WKHoverPlatter should scale up the platter content to make it easier to see</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838568</commentid>
    <comment_count>1</comment_count>
      <attachid>451222</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-08 01:52:59 -0800</bug_when>
    <thetext>Created attachment 451222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838571</commentid>
    <comment_count>2</comment_count>
      <attachid>451223</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-08 02:01:16 -0800</bug_when>
    <thetext>Created attachment 451223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838956</commentid>
    <comment_count>3</comment_count>
      <attachid>451223</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-08 16:40:10 -0800</bug_when>
    <thetext>Comment on attachment 451223
Patch

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

r=me with tvOS/watchOS builds fixed!

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:11159
&gt; +void WebPageProxy::interactableRegionsInRect(WebCore::FloatRect rect, CompletionHandler&lt;void(Vector&lt;WebCore::FloatRect&gt;)&gt;&amp;&amp; completionHandler)

Maybe give this a name that better describes the coordinate space? Given the usage, it looks like it&apos;s in root view space.

(Also, you can remove the WebCore:: here)

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3107
&gt; +    if (WKHoverPlatterDomain.rootSettings.enabled)
&gt; +        return [_hoverPlatter adjustedPointForPoint:location];

Nit - maybe it would it be cleaner if we folded these `WKHoverPlatterDomain.rootSettings.enabled` checks into -adjustedPointForPoint:?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3117
&gt; +    if (WKHoverPlatterDomain.rootSettings.enabled)
&gt; +        return [_hoverPlatter adjustedPointForPoint:location];

(Ditto)

&gt; Source/WebKit/UIProcess/ios/WKHoverPlatter.mm:122
&gt; +    if (!boundingRect.contains(point) &amp;&amp; point != WebCore::FloatPoint { -1 , -1 })

Nit - extra space before the ,

(It&apos;s also not super obvious where the (-1, -1) is coming from..)

&gt; Source/WebKit/UIProcess/ios/WKHoverPlatter.mm:300
&gt; +    delta.scale(1.f / WKHoverPlatterDomain.rootSettings.platterScale);

`WKHoverPlatterDomain.rootSettings.platterScale` is always guaranteed to be nonzero, right?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6268
&gt; +void WebPage::interactableRegionsInRect(WebCore::FloatRect rect, CompletionHandler&lt;void(Vector&lt;WebCore::FloatRect&gt;)&gt;&amp;&amp; completionHandler)

Nit - I think you can omit the WebCore:: here

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6275
&gt; +    auto result = HitTestResult { WebCore::LayoutRect(rect) };

(here too)

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6289
&gt; +    HitTestResult::NodeSet linkNodes;

Nit - maybe `interactableNodes` or `hitTestedNodes`? (linkNodes makes it sounds a bit like it&apos;s only about links)

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6301
&gt; +        rects.append(renderer-&gt;absoluteBoundingBoxRect());

(Just to double check — we don&apos;t need to convert to root view coordinates here because all the hit-tested nodes are in the main frame?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838994</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-08 20:19:23 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 451223 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451223&amp;action=review
&gt; 
&gt; r=me with tvOS/watchOS builds fixed!
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:11159
&gt; &gt; +void WebPageProxy::interactableRegionsInRect(WebCore::FloatRect rect, CompletionHandler&lt;void(Vector&lt;WebCore::FloatRect&gt;)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Maybe give this a name that better describes the coordinate space? Given the
&gt; usage, it looks like it&apos;s in root view space.

Totally!

&gt; (Also, you can remove the WebCore:: here)
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3107
&gt; &gt; +    if (WKHoverPlatterDomain.rootSettings.enabled)
&gt; &gt; +        return [_hoverPlatter adjustedPointForPoint:location];
&gt; 
&gt; Nit - maybe it would it be cleaner if we folded these
&gt; `WKHoverPlatterDomain.rootSettings.enabled` checks into
&gt; -adjustedPointForPoint:?

It would, but _hoverPlatter is nil in that case, so it would break all interaction.

&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3117
&gt; &gt; +    if (WKHoverPlatterDomain.rootSettings.enabled)
&gt; &gt; +        return [_hoverPlatter adjustedPointForPoint:location];
&gt; 
&gt; (Ditto)
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKHoverPlatter.mm:122
&gt; &gt; +    if (!boundingRect.contains(point) &amp;&amp; point != WebCore::FloatPoint { -1 , -1 })
&gt; 
&gt; Nit - extra space before the ,
&gt; 
&gt; (It&apos;s also not super obvious where the (-1, -1) is coming from..)

We don&apos;t have it named anywhere that I know, but it&apos;s the view-level &quot;mouseout&quot; position hardcoded in a few other places. Still, it is a good point... let me see what I can do.

&gt; &gt; Source/WebKit/UIProcess/ios/WKHoverPlatter.mm:300
&gt; &gt; +    delta.scale(1.f / WKHoverPlatterDomain.rootSettings.platterScale);
&gt; 
&gt; `WKHoverPlatterDomain.rootSettings.platterScale` is always guaranteed to be
&gt; nonzero, right?

I will change the minimum in WKHoverPlatterParameters to 1 (but, regardless, the divide-by-zeroes would be on you if you set the debug setting to 0 :P)

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6268
&gt; &gt; +void WebPage::interactableRegionsInRect(WebCore::FloatRect rect, CompletionHandler&lt;void(Vector&lt;WebCore::FloatRect&gt;)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Nit - I think you can omit the WebCore:: here
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6275
&gt; &gt; +    auto result = HitTestResult { WebCore::LayoutRect(rect) };
&gt; 
&gt; (here too)
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6289
&gt; &gt; +    HitTestResult::NodeSet linkNodes;
&gt; 
&gt; Nit - maybe `interactableNodes` or `hitTestedNodes`? (linkNodes makes it
&gt; sounds a bit like it&apos;s only about links)

Right! I renamed the method from being about &quot;link&quot;s but missed this one.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6301
&gt; &gt; +        rects.append(renderer-&gt;absoluteBoundingBoxRect());
&gt; 
&gt; (Just to double check — we don&apos;t need to convert to root view coordinates
&gt; here because all the hit-tested nodes are in the main frame?)

Will double check the coordinate space, very possible this is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839024</commentid>
    <comment_count>5</comment_count>
      <attachid>451340</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-08 23:03:02 -0800</bug_when>
    <thetext>Created attachment 451340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839034</commentid>
    <comment_count>6</comment_count>
      <attachid>451342</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-08 23:26:11 -0800</bug_when>
    <thetext>Created attachment 451342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839055</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-09 01:31:57 -0800</bug_when>
    <thetext>Committed r289463 (247006@main): &lt;https://commits.webkit.org/247006@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451342.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839056</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-09 01:32:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/88678328&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451222</attachid>
            <date>2022-02-08 01:52:59 -0800</date>
            <delta_ts>2022-02-08 02:01:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236289-20220208015258.patch</filename>
            <type>text/plain</type>
            <size>53720</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIwMDRmOWY1OTk3NTgxOTc3
MTA4ZDU4Y2IxOGM0ODQ4MmRmNTU5OWMuLjk1NjczZTVlMGFkYTJjODFhNGUyZTMwNGNmM2UxZTFk
MGI5NjA1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjItMDItMDggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tIb3ZlclBsYXR0ZXIg
c2hvdWxkIHNjYWxlIHVwIHRoZSBwbGF0dGVyIGNvbnRlbnQgdG8gbWFrZSBpdCBlYXNpZXIgdG8g
c2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYy
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL2lvcy9OYXRpdmVX
ZWJNb3VzZUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50
OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgQWRkIGEgTmF0aXZlV2ViTW91c2VFdmVu
dCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIG1vc3QgcHJvcGVydGllcyBmcm9tCisgICAgICAgIGFu
b3RoZXIgZXZlbnQsIGJ1dCBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgcG9zaXRpb25zIGFuZCBkZWx0
YXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjppbnRlcmFjdGFibGVSZWdpb25zSW5SZWN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnRlcmFjdGFibGVSZWdp
b25zSW5SZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBB
ZGQgYSBtZXRob2QgdG8gY291bnQgdGhlIG51bWJlciBvZiBjbGlja2FibGUgZWxlbWVudHMgaW4g
YSBnaXZlbiByZWN0YW5nbGUuCisgICAgICAgIFRoaXMgaXMganVzdCBhIGZpcnN0IGF0dGVtcHQg
YXQgdGhlIGhldXJpc3RpYzsgdGhpcyB3aWxsIGdldCBtb3JlIGNvbXBsZXggaW4gdGhlIGZ1dHVy
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6
CisgICAgICAgIEFkZCBhIHNlbGVjdGlvbiBhc3Npc3RhbnQgc3VwcHJlc3Npb24gcmVhc29uIGZv
ciBXS0hvdmVyUGxhdHRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVBbmRDb25m
aWd1cmVIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcl0pOgorICAgICAgICBGYWN0
b3Igb3V0IGhpZ2hsaWdodC1sb25nLXByZXNzIGdlc3R1cmUgY3JlYXRpb24gbGlrZSBsb25nLXBy
ZXNzLiBCYWlsIGlmIHRoZSBwbGF0dGVyIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBzZXRVcEludGVyYWN0aW9uXSk6CisgICAgICAgIERpc2FibGUgdGhlIHNlbGVjdGlv
biBhc3Npc3RhbnQgaWYgV0tIb3ZlclBsYXR0ZXIgd2FudHMgdG8gdXNlIGxvbmcgcHJlc3MuCisK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjbGVhblVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfbG9jYXRpb25Gb3JHZXN0dXJlOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9zdGFydFBvaW50Rm9yR2VzdHVyZTpdKToKKyAgICAgICAgQWRkIGZ1bm5lbHMg
Zm9yIGV4dHJhY3RpbmcgdGhlIHByaW1hcnkgbG9jYXRpb24gb3Igc3RhcnRpbmcgbG9jYXRpb24g
ZnJvbQorICAgICAgICBhIGdlc3R1cmUsIGFsbG93aW5nIFdLSG92ZXJQbGF0dGVyIHRvIG11dGF0
ZSBpdCBpZiBpdCBpcyBjdXJyZW50bHkgZW5nYWdlZC4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9kb3VibGVUYXBSZWNvZ25pemVkRm9yRG91YmxlQ2xpY2s6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVkOl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBJZGVudGlmaWVkOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBSZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9kb3VibGVUYXBSZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9ub25CbG9ja2luZ0RvdWJsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgIEFk
b3B0IF9sb2NhdGlvbkZvckdlc3R1cmUvX3N0YXJ0UG9pbnRGb3JHZXN0dXJlLgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2xvbmdQcmVzc1JlY29nbml6ZWQ6XSk6CisgICAgICAgIEFkb3B0
IF9sb2NhdGlvbkZvckdlc3R1cmUvX3N0YXJ0UG9pbnRGb3JHZXN0dXJlLgorICAgICAgICBSZWRp
cmVjdCBhIHJlY29nbml6ZWQgbG9uZyBwcmVzcyB0byBXS0hvdmVyUGxhdHRlciBpZiBpdCB3YW50
cyB0byB1c2UgbG9uZyBwcmVzcy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRV
c2VDb250ZXh0TWVudXNdKToKKyAgICAgICAgRGlzYWJsZSBjb250ZXh0IG1lbnVzIGlmIFdLSG92
ZXJQbGF0dGVyIHdhbnRzIHRvIHVzZSBsb25nIHByZXNzLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0VXBEcmFnQW5kRHJvcEludGVyYWN0aW9uc10pOgorICAgICAgICBEaXNhYmxlIGRy
YWcgYW5kIGRyb3AgaWYgV0tIb3ZlclBsYXR0ZXIgd2FudHMgdG8gdXNlIGxvbmcgcHJlc3MuCisK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBtb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpd
KToKKyAgICAgICAgQWxsb3cgV0tIb3ZlclBsYXR0ZXIgdG8gbXV0YXRlIHRoZSBsb2NhdGlvbiBv
ZiBtb3VzZSBldmVudHMgaWYgaXQgaXMgY3VycmVudGx5IGVuZ2FnZWQuCisKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBudW1iZXJPZkxpbmtzRm9ySG92ZXJQbGF0dGVyOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbToKKyAgICAgICAgKC1b
V0tIb3ZlclBsYXR0ZXIgaW5pdFdpdGhWaWV3OmRlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS0hv
dmVyUGxhdHRlciBkaWRSZWNlaXZlTW91c2VFdmVudDpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBs
YXR0ZXIgZGlkTG9uZ1ByZXNzQXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIg
cGxhdHRlckJvdW5kaW5nUmVjdF0pOgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBsaW5rU2Vh
cmNoUmVjdF0pOgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciB1cGRhdGVdKToKKyAgICAgICAg
KC1bV0tIb3ZlclBsYXR0ZXIgdXBkYXRlRGVidWdJbmRpY2F0b3JdKToKKyAgICAgICAgKC1bV0tI
b3ZlclBsYXR0ZXIgZGlzbWlzc1BsYXR0ZXJXaXRoQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtX
S0hvdmVyUGxhdHRlciBkaWRGaW5pc2hEaXNtaXNzYWxBbmltYXRpb246XSk6CisgICAgICAgICgt
W1dLSG92ZXJQbGF0dGVyIGNsZWFyTGF5ZXJzXSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVy
IGFkanVzdGVkUG9pbnRGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgYWRq
dXN0ZWRFdmVudEZvckV2ZW50Ol0pOgorICAgICAgICAoc2V0QWRkaXRpb25hbFBsYXR0ZXJMYXll
clByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoYWRkQWRkaXRpb25hbEluY29taW5nQW5p
bWF0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChhZGRBZGRpdGlvbmFsRGlzbWlzc2FsQW5pbWF0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHNldEhvdmVyUG9pbnQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHJlcXVlc3RQb3NpdGlvbklu
Zm9ybWF0aW9uRm9yQ3VycmVudEhvdmVyUG9pbnRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tI
b3ZlclBsYXR0ZXIgZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb246XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpZEZpbmlzaEFuaW1hdGlvbkZvclNoYWRvdzpdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLm1t
OgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgc2V0RGVmYXVsdFZhbHVlc10p
OgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgZW5hYmxlZF0pOgorICAgICAg
ICAoK1tXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgc2V0dGluZ3NDb250cm9sbGVyTW9kdWxlXSk6
CisgICAgICAgIChhZGRBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMpOiBEZWxldGVk
LgorICAgICAgICAoc2V0RGVmYXVsdFZhbHVlc0ZvckFkZGl0aW9uYWxQbGF0dGVyTGF5b3V0UGFy
YW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgIEFkanVzdCBXS0hvdmVyUGxhdHRlciB0byBzY2Fs
ZSB1cCBpdHMgY29udGVudCwgYW5kIGFkanVzdCB0aGUgc2hhcGUKKyAgICAgICAgYW5kIGFuaW1h
dGlvbnMuCisKIDIwMjItMDItMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgZGVidWcgbG9nIGFjY2lkZW50YWxseSBhZGRlZCB3
aXRoIHIyODkwMTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1v
dXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaApp
bmRleCAwMDE1NThkZDU4ZjRkODVmMzYwZDU3MTFjYWEwM2RiMzM4ODkwMTFlLi41NGJjODNiNDUw
Yjc2YzMxZWJmY2YxYTkxNDI4Mzk2ZGE3NzRhOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
TmF0aXZlV2ViTW91c2VFdmVudC5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICNlbGlmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgTmF0aXZlV2ViTW91c2VFdmVudCg6OldlYkV2ZW50ICop
OwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBi
dXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZs
b2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1l
IHRpbWVzdGFtcCwgZG91YmxlIGZvcmNlLCBHZXN0dXJlV2FzQ2FuY2VsbGVkKTsKKyAgICBOYXRp
dmVXZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWik7CiAjZWxpZiBV
U0UoTElCV1BFKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9wb2lu
dGVyX2V2ZW50KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogI2VsaWYgUExBVEZPUk0oV0lO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZl
bnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVudElP
Uy5tbQppbmRleCBlNDJkNjlhNDEwZGY0ODA0ZWQ0YWRjZjRiY2I2MzhjZjFiNDBkYzg4Li4yMjVj
NWIyZGE1YmRiZDBjYjA3MGYyOTg2ZTQzZTlmZGNkYzkyMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbQpAQCAtNDMsNiArNDMs
MTEgQEAgTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChUeXBlIHR5cGUs
IEJ1dHRvbiBidXR0b24sIHVuc2lnbmVkIHNob3IKIHsKIH0KIAorTmF0aXZlV2ViTW91c2VFdmVu
dDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50JiBvdGhlckV2
ZW50LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0
IGRlbHRhWikKKyAgICA6IFdlYk1vdXNlRXZlbnQob3RoZXJFdmVudC50eXBlKCksIG90aGVyRXZl
bnQuYnV0dG9uKCksIG90aGVyRXZlbnQuYnV0dG9ucygpLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRp
b24sIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIG90aGVyRXZlbnQuY2xpY2tDb3VudCgpLCBvdGhl
ckV2ZW50Lm1vZGlmaWVycygpLCBvdGhlckV2ZW50LnRpbWVzdGFtcCgpLCBvdGhlckV2ZW50LmZv
cmNlKCksIG90aGVyRXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCksIG90aGVyRXZlbnQucG9pbnRl
cklkKCksIG90aGVyRXZlbnQucG9pbnRlclR5cGUoKSwgb3RoZXJFdmVudC5nZXN0dXJlV2FzQ2Fu
Y2VsbGVkKCkpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGU0OTkzNWMzMjVmNjlmMzQzNDQwY2FhMGFkZDdiZmZlMWMwMDUyODIuLjBhZGIxNzUw
ZjIyZmVhZmJjNmUzOWFhZDBmMzA5NzAzMGY0YTA4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTExMzIsNiArMTExMzIsMTEgQEAgYm9vbCBXZWJQYWdl
UHJveHk6OnNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3QKICAgICByZXR1cm4g
bV9jb25maWd1cmF0aW9uLT5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0
IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6SW50ZXJhY3RhYmxlUmVnaW9uc0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDUwN2VhYzhhOTY1
MmFlMGZlMGExM2IyMjZkZWZmODgyZGVjMzhmMzEuLjRiOGJjNTIyMjIxMmNhY2ViNDAzZjFhYjJh
ZTNiYWQ2OTNiNGYxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0yMDUwLDYgKzIwNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFzc2lmeU1vZGFsQ29udGFp
bmVyQ29udHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXIoT3B0aW9uU2V0PFdlYkNvcmU6Ok1v
ZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
Ok1vZGFsQ29udGFpbmVyRGVjaXNpb24pPiYmKTsKIAorICAgIHZvaWQgaW50ZXJhY3RhYmxlUmVn
aW9uc0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IGM3YmU1YmVmODY0YWM2YzZjMGFlMjA0MTE4ODFkZjkwZjQ2OTcxZDIuLjc4NDAyNzhkZWU3NDU4
ZWM4N2E3MjhiZWYxZjAxOGM0ZmRkMDhiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTIyMSw3ICsyMjEs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGVudW0gU3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRS
ZWFzb24gOiB1aW50OF90IHsKICAgICBFZGl0YWJsZVJvb3RJc1RyYW5zcGFyZW50T3JGdWxseUNs
aXBwZWQgPSAxIDw8IDAsCiAgICAgRm9jdXNlZEVsZW1lbnRJc1Rvb1NtYWxsID0gMSA8PCAxLAot
ICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIKKyAgICBJbnRlcmFjdGlvbklzSGFw
cGVuaW5nID0gMSA8PCAyLAorICAgIEhvdmVyUGxhdHRlckVuYWJsZWQgPSAxIDw8IDMsCiB9Owog
CiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0MDcy
NmMxZWQ0NzUzM2YxMzdkYTBkZGE0MGE4ZWVjMjM2Y2QzNTY0Li4wZTIxNDQyN2QwYTY1NTJmYzM0
OTFhYTQ0MGI3Yjk2OTZjNTg2NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTg3MSw2ICs4NzEsMTcg
QEAgLSAodm9pZClfY3JlYXRlQW5kQ29uZmlndXJlRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIK
ICAgICBbX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHJlcXVpcmVHZXN0dXJlUmVjb2duaXpl
clRvRmFpbDpfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogfQogCistICh2b2lk
KV9jcmVhdGVBbmRDb25maWd1cmVIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgor
eworICAgIGlmIChXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlckVuYWJs
ZWRGb3JMb25nUHJlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIF9oaWdobGlnaHRMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1
cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3Io
X2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KV0pOworICAgIFtfaGlnaGxpZ2h0TG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsYXk6aGlnaGxpZ2h0RGVsYXldOworICAgIFtfaGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAg
W3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyLmdldCgpXTsKK30KKwogLSAodm9pZClfY3JlYXRlQW5kQ29uZmlndXJlTG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgPSBh
ZG9wdE5TKFtbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJn
ZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9sb25nUHJlc3NSZWNvZ25pemVkOildKTsKQEAgLTk5
OSwxMSArMTAxMCw3IEBAIC0gKHZvaWQpc2V0VXBJbnRlcmFjdGlvbgogICAgIFtfdHdvRmluZ2Vy
RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW3NlbGYg
YWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
LmdldCgpXTsKIAotICAgIF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciA9IGFk
b3B0TlMoW1tXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0
V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2hpZ2hsaWdodExvbmdQcmVzc1JlY29n
bml6ZWQ6KV0pOwotICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0
RGVsYXk6aGlnaGxpZ2h0RGVsYXldOwotICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJl
Y29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6
ZXI6X2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLQorICAgIFtz
ZWxmIF9jcmVhdGVBbmRDb25maWd1cmVIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
cl07CiAgICAgW3NlbGYgX2NyZWF0ZUFuZENvbmZpZ3VyZUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyXTsKIAogI2lmIEhBVkUoTElOS19QUkVWSUVXKQpAQCAtMTI3MCw2ICsxMjc3LDkgQEAgLSAo
dm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICBbc2VsZiBfaGFuZGxlRE9NUGFzdGVSZXF1ZXN0
V2l0aFJlc3VsdDpXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0
dXJlXTsKICAgICBbc2VsZiBfY2FuY2VsUGVuZGluZ0tleUV2ZW50SGFuZGxlcl07CiAKKyAgICBp
ZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTG9u
Z1ByZXNzKQorICAgICAgICBbc2VsZiBfc3RhcnRTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFu
dEZvclJlYXNvbjpXZWJLaXQ6OkhvdmVyUGxhdHRlckVuYWJsZWRdOworCiAgICAgX2NhY2hlZFNl
bGVjdGVkVGV4dFJhbmdlID0gbmlsOwogfQogCkBAIC0zMDY3LDIzICszMDc3LDQ1IEBAIC0gKFdl
YktpdDo6VGFwSWRlbnRpZmllciluZXh0VGFwSWRlbnRpZmllcgogICAgIHJldHVybiBfbGF0ZXN0
VGFwSUQ7CiB9CiAKKy0gKENHUG9pbnQpX2xvY2F0aW9uRm9yR2VzdHVyZTooVUlHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgYXV0byBsb2NhdGlvbiA9IFtnZXN0
dXJlUmVjb2duaXplciBsb2NhdGlvbkluVmlldzpzZWxmXTsKKworICAgIGlmIChXS0hvdmVyUGxh
dHRlckRvbWFpbi5yb290U2V0dGluZ3MuZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFtfaG92ZXJQ
bGF0dGVyIGFkanVzdGVkUG9pbnRGb3JQb2ludDpsb2NhdGlvbl07CisKKyAgICByZXR1cm4gbG9j
YXRpb247Cit9CisKKy0gKENHUG9pbnQpX3N0YXJ0UG9pbnRGb3JHZXN0dXJlOihVSUxvbmdQcmVz
c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBhdXRvIGxvY2F0
aW9uID0gW2dlc3R1cmVSZWNvZ25pemVyIHN0YXJ0UG9pbnRdOworCisgICAgaWYgKFdLSG92ZXJQ
bGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5lbmFibGVkKQorICAgICAgICByZXR1cm4gW19ob3Zl
clBsYXR0ZXIgYWRqdXN0ZWRQb2ludEZvclBvaW50OmxvY2F0aW9uXTsKKworICAgIHJldHVybiBs
b2NhdGlvbjsKK30KKwogLSAodm9pZClfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDooVUlM
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQVNT
RVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2du
aXplcik7CiAgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nXTsKIAotICAgIF9sYXN0
SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnQ7CisgICAg
YXV0byBzdGFydFBvaW50ID0gW3NlbGYgX3N0YXJ0UG9pbnRGb3JHZXN0dXJlOmdlc3R1cmVSZWNv
Z25pemVyXTsKKworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IHN0YXJ0UG9pbnQ7CiAK
ICAgICBzd2l0Y2ggKFtnZXN0dXJlUmVjb2duaXplciBzdGF0ZV0pIHsKICAgICBjYXNlIFVJR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuOgogICAgICAgICBfbG9uZ1ByZXNzQ2FuQ2xpY2sgPSBZ
RVM7CiAgICAgICAgIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KHNlbGYpOwotICAgICAg
ICBfcGFnZS0+dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihbZ2VzdHVyZVJlY29nbml6ZXIgc3RhcnRQ
b2ludF0sIFtzZWxmIG5leHRUYXBJZGVudGlmaWVyXSk7CisgICAgICAgIF9wYWdlLT50YXBIaWdo
bGlnaHRBdFBvc2l0aW9uKHN0YXJ0UG9pbnQsIFtzZWxmIG5leHRUYXBJZGVudGlmaWVyXSk7CiAg
ICAgICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQ6CiAgICAgICAgIGlmIChfbG9uZ1By
ZXNzQ2FuQ2xpY2sgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNFbGVtZW50KSB7Ci0gICAgICAg
ICAgICBbc2VsZiBfYXR0ZW1wdFN5bnRoZXRpY0NsaWNrQXRMb2NhdGlvbjpnZXN0dXJlUmVjb2du
aXplci5zdGFydFBvaW50IG1vZGlmaWVyRmxhZ3M6Z2VzdHVyZVJlY29nbml6ZXIubW9kaWZpZXJG
bGFnc107CisgICAgICAgICAgICBbc2VsZiBfYXR0ZW1wdFN5bnRoZXRpY0NsaWNrQXRMb2NhdGlv
bjpzdGFydFBvaW50IG1vZGlmaWVyRmxhZ3M6Z2VzdHVyZVJlY29nbml6ZXIubW9kaWZpZXJGbGFn
c107CiAgICAgICAgICAgICBbc2VsZiBfZmluaXNoSW50ZXJhY3Rpb25dOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIFtzZWxmIF9jYW5jZWxJbnRlcmFjdGlvbl07CkBAIC0zMTAwLDE0ICsz
MTMyLDE0IEBAIC0gKHZvaWQpX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjCiAKIC0gKHZvaWQpX2RvdWJsZVRhcFJl
Y29nbml6ZWRGb3JEb3VibGVDbGljazooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZWNvZ25pemVyCiB7Ci0gICAgX3BhZ2UtPmhhbmRsZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludChnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbiksIFdlYktp
dDo6d2ViRXZlbnRNb2RpZmllckZsYWdzKGdlc3R1cmVSZWNvZ25pemVyLm1vZGlmaWVyRmxhZ3Mp
LCBfbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdEludGVyYWN0aW9uU3RhcnQpOworICAgIF9w
YWdlLT5oYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9pbnQoV2ViQ29yZTo6SW50UG9p
bnQoW3NlbGYgX2xvY2F0aW9uRm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXplcl0pLCBXZWJLaXQ6
OndlYkV2ZW50TW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXplci5tb2RpZmllckZsYWdzKSwg
X2xheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RJbnRlcmFjdGlvblN0YXJ0KTsKIH0KIAogLSAo
dm9pZClfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJl
Y29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIF9pc1RhcEhpZ2hsaWdodElEVmFs
aWQgPSBZRVM7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRhcENvbW1pdCA9IFlFUzsKLSAg
ICBfcGFnZS0+aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoZ2VzdHVyZVJlY29nbml6ZXIuY2VudHJvaWQpLCBXZWJLaXQ6OndlYkV2ZW50TW9kaWZpZXJG
bGFncyhnZXN0dXJlUmVjb2duaXplci5tb2RpZmllckZsYWdzIHwgVUlLZXlNb2RpZmllckNvbW1h
bmQpLCBbc2VsZiBuZXh0VGFwSWRlbnRpZmllcl0pOworICAgIF9wYWdlLT5oYW5kbGVUd29GaW5n
ZXJUYXBBdFBvaW50KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbc2VsZiBfbG9jYXRpb25Gb3JH
ZXN0dXJlOmdlc3R1cmVSZWNvZ25pemVyXSksIFdlYktpdDo6d2ViRXZlbnRNb2RpZmllckZsYWdz
KGdlc3R1cmVSZWNvZ25pemVyLm1vZGlmaWVyRmxhZ3MgfCBVSUtleU1vZGlmaWVyQ29tbWFuZCks
IFtzZWxmIG5leHRUYXBJZGVudGlmaWVyXSk7CiB9CiAKIC0gKHZvaWQpX2xvbmdQcmVzc1JlY29n
bml6ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgpA
QCAtMzExNSw5ICszMTQ3LDE2IEBAIC0gKHZvaWQpX2xvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogICAgIEFTU0VSVChn
ZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIpOwogICAgIFtz
ZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107CiAgICAgW3NlbGYgX2NhbmNlbFRvdWNoRXZl
bnRHZXN0dXJlUmVjb2duaXplcl07CisKKyAgICBpZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9v
dFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNzKSB7CisgICAgICAgIFtfaG92ZXJQ
bGF0dGVyIGRpZExvbmdQcmVzc0F0UG9pbnQ6Z2VzdHVyZVJlY29nbml6ZXIuc3RhcnRQb2ludF07
CisgICAgICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLnN0
YXJ0UG9pbnQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBfcGFnZS0+ZGlkUmVjb2du
aXplTG9uZ1ByZXNzKCk7CiAKLSAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJl
UmVjb2duaXplci5zdGFydFBvaW50OworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IFtz
ZWxmIF9zdGFydFBvaW50Rm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXplcl07CiAKICAgICBpZiAo
W2dlc3R1cmVSZWNvZ25pemVyIHN0YXRlXSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdh
bikgewogICAgICAgICBTRUwgYWN0aW9uID0gW3NlbGYgX2FjdGlvbkZvckxvbmdQcmVzc107CkBA
IC0zMTQxLDcgKzMxODAsNiBAQCAtICh2b2lkKV9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3Vi
bGVUYXBHZXN0dXJlc0lmTmVjZXNzYXJ5CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBO
TzsKIH0KIAotCiAtICh2b2lkKV9zaW5nbGVUYXBJZGVudGlmaWVkOihVSVRhcEdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NFUlQoZ2VzdHVyZVJlY29nbml6
ZXIgPT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKQEAgLTMxNTQsNyArMzE5Miw3IEBA
IC0gKHZvaWQpX3NpbmdsZVRhcElkZW50aWZpZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogICAgIGlmIChzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9y
bWF0aW9uKQogICAgICAgICBSRUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMsICJTaW5nbGUgdGFwIGlk
ZW50aWZpZWQuIFJlcXVlc3QgZGV0YWlscyBvbiBwb3RlbnRpYWwgem9vbS4gKCVwLCBwYWdlUHJv
eHlJRD0lbGx1KSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKLSAg
ICBfcGFnZS0+cG90ZW50aWFsVGFwQXRQb3NpdGlvbihnZXN0dXJlUmVjb2duaXplci5sb2NhdGlv
biwgc2hvdWxkUmVxdWVzdE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbiwgW3NlbGYgbmV4dFRhcElk
ZW50aWZpZXJdKTsKKyAgICBfcGFnZS0+cG90ZW50aWFsVGFwQXRQb3NpdGlvbihbc2VsZiBfbG9j
YXRpb25Gb3JHZXN0dXJlOmdlc3R1cmVSZWNvZ25pemVyXSwgc2hvdWxkUmVxdWVzdE1hZ25pZmlj
YXRpb25JbmZvcm1hdGlvbiwgW3NlbGYgbmV4dFRhcElkZW50aWZpZXJdKTsKICAgICBfcG90ZW50
aWFsVGFwSW5Qcm9ncmVzcyA9IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVT
OwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSAhX2RvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyLmdldCgpLmVuYWJsZWQ7CkBAIC0zMjI4LDcgKzMyNjYsNyBAQCAtICh2b2lk
KV9zaW5nbGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJl
Y29nbml6ZXIKIAogICAgIEFTU0VSVChfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyk7CiAKLSAgICBf
bGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbjsKKyAg
ICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBbc2VsZiBfbG9jYXRpb25Gb3JHZXN0dXJlOmdl
c3R1cmVSZWNvZ25pemVyXTsKIAogICAgIFtzZWxmIF9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVE
b3VibGVUYXBHZXN0dXJlc0lmTmVjZXNzYXJ5XTsKIApAQCAtMzI1OCw5ICszMjk2LDEwIEBAIC0g
KHZvaWQpX2RvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplcgogICAgIFJFTEVBU0VfTE9HKFZpZXdHZXN0dXJlcywgIklkZW50aWZpZWQg
YSBkb3VibGUgdGFwICglcCwgcGFnZVByb3h5SUQ9JWxsdSkiLCBzZWxmLCBfcGFnZS0+aWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5n
XTsKLSAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5sb2Nh
dGlvbjsKIAotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5oYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uKTsKKyAgICBhdXRv
IGxvY2F0aW9uID0gW3NlbGYgX2xvY2F0aW9uRm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXplcl07
CisgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gbG9jYXRpb247CisgICAgX3NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUobG9j
YXRpb24pOwogfQogCiAtICh2b2lkKV9yZXNldElzRG91YmxlVGFwUGVuZGluZwpAQCAtMzI3MCwx
NiArMzMwOSwxNyBAQCAtICh2b2lkKV9yZXNldElzRG91YmxlVGFwUGVuZGluZwogCiAtICh2b2lk
KV9ub25CbG9ja2luZ0RvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIg
KilnZXN0dXJlUmVjb2duaXplcgogewotICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdl
c3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uOworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9
IFtzZWxmIF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdOwogICAgIF9pc0Rv
dWJsZVRhcFBlbmRpbmcgPSBZRVM7CiB9CiAKIC0gKHZvaWQpX3R3b0ZpbmdlckRvdWJsZVRhcFJl
Y29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewog
ICAgIFtzZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107Ci0gICAgX2xhc3RJbnRlcmFjdGlv
bkxvY2F0aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb247CiAKLSAgICBfc21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2VzdHVyZShnZXN0
dXJlUmVjb2duaXplci5sb2NhdGlvbik7CisgICAgYXV0byBsb2NhdGlvbiA9IFtzZWxmIF9sb2Nh
dGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdOworICAgIF9sYXN0SW50ZXJhY3Rpb25M
b2NhdGlvbiA9IGxvY2F0aW9uOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5o
YW5kbGVSZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKGxvY2F0aW9uKTsKIH0KIAogLSAodm9pZClf
YXR0ZW1wdFN5bnRoZXRpY0NsaWNrQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiBtb2RpZmll
ckZsYWdzOihVSUtleU1vZGlmaWVyRmxhZ3MpbW9kaWZpZXJGbGFncwpAQCAtNzgzMSw2ICs3ODcx
LDggQEAgLSAodm9pZClfdGFyZ2V0ZWRQcmV2aWV3Q29udGFpbmVyRGlkUmVtb3ZlTGFzdFN1YnZp
ZXc6KFdLVGFyZ2V0ZWRQcmV2aWV3Q29udGFpbmUKIAogLSAoQk9PTClfc2hvdWxkVXNlQ29udGV4
dE1lbnVzCiB7CisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0
dGVyRW5hYmxlZEZvckxvbmdQcmVzcykKKyAgICAgICAgcmV0dXJuIE5POwogI2lmIEhBVkUoTElO
S19QUkVWSUVXKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKICAgICByZXR1cm4gbGlua2VkT25PckFm
dGVyKFNES1ZlcnNpb246OkZpcnN0VGhhdEhhc1VJQ29udGV4dE1lbnVJbnRlcmFjdGlvbik7CiAj
ZW5kaWYKQEAgLTgxOTksNiArODI0MSw5IEBAIC0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPil3
ZWJWaWV3VUlEZWxlZ2F0ZQogCiAtICh2b2lkKXNldFVwRHJhZ0FuZERyb3BJbnRlcmFjdGlvbnMK
IHsKKyAgICBpZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFi
bGVkRm9yTG9uZ1ByZXNzKQorICAgICAgICByZXR1cm47CisKICAgICBfZHJhZ0ludGVyYWN0aW9u
ID0gYWRvcHROUyhbW1VJRHJhZ0ludGVyYWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNl
bGZdKTsKICAgICBfZHJvcEludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJRHJvcEludGVyYWN0aW9u
IGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNlbGZdKTsKICAgICBbX2RyYWdJbnRlcmFjdGlvbiBf
c2V0TGlmdERlbGF5OnNlbGYuZHJhZ0xpZnREZWxheV07CkBAIC05NjQyLDkgKzk2ODcsMTMgQEAg
LSAodm9pZCltb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooV0tNb3VzZUdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbmkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBXZWJLaXQ6
OldlYkV2ZW50OjpNb3VzZVVwICYmIHNlbGYuaGFzSGlkZGVuQ29udGVudEVkaXRhYmxlICYmIHNl
bGYuX2hhc0ZvY3VzZWRFbGVtZW50ICYmICFzZWxmLndpbmRvdy5rZXlXaW5kb3cpCiAgICAgICAg
IFtzZWxmLndpbmRvdyBtYWtlS2V5V2luZG93XTsKIAorICAgIGlmIChXS0hvdmVyUGxhdHRlckRv
bWFpbi5yb290U2V0dGluZ3MuZW5hYmxlZCkgeworICAgICAgICBbX2hvdmVyUGxhdHRlciBkaWRS
ZWNlaXZlTW91c2VFdmVudDoqZXZlbnRdOworICAgICAgICBfcGFnZS0+aGFuZGxlTW91c2VFdmVu
dChbX2hvdmVyUGxhdHRlciBhZGp1c3RlZEV2ZW50Rm9yRXZlbnQ6KmV2ZW50XSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBfcGFnZS0+aGFuZGxlTW91c2VFdmVudCgqZXZlbnQpOwot
ICAgIGlmIChXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlckVuYWJsZWRG
b3JNb3VzZSkKLSAgICAgICAgW19ob3ZlclBsYXR0ZXIgc2V0SG92ZXJQb2ludDpldmVudC0+cG9z
aXRpb24oKV07CiB9CiAKIC0gKHZvaWQpX2NvbmZpZ3VyZU1vdXNlR2VzdHVyZVJlY29nbml6ZXIK
QEAgLTk2NjcsNiArOTcxNiwxMyBAQCAtICh2b2lkKXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JIb3Zl
clBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIHdpdGhSZQogICAgIFtzZWxm
IGRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOmNvbXBsZXRpb25IYW5kbGVyIGZvclJl
cXVlc3Q6cmVxdWVzdF07CiB9CiAKKy0gKHZvaWQpaW50ZXJhY3RhYmxlUmVnaW9uc0ZvckhvdmVy
UGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilwbGF0dGVyIGluUmVjdDooV2ViQ29yZTo6RmxvYXRS
ZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxXZWJDb3JlOjpGbG9h
dFJlY3Q+KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pbnRlcmFjdGFibGVSZWdp
b25zSW5SZWN0KHJlY3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZWN0cyk7CisgICAgfSk7Cit9CisKICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5V
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaAppbmRleCBm
ZDc5MmZkNjQyNGExNDc4MTRmNTc5YjQ2NzVjMTdiODc1NmMyYTFlLi5iMzgzMmQ2MDc2ZDIyOTgy
OWI3ZGE4Nzc1ZTBiNzliYmE0NzJmYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tIb3ZlclBsYXR0ZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjaWYgSEFWRShVSUtJVF9X
SVRIX01PVVNFX1NVUFBPUlQpCiAKKyNpbXBvcnQgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKwog
QGNsYXNzIFdLSG92ZXJQbGF0dGVyOwogCiBAcHJvdG9jb2wgV0tIb3ZlclBsYXR0ZXJEZWxlZ2F0
ZQpAQCAtMzIsMTIgKzM0LDIwIEBACiBAcmVxdWlyZWQKIC0gKHZvaWQpcG9zaXRpb25JbmZvcm1h
dGlvbkZvckhvdmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgd2l0aFJl
cXVlc3Q6KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24pKWNvbXBsZXRpb25IYW5kbGVyOwogCistICh2b2lkKWludGVyYWN0YWJsZVJlZ2lv
bnNGb3JIb3ZlclBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIGluUmVjdDoo
V2ViQ29yZTo6RmxvYXRSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3Rv
cjxXZWJDb3JlOjpGbG9hdFJlY3Q+KSljb21wbGV0aW9uSGFuZGxlcjsKKwogQGVuZAogCiBAaW50
ZXJmYWNlIFdLSG92ZXJQbGF0dGVyIDogTlNPYmplY3QKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoVmlldzooVUlWaWV3ICopdmlldyBkZWxlZ2F0ZTooaWQgPFdLSG92ZXJQbGF0dGVyRGVsZWdh
dGU+KWRlbGVnYXRlOwogCistICh2b2lkKWRpZFJlY2VpdmVNb3VzZUV2ZW50Oihjb25zdCBXZWJL
aXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQmKWV2ZW50OworLSAodm9pZClkaWRMb25nUHJlc3NBdFBv
aW50OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50OworCistIChXZWJDb3JlOjpGbG9hdFBvaW50
KWFkanVzdGVkUG9pbnRGb3JQb2ludDooV2ViQ29yZTo6RmxvYXRQb2ludClwb2ludDsKKy0gKFdl
YktpdDo6TmF0aXZlV2ViTW91c2VFdmVudClhZGp1c3RlZEV2ZW50Rm9yRXZlbnQ6KGNvbnN0IFdl
YktpdDo6TmF0aXZlV2ViTW91c2VFdmVudCYpZXZlbnQ7CisKIC0gKHZvaWQpZGlzbWlzc1BsYXR0
ZXJXaXRoQW5pbWF0aW9uOihCT09MKXdpdGhBbmltYXRpb247CiAKIC0gKHZvaWQpaW52YWxpZGF0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbQppbmRl
eCBmYjEzZTA0YTA5OWU2M2U3ZjlkNTdjYThiMmY5NmQ2YjQ2OTk4YmRmLi43MmQxN2ZjN2I1NmQ0
NDMwZDU5ZjFiZWNlNTBmN2Q3YzliMWRkMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tCkBAIC02MywzNyArNjMsMjUgQEAgc3RhdGljIHZvaWQg
YWRkQW5pbWF0aW9uKENBTGF5ZXIgKmxheWVyLCBOU1N0cmluZyAqa2V5LCBpZCBmcm9tVmFsdWUs
IGlkIHRvVmFsdWUKICAgICBbbGF5ZXIgYWRkQW5pbWF0aW9uOmFuaW1hdGlvbi5nZXQoKSBmb3JL
ZXk6a2V5XTsKIH07CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2Vi
S2l0QWRkaXRpb25zL1dLSG92ZXJQbGF0dGVyQWRkaXRpb25zLm1tPgotI2Vsc2UKLXN0YXRpYyBD
R0Zsb2F0IHNldEFkZGl0aW9uYWxQbGF0dGVyTGF5ZXJQcm9wZXJ0aWVzKENBTGF5ZXIgKiwgQ0FM
YXllciAqKSB7IHJldHVybiAwOyB9Ci1zdGF0aWMgdm9pZCBhZGRBZGRpdGlvbmFsSW5jb21pbmdB
bmltYXRpb25zKENBTGF5ZXIgKiwgQ0dGbG9hdCkgeyB9Ci1zdGF0aWMgdm9pZCBhZGRBZGRpdGlv
bmFsRGlzbWlzc2FsQW5pbWF0aW9ucyhDQUxheWVyICopIHsgfQotI2VuZGlmCi0KIEBpbXBsZW1l
bnRhdGlvbiBXS0hvdmVyUGxhdHRlciB7CiAgICAgX193ZWFrIFVJVmlldyAqX3ZpZXc7CiAgICAg
X193ZWFrIGlkIDxXS0hvdmVyUGxhdHRlckRlbGVnYXRlPiBfZGVsZWdhdGU7CiAgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBfaG92ZXJQb2ludDsKIAotICAgIEJPT0wgX2hhc091dHN0YW5kaW5nUG9z
aXRpb25JbmZvcm1hdGlvblJlcXVlc3Q7Ci0gICAgQk9PTCBfaGFzRGVmZXJyZWRQb3NpdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdDsKLQogICAgIEJPT0wgX2lzU2l0dGluZ0Rvd247CiAKLSAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgX2xhc3RIb3ZlckJvdW5kczsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
X3BsYXR0ZXJMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FQb3J0YWxMYXllcj4gX3NuYXBzaG90TGF5
ZXI7CiAKLSAgICBSZXRhaW5QdHI8Q0FTaGFwZUxheWVyPiBfbGFzdE1hc2tMYXllcjsKLSAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gX2xhc3RTaGFkb3dMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gX2xhc3RQbGF0dGVyTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IF9sYXN0QmFja2dy
b3VuZExheWVyOwotICAgIFJldGFpblB0cjxDQVBvcnRhbExheWVyPiBfbGFzdFNuYXBzaG90TGF5
ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IF9kZWJ1Z0luZGljYXRvckxheWVyOworICAgIFJl
dGFpblB0cjxDQVRleHRMYXllcj4gX2xpbmtDb3VudExheWVyOworICAgIFJldGFpblB0cjxDQVNo
YXBlTGF5ZXI+IF9saW5rSGlnaGxpZ2h0TGF5ZXI7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFZpZXc6KFVJVmlldyAqKXZpZXcgZGVsZWdhdGU6KGlkIDxXS0hvdmVyUGxhdHRlckRlbGVn
YXRlPilkZWxlZ2F0ZQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IFdLSG92ZXJQbGF0dGVyRG9t
YWluLnJvb3RTZXR0aW5nczsKLSAgICBpZiAoIXBhcmFtZXRlcnMucGxhdHRlckVuYWJsZWRGb3JN
b3VzZSAmJiAhcGFyYW1ldGVycy5wbGF0dGVyRW5hYmxlZEZvckhvdmVyKSB7CisgICAgaWYgKCFw
YXJhbWV0ZXJzLnBsYXR0ZXJFbmFibGVkRm9yTW91c2UgJiYgIXBhcmFtZXRlcnMucGxhdHRlckVu
YWJsZWRGb3JMb25nUHJlc3MpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgfQpAQCAtMTIwLDE3NiArMTA4LDE0MCBAQCAtIChXZWJDb3JlOjpGbG9h
dFBvaW50KWhvdmVyUG9pbnQKICAgICByZXR1cm4gX2hvdmVyUG9pbnQ7CiB9CiAKLS0gKHZvaWQp
c2V0SG92ZXJQb2ludDooV2ViQ29yZTo6RmxvYXRQb2ludClwb2ludAorLSAodm9pZClkaWRSZWNl
aXZlTW91c2VFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50JilldmVudAog
ewotICAgIF9ob3ZlclBvaW50ID0gcG9pbnQ7CisgICAgYXV0byBwb2ludCA9IGV2ZW50LnBvc2l0
aW9uKCk7CiAKLSAgICBpZiAoX2hhc091dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVl
c3QpIHsKLSAgICAgICAgX2hhc0RlZmVycmVkUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgPSBZ
RVM7CisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyRW5h
YmxlZEZvck1vdXNlKSB7CisgICAgICAgIF9ob3ZlclBvaW50ID0gcG9pbnQ7CisgICAgICAgIFtz
ZWxmIHVwZGF0ZV07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBbc2VsZiByZXF1ZXN0
UG9zaXRpb25JbmZvcm1hdGlvbkZvckN1cnJlbnRIb3ZlclBvaW50XTsKKyAgICBhdXRvIGJvdW5k
aW5nUmVjdCA9IHNlbGYucGxhdHRlckJvdW5kaW5nUmVjdDsKKyAgICBpZiAoIWJvdW5kaW5nUmVj
dC5jb250YWlucyhwb2ludCkgJiYgcG9pbnQgIT0gV2ViQ29yZTo6RmxvYXRQb2ludCB7IC0xICwg
LTEgfSkKKyAgICAgICAgW3NlbGYgZGlzbWlzc1BsYXR0ZXJXaXRoQW5pbWF0aW9uOllFU107CiB9
CiAKLS0gKHZvaWQpcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb25Gb3JDdXJyZW50SG92ZXJQb2lu
dAorLSAodm9pZClkaWRMb25nUHJlc3NBdFBvaW50OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50
CiB7Ci0gICAgX2hhc0RlZmVycmVkUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgPSBOTzsKLSAg
ICBfaGFzT3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9IFlFUzsKLSAgICBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHBvc2l0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0IHsgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9ob3ZlclBvaW50KSB9OwotICAgIC8v
IEZJWE1FOiBUaGlzIFRleHRJbmRpY2F0b3IgZG9lc24ndCBuZWVkIGEgc25hcHNob3QgKGFuZCBh
dm9pZGluZyBpdCB3b3VsZCBiZSBhIHNpemFibGUgcGVyZm9ybWFuY2Ugd2luKS4KLSAgICBwb3Np
dGlvbkluZm9ybWF0aW9uUmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvciA9IFlFUzsKLSAgICBb
X2RlbGVnYXRlIHBvc2l0aW9uSW5mb3JtYXRpb25Gb3JIb3ZlclBsYXR0ZXI6c2VsZiB3aXRoUmVx
dWVzdDpwb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpbd2Vha1Nl
bGYgPSBXZWFrT2JqQ1B0cjxXS0hvdmVyUGxhdHRlcj4oc2VsZildIChXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKSB7Ci0gICAgICAgIFt3ZWFrU2Vs
ZiBkaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbjppbmZvcm1hdGlvbl07Ci0gICAgfV07Cisg
ICAgaWYgKCFXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlckVuYWJsZWRG
b3JMb25nUHJlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIF9ob3ZlclBvaW50ID0gcG9pbnQ7
CisgICAgW3NlbGYgdXBkYXRlXTsKIH0KIAotLSAodm9pZClkaWRSZWNlaXZlUG9zaXRpb25JbmZv
cm1hdGlvbjooY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
aW5mb3JtYXRpb24KKy0gKFdlYkNvcmU6OkZsb2F0UmVjdClwbGF0dGVyQm91bmRpbmdSZWN0CiB7
Ci0gICAgX2hhc091dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgPSBOTzsKLSAg
ICBpZiAoX2hhc0RlZmVycmVkUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QpCi0gICAgICAgIFtz
ZWxmIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uRm9yQ3VycmVudEhvdmVyUG9pbnRdOwotCi0g
ICAgYXV0byBwcmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QgPSBpbmZvcm1hdGlvbi5saW5rSW5kaWNh
dG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7Ci0gICAgaWYgKHByZUlu
ZmxhdGlvbkJvdW5kaW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHByZUluZmxhdGlvbkJvdW5k
aW5nUmVjdCA9IGluZm9ybWF0aW9uLmJvdW5kczsKLQotICAgIGlmICghaW5mb3JtYXRpb24uaXNM
aW5rIHx8IHByZUluZmxhdGlvbkJvdW5kaW5nUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgX2xh
c3RIb3ZlckJvdW5kcyA9IHsgfTsKLSAgICAgICAgW3NlbGYgZGlzbWlzc1BsYXR0ZXJXaXRoQW5p
bWF0aW9uOllFU107Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgYXV0byByYWRpdXMgPSBX
S0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlclJhZGl1czsKKyAgICByZXR1
cm4geyBfaG92ZXJQb2ludCAtIFdlYkNvcmU6OkZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cyksIFdl
YkNvcmU6OkZsb2F0U2l6ZShyYWRpdXMgKiAyLCByYWRpdXMgKiAyKSB9OworfQogCi0gICAgaWYg
KF9sYXN0SG92ZXJCb3VuZHMgPT0gcHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0ICYmICFfaXNTaXR0
aW5nRG93bikKLSAgICAgICAgcmV0dXJuOwotICAgIF9sYXN0SG92ZXJCb3VuZHMgPSBwcmVJbmZs
YXRpb25Cb3VuZGluZ1JlY3Q7CistIChXZWJDb3JlOjpGbG9hdFJlY3QpbGlua1NlYXJjaFJlY3QK
K3sKKyAgICBhdXRvIHJhZGl1cyA9IFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5s
aW5rU2VhcmNoUmFkaXVzOworICAgIHJldHVybiB7IF9ob3ZlclBvaW50IC0gV2ViQ29yZTo6Rmxv
YXRTaXplKHJhZGl1cywgcmFkaXVzKSwgV2ViQ29yZTo6RmxvYXRTaXplKHJhZGl1cyAqIDIsIHJh
ZGl1cyAqIDIpIH07Cit9CiAKKy0gKHZvaWQpdXBkYXRlCit7CiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzOwotICAgIGF1dG8gYW5pbWF0ZUJl
dHdlZW5QbGF0dGVycyA9IHBhcmFtZXRlcnMuYW5pbWF0ZUJldHdlZW5QbGF0dGVyczsKLSAgICBp
ZiAoIWFuaW1hdGVCZXR3ZWVuUGxhdHRlcnMpCi0gICAgICAgIFtzZWxmIGRpc21pc3NQbGF0dGVy
V2l0aEFuaW1hdGlvbjpZRVNdOwotCi0gICAgX2lzU2l0dGluZ0Rvd24gPSBmYWxzZTsKIAotICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0UmVjdD4gaW5mbGF0ZWRJbmRpY2F0ZWRSZWN0czsKLSAgICBhdXRvIGluZGljYXRlZFJlY3Rz
ID0gaW5mb3JtYXRpb24ubGlua0luZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3Jk
aW5hdGVzOwotICAgIGF1dG8gcGxhdHRlclBhZGRpbmcgPSBwYXJhbWV0ZXJzLnBsYXR0ZXJQYWRk
aW5nOwotICAgIGlmIChpbmRpY2F0ZWRSZWN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYm91bmRp
bmdSZWN0ID0gcHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0OwotICAgICAgICBib3VuZGluZ1JlY3Qu
aW5mbGF0ZShwbGF0dGVyUGFkZGluZyk7Ci0gICAgICAgIGluZmxhdGVkSW5kaWNhdGVkUmVjdHMu
YXBwZW5kKHByZUluZmxhdGlvbkJvdW5kaW5nUmVjdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Zm9yIChhdXRvIHJlY3QgOiBpbmRpY2F0ZWRSZWN0cykgewotICAgICAgICAgICAgcmVjdC5pbmZs
YXRlKHBsYXR0ZXJQYWRkaW5nKTsKLSAgICAgICAgICAgIGluZmxhdGVkSW5kaWNhdGVkUmVjdHMu
YXBwZW5kKHJlY3QpOwotICAgICAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlY3QpOwotICAg
ICAgICB9Ci0gICAgICAgIGJvdW5kaW5nUmVjdC5tb3ZlQnkocHJlSW5mbGF0aW9uQm91bmRpbmdS
ZWN0LmxvY2F0aW9uKCkpOwotICAgIH0KKyAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdPdmVy
bGF5KQorICAgICAgICBbc2VsZiB1cGRhdGVEZWJ1Z0luZGljYXRvcl07CiAKLSAgICBSZXRhaW5Q
dHI8Q0dQYXRoUmVmPiBpbmZsYXRlZFBhdGggPSBXZWJDb3JlOjpQYXRoVXRpbGl0aWVzOjpwYXRo
V2l0aFNocmlua1dyYXBwZWRSZWN0cyhpbmZsYXRlZEluZGljYXRlZFJlY3RzLCBwYXJhbWV0ZXJz
LnBsYXR0ZXJDb3JuZXJSYWRpdXMpLnBsYXRmb3JtUGF0aCgpOwotICAgIGF1dG8gcGxhdHRlcklu
ZmxhdGlvblNpemUgPSBwYXJhbWV0ZXJzLnBsYXR0ZXJJbmZsYXRpb25TaXplOwotICAgIENHRmxv
YXQgcGxhdHRlclNjYWxlID0gQ0dGbG9hdE1pbigoYm91bmRpbmdSZWN0LndpZHRoKCkgKyBwbGF0
dGVySW5mbGF0aW9uU2l6ZSkgLyBib3VuZGluZ1JlY3Qud2lkdGgoKSwgKGJvdW5kaW5nUmVjdC5o
ZWlnaHQoKSArIHBsYXR0ZXJJbmZsYXRpb25TaXplKSAvIGJvdW5kaW5nUmVjdC5oZWlnaHQoKSk7
Ci0KLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgVUlLaXQncyBpbi1wcm9jZXNzIHJldGFy
Z2V0YWJsZSBhbmltYXRpb25zLCBiZWNhdXNlIHJlYWRpbmcgYW5pbWF0aW9uIHN0YXRlIGZyb20g
dGhlIHByZXNlbnRhdGlvbiBsYXllciBpcyByYWN5LgotICAgIGJvb2wgaGFkT2xkTGF5ZXJzID0g
ISFfbGFzdFNoYWRvd0xheWVyOwotICAgIENHUmVjdCBvbGRTaGFkb3dCb3VuZHMgPSBbX2xhc3RT
aGFkb3dMYXllciBwcmVzZW50YXRpb25MYXllcl0uYm91bmRzOwotICAgIENHUG9pbnQgb2xkU2hh
ZG93UG9zaXRpb24gPSBbX2xhc3RTaGFkb3dMYXllciBwcmVzZW50YXRpb25MYXllcl0ucG9zaXRp
b247Ci0gICAgQ0dGbG9hdCBvbGRTaGFkb3dPcGFjaXR5ID0gW19sYXN0U2hhZG93TGF5ZXIgcHJl
c2VudGF0aW9uTGF5ZXJdLnNoYWRvd09wYWNpdHk7Ci0gICAgQ0dGbG9hdCBvbGRTaGFkb3dSYWRp
dXMgPSBbX2xhc3RTaGFkb3dMYXllciBwcmVzZW50YXRpb25MYXllcl0uc2hhZG93UmFkaXVzOwot
ICAgIENBVHJhbnNmb3JtM0Qgb2xkU2hhZG93U3VibGF5ZXJUcmFuc2Zvcm0gPSBfbGFzdFNoYWRv
d0xheWVyID8gW19sYXN0U2hhZG93TGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLnN1YmxheWVyVHJh
bnNmb3JtIDogQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+
IG9sZFNoYWRvd1BhdGggPSBbX2xhc3RTaGFkb3dMYXllciBwcmVzZW50YXRpb25MYXllcl0uc2hh
ZG93UGF0aDsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gc2hhZG93ID0gX2xhc3RTaGFkb3dMYXll
ciA/OiBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gc2hhZG93RnJh
bWUgPSBDR1JlY3RPZmZzZXQoYm91bmRpbmdSZWN0LCBwbGF0dGVyUGFkZGluZywgcGxhdHRlclBh
ZGRpbmcpOwotICAgIFtzaGFkb3cgc2V0RnJhbWU6c2hhZG93RnJhbWVdOwotICAgIFtzaGFkb3cg
c2V0U2hhZG93Q29sb3I6VUlDb2xvci5ibGFja0NvbG9yLkNHQ29sb3JdOwotICAgIFtzaGFkb3cg
c2V0U2hhZG93UmFkaXVzOnBhcmFtZXRlcnMucGxhdHRlclNoYWRvd1JhZGl1c107Ci0gICAgW3No
YWRvdyBzZXRTaGFkb3dPZmZzZXQ6Q0dTaXplWmVyb107Ci0gICAgW3NoYWRvdyBzZXRTaGFkb3dP
cGFjaXR5OnBhcmFtZXRlcnMucGxhdHRlclNoYWRvd09wYWNpdHldOwotICAgIFtzaGFkb3cgc2V0
U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShwbGF0dGVyU2NhbGUsIHBs
YXR0ZXJTY2FsZSwgMSldOwotICAgIFtzaGFkb3cgc2V0U2hhZG93UGF0aDppbmZsYXRlZFBhdGgu
Z2V0KCldOwotICAgIFtzaGFkb3cgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKLSAgICBbW1tfdmll
dyBzdXBlcnZpZXddIGxheWVyXSBhZGRTdWJsYXllcjpzaGFkb3cuZ2V0KCldOwotCi0gICAgQ0dS
ZWN0IG9sZFBsYXR0ZXJCb3VuZHMgPSBbX2xhc3RQbGF0dGVyTGF5ZXIgcHJlc2VudGF0aW9uTGF5
ZXJdLmJvdW5kczsKLSAgICBDR1BvaW50IG9sZFBsYXR0ZXJQb3NpdGlvbiA9IFtfbGFzdFBsYXR0
ZXJMYXllciBwcmVzZW50YXRpb25MYXllcl0ucG9zaXRpb247Ci0gICAgUmV0YWluUHRyPENBTGF5
ZXI+IHBsYXR0ZXIgPSBfbGFzdFBsYXR0ZXJMYXllciA/OiBhZG9wdE5TKFtbQ0FMYXllciBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gYm91bmRpbmdSZWN0ID0gc2VsZi5wbGF0dGVyQm91bmRpbmdS
ZWN0OworICAgIFJldGFpblB0cjxDQUxheWVyPiBwbGF0dGVyID0gX3BsYXR0ZXJMYXllciA/OiBh
ZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwogICAgIFtwbGF0dGVyIHNldEJvdW5kczpD
R1JlY3RNYWtlKDAsIDAsIGJvdW5kaW5nUmVjdC53aWR0aCgpLCBib3VuZGluZ1JlY3QuaGVpZ2h0
KCkpXTsKLSAgICBbcGxhdHRlciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShzaGFkb3dGcmFtZS5z
aXplLndpZHRoIC8gMiAtIHBsYXR0ZXJQYWRkaW5nLCBzaGFkb3dGcmFtZS5zaXplLmhlaWdodCAv
IDIgLSBwbGF0dGVyUGFkZGluZyldOwotICAgIGF1dG8gb2xkUGxhdHRlckFkZGl0aW9uYWxBbmlt
YXRpb25WYWx1ZSA9IHNldEFkZGl0aW9uYWxQbGF0dGVyTGF5ZXJQcm9wZXJ0aWVzKHBsYXR0ZXIu
Z2V0KCksIFtfbGFzdFBsYXR0ZXJMYXllciBwcmVzZW50YXRpb25MYXllcl0pOworICAgIFtwbGF0
dGVyIHNldFBvc2l0aW9uOmJvdW5kaW5nUmVjdC5jZW50ZXIoKV07CisgICAgW3BsYXR0ZXIgc2V0
U2hhZG93Q29sb3I6VUlDb2xvci5ibGFja0NvbG9yLkNHQ29sb3JdOworICAgIFtwbGF0dGVyIHNl
dFNoYWRvd09mZnNldDpDR1NpemVNYWtlKDAsIDEwKV07CisgICAgW3BsYXR0ZXIgc2V0U2hhZG93
T3BhY2l0eTowLjI1XTsKKyAgICBbcGxhdHRlciBzZXRTaGFkb3dSYWRpdXM6MTBdOwogICAgIFtw
bGF0dGVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107Ci0gICAgW3NoYWRvdyBhZGRTdWJsYXllcjpw
bGF0dGVyLmdldCgpXTsKLQotICAgIENHUmVjdCBvbGRNYXNrQm91bmRzID0gW19sYXN0TWFza0xh
eWVyIHByZXNlbnRhdGlvbkxheWVyXS5ib3VuZHM7Ci0gICAgQ0dQb2ludCBvbGRNYXNrUG9zaXRp
b24gPSBbX2xhc3RNYXNrTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLnBvc2l0aW9uOwotICAgIFJl
dGFpblB0cjxDR1BhdGhSZWY+IG9sZE1hc2tQYXRoID0gW19sYXN0TWFza0xheWVyIHByZXNlbnRh
dGlvbkxheWVyXS5wYXRoOwotICAgIFJldGFpblB0cjxDQVNoYXBlTGF5ZXI+IG1hc2sgPSBfbGFz
dE1hc2tMYXllciA/OiBhZG9wdE5TKFtbQ0FTaGFwZUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
W21hc2sgc2V0RmlsbENvbG9yOltVSUNvbG9yIGJsYWNrQ29sb3JdLkNHQ29sb3JdOwotICAgIFtt
YXNrIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIGJvdW5kaW5nUmVjdC53aWR0aCgpLCBib3Vu
ZGluZ1JlY3QuaGVpZ2h0KCkpXTsKLSAgICBbbWFzayBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShi
b3VuZGluZ1JlY3Qud2lkdGgoKSAvIDIgKyBwbGF0dGVyUGFkZGluZywgYm91bmRpbmdSZWN0Lmhl
aWdodCgpIC8gMiArIHBsYXR0ZXJQYWRkaW5nKV07Ci0gICAgW21hc2sgc2V0UGF0aDppbmZsYXRl
ZFBhdGguZ2V0KCldOwotICAgIFttYXNrIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107Ci0KLSAgICBD
R1JlY3Qgb2xkQmFja2dyb3VuZEJvdW5kcyA9IFtfbGFzdEJhY2tncm91bmRMYXllciBwcmVzZW50
YXRpb25MYXllcl0uYm91bmRzOwotICAgIENHUG9pbnQgb2xkQmFja2dyb3VuZFBvc2l0aW9uID0g
W19sYXN0QmFja2dyb3VuZExheWVyIHByZXNlbnRhdGlvbkxheWVyXS5wb3NpdGlvbjsKLSAgICBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4gb2xkQmFja2dyb3VuZENvbG9yID0gW19sYXN0QmFja2dyb3Vu
ZExheWVyIHByZXNlbnRhdGlvbkxheWVyXS5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgUmV0YWluUHRy
PENBTGF5ZXI+IGJhY2tncm91bmQgPSBfbGFzdEJhY2tncm91bmRMYXllciA/OiBhZG9wdE5TKFtb
Q0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgIFtiYWNrZ3JvdW5kIHNldEZyYW1lOltwbGF0dGVy
IGJvdW5kc11dOwotICAgIFtiYWNrZ3JvdW5kIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0Nv
bG9yKGluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5n
ZXQoKV07Ci0gICAgW2JhY2tncm91bmQgc2V0TWFzazptYXNrLmdldCgpXTsKLSAgICBbYmFja2dy
b3VuZCB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAgIFtwbGF0dGVyIGFkZFN1YmxheWVyOmJh
Y2tncm91bmQuZ2V0KCldOwotCi0gICAgQ0dSZWN0IG9sZFNuYXBzaG90Qm91bmRzID0gW19sYXN0
U25hcHNob3RMYXllciBwcmVzZW50YXRpb25MYXllcl0uYm91bmRzOwotICAgIENHUG9pbnQgb2xk
U25hcHNob3RQb3NpdGlvbiA9IFtfbGFzdFNuYXBzaG90TGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJd
LnBvc2l0aW9uOwotICAgIENBVHJhbnNmb3JtM0Qgb2xkU25hcHNob3RTdWJsYXllclRyYW5zZm9y
bSA9IF9sYXN0U25hcHNob3RMYXllciA/IFtfbGFzdFNuYXBzaG90TGF5ZXIgcHJlc2VudGF0aW9u
TGF5ZXJdLnN1YmxheWVyVHJhbnNmb3JtIDogQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAgIFJl
dGFpblB0cjxDQVBvcnRhbExheWVyPiBzbmFwc2hvdCA9IF9sYXN0U25hcHNob3RMYXllciA/OiBh
ZG9wdE5TKFtbQ0FQb3J0YWxMYXllciBhbGxvY10gaW5pdF0pOworICAgIFtbW192aWV3IHN1cGVy
dmlld10gbGF5ZXJdIGFkZFN1YmxheWVyOnBsYXR0ZXIuZ2V0KCldOworCisgICAgUmV0YWluUHRy
PENBUG9ydGFsTGF5ZXI+IHNuYXBzaG90ID0gX3NuYXBzaG90TGF5ZXIgPzogYWRvcHROUyhbW0NB
UG9ydGFsTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbc25hcHNob3Qgc2V0U291cmNlTGF5ZXI6
W192aWV3IGxheWVyXV07CiAgICAgW3NuYXBzaG90IHNldE1hdGNoZXNQb3NpdGlvbjpZRVNdOwog
ICAgIFtzbmFwc2hvdCBzZXRNYXRjaGVzVHJhbnNmb3JtOllFU107CisgICAgW3NuYXBzaG90IHNl
dE1hc2tzVG9Cb3VuZHM6WUVTXTsKKyAgICBbc25hcHNob3Qgc2V0Q29ybmVyUmFkaXVzOnBhcmFt
ZXRlcnMucGxhdHRlclJhZGl1c107CisgICAgW3NuYXBzaG90IHNldEJhY2tncm91bmRDb2xvcjpV
SUNvbG9yLmJsYWNrQ29sb3IuQ0dDb2xvcl07CisgICAgW3NuYXBzaG90IHNldEJvcmRlckNvbG9y
OltVSUNvbG9yIGNvbG9yV2l0aFdoaXRlOjAgYWxwaGE6MC4yXS5DR0NvbG9yXTsKKyAgICBbc25h
cHNob3Qgc2V0Qm9yZGVyV2lkdGg6MV07CiAgICAgW3NuYXBzaG90IHNldEFuY2hvclBvaW50OkNH
UG9pbnRNYWtlKDAuNSwgMC41KV07Ci0gICAgW3NuYXBzaG90IHNldFN1YmxheWVyVHJhbnNmb3Jt
OkNBVHJhbnNmb3JtM0RNYWtlU2NhbGUocGxhdHRlclNjYWxlLCBwbGF0dGVyU2NhbGUsIDEpXTsK
KyAgICBbc25hcHNob3Qgc2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2Fs
ZShwYXJhbWV0ZXJzLnBsYXR0ZXJTY2FsZSwgcGFyYW1ldGVycy5wbGF0dGVyU2NhbGUsIDEpXTsK
ICAgICBbc25hcHNob3Qgc2V0TWFza3NUb0JvdW5kczpZRVNdOwogICAgIFtzbmFwc2hvdCBzZXRG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIGJvdW5kaW5nUmVjdC53aWR0aCgpLCBib3VuZGluZ1JlY3Qu
aGVpZ2h0KCkpXTsKICAgICBbc25hcHNob3Qgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKLSAgICBb
YmFja2dyb3VuZCBhZGRTdWJsYXllcjpzbmFwc2hvdC5nZXQoKV07Ci0KLSAgICBCT09MIG5lZWRz
QW5pbWF0ZUluID0gIV9sYXN0UGxhdHRlckxheWVyIHx8IF9pc1NpdHRpbmdEb3duOwotICAgIGlm
IChuZWVkc0FuaW1hdGVJbikgewotICAgICAgICBhZGRBbmltYXRpb24oc2hhZG93LmdldCgpLCBA
InNoYWRvd09wYWNpdHkiLCBAKG9sZFNoYWRvd09wYWNpdHkpLCBAKFtzaGFkb3cgc2hhZG93T3Bh
Y2l0eV0pKTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKHNoYWRvdy5nZXQoKSwgQCJzaGFkb3dSYWRp
dXMiLCBAKG9sZFNoYWRvd1JhZGl1cyksIEAoW3NoYWRvdyBzaGFkb3dSYWRpdXNdKSk7Ci0gICAg
ICAgIGFkZEFuaW1hdGlvbihzaGFkb3cuZ2V0KCksIEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOm9sZFNoYWRvd1N1YmxheWVyVHJhbnNmb3JtXSwg
W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpbc2hhZG93IHN1YmxheWVyVHJhbnNmb3Jt
XV0pOwotCi0gICAgICAgIGFkZEFuaW1hdGlvbihzbmFwc2hvdC5nZXQoKSwgQCJzdWJsYXllclRy
YW5zZm9ybSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6b2xkU25hcHNob3RTdWJs
YXllclRyYW5zZm9ybV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6W3NuYXBzaG90
IHN1YmxheWVyVHJhbnNmb3JtXV0pOwotCi0gICAgICAgIGFkZEFkZGl0aW9uYWxJbmNvbWluZ0Fu
aW1hdGlvbnMocGxhdHRlci5nZXQoKSwgb2xkUGxhdHRlckFkZGl0aW9uYWxBbmltYXRpb25WYWx1
ZSk7CisgICAgW3BsYXR0ZXIgYWRkU3VibGF5ZXI6c25hcHNob3QuZ2V0KCldOworCisgICAgaWYg
KF9pc1NpdHRpbmdEb3duKSB7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLmFuaW1hdGVTY2FsZSkg
eworICAgICAgICAgICAgYXV0byBpbnZlcnNlU2NhbGUgPSAxLmYgLyBwYXJhbWV0ZXJzLnBsYXR0
ZXJTY2FsZTsKKyAgICAgICAgICAgIGFkZEFuaW1hdGlvbihwbGF0dGVyLmdldCgpLCBAInRyYW5z
Zm9ybSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRE1ha2VT
Y2FsZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2FsZSwgMSldLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
QVRyYW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RJZGVudGl0eV0pOworICAgICAgICAgICAgYWRkQW5p
bWF0aW9uKHNuYXBzaG90LmdldCgpLCBAInN1YmxheWVyVHJhbnNmb3JtIiwgW05TVmFsdWUgdmFs
dWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRpdHldLCBbTlNWYWx1ZSB2YWx1
ZVdpdGhDQVRyYW5zZm9ybTNEOltzbmFwc2hvdCBzdWJsYXllclRyYW5zZm9ybV1dKTsKKyAgICAg
ICAgICAgIGFkZEFuaW1hdGlvbihwbGF0dGVyLmdldCgpLCBAInNoYWRvd09wYWNpdHkiLCBAMCwg
QChbcGxhdHRlciBzaGFkb3dPcGFjaXR5XSkpOworICAgICAgICAgICAgYWRkQW5pbWF0aW9uKHNu
YXBzaG90LmdldCgpLCBAImJvcmRlckNvbG9yIiwgKGlkKVVJQ29sb3IuY2xlYXJDb2xvci5DR0Nv
bG9yLCAoaWQpW3NuYXBzaG90IGJvcmRlckNvbG9yXSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgYWRkQW5pbWF0aW9uKHBsYXR0ZXIuZ2V0KCksIEAib3BhY2l0eSIsIEAwLCBAMSk7CiAg
ICAgfQogCi0gICAgaWYgKGFuaW1hdGVCZXR3ZWVuUGxhdHRlcnMgJiYgaGFkT2xkTGF5ZXJzKSB7
Ci0gICAgICAgIGFkZEFuaW1hdGlvbihtYXNrLmdldCgpLCBAImJvdW5kcyIsIFtOU1ZhbHVlIHZh
bHVlV2l0aENHUmVjdDpvbGRNYXNrQm91bmRzXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0Oltt
YXNrIGJvdW5kc11dKTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKG1hc2suZ2V0KCksIEAicG9zaXRp
b24iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50Om9sZE1hc2tQb3NpdGlvbl0sIFtOU1ZhbHVl
IHZhbHVlV2l0aENHUG9pbnQ6W21hc2sgcG9zaXRpb25dXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlv
bihtYXNrLmdldCgpLCBAInBhdGgiLCAoaWQpb2xkTWFza1BhdGguZ2V0KCksIChpZClbbWFzayBw
YXRoXSk7Ci0KLSAgICAgICAgYWRkQW5pbWF0aW9uKHNoYWRvdy5nZXQoKSwgQCJib3VuZHMiLCBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6b2xkU2hhZG93Qm91bmRzXSwgW05TVmFsdWUgdmFsdWVX
aXRoQ0dSZWN0OltzaGFkb3cgYm91bmRzXV0pOwotICAgICAgICBhZGRBbmltYXRpb24oc2hhZG93
LmdldCgpLCBAInBvc2l0aW9uIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpvbGRTaGFkb3dQ
b3NpdGlvbl0sIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6W3NoYWRvdyBwb3NpdGlvbl1dKTsK
LSAgICAgICAgYWRkQW5pbWF0aW9uKHNoYWRvdy5nZXQoKSwgQCJzaGFkb3dQYXRoIiwgKGlkKW9s
ZFNoYWRvd1BhdGguZ2V0KCksIChpZClbc2hhZG93IHNoYWRvd1BhdGhdKTsKLQotICAgICAgICBh
ZGRBbmltYXRpb24ocGxhdHRlci5nZXQoKSwgQCJib3VuZHMiLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
R1JlY3Q6b2xkUGxhdHRlckJvdW5kc10sIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpbcGxhdHRl
ciBib3VuZHNdXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlvbihwbGF0dGVyLmdldCgpLCBAInBvc2l0
aW9uIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpvbGRQbGF0dGVyUG9zaXRpb25dLCBbTlNW
YWx1ZSB2YWx1ZVdpdGhDR1BvaW50OltwbGF0dGVyIHBvc2l0aW9uXV0pOwotCi0gICAgICAgIGFk
ZEFuaW1hdGlvbihiYWNrZ3JvdW5kLmdldCgpLCBAImJvdW5kcyIsIFtOU1ZhbHVlIHZhbHVlV2l0
aENHUmVjdDpvbGRCYWNrZ3JvdW5kQm91bmRzXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0Olti
YWNrZ3JvdW5kIGJvdW5kc11dKTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKGJhY2tncm91bmQuZ2V0
KCksIEAicG9zaXRpb24iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50Om9sZEJhY2tncm91bmRQ
b3NpdGlvbl0sIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6W2JhY2tncm91bmQgcG9zaXRpb25d
XSk7CisgICAgX3BsYXR0ZXJMYXllciA9IHBsYXR0ZXI7CisgICAgX3NuYXBzaG90TGF5ZXIgPSBz
bmFwc2hvdDsKIAotICAgICAgICBhZGRBbmltYXRpb24oc25hcHNob3QuZ2V0KCksIEAiYm91bmRz
IiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0Om9sZFNuYXBzaG90Qm91bmRzXSwgW05TVmFsdWUg
dmFsdWVXaXRoQ0dSZWN0OltzbmFwc2hvdCBib3VuZHNdXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlv
bihzbmFwc2hvdC5nZXQoKSwgQCJwb3NpdGlvbiIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6
b2xkU25hcHNob3RQb3NpdGlvbl0sIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6W3NuYXBzaG90
IHBvc2l0aW9uXV0pOwotICAgIH0KKyAgICBfaXNTaXR0aW5nRG93biA9IGZhbHNlOworfQogCi0g
ICAgX2xhc3RNYXNrTGF5ZXIgPSBtYXNrOwotICAgIF9sYXN0U2hhZG93TGF5ZXIgPSBzaGFkb3c7
Ci0gICAgX2xhc3RQbGF0dGVyTGF5ZXIgPSBwbGF0dGVyOwotICAgIF9sYXN0QmFja2dyb3VuZExh
eWVyID0gYmFja2dyb3VuZDsKLSAgICBfbGFzdFNuYXBzaG90TGF5ZXIgPSBzbmFwc2hvdDsKKy0g
KHZvaWQpdXBkYXRlRGVidWdJbmRpY2F0b3IKK3sKKyAgICBhdXRvIHNlYXJjaEJvdW5kaW5nUmVj
dCA9IHNlbGYubGlua1NlYXJjaFJlY3Q7CisKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gZGVidWdJ
bmRpY2F0b3IgPSBfZGVidWdJbmRpY2F0b3JMYXllciA/OiBhZG9wdE5TKFtbQ0FMYXllciBhbGxv
Y10gaW5pdF0pOworICAgIFtkZWJ1Z0luZGljYXRvciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAw
LCBzZWFyY2hCb3VuZGluZ1JlY3Qud2lkdGgoKSwgc2VhcmNoQm91bmRpbmdSZWN0LmhlaWdodCgp
KV07CisgICAgW2RlYnVnSW5kaWNhdG9yIHNldFBvc2l0aW9uOnNlYXJjaEJvdW5kaW5nUmVjdC5j
ZW50ZXIoKV07CisgICAgW2RlYnVnSW5kaWNhdG9yIHNldEJvcmRlckNvbG9yOltVSUNvbG9yIGNv
bG9yV2l0aFJlZDoxIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdLkNHQ29sb3JdOworICAgIFtkZWJ1
Z0luZGljYXRvciBzZXRCb3JkZXJXaWR0aDoxXTsKKyAgICBbZGVidWdJbmRpY2F0b3Igd2ViX2Rp
c2FibGVBbGxBY3Rpb25zXTsKKyAgICBbW192aWV3IGxheWVyXSBhZGRTdWJsYXllcjpkZWJ1Z0lu
ZGljYXRvci5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8Q0FUZXh0TGF5ZXI+IGxpbmtDb3VudExh
eWVyID0gX2xpbmtDb3VudExheWVyID86IGFkb3B0TlMoW1tDQVRleHRMYXllciBhbGxvY10gaW5p
dF0pOworICAgIFtsaW5rQ291bnRMYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCA1MCwg
MTYpXTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoLTEwLCAo
c2VhcmNoQm91bmRpbmdSZWN0LmhlaWdodCgpIC8gMikgLSA4KV07CisgICAgW2xpbmtDb3VudExh
eWVyIHNldEZvcmVncm91bmRDb2xvcjpVSUNvbG9yLmJsYWNrQ29sb3IuQ0dDb2xvcl07CisgICAg
W2xpbmtDb3VudExheWVyIHNldFNoYWRvd0NvbG9yOlVJQ29sb3Iud2hpdGVDb2xvci5DR0NvbG9y
XTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0U2hhZG93T2Zmc2V0OkNHU2l6ZU1ha2UoMCwgMCld
OworICAgIFtsaW5rQ291bnRMYXllciBzZXRTaGFkb3dPcGFjaXR5OjFdOworICAgIFtsaW5rQ291
bnRMYXllciBzZXRTaGFkb3dSYWRpdXM6Ml07CisgICAgW2xpbmtDb3VudExheWVyIHNldEZvbnRT
aXplOjE2XTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0Q29udGVudHNTY2FsZTo0XTsKKyAgICBb
bGlua0NvdW50TGF5ZXIgc2V0QWxpZ25tZW50TW9kZTprQ0FBbGlnbm1lbnRDZW50ZXJdOworICAg
IFtsaW5rQ291bnRMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAgIFtkZWJ1Z0luZGlj
YXRvciBhZGRTdWJsYXllcjpsaW5rQ291bnRMYXllci5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8
Q0FTaGFwZUxheWVyPiBsaW5rSGlnaGxpZ2h0TGF5ZXIgPSBfbGlua0hpZ2hsaWdodExheWVyID86
IGFkb3B0TlMoW1tDQVNoYXBlTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbbGlua0hpZ2hsaWdo
dExheWVyIHNldEZpbGxDb2xvcjpVSUNvbG9yLmNsZWFyQ29sb3IuQ0dDb2xvcl07CisgICAgW2xp
bmtIaWdobGlnaHRMYXllciBzZXRTdHJva2VDb2xvcjpbVUlDb2xvci5ibHVlQ29sb3IgY29sb3JX
aXRoQWxwaGFDb21wb25lbnQ6MC4zXS5DR0NvbG9yXTsKKyAgICBbbGlua0hpZ2hsaWdodExheWVy
IHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CisgICAgW1tfdmlldyBsYXllcl0gYWRkU3VibGF5ZXI6
bGlua0hpZ2hsaWdodExheWVyLmdldCgpXTsKKworICAgIFtfZGVsZWdhdGUgaW50ZXJhY3RhYmxl
UmVnaW9uc0ZvckhvdmVyUGxhdHRlcjpzZWxmIGluUmVjdDpzZWFyY2hCb3VuZGluZ1JlY3QgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRy
KHNlbGYpXSAoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdHMpIHsKKyAgICAgICAgaWYg
KCFfbGlua0NvdW50TGF5ZXIgJiYgIV9saW5rSGlnaGxpZ2h0TGF5ZXIpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgW19saW5rQ291bnRMYXllciBzZXRTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlenUiLCByZWN0cy5zaXplKCldXTsKKworICAgICAgICBXZWJDb3Jl
OjpQYXRoIHBhdGg7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IHJlY3RzKQorICAg
ICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOworICAgICAgICBbX2xpbmtIaWdobGlnaHRMYXll
ciBzZXRQYXRoOnBhdGgucGxhdGZvcm1QYXRoKCldOworICAgIH0pLmdldCgpXTsKKworICAgIF9k
ZWJ1Z0luZGljYXRvckxheWVyID0gZGVidWdJbmRpY2F0b3I7CisgICAgX2xpbmtDb3VudExheWVy
ID0gbGlua0NvdW50TGF5ZXI7CisgICAgX2xpbmtIaWdobGlnaHRMYXllciA9IGxpbmtIaWdobGln
aHRMYXllcjsKIH0KIAogLSAodm9pZClkaXNtaXNzUGxhdHRlcldpdGhBbmltYXRpb246KEJPT0wp
d2l0aEFuaW1hdGlvbgpAQCAtMjk5LDQ4ICsyNTEsNjQgQEAgLSAodm9pZClkaXNtaXNzUGxhdHRl
cldpdGhBbmltYXRpb246KEJPT0wpd2l0aEFuaW1hdGlvbgogICAgIF9pc1NpdHRpbmdEb3duID0g
dHJ1ZTsKIAogICAgIGlmICghd2l0aEFuaW1hdGlvbikgewotICAgICAgICBbX2xhc3RTaGFkb3dM
YXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIFtfZGVidWdJbmRpY2F0b3JMYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIFtfcGxhdHRlckxheWVyIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKKyAgICAgICAgW19saW5rQ291bnRMYXllciByZW1vdmVGcm9tU3VwZXJs
YXllcl07CisgICAgICAgIFtfbGlua0hpZ2hsaWdodExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVy
XTsKICAgICAgICAgW3NlbGYgY2xlYXJMYXllcnNdOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBs
ZXRpb25CbG9jazpbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2hhZG93TGF5ZXIg
PSBfbGFzdFNoYWRvd0xheWVyXSB7Ci0gICAgICAgIFtwcm90ZWN0ZWRTZWxmIGRpZEZpbmlzaEFu
aW1hdGlvbkZvclNoYWRvdzpzaGFkb3dMYXllci5nZXQoKV07CisgICAgW0NBVHJhbnNhY3Rpb24g
c2V0Q29tcGxldGlvbkJsb2NrOltwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBwbGF0
dGVyTGF5ZXIgPSBfcGxhdHRlckxheWVyXSB7CisgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGRpZEZp
bmlzaERpc21pc3NhbEFuaW1hdGlvbjpwbGF0dGVyTGF5ZXIuZ2V0KCldOwogICAgIH1dOwogCiAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzOwot
ICAgIGFkZEFuaW1hdGlvbihfbGFzdFNoYWRvd0xheWVyLmdldCgpLCBAInNoYWRvd09wYWNpdHki
LCBAKFtfbGFzdFNoYWRvd0xheWVyIHNoYWRvd09wYWNpdHldKSwgQDApOwotICAgIGFkZEFuaW1h
dGlvbihfbGFzdFNoYWRvd0xheWVyLmdldCgpLCBAInNoYWRvd1JhZGl1cyIsIEAoW19sYXN0U2hh
ZG93TGF5ZXIgc2hhZG93UmFkaXVzXSksIEAwKTsKLSAgICBhZGRBbmltYXRpb24oX2xhc3RTaGFk
b3dMYXllci5nZXQoKSwgQCJzdWJsYXllclRyYW5zZm9ybSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENB
VHJhbnNmb3JtM0Q6W19sYXN0U2hhZG93TGF5ZXIgc3VibGF5ZXJUcmFuc2Zvcm1dXSwgW05TVmFs
dWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRpdHldKTsKLSAgICBh
ZGRBbmltYXRpb24oX2xhc3RTbmFwc2hvdExheWVyLmdldCgpLCBAInN1YmxheWVyVHJhbnNmb3Jt
IiwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpbX2xhc3RTbmFwc2hvdExheWVyIHN1
YmxheWVyVHJhbnNmb3JtXV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFu
c2Zvcm0zRElkZW50aXR5XSk7Ci0gICAgYWRkQWRkaXRpb25hbERpc21pc3NhbEFuaW1hdGlvbnMo
X2xhc3RQbGF0dGVyTGF5ZXIuZ2V0KCkpOworICAgIGlmIChwYXJhbWV0ZXJzLmFuaW1hdGVTY2Fs
ZSkgeworICAgICAgICBhdXRvIGludmVyc2VTY2FsZSA9IDEuZiAvIHBhcmFtZXRlcnMucGxhdHRl
clNjYWxlOworICAgICAgICBhZGRBbmltYXRpb24oX3BsYXR0ZXJMYXllci5nZXQoKSwgQCJ0cmFu
c2Zvcm0iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RJZGVu
dGl0eV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRE1ha2VT
Y2FsZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2FsZSwgMSldKTsKKyAgICAgICAgYWRkQW5pbWF0
aW9uKF9zbmFwc2hvdExheWVyLmdldCgpLCBAInN1YmxheWVyVHJhbnNmb3JtIiwgW05TVmFsdWUg
dmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpbX3NuYXBzaG90TGF5ZXIgc3VibGF5ZXJUcmFuc2Zvcm1d
XSwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRpdHld
KTsKKyAgICAgICAgYWRkQW5pbWF0aW9uKF9wbGF0dGVyTGF5ZXIuZ2V0KCksIEAic2hhZG93T3Bh
Y2l0eSIsIEAoW19wbGF0dGVyTGF5ZXIgc2hhZG93T3BhY2l0eV0pLCBAMCk7CisgICAgICAgIGFk
ZEFuaW1hdGlvbihfc25hcHNob3RMYXllci5nZXQoKSwgQCJib3JkZXJDb2xvciIsIChpZClbX3Nu
YXBzaG90TGF5ZXIgYm9yZGVyQ29sb3JdLCAoaWQpVUlDb2xvci5jbGVhckNvbG9yLkNHQ29sb3Ip
OworICAgIH0gZWxzZQorICAgICAgICBhZGRBbmltYXRpb24oX3BsYXR0ZXJMYXllci5nZXQoKSwg
QCJvcGFjaXR5IiwgQDEsIEAwKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Cit9CiAK
LSAgICBpZiAoIXBhcmFtZXRlcnMuYW5pbWF0ZUJldHdlZW5QbGF0dGVycykKLSAgICAgICAgW3Nl
bGYgY2xlYXJMYXllcnNdOworLSAodm9pZClkaWRGaW5pc2hEaXNtaXNzYWxBbmltYXRpb246KENB
TGF5ZXIgKilwbGF0dGVyTGF5ZXIKK3sKKyAgICBbcGxhdHRlckxheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKIH0KIAotLSAodm9pZClkaWRGaW5pc2hBbmltYXRpb25Gb3JTaGFkb3c6KENBTGF5
ZXIgKilzaGFkb3dMYXllcgorLSAodm9pZCljbGVhckxheWVycwogewotICAgIGF1dG8gcGFyYW1l
dGVycyA9IFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5nczsKLSAgICBpZiAoIXBhcmFt
ZXRlcnMuYW5pbWF0ZUJldHdlZW5QbGF0dGVycykKLSAgICAgICAgW3NoYWRvd0xheWVyIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKKyAgICBfZGVidWdJbmRpY2F0b3JMYXllciA9IG5pbDsKKyAgICBf
cGxhdHRlckxheWVyID0gbmlsOworICAgIF9zbmFwc2hvdExheWVyID0gbmlsOworICAgIF9saW5r
Q291bnRMYXllciA9IG5pbDsKKyAgICBfbGlua0hpZ2hsaWdodExheWVyID0gbmlsOworfQogCi0g
ICAgaWYgKF9pc1NpdHRpbmdEb3duICYmIHBhcmFtZXRlcnMuYW5pbWF0ZUJldHdlZW5QbGF0dGVy
cyAmJiBzaGFkb3dMYXllciA9PSBfbGFzdFNoYWRvd0xheWVyKSB7Ci0gICAgICAgIFtzaGFkb3dM
YXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAgIFtzZWxmIGNsZWFyTGF5ZXJzXTsK
LSAgICB9CistIChXZWJDb3JlOjpGbG9hdFBvaW50KWFkanVzdGVkUG9pbnRGb3JQb2ludDooV2Vi
Q29yZTo6RmxvYXRQb2ludClwb2ludAoreworICAgIGlmIChfaXNTaXR0aW5nRG93bikKKyAgICAg
ICAgcmV0dXJuIHBvaW50OworCisgICAgYXV0byBkZWx0YSA9IHBvaW50IC0gX2hvdmVyUG9pbnQ7
CisgICAgZGVsdGEuc2NhbGUoMS5mIC8gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdz
LnBsYXR0ZXJTY2FsZSk7CisgICAgcmV0dXJuIF9ob3ZlclBvaW50ICsgZGVsdGE7CiB9CiAKLS0g
KHZvaWQpY2xlYXJMYXllcnMKKy0gKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudClhZGp1c3Rl
ZEV2ZW50Rm9yRXZlbnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudCYpZXZlbnQK
IHsKLSAgICBfbGFzdE1hc2tMYXllciA9IG5pbDsKLSAgICBfbGFzdFNoYWRvd0xheWVyID0gbmls
OwotICAgIF9sYXN0UGxhdHRlckxheWVyID0gbmlsOwotICAgIF9sYXN0QmFja2dyb3VuZExheWVy
ID0gbmlsOwotICAgIF9sYXN0U25hcHNob3RMYXllciA9IG5pbDsKKyAgICBpZiAoX2lzU2l0dGlu
Z0Rvd24pCisgICAgICAgIHJldHVybiBldmVudDsKKworICAgIGF1dG8gaW52ZXJzZVNjYWxlID0g
MS5mIC8gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJTY2FsZTsKKyAg
ICBhdXRvIGFkanVzdGVkUG9pbnQgPSByb3VuZGVkSW50UG9pbnQoW3NlbGYgYWRqdXN0ZWRQb2lu
dEZvclBvaW50OmV2ZW50LnBvc2l0aW9uKCldKTsKKyAgICByZXR1cm4gV2ViS2l0OjpOYXRpdmVX
ZWJNb3VzZUV2ZW50KGV2ZW50LCBhZGp1c3RlZFBvaW50LCBhZGp1c3RlZFBvaW50LCBldmVudC5k
ZWx0YVgoKSAqIGludmVyc2VTY2FsZSwgZXZlbnQuZGVsdGFZKCkgKiBpbnZlcnNlU2NhbGUsIGV2
ZW50LmRlbHRhWigpICogaW52ZXJzZVNjYWxlKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5oCmluZGV4
IDFhYzhlNzNmNTZlM2ZlOGUwNmI3MDU3ODE3Y2IzOGVlNzhjNWUwN2QuLmE1NDAyMGQ4Y2UxZjFm
MDM2NTUwMWRmNTliZjY4YTBmYmVjYzFlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLmgKQEAgLTMwLDIwICszMCwy
MyBAQAogQGludGVyZmFjZSBXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgOiBQVFNldHRpbmdzCiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHBsYXR0ZXJFbmFibGVkRm9yTW91c2U7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCBwbGF0dGVyRW5hYmxlZEZvckhvdmVyOworQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgcGxhdHRlckVuYWJsZWRGb3JMb25nUHJlc3M7CiAKLUBwcm9wZXJ0
eSAobm9uYXRvbWljKSBDR0Zsb2F0IHBsYXR0ZXJDb3JuZXJSYWRpdXM7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYykgQ0dGbG9hdCBwbGF0dGVyUGFkZGluZzsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBD
R0Zsb2F0IHBsYXR0ZXJTaGFkb3dPcGFjaXR5OwotQHByb3BlcnR5IChub25hdG9taWMpIENHRmxv
YXQgcGxhdHRlclNoYWRvd1JhZGl1czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSB1bnNpZ25lZCBw
bGF0dGVySW5mbGF0aW9uU2l6ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBlbmFibGVkOworCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzaG93RGVidWdPdmVybGF5
OworCitAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBwbGF0dGVyUmFkaXVzOworQHByb3Bl
cnR5IChub25hdG9taWMpIENHRmxvYXQgcGxhdHRlclNjYWxlOworCitAcHJvcGVydHkgKG5vbmF0
b21pYykgQ0dGbG9hdCBsaW5rU2VhcmNoUmFkaXVzOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBhbmltYXRlQmV0d2VlblBsYXR0ZXJzOwogQHByb3BlcnR5IChub25hdG9taWMpIENHRmxv
YXQgc3ByaW5nTWFzczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHNwcmluZ1N0aWZm
bmVzczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHNwcmluZ0RhbXBpbmc7CiBAcHJv
cGVydHkgKG5vbmF0b21pYykgTlNUaW1lSW50ZXJ2YWwgZHVyYXRpb247Ci1AcHJvcGVydHkgKG5v
bmF0b21pYykgQ0dGbG9hdCB1c2VTcHJpbmc7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB1
c2VTcHJpbmc7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbmltYXRlU2NhbGU7CiAKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dLSG92
ZXJQbGF0dGVyUGFyYW1ldGVyc0FkZGl0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMubW0KaW5kZXggMGVmMDMx
ODg4ZWU3ODM1MGI0NjFhNjNhYzRjOTBjNDNhYjk1Mzk3Ny4uN2U3M2E0M2RhMzk5ZTM1MzY3ZjU0
M2M1YzAxZTliODMwMTAyYmQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLm1tCkBAIC00OSwxMyArNDksNiBAQCAt
IChpZClpbnRlZ2VyTWluVmFsdWU6KENHRmxvYXQpbWluVmFsdWUgbWF4VmFsdWU6KENHRmxvYXQp
bWF4VmFsdWUKIAogQGVuZAogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQg
PFdlYktpdEFkZGl0aW9ucy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnNBZGRpdGlvbnMubW0+Ci0j
ZWxzZQotc3RhdGljIHZvaWQgYWRkQWRkaXRpb25hbFBsYXR0ZXJMYXlvdXRQYXJhbWV0ZXJzKE5T
TXV0YWJsZUFycmF5ICopIHsgfQotc3RhdGljIHZvaWQgc2V0RGVmYXVsdFZhbHVlc0ZvckFkZGl0
aW9uYWxQbGF0dGVyTGF5b3V0UGFyYW1ldGVycyhXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgKikg
eyB9Ci0jZW5kaWYKLQogQGltcGxlbWVudGF0aW9uIFdLSG92ZXJQbGF0dGVyUGFyYW1ldGVycwog
CiAtICh2b2lkKXNldERlZmF1bHRWYWx1ZXMKQEAgLTYzLDMzICs1Niw0MSBAQCAtICh2b2lkKXNl
dERlZmF1bHRWYWx1ZXMKICAgICBbc3VwZXIgc2V0RGVmYXVsdFZhbHVlc107CiAKICAgICBfcGxh
dHRlckVuYWJsZWRGb3JNb3VzZSA9IE5POwotICAgIF9wbGF0dGVyRW5hYmxlZEZvckhvdmVyID0g
Tk87CisgICAgX3BsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNzID0gTk87CisKKyAgICBfc2hvd0Rl
YnVnT3ZlcmxheSA9IE5POwogCi0gICAgX3BsYXR0ZXJDb3JuZXJSYWRpdXMgPSA2OwotICAgIF9w
bGF0dGVyUGFkZGluZyA9IDU7Ci0gICAgX3BsYXR0ZXJTaGFkb3dPcGFjaXR5ID0gMC42OwotICAg
IF9wbGF0dGVyU2hhZG93UmFkaXVzID0gMTA7Ci0gICAgX3BsYXR0ZXJJbmZsYXRpb25TaXplID0g
ODsKKyAgICBfcGxhdHRlclJhZGl1cyA9IDIwMDsKKyAgICBfcGxhdHRlclNjYWxlID0gMjsKKwor
ICAgIF9saW5rU2VhcmNoUmFkaXVzID0gNDA7CiAKLSAgICBfYW5pbWF0ZUJldHdlZW5QbGF0dGVy
cyA9IFlFUzsKICAgICBfc3ByaW5nTWFzcyA9IDI7Ci0gICAgX3NwcmluZ1N0aWZmbmVzcyA9IDEw
MDsKLSAgICBfc3ByaW5nRGFtcGluZyA9IDUwOworICAgIF9zcHJpbmdTdGlmZm5lc3MgPSAyMDA7
CisgICAgX3NwcmluZ0RhbXBpbmcgPSAyMDA7CiAgICAgX2R1cmF0aW9uID0gMC4zOwogICAgIF91
c2VTcHJpbmcgPSBZRVM7CisgICAgX2FuaW1hdGVTY2FsZSA9IFlFUzsKK30KIAotICAgIHNldERl
ZmF1bHRWYWx1ZXNGb3JBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMoc2VsZik7Cist
IChCT09MKWVuYWJsZWQKK3sKKyAgICByZXR1cm4gX3BsYXR0ZXJFbmFibGVkRm9yTW91c2UgfHwg
X3BsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNzOwogfQogCiArIChQVE1vZHVsZSAqKXNldHRpbmdz
Q29udHJvbGxlck1vZHVsZQogewogICAgIFBUU2VjdGlvbiAqZW5hYmxlbWVudFNlY3Rpb24gPSBb
UFRNb2R1bGUgc2VjdGlvbldpdGhSb3dzOkBbCiAgICAgICAgIFtQVFN3aXRjaFJvdyByb3dXaXRo
VGl0bGU6QCJFbmFibGUgUGxhdHRlciBGb3IgTW91c2UiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJF
bmFibGVkRm9yTW91c2UiXSwKLSAgICAgICAgW1BUU3dpdGNoUm93IHJvd1dpdGhUaXRsZTpAIkVu
YWJsZSBQbGF0dGVyIEZvciBIb3ZlciIgdmFsdWVLZXlQYXRoOkAicGxhdHRlckVuYWJsZWRGb3JI
b3ZlciJdLAorICAgICAgICBbUFRTd2l0Y2hSb3cgcm93V2l0aFRpdGxlOkAiRW5hYmxlIFBsYXR0
ZXIgRm9yIExvbmcgUHJlc3MiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJFbmFibGVkRm9yTG9uZ1By
ZXNzIl0sCiAgICAgXSB0aXRsZTpAIlBsYXR0ZXIiXTsKIAorICAgIFBUU2VjdGlvbiAqZGVidWdT
ZWN0aW9uID0gW1BUTW9kdWxlIHNlY3Rpb25XaXRoUm93czpAWworICAgICAgICBbUFRTd2l0Y2hS
b3cgcm93V2l0aFRpdGxlOkAiU2hvdyBEZWJ1ZyBPdmVybGF5IiB2YWx1ZUtleVBhdGg6QCJzaG93
RGVidWdPdmVybGF5Il0sCisgICAgXSB0aXRsZTpAIkRlYnVnIl07CisKICAgICBQVFNlY3Rpb24g
KmFuaW1hdGlvblNlY3Rpb24gPSBbUFRNb2R1bGUgc2VjdGlvbldpdGhSb3dzOkBbCi0gICAgICAg
IFtQVFN3aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJBbmltYXRlIEJldHdlZW4gUGxhdHRlcnMiIHZh
bHVlS2V5UGF0aDpAImFuaW1hdGVCZXR3ZWVuUGxhdHRlcnMiXSwKKyAgICAgICAgW1BUU3dpdGNo
Um93IHJvd1dpdGhUaXRsZTpAIkFuaW1hdGUgU2NhbGUiIHZhbHVlS2V5UGF0aDpAImFuaW1hdGVT
Y2FsZSJdLAogICAgICAgICBbUFRTd2l0Y2hSb3cgcm93V2l0aFRpdGxlOkAiVXNlIFNwcmluZyIg
dmFsdWVLZXlQYXRoOkAidXNlU3ByaW5nIl0sCiAgICAgICAgIFtbW1BUU2xpZGVyUm93IHJvd1dp
dGhUaXRsZTpAIkR1cmF0aW9uIiB2YWx1ZUtleVBhdGg6QCJkdXJhdGlvbiJdIG1pblZhbHVlOjAg
bWF4VmFsdWU6MV0gY29uZGl0aW9uOltOU1ByZWRpY2F0ZSBwcmVkaWNhdGVXaXRoRm9ybWF0OkAi
dXNlU3ByaW5nID09IEZBTFNFIl1dLAogICAgICAgICBbW1BURWRpdEZsb2F0Um93IHJvd1dpdGhU
aXRsZTpAIlNwcmluZyBNYXNzIiB2YWx1ZUtleVBhdGg6QCJzcHJpbmdNYXNzIl0gY29uZGl0aW9u
OltOU1ByZWRpY2F0ZSBwcmVkaWNhdGVXaXRoRm9ybWF0OkAidXNlU3ByaW5nID09IFRSVUUiXV0s
CkBAIC05NywyMiArOTgsMjAgQEAgKyAoUFRNb2R1bGUgKilzZXR0aW5nc0NvbnRyb2xsZXJNb2R1
bGUKICAgICAgICAgW1tQVEVkaXRGbG9hdFJvdyByb3dXaXRoVGl0bGU6QCJTcHJpbmcgRGFtcGlu
ZyIgdmFsdWVLZXlQYXRoOkAic3ByaW5nRGFtcGluZyJdIGNvbmRpdGlvbjpbTlNQcmVkaWNhdGUg
cHJlZGljYXRlV2l0aEZvcm1hdDpAInVzZVNwcmluZyA9PSBUUlVFIl1dLAogICAgIF0gdGl0bGU6
QCJBbmltYXRpb24iXTsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gcGxhdHRlckxh
eW91dFJvd3MgPSBhZG9wdE5TKFtAWwotICAgICAgICBbW1BUU2xpZGVyUm93IHJvd1dpdGhUaXRs
ZTpAIkNvcm5lciBSYWRpdXMiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJDb3JuZXJSYWRpdXMiXSBp
bnRlZ2VyTWluVmFsdWU6MCBtYXhWYWx1ZToyMF0sCi0gICAgICAgIFtbUFRTbGlkZXJSb3cgcm93
V2l0aFRpdGxlOkAiUGFkZGluZyIgdmFsdWVLZXlQYXRoOkAicGxhdHRlclBhZGRpbmciXSBpbnRl
Z2VyTWluVmFsdWU6MCBtYXhWYWx1ZToyMF0sCi0gICAgICAgIFtbUFRTbGlkZXJSb3cgcm93V2l0
aFRpdGxlOkAiU2hhZG93IE9wYWNpdHkiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJTaGFkb3dPcGFj
aXR5Il0gbWluVmFsdWU6MCBtYXhWYWx1ZToxXSwKLSAgICAgICAgW1tQVFNsaWRlclJvdyByb3dX
aXRoVGl0bGU6QCJTaGFkb3cgUmFkaXVzIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVyU2hhZG93UmFk
aXVzIl0gaW50ZWdlck1pblZhbHVlOjAgbWF4VmFsdWU6MjBdLAotICAgICAgICBbW1BUU2xpZGVy
Um93IHJvd1dpdGhUaXRsZTpAIkluZmxhdGlvbiBTaXplIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVy
SW5mbGF0aW9uU2l6ZSJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZhbHVlOjMwXQotICAgIF0gbXV0
YWJsZUNvcHldKTsKLSAgICBhZGRBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMocGxh
dHRlckxheW91dFJvd3MuZ2V0KCkpOworICAgIFBUU2VjdGlvbiAqcGxhdHRlclNlY3Rpb24gPSBb
UFRNb2R1bGUgc2VjdGlvbldpdGhSb3dzOkBbCisgICAgICAgIFtbUFRTbGlkZXJSb3cgcm93V2l0
aFRpdGxlOkAiUmFkaXVzIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVyUmFkaXVzIl0gaW50ZWdlck1p
blZhbHVlOjAgbWF4VmFsdWU6NDAwXSwKKyAgICAgICAgW1tQVFNsaWRlclJvdyByb3dXaXRoVGl0
bGU6QCJTY2FsZSIgdmFsdWVLZXlQYXRoOkAicGxhdHRlclNjYWxlIl0gbWluVmFsdWU6MCBtYXhW
YWx1ZTo0XSwKKyAgICBdIHRpdGxlOkAiUGxhdHRlciJdOwogCi0gICAgUFRTZWN0aW9uICpwbGF0
dGVyTGF5b3V0U2VjdGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6cGxhdHRlckxheW91
dFJvd3MuZ2V0KCkgdGl0bGU6QCJQbGF0dGVyIExheW91dCJdOworICAgIFBUU2VjdGlvbiAqbGlu
a1NlYXJjaGluZ1NlY3Rpb24gPSBbUFRNb2R1bGUgc2VjdGlvbldpdGhSb3dzOkBbCisgICAgICAg
IFtbUFRTbGlkZXJSb3cgcm93V2l0aFRpdGxlOkAiUmFkaXVzIiB2YWx1ZUtleVBhdGg6QCJsaW5r
U2VhcmNoUmFkaXVzIl0gaW50ZWdlck1pblZhbHVlOjAgbWF4VmFsdWU6MjAwXSwKKyAgICBdIHRp
dGxlOkAiTGluayBTZWFyY2hpbmciXTsKIAogICAgIFBUU2VjdGlvbiAqcmVzdG9yZURlZmF1bHRz
U2VjdGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsKICAgICAgICAgW1BUQnV0dG9u
Um93IHJvd1dpdGhUaXRsZTpAIlJlc3RvcmUgRGVmYXVsdHMiIGFjdGlvbjpbUFRSZXN0b3JlRGVm
YXVsdFNldHRpbmdzUm93QWN0aW9uIGFjdGlvbl1dCiAgICAgXV07CiAKLSAgICByZXR1cm4gW1BU
TW9kdWxlIG1vZHVsZVdpdGhUaXRsZTpuaWwgY29udGVudHM6QFsgZW5hYmxlbWVudFNlY3Rpb24s
IGFuaW1hdGlvblNlY3Rpb24sIHBsYXR0ZXJMYXlvdXRTZWN0aW9uLCByZXN0b3JlRGVmYXVsdHNT
ZWN0aW9uIF1dOworICAgIHJldHVybiBbUFRNb2R1bGUgbW9kdWxlV2l0aFRpdGxlOm5pbCBjb250
ZW50czpAWyBlbmFibGVtZW50U2VjdGlvbiwgZGVidWdTZWN0aW9uLCBhbmltYXRpb25TZWN0aW9u
LCBwbGF0dGVyU2VjdGlvbiwgbGlua1NlYXJjaGluZ1NlY3Rpb24sIHJlc3RvcmVEZWZhdWx0c1Nl
Y3Rpb24gXV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNjU0ODUwNzg2OWNlYWY1MGQxODdlZDY5M2U2ZDkxN2QyM2ZkMDBm
OS4uMmRjMThiMmQxNGQ2ZWNmMDg5NTM3ODVmZWNhYWE0ZjhmYjc1NWI4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYyNTksNiArNjI1OSw0
NSBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbGVkQ29tcG9zaXRpb24oKQogICAgIHNlbmRFZGl0b3JT
dGF0ZVVwZGF0ZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJl
Y3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZiBm
cmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKworICAgIGlmIChSZWZQdHIgZnJhbWVWaWV3ID0g
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgZnJhbWVWaWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlm
TmVlZGVkUmVjdXJzaXZlKCk7CisKKyAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBX
ZWJDb3JlOjpMYXlvdXRSZWN0KHJlY3QpIH07CisgICAgUmVmUHRyIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdCh7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwKKyAgICAg
ICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25s
eSwKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkNvbGxlY3RNdWx0aXBsZUVsZW1lbnRz
CisgICAgfSk7CisgICAgZG9jdW1lbnQtPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKworICAg
IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQgbGlua05vZGVzOworCisgICAgZm9yIChjb25zdCBhdXRv
JiBub2RlIDogcmVzdWx0Lmxpc3RCYXNlZFRlc3RSZXN1bHQoKSkgeworICAgICAgICBpZiAobm9k
ZS0+d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSkKKyAgICAgICAgICAgIGxpbmtOb2Rl
cy5hZGQobm9kZSk7CisgICAgfQorCisgICAgVmVjdG9yPEZsb2F0UmVjdD4gcmVjdHM7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBub2RlIDogbGlua05vZGVzKSB7CisgICAgICAgIGF1dG8gcmVuZGVy
ZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIHJlY3RzLmFwcGVuZChyZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKSk7CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdHMpOwor
fQorCiB2b2lkIFdlYlBhZ2U6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wg
YWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCiB7CiAgICAgaWYgKGFsd2F5c1Nob3dzSG9y
aXpvbnRhbFNjcm9sbGVyID09IG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNjdkNDhmZWQyOTk1
YmMxYTExNzFhOWU5OTVhNmE3YjZlNzk1MDE3MC4uMDIyMzFiMTg3NmMwMTEzMmIwNjE5NjNjZGNi
MGRhZjk0ZTM5OTU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtOTMxLDYgKzkzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFVwZGF0ZUNvbXBv
c2l0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygp
OwogCisgICAgdm9pZCBpbnRlcmFjdGFibGVSZWdpb25zSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVj
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0Pik+JiYp
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nl
c3NpYmlsaXR5KCk7CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxMTkxODM3YzM1MWVhMjc5NWRm
OWIxYTViZjJhNDY0MzY1OGUwZDRlLi4wZDBmNmFlMzg0MmQ5NTc5ZjQxNThjZGM5YjAyMTUwZWZi
YmYzNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTY1Nyw0ICs2NTcsNiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogI2VuZGlmCiAKICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdl
dFJlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQorCisgICAgSW50ZXJhY3RhYmxlUmVn
aW9uc0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpG
bG9hdFJlY3Q+IHJlY3RzKSBBc3luYwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451223</attachid>
            <date>2022-02-08 02:01:16 -0800</date>
            <delta_ts>2022-02-08 23:02:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236289-20220208020115.patch</filename>
            <type>text/plain</type>
            <size>53698</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1YmNkNTZjNjlhNGZmYzY1
OWE1MjlmNDQzMDM2MmY1MjU5YTcyMWEuLmZmNDc0YzM5MTI4NTg5MzNkZjhhOWRmYTk0OTU2YzVj
NmVlOTQ5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjItMDItMDggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tIb3ZlclBsYXR0ZXIg
c2hvdWxkIHNjYWxlIHVwIHRoZSBwbGF0dGVyIGNvbnRlbnQgdG8gbWFrZSBpdCBlYXNpZXIgdG8g
c2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYy
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL2lvcy9OYXRpdmVX
ZWJNb3VzZUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50
OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgQWRkIGEgTmF0aXZlV2ViTW91c2VFdmVu
dCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIG1vc3QgcHJvcGVydGllcyBmcm9tCisgICAgICAgIGFu
b3RoZXIgZXZlbnQsIGJ1dCBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgcG9zaXRpb25zIGFuZCBkZWx0
YXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjppbnRlcmFjdGFibGVSZWdpb25zSW5SZWN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnRlcmFjdGFibGVSZWdp
b25zSW5SZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBB
ZGQgYSBtZXRob2QgdG8gY291bnQgdGhlIG51bWJlciBvZiBjbGlja2FibGUgZWxlbWVudHMgaW4g
YSBnaXZlbiByZWN0YW5nbGUuCisgICAgICAgIFRoaXMgaXMganVzdCBhIGZpcnN0IGF0dGVtcHQg
YXQgdGhlIGhldXJpc3RpYzsgdGhpcyB3aWxsIGdldCBtb3JlIGNvbXBsZXggaW4gdGhlIGZ1dHVy
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6
CisgICAgICAgIEFkZCBhIHNlbGVjdGlvbiBhc3Npc3RhbnQgc3VwcHJlc3Npb24gcmVhc29uIGZv
ciBXS0hvdmVyUGxhdHRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVBbmRDb25m
aWd1cmVIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcl0pOgorICAgICAgICBGYWN0
b3Igb3V0IGhpZ2hsaWdodC1sb25nLXByZXNzIGdlc3R1cmUgY3JlYXRpb24gbGlrZSBsb25nLXBy
ZXNzLiBCYWlsIGlmIHRoZSBwbGF0dGVyIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBzZXRVcEludGVyYWN0aW9uXSk6CisgICAgICAgIERpc2FibGUgdGhlIHNlbGVjdGlv
biBhc3Npc3RhbnQgaWYgV0tIb3ZlclBsYXR0ZXIgd2FudHMgdG8gdXNlIGxvbmcgcHJlc3MuCisK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjbGVhblVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfbG9jYXRpb25Gb3JHZXN0dXJlOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9zdGFydFBvaW50Rm9yR2VzdHVyZTpdKToKKyAgICAgICAgQWRkIGZ1bm5lbHMg
Zm9yIGV4dHJhY3RpbmcgdGhlIHByaW1hcnkgbG9jYXRpb24gb3Igc3RhcnRpbmcgbG9jYXRpb24g
ZnJvbQorICAgICAgICBhIGdlc3R1cmUsIGFsbG93aW5nIFdLSG92ZXJQbGF0dGVyIHRvIG11dGF0
ZSBpdCBpZiBpdCBpcyBjdXJyZW50bHkgZW5nYWdlZC4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9kb3VibGVUYXBSZWNvZ25pemVkRm9yRG91YmxlQ2xpY2s6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVkOl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBJZGVudGlmaWVkOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBSZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9kb3VibGVUYXBSZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9ub25CbG9ja2luZ0RvdWJsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgIEFk
b3B0IF9sb2NhdGlvbkZvckdlc3R1cmUvX3N0YXJ0UG9pbnRGb3JHZXN0dXJlLgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2xvbmdQcmVzc1JlY29nbml6ZWQ6XSk6CisgICAgICAgIEFkb3B0
IF9sb2NhdGlvbkZvckdlc3R1cmUvX3N0YXJ0UG9pbnRGb3JHZXN0dXJlLgorICAgICAgICBSZWRp
cmVjdCBhIHJlY29nbml6ZWQgbG9uZyBwcmVzcyB0byBXS0hvdmVyUGxhdHRlciBpZiBpdCB3YW50
cyB0byB1c2UgbG9uZyBwcmVzcy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91bGRV
c2VDb250ZXh0TWVudXNdKToKKyAgICAgICAgRGlzYWJsZSBjb250ZXh0IG1lbnVzIGlmIFdLSG92
ZXJQbGF0dGVyIHdhbnRzIHRvIHVzZSBsb25nIHByZXNzLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0VXBEcmFnQW5kRHJvcEludGVyYWN0aW9uc10pOgorICAgICAgICBEaXNhYmxlIGRy
YWcgYW5kIGRyb3AgaWYgV0tIb3ZlclBsYXR0ZXIgd2FudHMgdG8gdXNlIGxvbmcgcHJlc3MuCisK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBtb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpd
KToKKyAgICAgICAgQWxsb3cgV0tIb3ZlclBsYXR0ZXIgdG8gbXV0YXRlIHRoZSBsb2NhdGlvbiBv
ZiBtb3VzZSBldmVudHMgaWYgaXQgaXMgY3VycmVudGx5IGVuZ2FnZWQuCisKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBudW1iZXJPZkxpbmtzRm9ySG92ZXJQbGF0dGVyOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbToKKyAgICAgICAgKC1b
V0tIb3ZlclBsYXR0ZXIgaW5pdFdpdGhWaWV3OmRlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS0hv
dmVyUGxhdHRlciBkaWRSZWNlaXZlTW91c2VFdmVudDpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBs
YXR0ZXIgZGlkTG9uZ1ByZXNzQXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIg
cGxhdHRlckJvdW5kaW5nUmVjdF0pOgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBsaW5rU2Vh
cmNoUmVjdF0pOgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciB1cGRhdGVdKToKKyAgICAgICAg
KC1bV0tIb3ZlclBsYXR0ZXIgdXBkYXRlRGVidWdJbmRpY2F0b3JdKToKKyAgICAgICAgKC1bV0tI
b3ZlclBsYXR0ZXIgZGlzbWlzc1BsYXR0ZXJXaXRoQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtX
S0hvdmVyUGxhdHRlciBkaWRGaW5pc2hEaXNtaXNzYWxBbmltYXRpb246XSk6CisgICAgICAgICgt
W1dLSG92ZXJQbGF0dGVyIGNsZWFyTGF5ZXJzXSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVy
IGFkanVzdGVkUG9pbnRGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgYWRq
dXN0ZWRFdmVudEZvckV2ZW50Ol0pOgorICAgICAgICAoc2V0QWRkaXRpb25hbFBsYXR0ZXJMYXll
clByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoYWRkQWRkaXRpb25hbEluY29taW5nQW5p
bWF0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChhZGRBZGRpdGlvbmFsRGlzbWlzc2FsQW5pbWF0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHNldEhvdmVyUG9pbnQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHJlcXVlc3RQb3NpdGlvbklu
Zm9ybWF0aW9uRm9yQ3VycmVudEhvdmVyUG9pbnRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tI
b3ZlclBsYXR0ZXIgZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb246XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpZEZpbmlzaEFuaW1hdGlvbkZvclNoYWRvdzpdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLm1t
OgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgc2V0RGVmYXVsdFZhbHVlc10p
OgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgZW5hYmxlZF0pOgorICAgICAg
ICAoK1tXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMgc2V0dGluZ3NDb250cm9sbGVyTW9kdWxlXSk6
CisgICAgICAgIChhZGRBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMpOiBEZWxldGVk
LgorICAgICAgICAoc2V0RGVmYXVsdFZhbHVlc0ZvckFkZGl0aW9uYWxQbGF0dGVyTGF5b3V0UGFy
YW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgIEFkanVzdCBXS0hvdmVyUGxhdHRlciB0byBzY2Fs
ZSB1cCBpdHMgY29udGVudCwgYW5kIGFkanVzdCB0aGUgc2hhcGUKKyAgICAgICAgYW5kIGFuaW1h
dGlvbnMuCisKIDIwMjItMDItMDcgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIFB1c2hTZXJ2aWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRp
dmVXZWJNb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2
ZW50LmgKaW5kZXggYTNhNjVkMTAzNjFkYjI0ZDU3Yzg5MjRjYzUwOTE4Yzc5MTY4OGVjOC4uZmVm
NTdlMzRiZTZlZDc1OTIxODdjM2UxZmQ3M2M5ODliZjc5ZGExYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAj
ZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoOjpXZWJF
dmVudCAqKTsKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVs
dGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBX
YWxsVGltZSB0aW1lc3RhbXAsIGRvdWJsZSBmb3JjZSwgR2VzdHVyZVdhc0NhbmNlbGxlZCwgY29u
c3QgU3RyaW5nJiBwb2ludGVyVHlwZSk7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBO
YXRpdmVXZWJNb3VzZUV2ZW50JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwgZmxv
YXQgZGVsdGFZLCBmbG9hdCBkZWx0YVopOwogI2VsaWYgVVNFKExJQldQRSkKICAgICBOYXRpdmVX
ZWJNb3VzZUV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfcG9pbnRlcl9ldmVudCosIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0KaW5kZXggNDYxMzk0MTVhMzFm
YWE1Y2E4MTFhMzZlMDViMDFhNTkwMTVlNWVhNi4uMDg4MGJmODNlMTBkOWNhOWQzNzYwY2Y1YzBi
ZGYwMDdmMzM5NjRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2
ZVdlYk1vdXNlRXZlbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL05hdGl2
ZVdlYk1vdXNlRXZlbnRJT1MubW0KQEAgLTQzLDYgKzQzLDExIEBAIE5hdGl2ZVdlYk1vdXNlRXZl
bnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9uLCB1bnNpZ25l
ZCBzaG9yCiB7CiB9CiAKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYgb3RoZXJFdmVudCwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVopCisgICAgOiBXZWJNb3Vz
ZUV2ZW50KG90aGVyRXZlbnQudHlwZSgpLCBvdGhlckV2ZW50LmJ1dHRvbigpLCBvdGhlckV2ZW50
LmJ1dHRvbnMoKSwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YVgsIGRlbHRhWSwgZGVs
dGFaLCBvdGhlckV2ZW50LmNsaWNrQ291bnQoKSwgb3RoZXJFdmVudC5tb2RpZmllcnMoKSwgb3Ro
ZXJFdmVudC50aW1lc3RhbXAoKSwgb3RoZXJFdmVudC5mb3JjZSgpLCBvdGhlckV2ZW50LnN5bnRo
ZXRpY0NsaWNrVHlwZSgpLCBvdGhlckV2ZW50LnBvaW50ZXJJZCgpLCBvdGhlckV2ZW50LnBvaW50
ZXJUeXBlKCksIG90aGVyRXZlbnQuZ2VzdHVyZVdhc0NhbmNlbGxlZCgpKQoreworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmODI0OGY1YzM1NGQ3ODdi
MDEzY2ZjN2YwYjY2NTI5OTRhMmU0ODczLi5hNjMzOGZhM2RiNjQwNjlkNDM1ZTUxNmIxMTgzNmVm
YTJjOGU5Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTExMTU2LDYgKzExMTU2LDExIEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRFbmFibGVDYXB0
aXZlUG9ydGFsTW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+Y2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnRlcmFjdGFi
bGVSZWdpb25zSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkludGVyYWN0YWJs
ZVJlZ2lvbnNJblJlY3QocmVjdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlUHJveHk6OmFwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBhNDQ3YzcwYzA4NDA2MTQ5MGMxYjQ5NWVmYjE4N2YxNjVh
MWVjY2IyLi41NjIwOTY3MDNjYWM5NGE5MjQ0NmFlOWM4NzBkMjYwNDQ3ZDUwYTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjA1OSw2ICsyMDU5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgY2xhc3NpZnlNb2RhbENvbnRhaW5lckNvbnRyb2xzKFZlY3RvcjxTdHJp
bmc+JiYgdGV4dHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1vZGFs
Q29udGFpbmVyQ29udHJvbFR5cGU+JiYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck1v
ZGFsQ29udGFpbmVyKE9wdGlvblNldDxXZWJDb3JlOjpNb2RhbENvbnRhaW5lckNvbnRyb2xUeXBl
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNb2RhbENvbnRhaW5lckRlY2lzaW9u
KT4mJik7CiAKKyAgICB2b2lkIGludGVyYWN0YWJsZVJlZ2lvbnNJblJlY3QoV2ViQ29yZTo6Rmxv
YXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+
KT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9j
ZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCAyOTYzNjczODlhYjU1ODg2MmRlOWIy
YWQ2MzNlNGY2OTZiODZhYmQ3Li43ZmY3YTdmNTg4M2YzODIzYWM1MTNlNzZmYjBmZjQwNzgyZDkz
Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0yMjIsNyArMjIyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBlbnVtIFN1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29uIDogdWludDhfdCB7CiAgICAg
RWRpdGFibGVSb290SXNUcmFuc3BhcmVudE9yRnVsbHlDbGlwcGVkID0gMSA8PCAwLAogICAgIEZv
Y3VzZWRFbGVtZW50SXNUb29TbWFsbCA9IDEgPDwgMSwKLSAgICBJbnRlcmFjdGlvbklzSGFwcGVu
aW5nID0gMSA8PCAyCisgICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmluZyA9IDEgPDwgMiwKKyAgICBI
b3ZlclBsYXR0ZXJFbmFibGVkID0gMSA8PCAzLAogfTsKIAogc3RydWN0IFdLU2VsZWN0aW9uRHJh
d2luZ0luZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMjZiYzk1NDdmMjhjZGU1ZjAwZTYzOGY0Mzc3
NDRmNThkMzI5MGE1ZC4uYzE0YWM5YTc3YmQwODA5YTNhNTBjYmMzNmY2NWRjM2Y3YjI4NzMxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC04ODUsNiArODg1LDE3IEBAIC0gKHZvaWQpX2NyZWF0ZUFuZENv
bmZpZ3VyZURvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyCiAgICAgW19zaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplciByZXF1aXJlR2VzdHVyZVJlY29nbml6ZXJUb0ZhaWw6X2RvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyLmdldCgpXTsKIH0KIAorLSAodm9pZClfY3JlYXRlQW5kQ29uZmlndXJlSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBpZiAoV0tIb3ZlclBsYXR0
ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgPSBh
ZG9wdE5TKFtbV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5p
dFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9oaWdobGlnaHRMb25nUHJlc3NSZWNv
Z25pemVkOildKTsKKyAgICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNl
dERlbGF5OmhpZ2hsaWdodERlbGF5XTsKKyAgICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVS
ZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25p
emVyOl9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKV07Cit9CisKIC0g
KHZvaWQpX2NyZWF0ZUFuZENvbmZpZ3VyZUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCiB7CiAg
ICAgX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1VJTG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rv
cihfbG9uZ1ByZXNzUmVjb2duaXplZDopXSk7CkBAIC0xMDEzLDExICsxMDI0LDcgQEAgLSAodm9p
ZClzZXRVcEludGVyYWN0aW9uCiAgICAgW190d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2du
aXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpf
dHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCi0gICAgX2hpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1dLSGlnaGxpZ2h0TG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9u
OkBzZWxlY3RvcihfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDopXSk7Ci0gICAgW19oaWdo
bGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxheTpoaWdobGlnaHREZWxheV07
Ci0gICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpz
ZWxmXTsKLSAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotCisgICAgW3NlbGYgX2NyZWF0ZUFuZENvbmZpZ3Vy
ZUhpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyXTsKICAgICBbc2VsZiBfY3JlYXRl
QW5kQ29uZmlndXJlTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXJdOwogCiAjaWYgSEFWRShMSU5L
X1BSRVZJRVcpCkBAIC0xMjg3LDYgKzEyOTQsOSBAQCAtICh2b2lkKWNsZWFuVXBJbnRlcmFjdGlv
bgogICAgIFtzZWxmIF9oYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0OldlYkNvcmU6OkRP
TVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmVdOwogICAgIFtzZWxmIF9jYW5j
ZWxQZW5kaW5nS2V5RXZlbnRIYW5kbGVyXTsKIAorICAgIGlmIChXS0hvdmVyUGxhdHRlckRvbWFp
bi5yb290U2V0dGluZ3MucGxhdHRlckVuYWJsZWRGb3JMb25nUHJlc3MpCisgICAgICAgIFtzZWxm
IF9zdGFydFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6SG92
ZXJQbGF0dGVyRW5hYmxlZF07CisKICAgICBfY2FjaGVkU2VsZWN0ZWRUZXh0UmFuZ2UgPSBuaWw7
CiB9CiAKQEAgLTMwODksMjMgKzMwOTksNDUgQEAgLSAoV2ViS2l0OjpUYXBJZGVudGlmaWVyKW5l
eHRUYXBJZGVudGlmaWVyCiAgICAgcmV0dXJuIF9sYXRlc3RUYXBJRDsKIH0KIAorLSAoQ0dQb2lu
dClfbG9jYXRpb25Gb3JHZXN0dXJlOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKK3sKKyAgICBhdXRvIGxvY2F0aW9uID0gW2dlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9u
SW5WaWV3OnNlbGZdOworCisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5n
cy5lbmFibGVkKQorICAgICAgICByZXR1cm4gW19ob3ZlclBsYXR0ZXIgYWRqdXN0ZWRQb2ludEZv
clBvaW50OmxvY2F0aW9uXTsKKworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKworLSAoQ0dQb2lu
dClfc3RhcnRQb2ludEZvckdlc3R1cmU6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgoreworICAgIGF1dG8gbG9jYXRpb24gPSBbZ2VzdHVyZVJlY29nbml6
ZXIgc3RhcnRQb2ludF07CisKKyAgICBpZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRp
bmdzLmVuYWJsZWQpCisgICAgICAgIHJldHVybiBbX2hvdmVyUGxhdHRlciBhZGp1c3RlZFBvaW50
Rm9yUG9pbnQ6bG9jYXRpb25dOworCisgICAgcmV0dXJuIGxvY2F0aW9uOworfQorCiAtICh2b2lk
KV9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOihVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NFUlQoZ2VzdHVyZVJlY29nbml6ZXIg
PT0gX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyKTsKICAgICBbc2VsZiBfcmVz
ZXRJc0RvdWJsZVRhcFBlbmRpbmddOwogCi0gICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0g
Z2VzdHVyZVJlY29nbml6ZXIuc3RhcnRQb2ludDsKKyAgICBhdXRvIHN0YXJ0UG9pbnQgPSBbc2Vs
ZiBfc3RhcnRQb2ludEZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdOworCisgICAgX2xhc3RJ
bnRlcmFjdGlvbkxvY2F0aW9uID0gc3RhcnRQb2ludDsKIAogICAgIHN3aXRjaCAoW2dlc3R1cmVS
ZWNvZ25pemVyIHN0YXRlXSkgewogICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQmVn
YW46CiAgICAgICAgIF9sb25nUHJlc3NDYW5DbGljayA9IFlFUzsKICAgICAgICAgY2FuY2VsUG90
ZW50aWFsVGFwSWZOZWNlc3Nhcnkoc2VsZik7Ci0gICAgICAgIF9wYWdlLT50YXBIaWdobGlnaHRB
dFBvc2l0aW9uKFtnZXN0dXJlUmVjb2duaXplciBzdGFydFBvaW50XSwgW3NlbGYgbmV4dFRhcElk
ZW50aWZpZXJdKTsKKyAgICAgICAgX3BhZ2UtPnRhcEhpZ2hsaWdodEF0UG9zaXRpb24oc3RhcnRQ
b2ludCwgW3NlbGYgbmV4dFRhcElkZW50aWZpZXJdKTsKICAgICAgICAgX2lzVGFwSGlnaGxpZ2h0
SURWYWxpZCA9IFlFUzsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGVFbmRlZDoKICAgICAgICAgaWYgKF9sb25nUHJlc3NDYW5DbGljayAmJiBfcG9zaXRp
b25JbmZvcm1hdGlvbi5pc0VsZW1lbnQpIHsKLSAgICAgICAgICAgIFtzZWxmIF9hdHRlbXB0U3lu
dGhldGljQ2xpY2tBdExvY2F0aW9uOmdlc3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnQgbW9kaWZp
ZXJGbGFnczpnZXN0dXJlUmVjb2duaXplci5tb2RpZmllckZsYWdzXTsKKyAgICAgICAgICAgIFtz
ZWxmIF9hdHRlbXB0U3ludGhldGljQ2xpY2tBdExvY2F0aW9uOnN0YXJ0UG9pbnQgbW9kaWZpZXJG
bGFnczpnZXN0dXJlUmVjb2duaXplci5tb2RpZmllckZsYWdzXTsKICAgICAgICAgICAgIFtzZWxm
IF9maW5pc2hJbnRlcmFjdGlvbl07CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW3NlbGYg
X2NhbmNlbEludGVyYWN0aW9uXTsKQEAgLTMxMjIsMTQgKzMxNTQsMTQgQEAgLSAodm9pZClfaGln
aGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAq
KWdlc3R1cmVSZWMKIAogLSAodm9pZClfZG91YmxlVGFwUmVjb2duaXplZEZvckRvdWJsZUNsaWNr
OihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKLSAgICBfcGFn
ZS0+aGFuZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50KFdlYkNvcmU6OkludFBvaW50
KGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uKSwgV2ViS2l0Ojp3ZWJFdmVudE1vZGlmaWVyRmxh
Z3MoZ2VzdHVyZVJlY29nbml6ZXIubW9kaWZpZXJGbGFncyksIF9sYXllclRyZWVUcmFuc2FjdGlv
bklkQXRMYXN0SW50ZXJhY3Rpb25TdGFydCk7CisgICAgX3BhZ2UtPmhhbmRsZURvdWJsZVRhcEZv
ckRvdWJsZUNsaWNrQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChbc2VsZiBfbG9jYXRpb25Gb3JH
ZXN0dXJlOmdlc3R1cmVSZWNvZ25pemVyXSksIFdlYktpdDo6d2ViRXZlbnRNb2RpZmllckZsYWdz
KGdlc3R1cmVSZWNvZ25pemVyLm1vZGlmaWVyRmxhZ3MpLCBfbGF5ZXJUcmVlVHJhbnNhY3Rpb25J
ZEF0TGFzdEludGVyYWN0aW9uU3RhcnQpOwogfQogCiAtICh2b2lkKV90d29GaW5nZXJTaW5nbGVU
YXBHZXN0dXJlUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNv
Z25pemVyCiB7CiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAgICBfaXNFeHBl
Y3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gWUVTOwotICAgIF9wYWdlLT5oYW5kbGVUd29GaW5n
ZXJUYXBBdFBvaW50KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXplci5j
ZW50cm9pZCksIFdlYktpdDo6d2ViRXZlbnRNb2RpZmllckZsYWdzKGdlc3R1cmVSZWNvZ25pemVy
Lm1vZGlmaWVyRmxhZ3MgfCBVSUtleU1vZGlmaWVyQ29tbWFuZCksIFtzZWxmIG5leHRUYXBJZGVu
dGlmaWVyXSk7CisgICAgX3BhZ2UtPmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KFtzZWxmIF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6
ZXJdKSwgV2ViS2l0Ojp3ZWJFdmVudE1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29nbml6ZXIubW9k
aWZpZXJGbGFncyB8IFVJS2V5TW9kaWZpZXJDb21tYW5kKSwgW3NlbGYgbmV4dFRhcElkZW50aWZp
ZXJdKTsKIH0KIAogLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCkBAIC0zMTM3LDkgKzMxNjksMTYgQEAg
LSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9s
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplcik7CiAgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQ
ZW5kaW5nXTsKICAgICBbc2VsZiBfY2FuY2VsVG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyXTsK
KworICAgIGlmIChXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlckVuYWJs
ZWRGb3JMb25nUHJlc3MpIHsKKyAgICAgICAgW19ob3ZlclBsYXR0ZXIgZGlkTG9uZ1ByZXNzQXRQ
b2ludDpnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50XTsKKyAgICAgICAgX2xhc3RJbnRlcmFj
dGlvbkxvY2F0aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIuc3RhcnRQb2ludDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIF9wYWdlLT5kaWRSZWNvZ25pemVMb25nUHJlc3MoKTsKIAotICAg
IF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnQ7
CisgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gW3NlbGYgX3N0YXJ0UG9pbnRGb3JHZXN0
dXJlOmdlc3R1cmVSZWNvZ25pemVyXTsKIAogICAgIGlmIChbZ2VzdHVyZVJlY29nbml6ZXIgc3Rh
dGVdID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKSB7CiAgICAgICAgIFNFTCBhY3Rp
b24gPSBbc2VsZiBfYWN0aW9uRm9yTG9uZ1ByZXNzXTsKQEAgLTMxNjMsNyArMzIwMiw2IEBAIC0g
KHZvaWQpX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZOZWNlc3Nh
cnkKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POwogfQogCi0KIC0gKHZvaWQpX3Np
bmdsZVRhcElkZW50aWZpZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2du
aXplcgogewogICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfc2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIpOwpAQCAtMzE3Niw3ICszMjE0LDcgQEAgLSAodm9pZClfc2luZ2xlVGFwSWRl
bnRpZmllZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAg
aWYgKHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRpb24pCiAgICAgICAgIFJFTEVB
U0VfTE9HKFZpZXdHZXN0dXJlcywgIlNpbmdsZSB0YXAgaWRlbnRpZmllZC4gUmVxdWVzdCBkZXRh
aWxzIG9uIHBvdGVudGlhbCB6b29tLiAoJXAsIHBhZ2VQcm94eUlEPSVsbHUpIiwgc2VsZiwgX3Bh
Z2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAotICAgIF9wYWdlLT5wb3RlbnRpYWxUYXBB
dFBvc2l0aW9uKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uLCBzaG91bGRSZXF1ZXN0TWFnbmlm
aWNhdGlvbkluZm9ybWF0aW9uLCBbc2VsZiBuZXh0VGFwSWRlbnRpZmllcl0pOworICAgIF9wYWdl
LT5wb3RlbnRpYWxUYXBBdFBvc2l0aW9uKFtzZWxmIF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVy
ZVJlY29nbml6ZXJdLCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uLCBbc2Vs
ZiBuZXh0VGFwSWRlbnRpZmllcl0pOwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gWUVT
OwogICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CiAgICAgX2lzRXhwZWN0aW5nRmFz
dFNpbmdsZVRhcENvbW1pdCA9ICFfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCkuZW5h
YmxlZDsKQEAgLTMyNTAsNyArMzI4OCw3IEBAIC0gKHZvaWQpX3NpbmdsZVRhcFJlY29nbml6ZWQ6
KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogCiAgICAgQVNTRVJU
KF9wb3RlbnRpYWxUYXBJblByb2dyZXNzKTsKIAotICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlv
biA9IGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uOworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2Nh
dGlvbiA9IFtzZWxmIF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdOwogCiAg
ICAgW3NlbGYgX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZOZWNl
c3NhcnldOwogCkBAIC0zMjgwLDkgKzMzMTgsMTAgQEAgLSAodm9pZClfZG91YmxlVGFwUmVjb2du
aXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgUkVM
RUFTRV9MT0coVmlld0dlc3R1cmVzLCAiSWRlbnRpZmllZCBhIGRvdWJsZSB0YXAgKCVwLCBwYWdl
UHJveHlJRD0lbGx1KSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAK
ICAgICBbc2VsZiBfcmVzZXRJc0RvdWJsZVRhcFBlbmRpbmddOwotICAgIF9sYXN0SW50ZXJhY3Rp
b25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uOwogCi0gICAgX3NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoZ2Vz
dHVyZVJlY29nbml6ZXIubG9jYXRpb24pOworICAgIGF1dG8gbG9jYXRpb24gPSBbc2VsZiBfbG9j
YXRpb25Gb3JHZXN0dXJlOmdlc3R1cmVSZWNvZ25pemVyXTsKKyAgICBfbGFzdEludGVyYWN0aW9u
TG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci0+
aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShsb2NhdGlvbik7CiB9CiAKIC0gKHZvaWQp
X3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nCkBAIC0zMjkyLDE2ICszMzMxLDE3IEBAIC0gKHZvaWQp
X3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nCiAKIC0gKHZvaWQpX25vbkJsb2NraW5nRG91YmxlVGFw
UmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7
Ci0gICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRp
b247CisgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gW3NlbGYgX2xvY2F0aW9uRm9yR2Vz
dHVyZTpnZXN0dXJlUmVjb2duaXplcl07CiAgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IFlFUzsK
IH0KIAogLSAodm9pZClfdHdvRmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJl
UmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgW3NlbGYgX3Jlc2V0SXNEb3Vi
bGVUYXBQZW5kaW5nXTsKLSAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVj
b2duaXplci5sb2NhdGlvbjsKIAotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5o
YW5kbGVSZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9u
KTsKKyAgICBhdXRvIGxvY2F0aW9uID0gW3NlbGYgX2xvY2F0aW9uRm9yR2VzdHVyZTpnZXN0dXJl
UmVjb2duaXplcl07CisgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gbG9jYXRpb247Cisg
ICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlv
bkdlc3R1cmUobG9jYXRpb24pOwogfQogCiAtICh2b2lkKV9hdHRlbXB0U3ludGhldGljQ2xpY2tB
dExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIG1vZGlmaWVyRmxhZ3M6KFVJS2V5TW9kaWZpZXJG
bGFncyltb2RpZmllckZsYWdzCkBAIC03ODUzLDYgKzc4OTMsOCBAQCAtICh2b2lkKV90YXJnZXRl
ZFByZXZpZXdDb250YWluZXJEaWRSZW1vdmVMYXN0U3VidmlldzooV0tUYXJnZXRlZFByZXZpZXdD
b250YWluZQogCiAtIChCT09MKV9zaG91bGRVc2VDb250ZXh0TWVudXMKIHsKKyAgICBpZiAoV0tI
b3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNz
KQorICAgICAgICByZXR1cm4gTk87CiAjaWYgSEFWRShMSU5LX1BSRVZJRVcpICYmIFVTRShVSUNP
TlRFWFRNRU5VKQogICAgIHJldHVybiBsaW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RU
aGF0SGFzVUlDb250ZXh0TWVudUludGVyYWN0aW9uKTsKICNlbmRpZgpAQCAtODIyNCw2ICs4MjY2
LDkgQEAgLSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KXdlYlZpZXdVSURlbGVnYXRlCiAKIC0g
KHZvaWQpc2V0VXBEcmFnQW5kRHJvcEludGVyYWN0aW9ucwogeworICAgIGlmIChXS0hvdmVyUGxh
dHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlckVuYWJsZWRGb3JMb25nUHJlc3MpCisgICAg
ICAgIHJldHVybjsKKwogICAgIF9kcmFnSW50ZXJhY3Rpb24gPSBhZG9wdE5TKFtbVUlEcmFnSW50
ZXJhY3Rpb24gYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOwogICAgIF9kcm9wSW50ZXJh
Y3Rpb24gPSBhZG9wdE5TKFtbVUlEcm9wSW50ZXJhY3Rpb24gYWxsb2NdIGluaXRXaXRoRGVsZWdh
dGU6c2VsZl0pOwogICAgIFtfZHJhZ0ludGVyYWN0aW9uIF9zZXRMaWZ0RGVsYXk6c2VsZi5kcmFn
TGlmdERlbGF5XTsKQEAgLTk2NzMsOSArOTcxOCwxMyBAQCAtICh2b2lkKW1vdXNlR2VzdHVyZVJl
Y29nbml6ZXJDaGFuZ2VkOihXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2du
aQogICAgIGlmIChldmVudC0+dHlwZSgpID09IFdlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlVXAgJiYg
c2VsZi5oYXNIaWRkZW5Db250ZW50RWRpdGFibGUgJiYgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQg
JiYgIXNlbGYud2luZG93LmtleVdpbmRvdykKICAgICAgICAgW3NlbGYud2luZG93IG1ha2VLZXlX
aW5kb3ddOwogCisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5lbmFi
bGVkKSB7CisgICAgICAgIFtfaG92ZXJQbGF0dGVyIGRpZFJlY2VpdmVNb3VzZUV2ZW50OipldmVu
dF07CisgICAgICAgIF9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50KFtfaG92ZXJQbGF0dGVyIGFkanVz
dGVkRXZlbnRGb3JFdmVudDoqZXZlbnRdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IF9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50KCpldmVudCk7Ci0gICAgaWYgKFdLSG92ZXJQbGF0dGVy
RG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyRW5hYmxlZEZvck1vdXNlKQotICAgICAgICBbX2hv
dmVyUGxhdHRlciBzZXRIb3ZlclBvaW50OmV2ZW50LT5wb3NpdGlvbigpXTsKIH0KIAogLSAodm9p
ZClfY29uZmlndXJlTW91c2VHZXN0dXJlUmVjb2duaXplcgpAQCAtOTY5OCw2ICs5NzQ3LDEzIEBA
IC0gKHZvaWQpcG9zaXRpb25JbmZvcm1hdGlvbkZvckhvdmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0
ZXIgKilob3ZlclBsYXR0ZXIgd2l0aFJlCiAgICAgW3NlbGYgZG9BZnRlclBvc2l0aW9uSW5mb3Jt
YXRpb25VcGRhdGU6Y29tcGxldGlvbkhhbmRsZXIgZm9yUmVxdWVzdDpyZXF1ZXN0XTsKIH0KIAor
LSAodm9pZClpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRl
ciAqKXBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpcmVjdCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgX3BhZ2UtPmludGVyYWN0YWJsZVJlZ2lvbnNJblJlY3QocmVjdCwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
Y3RzKTsKKyAgICB9KTsKK30KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNf
Q09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oCmluZGV4IGZkNzkyZmQ2NDI0YTE0NzgxNGY1Nzli
NDY3NWMxN2I4NzU2YzJhMWUuLmIzODMyZDYwNzZkMjI5ODI5YjdkYTg3NzVlMGI3OWJiYTQ3MmZh
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKIAor
I2ltcG9ydCAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorCiBAY2xhc3MgV0tIb3ZlclBsYXR0ZXI7
CiAKIEBwcm90b2NvbCBXS0hvdmVyUGxhdHRlckRlbGVnYXRlCkBAIC0zMiwxMiArMzQsMjAgQEAK
IEByZXF1aXJlZAogLSAodm9pZClwb3NpdGlvbkluZm9ybWF0aW9uRm9ySG92ZXJQbGF0dGVyOihX
S0hvdmVyUGxhdHRlciAqKWhvdmVyUGxhdHRlciB3aXRoUmVxdWVzdDooV2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbikpY29tcGxldGlvbkhh
bmRsZXI7CiAKKy0gKHZvaWQpaW50ZXJhY3RhYmxlUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjooV0tI
b3ZlclBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpcmVj
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4p
KWNvbXBsZXRpb25IYW5kbGVyOworCiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tIb3ZlclBsYXR0ZXIg
OiBOU09iamVjdAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihVSVZpZXcgKil2aWV3
IGRlbGVnYXRlOihpZCA8V0tIb3ZlclBsYXR0ZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CiAKKy0gKHZv
aWQpZGlkUmVjZWl2ZU1vdXNlRXZlbnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVu
dCYpZXZlbnQ7CistICh2b2lkKWRpZExvbmdQcmVzc0F0UG9pbnQ6KFdlYkNvcmU6OkZsb2F0UG9p
bnQpcG9pbnQ7CisKKy0gKFdlYkNvcmU6OkZsb2F0UG9pbnQpYWRqdXN0ZWRQb2ludEZvclBvaW50
OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50OworLSAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2
ZW50KWFkanVzdGVkRXZlbnRGb3JFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2
ZW50JilldmVudDsKKwogLSAodm9pZClkaXNtaXNzUGxhdHRlcldpdGhBbmltYXRpb246KEJPT0wp
d2l0aEFuaW1hdGlvbjsKIAogLSAodm9pZClpbnZhbGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tCmluZGV4IGZiMTNlMDRhMDk5ZTYzZTdmOWQ1
N2NhOGIyZjk2ZDZiNDY5OThiZGYuLjcyZDE3ZmM3YjU2ZDQ0MzBkNTlmMWJlY2U1MGY3ZDdjOWIx
ZGQxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxh
dHRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIu
bW0KQEAgLTYzLDM3ICs2MywyNSBAQCBzdGF0aWMgdm9pZCBhZGRBbmltYXRpb24oQ0FMYXllciAq
bGF5ZXIsIE5TU3RyaW5nICprZXksIGlkIGZyb21WYWx1ZSwgaWQgdG9WYWx1ZQogICAgIFtsYXll
ciBhZGRBbmltYXRpb246YW5pbWF0aW9uLmdldCgpIGZvcktleTprZXldOwogfTsKIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tIb3ZlclBs
YXR0ZXJBZGRpdGlvbnMubW0+Ci0jZWxzZQotc3RhdGljIENHRmxvYXQgc2V0QWRkaXRpb25hbFBs
YXR0ZXJMYXllclByb3BlcnRpZXMoQ0FMYXllciAqLCBDQUxheWVyICopIHsgcmV0dXJuIDA7IH0K
LXN0YXRpYyB2b2lkIGFkZEFkZGl0aW9uYWxJbmNvbWluZ0FuaW1hdGlvbnMoQ0FMYXllciAqLCBD
R0Zsb2F0KSB7IH0KLXN0YXRpYyB2b2lkIGFkZEFkZGl0aW9uYWxEaXNtaXNzYWxBbmltYXRpb25z
KENBTGF5ZXIgKikgeyB9Ci0jZW5kaWYKLQogQGltcGxlbWVudGF0aW9uIFdLSG92ZXJQbGF0dGVy
IHsKICAgICBfX3dlYWsgVUlWaWV3ICpfdmlldzsKICAgICBfX3dlYWsgaWQgPFdLSG92ZXJQbGF0
dGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IF9ob3ZlclBv
aW50OwogCi0gICAgQk9PTCBfaGFzT3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVz
dDsKLSAgICBCT09MIF9oYXNEZWZlcnJlZFBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OwotCiAg
ICAgQk9PTCBfaXNTaXR0aW5nRG93bjsKIAotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBfbGFzdEhv
dmVyQm91bmRzOworICAgIFJldGFpblB0cjxDQUxheWVyPiBfcGxhdHRlckxheWVyOworICAgIFJl
dGFpblB0cjxDQVBvcnRhbExheWVyPiBfc25hcHNob3RMYXllcjsKIAotICAgIFJldGFpblB0cjxD
QVNoYXBlTGF5ZXI+IF9sYXN0TWFza0xheWVyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBfbGFz
dFNoYWRvd0xheWVyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBfbGFzdFBsYXR0ZXJMYXllcjsK
LSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gX2xhc3RCYWNrZ3JvdW5kTGF5ZXI7Ci0gICAgUmV0YWlu
UHRyPENBUG9ydGFsTGF5ZXI+IF9sYXN0U25hcHNob3RMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gX2RlYnVnSW5kaWNhdG9yTGF5ZXI7CisgICAgUmV0YWluUHRyPENBVGV4dExheWVyPiBf
bGlua0NvdW50TGF5ZXI7CisgICAgUmV0YWluUHRyPENBU2hhcGVMYXllcj4gX2xpbmtIaWdobGln
aHRMYXllcjsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooVUlWaWV3ICopdmll
dyBkZWxlZ2F0ZTooaWQgPFdLSG92ZXJQbGF0dGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAg
YXV0byBwYXJhbWV0ZXJzID0gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzOwotICAg
IGlmICghcGFyYW1ldGVycy5wbGF0dGVyRW5hYmxlZEZvck1vdXNlICYmICFwYXJhbWV0ZXJzLnBs
YXR0ZXJFbmFibGVkRm9ySG92ZXIpIHsKKyAgICBpZiAoIXBhcmFtZXRlcnMucGxhdHRlckVuYWJs
ZWRGb3JNb3VzZSAmJiAhcGFyYW1ldGVycy5wbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzcykgewog
ICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CkBAIC0x
MjAsMTc2ICsxMDgsMTQwIEBAIC0gKFdlYkNvcmU6OkZsb2F0UG9pbnQpaG92ZXJQb2ludAogICAg
IHJldHVybiBfaG92ZXJQb2ludDsKIH0KIAotLSAodm9pZClzZXRIb3ZlclBvaW50OihXZWJDb3Jl
OjpGbG9hdFBvaW50KXBvaW50CistICh2b2lkKWRpZFJlY2VpdmVNb3VzZUV2ZW50Oihjb25zdCBX
ZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQmKWV2ZW50CiB7Ci0gICAgX2hvdmVyUG9pbnQgPSBw
b2ludDsKKyAgICBhdXRvIHBvaW50ID0gZXZlbnQucG9zaXRpb24oKTsKIAotICAgIGlmIChfaGFz
T3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCkgewotICAgICAgICBfaGFzRGVm
ZXJyZWRQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9IFlFUzsKKyAgICBpZiAoV0tIb3ZlclBs
YXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTW91c2UpIHsKKyAgICAg
ICAgX2hvdmVyUG9pbnQgPSBwb2ludDsKKyAgICAgICAgW3NlbGYgdXBkYXRlXTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFtzZWxmIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uRm9y
Q3VycmVudEhvdmVyUG9pbnRdOworICAgIGF1dG8gYm91bmRpbmdSZWN0ID0gc2VsZi5wbGF0dGVy
Qm91bmRpbmdSZWN0OworICAgIGlmICghYm91bmRpbmdSZWN0LmNvbnRhaW5zKHBvaW50KSAmJiBw
b2ludCAhPSBXZWJDb3JlOjpGbG9hdFBvaW50IHsgLTEgLCAtMSB9KQorICAgICAgICBbc2VsZiBk
aXNtaXNzUGxhdHRlcldpdGhBbmltYXRpb246WUVTXTsKIH0KIAotLSAodm9pZClyZXF1ZXN0UG9z
aXRpb25JbmZvcm1hdGlvbkZvckN1cnJlbnRIb3ZlclBvaW50CistICh2b2lkKWRpZExvbmdQcmVz
c0F0UG9pbnQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpcG9pbnQKIHsKLSAgICBfaGFzRGVmZXJyZWRQ
b3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9IE5POwotICAgIF9oYXNPdXRzdGFuZGluZ1Bvc2l0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gWUVTOwotICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QgcG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgeyBXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQoX2hvdmVyUG9pbnQpIH07Ci0gICAgLy8gRklYTUU6IFRoaXMgVGV4dEluZGlj
YXRvciBkb2Vzbid0IG5lZWQgYSBzbmFwc2hvdCAoYW5kIGF2b2lkaW5nIGl0IHdvdWxkIGJlIGEg
c2l6YWJsZSBwZXJmb3JtYW5jZSB3aW4pLgotICAgIHBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gWUVTOwotICAgIFtfZGVsZWdhdGUgcG9zaXRpb25JbmZv
cm1hdGlvbkZvckhvdmVyUGxhdHRlcjpzZWxmIHdpdGhSZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOlt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLSG92
ZXJQbGF0dGVyPihzZWxmKV0gKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24gaW5mb3JtYXRpb24pIHsKLSAgICAgICAgW3dlYWtTZWxmIGRpZFJlY2VpdmVQb3NpdGlvbklu
Zm9ybWF0aW9uOmluZm9ybWF0aW9uXTsKLSAgICB9XTsKKyAgICBpZiAoIVdLSG92ZXJQbGF0dGVy
RG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzcykKKyAgICAgICAg
cmV0dXJuOworCisgICAgX2hvdmVyUG9pbnQgPSBwb2ludDsKKyAgICBbc2VsZiB1cGRhdGVdOwog
fQogCi0tICh2b2lkKWRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uOihjb25zdCBXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJilpbmZvcm1hdGlvbgorLSAoV2ViQ29y
ZTo6RmxvYXRSZWN0KXBsYXR0ZXJCb3VuZGluZ1JlY3QKIHsKLSAgICBfaGFzT3V0c3RhbmRpbmdQ
b3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9IE5POwotICAgIGlmIChfaGFzRGVmZXJyZWRQb3Np
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCkKLSAgICAgICAgW3NlbGYgcmVxdWVzdFBvc2l0aW9uSW5m
b3JtYXRpb25Gb3JDdXJyZW50SG92ZXJQb2ludF07Ci0KLSAgICBhdXRvIHByZUluZmxhdGlvbkJv
dW5kaW5nUmVjdCA9IGluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdElu
Um9vdFZpZXdDb29yZGluYXRlczsKLSAgICBpZiAocHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgcHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0ID0gaW5mb3JtYXRpb24u
Ym91bmRzOwotCi0gICAgaWYgKCFpbmZvcm1hdGlvbi5pc0xpbmsgfHwgcHJlSW5mbGF0aW9uQm91
bmRpbmdSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBfbGFzdEhvdmVyQm91bmRzID0geyB9Owot
ICAgICAgICBbc2VsZiBkaXNtaXNzUGxhdHRlcldpdGhBbmltYXRpb246WUVTXTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBhdXRvIHJhZGl1cyA9IFdLSG92ZXJQbGF0dGVyRG9tYWluLnJv
b3RTZXR0aW5ncy5wbGF0dGVyUmFkaXVzOworICAgIHJldHVybiB7IF9ob3ZlclBvaW50IC0gV2Vi
Q29yZTo6RmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSwgV2ViQ29yZTo6RmxvYXRTaXplKHJhZGl1
cyAqIDIsIHJhZGl1cyAqIDIpIH07Cit9CiAKLSAgICBpZiAoX2xhc3RIb3ZlckJvdW5kcyA9PSBw
cmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QgJiYgIV9pc1NpdHRpbmdEb3duKQotICAgICAgICByZXR1
cm47Ci0gICAgX2xhc3RIb3ZlckJvdW5kcyA9IHByZUluZmxhdGlvbkJvdW5kaW5nUmVjdDsKKy0g
KFdlYkNvcmU6OkZsb2F0UmVjdClsaW5rU2VhcmNoUmVjdAoreworICAgIGF1dG8gcmFkaXVzID0g
V0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLmxpbmtTZWFyY2hSYWRpdXM7CisgICAg
cmV0dXJuIHsgX2hvdmVyUG9pbnQgLSBXZWJDb3JlOjpGbG9hdFNpemUocmFkaXVzLCByYWRpdXMp
LCBXZWJDb3JlOjpGbG9hdFNpemUocmFkaXVzICogMiwgcmFkaXVzICogMikgfTsKK30KIAorLSAo
dm9pZCl1cGRhdGUKK3sKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBXS0hvdmVyUGxhdHRlckRvbWFp
bi5yb290U2V0dGluZ3M7Ci0gICAgYXV0byBhbmltYXRlQmV0d2VlblBsYXR0ZXJzID0gcGFyYW1l
dGVycy5hbmltYXRlQmV0d2VlblBsYXR0ZXJzOwotICAgIGlmICghYW5pbWF0ZUJldHdlZW5QbGF0
dGVycykKLSAgICAgICAgW3NlbGYgZGlzbWlzc1BsYXR0ZXJXaXRoQW5pbWF0aW9uOllFU107Ci0K
LSAgICBfaXNTaXR0aW5nRG93biA9IGZhbHNlOwogCi0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IGJv
dW5kaW5nUmVjdDsKLSAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiBpbmZsYXRlZEluZGlj
YXRlZFJlY3RzOwotICAgIGF1dG8gaW5kaWNhdGVkUmVjdHMgPSBpbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXM7Ci0gICAgYXV0byBwbGF0
dGVyUGFkZGluZyA9IHBhcmFtZXRlcnMucGxhdHRlclBhZGRpbmc7Ci0gICAgaWYgKGluZGljYXRl
ZFJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICBib3VuZGluZ1JlY3QgPSBwcmVJbmZsYXRpb25C
b3VuZGluZ1JlY3Q7Ci0gICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBsYXR0ZXJQYWRkaW5n
KTsKLSAgICAgICAgaW5mbGF0ZWRJbmRpY2F0ZWRSZWN0cy5hcHBlbmQocHJlSW5mbGF0aW9uQm91
bmRpbmdSZWN0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IGluZGlj
YXRlZFJlY3RzKSB7Ci0gICAgICAgICAgICByZWN0LmluZmxhdGUocGxhdHRlclBhZGRpbmcpOwot
ICAgICAgICAgICAgaW5mbGF0ZWRJbmRpY2F0ZWRSZWN0cy5hcHBlbmQocmVjdCk7Ci0gICAgICAg
ICAgICBib3VuZGluZ1JlY3QudW5pdGUocmVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAgYm91bmRp
bmdSZWN0Lm1vdmVCeShwcmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QubG9jYXRpb24oKSk7Ci0gICAg
fQorICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z092ZXJsYXkpCisgICAgICAgIFtzZWxmIHVw
ZGF0ZURlYnVnSW5kaWNhdG9yXTsKIAotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IGluZmxhdGVk
UGF0aCA9IFdlYkNvcmU6OlBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3Rz
KGluZmxhdGVkSW5kaWNhdGVkUmVjdHMsIHBhcmFtZXRlcnMucGxhdHRlckNvcm5lclJhZGl1cyku
cGxhdGZvcm1QYXRoKCk7Ci0gICAgYXV0byBwbGF0dGVySW5mbGF0aW9uU2l6ZSA9IHBhcmFtZXRl
cnMucGxhdHRlckluZmxhdGlvblNpemU7Ci0gICAgQ0dGbG9hdCBwbGF0dGVyU2NhbGUgPSBDR0Zs
b2F0TWluKChib3VuZGluZ1JlY3Qud2lkdGgoKSArIHBsYXR0ZXJJbmZsYXRpb25TaXplKSAvIGJv
dW5kaW5nUmVjdC53aWR0aCgpLCAoYm91bmRpbmdSZWN0LmhlaWdodCgpICsgcGxhdHRlckluZmxh
dGlvblNpemUpIC8gYm91bmRpbmdSZWN0LmhlaWdodCgpKTsKLQotICAgIC8vIEZJWE1FOiBDb25z
aWRlciB1c2luZyBVSUtpdCdzIGluLXByb2Nlc3MgcmV0YXJnZXRhYmxlIGFuaW1hdGlvbnMsIGJl
Y2F1c2UgcmVhZGluZyBhbmltYXRpb24gc3RhdGUgZnJvbSB0aGUgcHJlc2VudGF0aW9uIGxheWVy
IGlzIHJhY3kuCi0gICAgYm9vbCBoYWRPbGRMYXllcnMgPSAhIV9sYXN0U2hhZG93TGF5ZXI7Ci0g
ICAgQ0dSZWN0IG9sZFNoYWRvd0JvdW5kcyA9IFtfbGFzdFNoYWRvd0xheWVyIHByZXNlbnRhdGlv
bkxheWVyXS5ib3VuZHM7Ci0gICAgQ0dQb2ludCBvbGRTaGFkb3dQb3NpdGlvbiA9IFtfbGFzdFNo
YWRvd0xheWVyIHByZXNlbnRhdGlvbkxheWVyXS5wb3NpdGlvbjsKLSAgICBDR0Zsb2F0IG9sZFNo
YWRvd09wYWNpdHkgPSBbX2xhc3RTaGFkb3dMYXllciBwcmVzZW50YXRpb25MYXllcl0uc2hhZG93
T3BhY2l0eTsKLSAgICBDR0Zsb2F0IG9sZFNoYWRvd1JhZGl1cyA9IFtfbGFzdFNoYWRvd0xheWVy
IHByZXNlbnRhdGlvbkxheWVyXS5zaGFkb3dSYWRpdXM7Ci0gICAgQ0FUcmFuc2Zvcm0zRCBvbGRT
aGFkb3dTdWJsYXllclRyYW5zZm9ybSA9IF9sYXN0U2hhZG93TGF5ZXIgPyBbX2xhc3RTaGFkb3dM
YXllciBwcmVzZW50YXRpb25MYXllcl0uc3VibGF5ZXJUcmFuc2Zvcm0gOiBDQVRyYW5zZm9ybTNE
SWRlbnRpdHk7Ci0gICAgUmV0YWluUHRyPENHUGF0aFJlZj4gb2xkU2hhZG93UGF0aCA9IFtfbGFz
dFNoYWRvd0xheWVyIHByZXNlbnRhdGlvbkxheWVyXS5zaGFkb3dQYXRoOwotICAgIFJldGFpblB0
cjxDQUxheWVyPiBzaGFkb3cgPSBfbGFzdFNoYWRvd0xheWVyID86IGFkb3B0TlMoW1tDQUxheWVy
IGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBzaGFkb3dGcmFtZSA9IENHUmVjdE9mZnNldChib3Vu
ZGluZ1JlY3QsIHBsYXR0ZXJQYWRkaW5nLCBwbGF0dGVyUGFkZGluZyk7Ci0gICAgW3NoYWRvdyBz
ZXRGcmFtZTpzaGFkb3dGcmFtZV07Ci0gICAgW3NoYWRvdyBzZXRTaGFkb3dDb2xvcjpVSUNvbG9y
LmJsYWNrQ29sb3IuQ0dDb2xvcl07Ci0gICAgW3NoYWRvdyBzZXRTaGFkb3dSYWRpdXM6cGFyYW1l
dGVycy5wbGF0dGVyU2hhZG93UmFkaXVzXTsKLSAgICBbc2hhZG93IHNldFNoYWRvd09mZnNldDpD
R1NpemVaZXJvXTsKLSAgICBbc2hhZG93IHNldFNoYWRvd09wYWNpdHk6cGFyYW1ldGVycy5wbGF0
dGVyU2hhZG93T3BhY2l0eV07Ci0gICAgW3NoYWRvdyBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRy
YW5zZm9ybTNETWFrZVNjYWxlKHBsYXR0ZXJTY2FsZSwgcGxhdHRlclNjYWxlLCAxKV07Ci0gICAg
W3NoYWRvdyBzZXRTaGFkb3dQYXRoOmluZmxhdGVkUGF0aC5nZXQoKV07Ci0gICAgW3NoYWRvdyB3
ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAgIFtbW192aWV3IHN1cGVydmlld10gbGF5ZXJdIGFk
ZFN1YmxheWVyOnNoYWRvdy5nZXQoKV07Ci0KLSAgICBDR1JlY3Qgb2xkUGxhdHRlckJvdW5kcyA9
IFtfbGFzdFBsYXR0ZXJMYXllciBwcmVzZW50YXRpb25MYXllcl0uYm91bmRzOwotICAgIENHUG9p
bnQgb2xkUGxhdHRlclBvc2l0aW9uID0gW19sYXN0UGxhdHRlckxheWVyIHByZXNlbnRhdGlvbkxh
eWVyXS5wb3NpdGlvbjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gcGxhdHRlciA9IF9sYXN0UGxh
dHRlckxheWVyID86IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBi
b3VuZGluZ1JlY3QgPSBzZWxmLnBsYXR0ZXJCb3VuZGluZ1JlY3Q7CisgICAgUmV0YWluUHRyPENB
TGF5ZXI+IHBsYXR0ZXIgPSBfcGxhdHRlckxheWVyID86IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9j
XSBpbml0XSk7CiAgICAgW3BsYXR0ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgYm91bmRp
bmdSZWN0LndpZHRoKCksIGJvdW5kaW5nUmVjdC5oZWlnaHQoKSldOwotICAgIFtwbGF0dGVyIHNl
dFBvc2l0aW9uOkNHUG9pbnRNYWtlKHNoYWRvd0ZyYW1lLnNpemUud2lkdGggLyAyIC0gcGxhdHRl
clBhZGRpbmcsIHNoYWRvd0ZyYW1lLnNpemUuaGVpZ2h0IC8gMiAtIHBsYXR0ZXJQYWRkaW5nKV07
Ci0gICAgYXV0byBvbGRQbGF0dGVyQWRkaXRpb25hbEFuaW1hdGlvblZhbHVlID0gc2V0QWRkaXRp
b25hbFBsYXR0ZXJMYXllclByb3BlcnRpZXMocGxhdHRlci5nZXQoKSwgW19sYXN0UGxhdHRlckxh
eWVyIHByZXNlbnRhdGlvbkxheWVyXSk7CisgICAgW3BsYXR0ZXIgc2V0UG9zaXRpb246Ym91bmRp
bmdSZWN0LmNlbnRlcigpXTsKKyAgICBbcGxhdHRlciBzZXRTaGFkb3dDb2xvcjpVSUNvbG9yLmJs
YWNrQ29sb3IuQ0dDb2xvcl07CisgICAgW3BsYXR0ZXIgc2V0U2hhZG93T2Zmc2V0OkNHU2l6ZU1h
a2UoMCwgMTApXTsKKyAgICBbcGxhdHRlciBzZXRTaGFkb3dPcGFjaXR5OjAuMjVdOworICAgIFtw
bGF0dGVyIHNldFNoYWRvd1JhZGl1czoxMF07CiAgICAgW3BsYXR0ZXIgd2ViX2Rpc2FibGVBbGxB
Y3Rpb25zXTsKLSAgICBbc2hhZG93IGFkZFN1YmxheWVyOnBsYXR0ZXIuZ2V0KCldOwotCi0gICAg
Q0dSZWN0IG9sZE1hc2tCb3VuZHMgPSBbX2xhc3RNYXNrTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJd
LmJvdW5kczsKLSAgICBDR1BvaW50IG9sZE1hc2tQb3NpdGlvbiA9IFtfbGFzdE1hc2tMYXllciBw
cmVzZW50YXRpb25MYXllcl0ucG9zaXRpb247Ci0gICAgUmV0YWluUHRyPENHUGF0aFJlZj4gb2xk
TWFza1BhdGggPSBbX2xhc3RNYXNrTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLnBhdGg7Ci0gICAg
UmV0YWluUHRyPENBU2hhcGVMYXllcj4gbWFzayA9IF9sYXN0TWFza0xheWVyID86IGFkb3B0TlMo
W1tDQVNoYXBlTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbbWFzayBzZXRGaWxsQ29sb3I6W1VJ
Q29sb3IgYmxhY2tDb2xvcl0uQ0dDb2xvcl07Ci0gICAgW21hc2sgc2V0Qm91bmRzOkNHUmVjdE1h
a2UoMCwgMCwgYm91bmRpbmdSZWN0LndpZHRoKCksIGJvdW5kaW5nUmVjdC5oZWlnaHQoKSldOwot
ICAgIFttYXNrIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKGJvdW5kaW5nUmVjdC53aWR0aCgpIC8g
MiArIHBsYXR0ZXJQYWRkaW5nLCBib3VuZGluZ1JlY3QuaGVpZ2h0KCkgLyAyICsgcGxhdHRlclBh
ZGRpbmcpXTsKLSAgICBbbWFzayBzZXRQYXRoOmluZmxhdGVkUGF0aC5nZXQoKV07Ci0gICAgW21h
c2sgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKLQotICAgIENHUmVjdCBvbGRCYWNrZ3JvdW5kQm91
bmRzID0gW19sYXN0QmFja2dyb3VuZExheWVyIHByZXNlbnRhdGlvbkxheWVyXS5ib3VuZHM7Ci0g
ICAgQ0dQb2ludCBvbGRCYWNrZ3JvdW5kUG9zaXRpb24gPSBbX2xhc3RCYWNrZ3JvdW5kTGF5ZXIg
cHJlc2VudGF0aW9uTGF5ZXJdLnBvc2l0aW9uOwotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBv
bGRCYWNrZ3JvdW5kQ29sb3IgPSBbX2xhc3RCYWNrZ3JvdW5kTGF5ZXIgcHJlc2VudGF0aW9uTGF5
ZXJdLmJhY2tncm91bmRDb2xvcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gYmFja2dyb3VuZCA9
IF9sYXN0QmFja2dyb3VuZExheWVyID86IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7
Ci0gICAgW2JhY2tncm91bmQgc2V0RnJhbWU6W3BsYXR0ZXIgYm91bmRzXV07Ci0gICAgW2JhY2tn
cm91bmQgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoaW5mb3JtYXRpb24ubGlua0lu
ZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpLmdldCgpXTsKLSAgICBbYmFja2dyb3Vu
ZCBzZXRNYXNrOm1hc2suZ2V0KCldOwotICAgIFtiYWNrZ3JvdW5kIHdlYl9kaXNhYmxlQWxsQWN0
aW9uc107Ci0gICAgW3BsYXR0ZXIgYWRkU3VibGF5ZXI6YmFja2dyb3VuZC5nZXQoKV07Ci0KLSAg
ICBDR1JlY3Qgb2xkU25hcHNob3RCb3VuZHMgPSBbX2xhc3RTbmFwc2hvdExheWVyIHByZXNlbnRh
dGlvbkxheWVyXS5ib3VuZHM7Ci0gICAgQ0dQb2ludCBvbGRTbmFwc2hvdFBvc2l0aW9uID0gW19s
YXN0U25hcHNob3RMYXllciBwcmVzZW50YXRpb25MYXllcl0ucG9zaXRpb247Ci0gICAgQ0FUcmFu
c2Zvcm0zRCBvbGRTbmFwc2hvdFN1YmxheWVyVHJhbnNmb3JtID0gX2xhc3RTbmFwc2hvdExheWVy
ID8gW19sYXN0U25hcHNob3RMYXllciBwcmVzZW50YXRpb25MYXllcl0uc3VibGF5ZXJUcmFuc2Zv
cm0gOiBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgUmV0YWluUHRyPENBUG9ydGFsTGF5ZXI+
IHNuYXBzaG90ID0gX2xhc3RTbmFwc2hvdExheWVyID86IGFkb3B0TlMoW1tDQVBvcnRhbExheWVy
IGFsbG9jXSBpbml0XSk7CisgICAgW1tbX3ZpZXcgc3VwZXJ2aWV3XSBsYXllcl0gYWRkU3VibGF5
ZXI6cGxhdHRlci5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8Q0FQb3J0YWxMYXllcj4gc25hcHNo
b3QgPSBfc25hcHNob3RMYXllciA/OiBhZG9wdE5TKFtbQ0FQb3J0YWxMYXllciBhbGxvY10gaW5p
dF0pOwogICAgIFtzbmFwc2hvdCBzZXRTb3VyY2VMYXllcjpbX3ZpZXcgbGF5ZXJdXTsKICAgICBb
c25hcHNob3Qgc2V0TWF0Y2hlc1Bvc2l0aW9uOllFU107CiAgICAgW3NuYXBzaG90IHNldE1hdGNo
ZXNUcmFuc2Zvcm06WUVTXTsKKyAgICBbc25hcHNob3Qgc2V0TWFza3NUb0JvdW5kczpZRVNdOwor
ICAgIFtzbmFwc2hvdCBzZXRDb3JuZXJSYWRpdXM6cGFyYW1ldGVycy5wbGF0dGVyUmFkaXVzXTsK
KyAgICBbc25hcHNob3Qgc2V0QmFja2dyb3VuZENvbG9yOlVJQ29sb3IuYmxhY2tDb2xvci5DR0Nv
bG9yXTsKKyAgICBbc25hcHNob3Qgc2V0Qm9yZGVyQ29sb3I6W1VJQ29sb3IgY29sb3JXaXRoV2hp
dGU6MCBhbHBoYTowLjJdLkNHQ29sb3JdOworICAgIFtzbmFwc2hvdCBzZXRCb3JkZXJXaWR0aDox
XTsKICAgICBbc25hcHNob3Qgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UoMC41LCAwLjUpXTsK
LSAgICBbc25hcHNob3Qgc2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2Fs
ZShwbGF0dGVyU2NhbGUsIHBsYXR0ZXJTY2FsZSwgMSldOworICAgIFtzbmFwc2hvdCBzZXRTdWJs
YXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKHBhcmFtZXRlcnMucGxhdHRlclNj
YWxlLCBwYXJhbWV0ZXJzLnBsYXR0ZXJTY2FsZSwgMSldOwogICAgIFtzbmFwc2hvdCBzZXRNYXNr
c1RvQm91bmRzOllFU107CiAgICAgW3NuYXBzaG90IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
Ym91bmRpbmdSZWN0LndpZHRoKCksIGJvdW5kaW5nUmVjdC5oZWlnaHQoKSldOwogICAgIFtzbmFw
c2hvdCB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAgIFtiYWNrZ3JvdW5kIGFkZFN1YmxheWVy
OnNuYXBzaG90LmdldCgpXTsKLQotICAgIEJPT0wgbmVlZHNBbmltYXRlSW4gPSAhX2xhc3RQbGF0
dGVyTGF5ZXIgfHwgX2lzU2l0dGluZ0Rvd247Ci0gICAgaWYgKG5lZWRzQW5pbWF0ZUluKSB7Ci0g
ICAgICAgIGFkZEFuaW1hdGlvbihzaGFkb3cuZ2V0KCksIEAic2hhZG93T3BhY2l0eSIsIEAob2xk
U2hhZG93T3BhY2l0eSksIEAoW3NoYWRvdyBzaGFkb3dPcGFjaXR5XSkpOwotICAgICAgICBhZGRB
bmltYXRpb24oc2hhZG93LmdldCgpLCBAInNoYWRvd1JhZGl1cyIsIEAob2xkU2hhZG93UmFkaXVz
KSwgQChbc2hhZG93IHNoYWRvd1JhZGl1c10pKTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKHNoYWRv
dy5nZXQoKSwgQCJzdWJsYXllclRyYW5zZm9ybSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNm
b3JtM0Q6b2xkU2hhZG93U3VibGF5ZXJUcmFuc2Zvcm1dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRy
YW5zZm9ybTNEOltzaGFkb3cgc3VibGF5ZXJUcmFuc2Zvcm1dXSk7Ci0KLSAgICAgICAgYWRkQW5p
bWF0aW9uKHNuYXBzaG90LmdldCgpLCBAInN1YmxheWVyVHJhbnNmb3JtIiwgW05TVmFsdWUgdmFs
dWVXaXRoQ0FUcmFuc2Zvcm0zRDpvbGRTbmFwc2hvdFN1YmxheWVyVHJhbnNmb3JtXSwgW05TVmFs
dWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpbc25hcHNob3Qgc3VibGF5ZXJUcmFuc2Zvcm1dXSk7
Ci0KLSAgICAgICAgYWRkQWRkaXRpb25hbEluY29taW5nQW5pbWF0aW9ucyhwbGF0dGVyLmdldCgp
LCBvbGRQbGF0dGVyQWRkaXRpb25hbEFuaW1hdGlvblZhbHVlKTsKKyAgICBbcGxhdHRlciBhZGRT
dWJsYXllcjpzbmFwc2hvdC5nZXQoKV07CisKKyAgICBpZiAoX2lzU2l0dGluZ0Rvd24pIHsKKyAg
ICAgICAgaWYgKHBhcmFtZXRlcnMuYW5pbWF0ZVNjYWxlKSB7CisgICAgICAgICAgICBhdXRvIGlu
dmVyc2VTY2FsZSA9IDEuZiAvIHBhcmFtZXRlcnMucGxhdHRlclNjYWxlOworICAgICAgICAgICAg
YWRkQW5pbWF0aW9uKHBsYXR0ZXIuZ2V0KCksIEAidHJhbnNmb3JtIiwgW05TVmFsdWUgdmFsdWVX
aXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52
ZXJzZVNjYWxlLCAxKV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zv
cm0zRElkZW50aXR5XSk7CisgICAgICAgICAgICBhZGRBbmltYXRpb24oc25hcHNob3QuZ2V0KCks
IEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNB
VHJhbnNmb3JtM0RJZGVudGl0eV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6W3Nu
YXBzaG90IHN1YmxheWVyVHJhbnNmb3JtXV0pOworICAgICAgICAgICAgYWRkQW5pbWF0aW9uKHBs
YXR0ZXIuZ2V0KCksIEAic2hhZG93T3BhY2l0eSIsIEAwLCBAKFtwbGF0dGVyIHNoYWRvd09wYWNp
dHldKSk7CisgICAgICAgICAgICBhZGRBbmltYXRpb24oc25hcHNob3QuZ2V0KCksIEAiYm9yZGVy
Q29sb3IiLCAoaWQpVUlDb2xvci5jbGVhckNvbG9yLkNHQ29sb3IsIChpZClbc25hcHNob3QgYm9y
ZGVyQ29sb3JdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhZGRBbmltYXRpb24ocGxh
dHRlci5nZXQoKSwgQCJvcGFjaXR5IiwgQDAsIEAxKTsKICAgICB9CiAKLSAgICBpZiAoYW5pbWF0
ZUJldHdlZW5QbGF0dGVycyAmJiBoYWRPbGRMYXllcnMpIHsKLSAgICAgICAgYWRkQW5pbWF0aW9u
KG1hc2suZ2V0KCksIEAiYm91bmRzIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0Om9sZE1hc2tC
b3VuZHNdLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W21hc2sgYm91bmRzXV0pOwotICAgICAg
ICBhZGRBbmltYXRpb24obWFzay5nZXQoKSwgQCJwb3NpdGlvbiIsIFtOU1ZhbHVlIHZhbHVlV2l0
aENHUG9pbnQ6b2xkTWFza1Bvc2l0aW9uXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpbbWFz
ayBwb3NpdGlvbl1dKTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKG1hc2suZ2V0KCksIEAicGF0aCIs
IChpZClvbGRNYXNrUGF0aC5nZXQoKSwgKGlkKVttYXNrIHBhdGhdKTsKLQotICAgICAgICBhZGRB
bmltYXRpb24oc2hhZG93LmdldCgpLCBAImJvdW5kcyIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVj
dDpvbGRTaGFkb3dCb3VuZHNdLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W3NoYWRvdyBib3Vu
ZHNdXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlvbihzaGFkb3cuZ2V0KCksIEAicG9zaXRpb24iLCBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50Om9sZFNoYWRvd1Bvc2l0aW9uXSwgW05TVmFsdWUgdmFs
dWVXaXRoQ0dQb2ludDpbc2hhZG93IHBvc2l0aW9uXV0pOwotICAgICAgICBhZGRBbmltYXRpb24o
c2hhZG93LmdldCgpLCBAInNoYWRvd1BhdGgiLCAoaWQpb2xkU2hhZG93UGF0aC5nZXQoKSwgKGlk
KVtzaGFkb3cgc2hhZG93UGF0aF0pOwotCi0gICAgICAgIGFkZEFuaW1hdGlvbihwbGF0dGVyLmdl
dCgpLCBAImJvdW5kcyIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpvbGRQbGF0dGVyQm91bmRz
XSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OltwbGF0dGVyIGJvdW5kc11dKTsKLSAgICAgICAg
YWRkQW5pbWF0aW9uKHBsYXR0ZXIuZ2V0KCksIEAicG9zaXRpb24iLCBbTlNWYWx1ZSB2YWx1ZVdp
dGhDR1BvaW50Om9sZFBsYXR0ZXJQb3NpdGlvbl0sIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6
W3BsYXR0ZXIgcG9zaXRpb25dXSk7Ci0KLSAgICAgICAgYWRkQW5pbWF0aW9uKGJhY2tncm91bmQu
Z2V0KCksIEAiYm91bmRzIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0Om9sZEJhY2tncm91bmRC
b3VuZHNdLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W2JhY2tncm91bmQgYm91bmRzXV0pOwot
ICAgICAgICBhZGRBbmltYXRpb24oYmFja2dyb3VuZC5nZXQoKSwgQCJwb3NpdGlvbiIsIFtOU1Zh
bHVlIHZhbHVlV2l0aENHUG9pbnQ6b2xkQmFja2dyb3VuZFBvc2l0aW9uXSwgW05TVmFsdWUgdmFs
dWVXaXRoQ0dQb2ludDpbYmFja2dyb3VuZCBwb3NpdGlvbl1dKTsKKyAgICBfcGxhdHRlckxheWVy
ID0gcGxhdHRlcjsKKyAgICBfc25hcHNob3RMYXllciA9IHNuYXBzaG90OwogCi0gICAgICAgIGFk
ZEFuaW1hdGlvbihzbmFwc2hvdC5nZXQoKSwgQCJib3VuZHMiLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
R1JlY3Q6b2xkU25hcHNob3RCb3VuZHNdLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W3NuYXBz
aG90IGJvdW5kc11dKTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKHNuYXBzaG90LmdldCgpLCBAInBv
c2l0aW9uIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpvbGRTbmFwc2hvdFBvc2l0aW9uXSwg
W05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpbc25hcHNob3QgcG9zaXRpb25dXSk7Ci0gICAgfQor
ICAgIF9pc1NpdHRpbmdEb3duID0gZmFsc2U7Cit9CiAKLSAgICBfbGFzdE1hc2tMYXllciA9IG1h
c2s7Ci0gICAgX2xhc3RTaGFkb3dMYXllciA9IHNoYWRvdzsKLSAgICBfbGFzdFBsYXR0ZXJMYXll
ciA9IHBsYXR0ZXI7Ci0gICAgX2xhc3RCYWNrZ3JvdW5kTGF5ZXIgPSBiYWNrZ3JvdW5kOwotICAg
IF9sYXN0U25hcHNob3RMYXllciA9IHNuYXBzaG90OworLSAodm9pZCl1cGRhdGVEZWJ1Z0luZGlj
YXRvcgoreworICAgIGF1dG8gc2VhcmNoQm91bmRpbmdSZWN0ID0gc2VsZi5saW5rU2VhcmNoUmVj
dDsKKworICAgIFJldGFpblB0cjxDQUxheWVyPiBkZWJ1Z0luZGljYXRvciA9IF9kZWJ1Z0luZGlj
YXRvckxheWVyID86IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgW2RlYnVn
SW5kaWNhdG9yIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIHNlYXJjaEJvdW5kaW5nUmVjdC53
aWR0aCgpLCBzZWFyY2hCb3VuZGluZ1JlY3QuaGVpZ2h0KCkpXTsKKyAgICBbZGVidWdJbmRpY2F0
b3Igc2V0UG9zaXRpb246c2VhcmNoQm91bmRpbmdSZWN0LmNlbnRlcigpXTsKKyAgICBbZGVidWdJ
bmRpY2F0b3Igc2V0Qm9yZGVyQ29sb3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjEgZ3JlZW46MCBi
bHVlOjAgYWxwaGE6MV0uQ0dDb2xvcl07CisgICAgW2RlYnVnSW5kaWNhdG9yIHNldEJvcmRlcldp
ZHRoOjFdOworICAgIFtkZWJ1Z0luZGljYXRvciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAg
IFtbX3ZpZXcgbGF5ZXJdIGFkZFN1YmxheWVyOmRlYnVnSW5kaWNhdG9yLmdldCgpXTsKKworICAg
IFJldGFpblB0cjxDQVRleHRMYXllcj4gbGlua0NvdW50TGF5ZXIgPSBfbGlua0NvdW50TGF5ZXIg
PzogYWRvcHROUyhbW0NBVGV4dExheWVyIGFsbG9jXSBpbml0XSk7CisgICAgW2xpbmtDb3VudExh
eWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIDUwLCAxNildOworICAgIFtsaW5rQ291bnRM
YXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgtMTAsIChzZWFyY2hCb3VuZGluZ1JlY3QuaGVp
Z2h0KCkgLyAyKSAtIDgpXTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0Rm9yZWdyb3VuZENvbG9y
OlVJQ29sb3IuYmxhY2tDb2xvci5DR0NvbG9yXTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0U2hh
ZG93Q29sb3I6VUlDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3JdOworICAgIFtsaW5rQ291bnRMYXll
ciBzZXRTaGFkb3dPZmZzZXQ6Q0dTaXplTWFrZSgwLCAwKV07CisgICAgW2xpbmtDb3VudExheWVy
IHNldFNoYWRvd09wYWNpdHk6MV07CisgICAgW2xpbmtDb3VudExheWVyIHNldFNoYWRvd1JhZGl1
czoyXTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0Rm9udFNpemU6MTZdOworICAgIFtsaW5rQ291
bnRMYXllciBzZXRDb250ZW50c1NjYWxlOjRdOworICAgIFtsaW5rQ291bnRMYXllciBzZXRBbGln
bm1lbnRNb2RlOmtDQUFsaWdubWVudENlbnRlcl07CisgICAgW2xpbmtDb3VudExheWVyIHdlYl9k
aXNhYmxlQWxsQWN0aW9uc107CisgICAgW2RlYnVnSW5kaWNhdG9yIGFkZFN1YmxheWVyOmxpbmtD
b3VudExheWVyLmdldCgpXTsKKworICAgIFJldGFpblB0cjxDQVNoYXBlTGF5ZXI+IGxpbmtIaWdo
bGlnaHRMYXllciA9IF9saW5rSGlnaGxpZ2h0TGF5ZXIgPzogYWRvcHROUyhbW0NBU2hhcGVMYXll
ciBhbGxvY10gaW5pdF0pOworICAgIFtsaW5rSGlnaGxpZ2h0TGF5ZXIgc2V0RmlsbENvbG9yOlVJ
Q29sb3IuY2xlYXJDb2xvci5DR0NvbG9yXTsKKyAgICBbbGlua0hpZ2hsaWdodExheWVyIHNldFN0
cm9rZUNvbG9yOltVSUNvbG9yLmJsdWVDb2xvciBjb2xvcldpdGhBbHBoYUNvbXBvbmVudDowLjNd
LkNHQ29sb3JdOworICAgIFtsaW5rSGlnaGxpZ2h0TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25z
XTsKKyAgICBbW192aWV3IGxheWVyXSBhZGRTdWJsYXllcjpsaW5rSGlnaGxpZ2h0TGF5ZXIuZ2V0
KCldOworCisgICAgW19kZWxlZ2F0ZSBpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVy
OnNlbGYgaW5SZWN0OnNlYXJjaEJvdW5kaW5nUmVjdCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChWZWN0b3I8V2ViQ29y
ZTo6RmxvYXRSZWN0PiByZWN0cykgeworICAgICAgICBpZiAoIV9saW5rQ291bnRMYXllciAmJiAh
X2xpbmtIaWdobGlnaHRMYXllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbX2xp
bmtDb3VudExheWVyIHNldFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIs
IHJlY3RzLnNpemUoKV1dOworCisgICAgICAgIFdlYkNvcmU6OlBhdGggcGF0aDsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVjdHMpCisgICAgICAgICAgICBwYXRoLmFkZFJlY3Qo
cmVjdCk7CisgICAgICAgIFtfbGlua0hpZ2hsaWdodExheWVyIHNldFBhdGg6cGF0aC5wbGF0Zm9y
bVBhdGgoKV07CisgICAgfSkuZ2V0KCldOworCisgICAgX2RlYnVnSW5kaWNhdG9yTGF5ZXIgPSBk
ZWJ1Z0luZGljYXRvcjsKKyAgICBfbGlua0NvdW50TGF5ZXIgPSBsaW5rQ291bnRMYXllcjsKKyAg
ICBfbGlua0hpZ2hsaWdodExheWVyID0gbGlua0hpZ2hsaWdodExheWVyOwogfQogCiAtICh2b2lk
KWRpc21pc3NQbGF0dGVyV2l0aEFuaW1hdGlvbjooQk9PTCl3aXRoQW5pbWF0aW9uCkBAIC0yOTks
NDggKzI1MSw2NCBAQCAtICh2b2lkKWRpc21pc3NQbGF0dGVyV2l0aEFuaW1hdGlvbjooQk9PTCl3
aXRoQW5pbWF0aW9uCiAgICAgX2lzU2l0dGluZ0Rvd24gPSB0cnVlOwogCiAgICAgaWYgKCF3aXRo
QW5pbWF0aW9uKSB7Ci0gICAgICAgIFtfbGFzdFNoYWRvd0xheWVyIHJlbW92ZUZyb21TdXBlcmxh
eWVyXTsKKyAgICAgICAgW19kZWJ1Z0luZGljYXRvckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVy
XTsKKyAgICAgICAgW19wbGF0dGVyTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAg
ICBbX2xpbmtDb3VudExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgW19saW5r
SGlnaGxpZ2h0TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgICAgICBbc2VsZiBjbGVh
ckxheWVyc107CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2NrOltwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaGFkb3dMYXllciA9IF9sYXN0U2hhZG93TGF5ZXJdIHsK
LSAgICAgICAgW3Byb3RlY3RlZFNlbGYgZGlkRmluaXNoQW5pbWF0aW9uRm9yU2hhZG93OnNoYWRv
d0xheWVyLmdldCgpXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W3By
b3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHBsYXR0ZXJMYXllciA9IF9wbGF0dGVyTGF5
ZXJdIHsKKyAgICAgICAgW3Byb3RlY3RlZFNlbGYgZGlkRmluaXNoRGlzbWlzc2FsQW5pbWF0aW9u
OnBsYXR0ZXJMYXllci5nZXQoKV07CiAgICAgfV07CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBX
S0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3M7Ci0gICAgYWRkQW5pbWF0aW9uKF9sYXN0
U2hhZG93TGF5ZXIuZ2V0KCksIEAic2hhZG93T3BhY2l0eSIsIEAoW19sYXN0U2hhZG93TGF5ZXIg
c2hhZG93T3BhY2l0eV0pLCBAMCk7Ci0gICAgYWRkQW5pbWF0aW9uKF9sYXN0U2hhZG93TGF5ZXIu
Z2V0KCksIEAic2hhZG93UmFkaXVzIiwgQChbX2xhc3RTaGFkb3dMYXllciBzaGFkb3dSYWRpdXNd
KSwgQDApOwotICAgIGFkZEFuaW1hdGlvbihfbGFzdFNoYWRvd0xheWVyLmdldCgpLCBAInN1Ymxh
eWVyVHJhbnNmb3JtIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpbX2xhc3RTaGFk
b3dMYXllciBzdWJsYXllclRyYW5zZm9ybV1dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9y
bTNEOkNBVHJhbnNmb3JtM0RJZGVudGl0eV0pOwotICAgIGFkZEFuaW1hdGlvbihfbGFzdFNuYXBz
aG90TGF5ZXIuZ2V0KCksIEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
QVRyYW5zZm9ybTNEOltfbGFzdFNuYXBzaG90TGF5ZXIgc3VibGF5ZXJUcmFuc2Zvcm1dXSwgW05T
VmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRpdHldKTsKLSAg
ICBhZGRBZGRpdGlvbmFsRGlzbWlzc2FsQW5pbWF0aW9ucyhfbGFzdFBsYXR0ZXJMYXllci5nZXQo
KSk7CisgICAgaWYgKHBhcmFtZXRlcnMuYW5pbWF0ZVNjYWxlKSB7CisgICAgICAgIGF1dG8gaW52
ZXJzZVNjYWxlID0gMS5mIC8gcGFyYW1ldGVycy5wbGF0dGVyU2NhbGU7CisgICAgICAgIGFkZEFu
aW1hdGlvbihfcGxhdHRlckxheWVyLmdldCgpLCBAInRyYW5zZm9ybSIsIFtOU1ZhbHVlIHZhbHVl
V2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRElkZW50aXR5XSwgW05TVmFsdWUgdmFsdWVX
aXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52
ZXJzZVNjYWxlLCAxKV0pOworICAgICAgICBhZGRBbmltYXRpb24oX3NuYXBzaG90TGF5ZXIuZ2V0
KCksIEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNE
Oltfc25hcHNob3RMYXllciBzdWJsYXllclRyYW5zZm9ybV1dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
QVRyYW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RJZGVudGl0eV0pOworICAgICAgICBhZGRBbmltYXRp
b24oX3BsYXR0ZXJMYXllci5nZXQoKSwgQCJzaGFkb3dPcGFjaXR5IiwgQChbX3BsYXR0ZXJMYXll
ciBzaGFkb3dPcGFjaXR5XSksIEAwKTsKKyAgICAgICAgYWRkQW5pbWF0aW9uKF9zbmFwc2hvdExh
eWVyLmdldCgpLCBAImJvcmRlckNvbG9yIiwgKGlkKVtfc25hcHNob3RMYXllciBib3JkZXJDb2xv
cl0sIChpZClVSUNvbG9yLmNsZWFyQ29sb3IuQ0dDb2xvcik7CisgICAgfSBlbHNlCisgICAgICAg
IGFkZEFuaW1hdGlvbihfcGxhdHRlckxheWVyLmdldCgpLCBAIm9wYWNpdHkiLCBAMSwgQDApOwog
CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KIAotICAgIGlmICghcGFyYW1ldGVycy5h
bmltYXRlQmV0d2VlblBsYXR0ZXJzKQotICAgICAgICBbc2VsZiBjbGVhckxheWVyc107CistICh2
b2lkKWRpZEZpbmlzaERpc21pc3NhbEFuaW1hdGlvbjooQ0FMYXllciAqKXBsYXR0ZXJMYXllcgor
eworICAgIFtwbGF0dGVyTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogfQogCi0tICh2b2lk
KWRpZEZpbmlzaEFuaW1hdGlvbkZvclNoYWRvdzooQ0FMYXllciAqKXNoYWRvd0xheWVyCistICh2
b2lkKWNsZWFyTGF5ZXJzCiB7Ci0gICAgYXV0byBwYXJhbWV0ZXJzID0gV0tIb3ZlclBsYXR0ZXJE
b21haW4ucm9vdFNldHRpbmdzOwotICAgIGlmICghcGFyYW1ldGVycy5hbmltYXRlQmV0d2VlblBs
YXR0ZXJzKQotICAgICAgICBbc2hhZG93TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAg
IF9kZWJ1Z0luZGljYXRvckxheWVyID0gbmlsOworICAgIF9wbGF0dGVyTGF5ZXIgPSBuaWw7Cisg
ICAgX3NuYXBzaG90TGF5ZXIgPSBuaWw7CisgICAgX2xpbmtDb3VudExheWVyID0gbmlsOworICAg
IF9saW5rSGlnaGxpZ2h0TGF5ZXIgPSBuaWw7Cit9CiAKLSAgICBpZiAoX2lzU2l0dGluZ0Rvd24g
JiYgcGFyYW1ldGVycy5hbmltYXRlQmV0d2VlblBsYXR0ZXJzICYmIHNoYWRvd0xheWVyID09IF9s
YXN0U2hhZG93TGF5ZXIpIHsKLSAgICAgICAgW3NoYWRvd0xheWVyIHJlbW92ZUZyb21TdXBlcmxh
eWVyXTsKLSAgICAgICAgW3NlbGYgY2xlYXJMYXllcnNdOwotICAgIH0KKy0gKFdlYkNvcmU6OkZs
b2F0UG9pbnQpYWRqdXN0ZWRQb2ludEZvclBvaW50OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50
Cit7CisgICAgaWYgKF9pc1NpdHRpbmdEb3duKQorICAgICAgICByZXR1cm4gcG9pbnQ7CisKKyAg
ICBhdXRvIGRlbHRhID0gcG9pbnQgLSBfaG92ZXJQb2ludDsKKyAgICBkZWx0YS5zY2FsZSgxLmYg
LyBXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlclNjYWxlKTsKKyAgICBy
ZXR1cm4gX2hvdmVyUG9pbnQgKyBkZWx0YTsKIH0KIAotLSAodm9pZCljbGVhckxheWVycworLSAo
V2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50KWFkanVzdGVkRXZlbnRGb3JFdmVudDooY29uc3Qg
V2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50JilldmVudAogewotICAgIF9sYXN0TWFza0xheWVy
ID0gbmlsOwotICAgIF9sYXN0U2hhZG93TGF5ZXIgPSBuaWw7Ci0gICAgX2xhc3RQbGF0dGVyTGF5
ZXIgPSBuaWw7Ci0gICAgX2xhc3RCYWNrZ3JvdW5kTGF5ZXIgPSBuaWw7Ci0gICAgX2xhc3RTbmFw
c2hvdExheWVyID0gbmlsOworICAgIGlmIChfaXNTaXR0aW5nRG93bikKKyAgICAgICAgcmV0dXJu
IGV2ZW50OworCisgICAgYXV0byBpbnZlcnNlU2NhbGUgPSAxLmYgLyBXS0hvdmVyUGxhdHRlckRv
bWFpbi5yb290U2V0dGluZ3MucGxhdHRlclNjYWxlOworICAgIGF1dG8gYWRqdXN0ZWRQb2ludCA9
IHJvdW5kZWRJbnRQb2ludChbc2VsZiBhZGp1c3RlZFBvaW50Rm9yUG9pbnQ6ZXZlbnQucG9zaXRp
b24oKV0pOworICAgIHJldHVybiBXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIGFk
anVzdGVkUG9pbnQsIGFkanVzdGVkUG9pbnQsIGV2ZW50LmRlbHRhWCgpICogaW52ZXJzZVNjYWxl
LCBldmVudC5kZWx0YVkoKSAqIGludmVyc2VTY2FsZSwgZXZlbnQuZGVsdGFaKCkgKiBpbnZlcnNl
U2NhbGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLmgKaW5kZXggMWFjOGU3M2Y1NmUzZmU4ZTA2Yjcw
NTc4MTdjYjM4ZWU3OGM1ZTA3ZC4uYTU0MDIwZDhjZTFmMWYwMzY1NTAxZGY1OWJmNjhhMGZiZWNj
MWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0
dGVyUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVy
UGxhdHRlclBhcmFtZXRlcnMuaApAQCAtMzAsMjAgKzMwLDIzIEBACiBAaW50ZXJmYWNlIFdLSG92
ZXJQbGF0dGVyUGFyYW1ldGVycyA6IFBUU2V0dGluZ3MKIAogQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgcGxhdHRlckVuYWJsZWRGb3JNb3VzZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09M
IHBsYXR0ZXJFbmFibGVkRm9ySG92ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBwbGF0
dGVyRW5hYmxlZEZvckxvbmdQcmVzczsKIAotQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQg
cGxhdHRlckNvcm5lclJhZGl1czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHBsYXR0
ZXJQYWRkaW5nOwotQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgcGxhdHRlclNoYWRvd09w
YWNpdHk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBwbGF0dGVyU2hhZG93UmFkaXVz
OwotQHByb3BlcnR5IChub25hdG9taWMpIHVuc2lnbmVkIHBsYXR0ZXJJbmZsYXRpb25TaXplOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGVuYWJsZWQ7CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIHNob3dEZWJ1Z092ZXJsYXk7CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljKSBDR0Zsb2F0IHBsYXR0ZXJSYWRpdXM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9h
dCBwbGF0dGVyU2NhbGU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IGxpbmtTZWFy
Y2hSYWRpdXM7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFuaW1hdGVCZXR3ZWVuUGxh
dHRlcnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBzcHJpbmdNYXNzOwogQHByb3Bl
cnR5IChub25hdG9taWMpIENHRmxvYXQgc3ByaW5nU3RpZmZuZXNzOwogQHByb3BlcnR5IChub25h
dG9taWMpIENHRmxvYXQgc3ByaW5nRGFtcGluZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1Rp
bWVJbnRlcnZhbCBkdXJhdGlvbjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHVzZVNw
cmluZzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZVNwcmluZzsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGFuaW1hdGVTY2FsZTsKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzQWRk
aXRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3Zl
clBsYXR0ZXJQYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92
ZXJQbGF0dGVyUGFyYW1ldGVycy5tbQppbmRleCAwZWYwMzE4ODhlZTc4MzUwYjQ2MWE2M2FjNGM5
MGM0M2FiOTUzOTc3Li43ZTczYTQzZGEzOTllMzUzNjdmNTQzYzVjMDFlOWI4MzAxMDJiZDRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJh
bWV0ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRl
clBhcmFtZXRlcnMubW0KQEAgLTQ5LDEzICs0OSw2IEBAIC0gKGlkKWludGVnZXJNaW5WYWx1ZToo
Q0dGbG9hdCltaW5WYWx1ZSBtYXhWYWx1ZTooQ0dGbG9hdCltYXhWYWx1ZQogCiBAZW5kCiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dLSG92
ZXJQbGF0dGVyUGFyYW1ldGVyc0FkZGl0aW9ucy5tbT4KLSNlbHNlCi1zdGF0aWMgdm9pZCBhZGRB
ZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMoTlNNdXRhYmxlQXJyYXkgKikgeyB9Ci1z
dGF0aWMgdm9pZCBzZXREZWZhdWx0VmFsdWVzRm9yQWRkaXRpb25hbFBsYXR0ZXJMYXlvdXRQYXJh
bWV0ZXJzKFdLSG92ZXJQbGF0dGVyUGFyYW1ldGVycyAqKSB7IH0KLSNlbmRpZgotCiBAaW1wbGVt
ZW50YXRpb24gV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzCiAKIC0gKHZvaWQpc2V0RGVmYXVsdFZh
bHVlcwpAQCAtNjMsMzMgKzU2LDQxIEBAIC0gKHZvaWQpc2V0RGVmYXVsdFZhbHVlcwogICAgIFtz
dXBlciBzZXREZWZhdWx0VmFsdWVzXTsKIAogICAgIF9wbGF0dGVyRW5hYmxlZEZvck1vdXNlID0g
Tk87Ci0gICAgX3BsYXR0ZXJFbmFibGVkRm9ySG92ZXIgPSBOTzsKKyAgICBfcGxhdHRlckVuYWJs
ZWRGb3JMb25nUHJlc3MgPSBOTzsKKworICAgIF9zaG93RGVidWdPdmVybGF5ID0gTk87CiAKLSAg
ICBfcGxhdHRlckNvcm5lclJhZGl1cyA9IDY7Ci0gICAgX3BsYXR0ZXJQYWRkaW5nID0gNTsKLSAg
ICBfcGxhdHRlclNoYWRvd09wYWNpdHkgPSAwLjY7Ci0gICAgX3BsYXR0ZXJTaGFkb3dSYWRpdXMg
PSAxMDsKLSAgICBfcGxhdHRlckluZmxhdGlvblNpemUgPSA4OworICAgIF9wbGF0dGVyUmFkaXVz
ID0gMjAwOworICAgIF9wbGF0dGVyU2NhbGUgPSAyOworCisgICAgX2xpbmtTZWFyY2hSYWRpdXMg
PSA0MDsKIAotICAgIF9hbmltYXRlQmV0d2VlblBsYXR0ZXJzID0gWUVTOwogICAgIF9zcHJpbmdN
YXNzID0gMjsKLSAgICBfc3ByaW5nU3RpZmZuZXNzID0gMTAwOwotICAgIF9zcHJpbmdEYW1waW5n
ID0gNTA7CisgICAgX3NwcmluZ1N0aWZmbmVzcyA9IDIwMDsKKyAgICBfc3ByaW5nRGFtcGluZyA9
IDIwMDsKICAgICBfZHVyYXRpb24gPSAwLjM7CiAgICAgX3VzZVNwcmluZyA9IFlFUzsKKyAgICBf
YW5pbWF0ZVNjYWxlID0gWUVTOworfQogCi0gICAgc2V0RGVmYXVsdFZhbHVlc0ZvckFkZGl0aW9u
YWxQbGF0dGVyTGF5b3V0UGFyYW1ldGVycyhzZWxmKTsKKy0gKEJPT0wpZW5hYmxlZAoreworICAg
IHJldHVybiBfcGxhdHRlckVuYWJsZWRGb3JNb3VzZSB8fCBfcGxhdHRlckVuYWJsZWRGb3JMb25n
UHJlc3M7CiB9CiAKICsgKFBUTW9kdWxlICopc2V0dGluZ3NDb250cm9sbGVyTW9kdWxlCiB7CiAg
ICAgUFRTZWN0aW9uICplbmFibGVtZW50U2VjdGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJv
d3M6QFsKICAgICAgICAgW1BUU3dpdGNoUm93IHJvd1dpdGhUaXRsZTpAIkVuYWJsZSBQbGF0dGVy
IEZvciBNb3VzZSIgdmFsdWVLZXlQYXRoOkAicGxhdHRlckVuYWJsZWRGb3JNb3VzZSJdLAotICAg
ICAgICBbUFRTd2l0Y2hSb3cgcm93V2l0aFRpdGxlOkAiRW5hYmxlIFBsYXR0ZXIgRm9yIEhvdmVy
IiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVyRW5hYmxlZEZvckhvdmVyIl0sCisgICAgICAgIFtQVFN3
aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJFbmFibGUgUGxhdHRlciBGb3IgTG9uZyBQcmVzcyIgdmFs
dWVLZXlQYXRoOkAicGxhdHRlckVuYWJsZWRGb3JMb25nUHJlc3MiXSwKICAgICBdIHRpdGxlOkAi
UGxhdHRlciJdOwogCisgICAgUFRTZWN0aW9uICpkZWJ1Z1NlY3Rpb24gPSBbUFRNb2R1bGUgc2Vj
dGlvbldpdGhSb3dzOkBbCisgICAgICAgIFtQVFN3aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJTaG93
IERlYnVnIE92ZXJsYXkiIHZhbHVlS2V5UGF0aDpAInNob3dEZWJ1Z092ZXJsYXkiXSwKKyAgICBd
IHRpdGxlOkAiRGVidWciXTsKKwogICAgIFBUU2VjdGlvbiAqYW5pbWF0aW9uU2VjdGlvbiA9IFtQ
VE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsKLSAgICAgICAgW1BUU3dpdGNoUm93IHJvd1dpdGhU
aXRsZTpAIkFuaW1hdGUgQmV0d2VlbiBQbGF0dGVycyIgdmFsdWVLZXlQYXRoOkAiYW5pbWF0ZUJl
dHdlZW5QbGF0dGVycyJdLAorICAgICAgICBbUFRTd2l0Y2hSb3cgcm93V2l0aFRpdGxlOkAiQW5p
bWF0ZSBTY2FsZSIgdmFsdWVLZXlQYXRoOkAiYW5pbWF0ZVNjYWxlIl0sCiAgICAgICAgIFtQVFN3
aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJVc2UgU3ByaW5nIiB2YWx1ZUtleVBhdGg6QCJ1c2VTcHJp
bmciXSwKICAgICAgICAgW1tbUFRTbGlkZXJSb3cgcm93V2l0aFRpdGxlOkAiRHVyYXRpb24iIHZh
bHVlS2V5UGF0aDpAImR1cmF0aW9uIl0gbWluVmFsdWU6MCBtYXhWYWx1ZToxXSBjb25kaXRpb246
W05TUHJlZGljYXRlIHByZWRpY2F0ZVdpdGhGb3JtYXQ6QCJ1c2VTcHJpbmcgPT0gRkFMU0UiXV0s
CiAgICAgICAgIFtbUFRFZGl0RmxvYXRSb3cgcm93V2l0aFRpdGxlOkAiU3ByaW5nIE1hc3MiIHZh
bHVlS2V5UGF0aDpAInNwcmluZ01hc3MiXSBjb25kaXRpb246W05TUHJlZGljYXRlIHByZWRpY2F0
ZVdpdGhGb3JtYXQ6QCJ1c2VTcHJpbmcgPT0gVFJVRSJdXSwKQEAgLTk3LDIyICs5OCwyMCBAQCAr
IChQVE1vZHVsZSAqKXNldHRpbmdzQ29udHJvbGxlck1vZHVsZQogICAgICAgICBbW1BURWRpdEZs
b2F0Um93IHJvd1dpdGhUaXRsZTpAIlNwcmluZyBEYW1waW5nIiB2YWx1ZUtleVBhdGg6QCJzcHJp
bmdEYW1waW5nIl0gY29uZGl0aW9uOltOU1ByZWRpY2F0ZSBwcmVkaWNhdGVXaXRoRm9ybWF0OkAi
dXNlU3ByaW5nID09IFRSVUUiXV0sCiAgICAgXSB0aXRsZTpAIkFuaW1hdGlvbiJdOwogCi0gICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwbGF0dGVyTGF5b3V0Um93cyA9IGFkb3B0TlMoW0Bb
Ci0gICAgICAgIFtbUFRTbGlkZXJSb3cgcm93V2l0aFRpdGxlOkAiQ29ybmVyIFJhZGl1cyIgdmFs
dWVLZXlQYXRoOkAicGxhdHRlckNvcm5lclJhZGl1cyJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZh
bHVlOjIwXSwKLSAgICAgICAgW1tQVFNsaWRlclJvdyByb3dXaXRoVGl0bGU6QCJQYWRkaW5nIiB2
YWx1ZUtleVBhdGg6QCJwbGF0dGVyUGFkZGluZyJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZhbHVl
OjIwXSwKLSAgICAgICAgW1tQVFNsaWRlclJvdyByb3dXaXRoVGl0bGU6QCJTaGFkb3cgT3BhY2l0
eSIgdmFsdWVLZXlQYXRoOkAicGxhdHRlclNoYWRvd09wYWNpdHkiXSBtaW5WYWx1ZTowIG1heFZh
bHVlOjFdLAotICAgICAgICBbW1BUU2xpZGVyUm93IHJvd1dpdGhUaXRsZTpAIlNoYWRvdyBSYWRp
dXMiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJTaGFkb3dSYWRpdXMiXSBpbnRlZ2VyTWluVmFsdWU6
MCBtYXhWYWx1ZToyMF0sCi0gICAgICAgIFtbUFRTbGlkZXJSb3cgcm93V2l0aFRpdGxlOkAiSW5m
bGF0aW9uIFNpemUiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJJbmZsYXRpb25TaXplIl0gaW50ZWdl
ck1pblZhbHVlOjAgbWF4VmFsdWU6MzBdCi0gICAgXSBtdXRhYmxlQ29weV0pOwotICAgIGFkZEFk
ZGl0aW9uYWxQbGF0dGVyTGF5b3V0UGFyYW1ldGVycyhwbGF0dGVyTGF5b3V0Um93cy5nZXQoKSk7
CisgICAgUFRTZWN0aW9uICpwbGF0dGVyU2VjdGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJv
d3M6QFsKKyAgICAgICAgW1tQVFNsaWRlclJvdyByb3dXaXRoVGl0bGU6QCJSYWRpdXMiIHZhbHVl
S2V5UGF0aDpAInBsYXR0ZXJSYWRpdXMiXSBpbnRlZ2VyTWluVmFsdWU6MCBtYXhWYWx1ZTo0MDBd
LAorICAgICAgICBbW1BUU2xpZGVyUm93IHJvd1dpdGhUaXRsZTpAIlNjYWxlIiB2YWx1ZUtleVBh
dGg6QCJwbGF0dGVyU2NhbGUiXSBtaW5WYWx1ZTowIG1heFZhbHVlOjRdLAorICAgIF0gdGl0bGU6
QCJQbGF0dGVyIl07CiAKLSAgICBQVFNlY3Rpb24gKnBsYXR0ZXJMYXlvdXRTZWN0aW9uID0gW1BU
TW9kdWxlIHNlY3Rpb25XaXRoUm93czpwbGF0dGVyTGF5b3V0Um93cy5nZXQoKSB0aXRsZTpAIlBs
YXR0ZXIgTGF5b3V0Il07CisgICAgUFRTZWN0aW9uICpsaW5rU2VhcmNoaW5nU2VjdGlvbiA9IFtQ
VE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsKKyAgICAgICAgW1tQVFNsaWRlclJvdyByb3dXaXRo
VGl0bGU6QCJSYWRpdXMiIHZhbHVlS2V5UGF0aDpAImxpbmtTZWFyY2hSYWRpdXMiXSBpbnRlZ2Vy
TWluVmFsdWU6MCBtYXhWYWx1ZToyMDBdLAorICAgIF0gdGl0bGU6QCJMaW5rIFNlYXJjaGluZyJd
OwogCiAgICAgUFRTZWN0aW9uICpyZXN0b3JlRGVmYXVsdHNTZWN0aW9uID0gW1BUTW9kdWxlIHNl
Y3Rpb25XaXRoUm93czpAWwogICAgICAgICBbUFRCdXR0b25Sb3cgcm93V2l0aFRpdGxlOkAiUmVz
dG9yZSBEZWZhdWx0cyIgYWN0aW9uOltQVFJlc3RvcmVEZWZhdWx0U2V0dGluZ3NSb3dBY3Rpb24g
YWN0aW9uXV0KICAgICBdXTsKIAotICAgIHJldHVybiBbUFRNb2R1bGUgbW9kdWxlV2l0aFRpdGxl
Om5pbCBjb250ZW50czpAWyBlbmFibGVtZW50U2VjdGlvbiwgYW5pbWF0aW9uU2VjdGlvbiwgcGxh
dHRlckxheW91dFNlY3Rpb24sIHJlc3RvcmVEZWZhdWx0c1NlY3Rpb24gXV07CisgICAgcmV0dXJu
IFtQVE1vZHVsZSBtb2R1bGVXaXRoVGl0bGU6bmlsIGNvbnRlbnRzOkBbIGVuYWJsZW1lbnRTZWN0
aW9uLCBkZWJ1Z1NlY3Rpb24sIGFuaW1hdGlvblNlY3Rpb24sIHBsYXR0ZXJTZWN0aW9uLCBsaW5r
U2VhcmNoaW5nU2VjdGlvbiwgcmVzdG9yZURlZmF1bHRzU2VjdGlvbiBdXTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiOGY4
ZGU2N2QxMmE2M2Y4MjNhMTA1MTI5ZjA5NzEyOTVlOTlkMmI5Li5hNDgyOWU1NjBkODlkM2UzZjJm
NDJhYjg5MTc0ZmFjOGI0ODM5NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNjI2NSw2ICs2MjY1LDQ1IEBAIHZvaWQgV2ViUGFnZTo6Y2Fu
Y2VsZWRDb21wb3NpdGlvbigpCiAgICAgc2VuZEVkaXRvclN0YXRlVXBkYXRlKCk7CiB9CiAKK3Zv
aWQgV2ViUGFnZTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0Pik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmIGZyYW1lKG1fcGFnZS0+bWFpbkZyYW1l
KCkpOworCisgICAgaWYgKFJlZlB0ciBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAg
ICBmcmFtZVZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IFdlYkNvcmU6OkxheW91dFJlY3QocmVj
dCkgfTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAo
IWRvY3VtZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHsKKyAgICAgICAgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5LAorICAgICAgICBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMKKyAgICB9KTsKKyAgICBkb2N1bWVu
dC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworCisgICAgSGl0VGVzdFJlc3VsdDo6Tm9kZVNl
dCBsaW5rTm9kZXM7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5vZGUgOiByZXN1bHQubGlzdEJh
c2VkVGVzdFJlc3VsdCgpKSB7CisgICAgICAgIGlmIChub2RlLT53aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpKQorICAgICAgICAgICAgbGlua05vZGVzLmFkZChub2RlKTsKKyAgICB9CisK
KyAgICBWZWN0b3I8RmxvYXRSZWN0PiByZWN0czsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5vZGUg
OiBsaW5rTm9kZXMpIHsKKyAgICAgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
CisgICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
cmVjdHMuYXBwZW5kKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICB9
CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0cyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6c2V0
QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlcikKIHsKICAgICBpZiAoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgPT0gbV9h
bHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3ZWM2ZjRhZTM2M2ZiYTgxMTFhYTNkNTdiODkwMzEyZjg3
ZGJhZTkxLi4yOGMyNTBkNTMxMzU4MjViZjVhMDdlZGRjNTEwMTY1YTdhMGYzODEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05MzEsNiArOTMxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkVXBkYXRlQ29tcG9zaXRpb24oKTsKICAgICB2b2lkIGRp
ZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCk7CiAKKyAgICB2b2lkIGludGVyYWN0
YWJsZVJlZ2lvbnNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KT4mJik7CisKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lk
IHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2Vu
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDExOTE4MzdjMzUxZWEyNzk1ZGY5YjFhNWJmMmE0NjQzNjU4ZTBkNGUu
LjBkMGY2YWUzODQyZDk1NzlmNDE1OGNkYzliMDIxNTBlZmJiZjM0YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
NjU3LDQgKzY1Nyw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjZW5kaWYKIAogICAgIFNj
cm9sbFRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pCisKKyAgICBJbnRlcmFjdGFibGVSZWdpb25zSW5SZWN0KFdlYkNvcmU6OkZs
b2F0UmVjdCByZWN0KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdHMpIEFzeW5j
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451340</attachid>
            <date>2022-02-08 23:03:02 -0800</date>
            <delta_ts>2022-02-08 23:26:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236289-20220208230301.patch</filename>
            <type>text/plain</type>
            <size>53856</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1YmNkNTZjNjlhNGZmYzY1
OWE1MjlmNDQzMDM2MmY1MjU5YTcyMWEuLjBhOWY5ZjhlZTI0NzAxZWNkNWNiYWE3ZmM3YzlkOGVh
YTU4NGY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjItMDItMDggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tIb3ZlclBsYXR0ZXIg
c2hvdWxkIHNjYWxlIHVwIHRoZSBwbGF0dGVyIGNvbnRlbnQgdG8gbWFrZSBpdCBlYXNpZXIgdG8g
c2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYy
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgKiBTaGFy
ZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvTmF0aXZlV2Vi
TW91c2VFdmVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6
TmF0aXZlV2ViTW91c2VFdmVudCk6CisgICAgICAgIEFkZCBhIE5hdGl2ZVdlYk1vdXNlRXZlbnQg
Y29uc3RydWN0b3IgdGhhdCB0YWtlcyBtb3N0IHByb3BlcnRpZXMgZnJvbQorICAgICAgICBhbm90
aGVyIGV2ZW50LCBidXQgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIHBvc2l0aW9ucyBhbmQgZGVsdGFz
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRl
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW50
ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIGNvdW50IHRoZSBudW1i
ZXIgb2YgY2xpY2thYmxlIGVsZW1lbnRzIGluIGEgZ2l2ZW4gcmVjdGFuZ2xlLgorICAgICAgICBU
aGlzIGlzIGp1c3QgYSBmaXJzdCBhdHRlbXB0IGF0IHRoZSBoZXVyaXN0aWM7IHRoaXMgd2lsbCBn
ZXQgbW9yZSBjb21wbGV4IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICBBZGQgYSBzZWxlY3Rpb24gYXNz
aXN0YW50IHN1cHByZXNzaW9uIHJlYXNvbiBmb3IgV0tIb3ZlclBsYXR0ZXIuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfY3JlYXRlQW5kQ29uZmlndXJlSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXJdKToKKyAgICAgICAgRmFjdG9yIG91dCBoaWdobGlnaHQtbG9uZy1wcmVzcyBn
ZXN0dXJlIGNyZWF0aW9uIGxpa2UgbG9uZy1wcmVzcy4gQmFpbCBpZiB0aGUgcGxhdHRlciBpcyBl
bmFibGVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0VXBJbnRlcmFjdGlvbl0pOgor
ICAgICAgICBEaXNhYmxlIHRoZSBzZWxlY3Rpb24gYXNzaXN0YW50IGlmIFdLSG92ZXJQbGF0dGVy
IHdhbnRzIHRvIHVzZSBsb25nIHByZXNzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xl
YW5VcEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2xvY2F0aW9uRm9y
R2VzdHVyZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RhcnRQb2ludEZvckdlc3R1
cmU6XSk6CisgICAgICAgIEFkZCBmdW5uZWxzIGZvciBleHRyYWN0aW5nIHRoZSBwcmltYXJ5IGxv
Y2F0aW9uIG9yIHN0YXJ0aW5nIGxvY2F0aW9uIGZyb20KKyAgICAgICAgYSBnZXN0dXJlLCBhbGxv
d2luZyBXS0hvdmVyUGxhdHRlciB0byBtdXRhdGUgaXQgaWYgaXQgaXMgY3VycmVudGx5IGVuZ2Fn
ZWQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2du
aXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZG91YmxlVGFwUmVjb2duaXplZEZv
ckRvdWJsZUNsaWNrOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90d29GaW5nZXJTaW5n
bGVUYXBHZXN0dXJlUmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2lu
Z2xlVGFwSWRlbnRpZmllZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFw
UmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZG91YmxlVGFwUmVjb2du
aXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfbm9uQmxvY2tpbmdEb3VibGVUYXBS
ZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90d29GaW5nZXJEb3VibGVU
YXBSZWNvZ25pemVkOl0pOgorICAgICAgICBBZG9wdCBfbG9jYXRpb25Gb3JHZXN0dXJlL19zdGFy
dFBvaW50Rm9yR2VzdHVyZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9sb25nUHJlc3NS
ZWNvZ25pemVkOl0pOgorICAgICAgICBBZG9wdCBfbG9jYXRpb25Gb3JHZXN0dXJlL19zdGFydFBv
aW50Rm9yR2VzdHVyZS4KKyAgICAgICAgUmVkaXJlY3QgYSByZWNvZ25pemVkIGxvbmcgcHJlc3Mg
dG8gV0tIb3ZlclBsYXR0ZXIgaWYgaXQgd2FudHMgdG8gdXNlIGxvbmcgcHJlc3MuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfc2hvdWxkVXNlQ29udGV4dE1lbnVzXSk6CisgICAgICAgIERp
c2FibGUgY29udGV4dCBtZW51cyBpZiBXS0hvdmVyUGxhdHRlciB3YW50cyB0byB1c2UgbG9uZyBw
cmVzcy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwRHJhZ0FuZERyb3BJbnRlcmFj
dGlvbnNdKToKKyAgICAgICAgRGlzYWJsZSBkcmFnIGFuZCBkcm9wIGlmIFdLSG92ZXJQbGF0dGVy
IHdhbnRzIHRvIHVzZSBsb25nIHByZXNzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbW91
c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6XSk6CisgICAgICAgIEFsbG93IFdLSG92ZXJQbGF0
dGVyIHRvIG11dGF0ZSB0aGUgbG9jYXRpb24gb2YgbW91c2UgZXZlbnRzIGlmIGl0IGlzIGN1cnJl
bnRseSBlbmdhZ2VkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbnVtYmVyT2ZMaW5rc0Zv
ckhvdmVyUGxhdHRlcjppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tI
b3ZlclBsYXR0ZXIubW06CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGluaXRXaXRoVmlldzpk
ZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgZGlkUmVjZWl2ZU1vdXNlRXZl
bnQ6XSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpZExvbmdQcmVzc0F0UG9pbnQ6XSk6
CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHBsYXR0ZXJCb3VuZGluZ1JlY3RdKToKKyAgICAg
ICAgKC1bV0tIb3ZlclBsYXR0ZXIgbGlua1NlYXJjaFJlY3RdKToKKyAgICAgICAgKC1bV0tIb3Zl
clBsYXR0ZXIgdXBkYXRlXSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHVwZGF0ZURlYnVn
SW5kaWNhdG9yXSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpc21pc3NQbGF0dGVyV2l0
aEFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgZGlkRmluaXNoRGlzbWlz
c2FsQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBjbGVhckxheWVyc10p
OgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBhZGp1c3RlZFBvaW50Rm9yUG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGFkanVzdGVkRXZlbnRGb3JFdmVudDpdKToKKyAgICAg
ICAgKHNldEFkZGl0aW9uYWxQbGF0dGVyTGF5ZXJQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKGFkZEFkZGl0aW9uYWxJbmNvbWluZ0FuaW1hdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAo
YWRkQWRkaXRpb25hbERpc21pc3NhbEFuaW1hdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0hvdmVyUGxhdHRlciBzZXRIb3ZlclBvaW50Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0hv
dmVyUGxhdHRlciByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbkZvckN1cnJlbnRIb3ZlclBvaW50
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpZFJlY2VpdmVQb3NpdGlv
bkluZm9ybWF0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBkaWRG
aW5pc2hBbmltYXRpb25Gb3JTaGFkb3c6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5tbToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXJQ
YXJhbWV0ZXJzIHNldERlZmF1bHRWYWx1ZXNdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXJQ
YXJhbWV0ZXJzIGVuYWJsZWRdKToKKyAgICAgICAgKCtbV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJz
IHNldHRpbmdzQ29udHJvbGxlck1vZHVsZV0pOgorICAgICAgICAoYWRkQWRkaXRpb25hbFBsYXR0
ZXJMYXlvdXRQYXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKHNldERlZmF1bHRWYWx1ZXNG
b3JBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICBB
ZGp1c3QgV0tIb3ZlclBsYXR0ZXIgdG8gc2NhbGUgdXAgaXRzIGNvbnRlbnQsIGFuZCBhZGp1c3Qg
dGhlIHNoYXBlCisgICAgICAgIGFuZCBhbmltYXRpb25zLgorCiAyMDIyLTAyLTA3ICBCZW4gTmhh
bSAgPG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQdXNoU2VydmljZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCmluZGV4IGEzYTY1ZDEwMzYxZGIyNGQ1
N2M4OTI0Y2M1MDkxOGM3OTE2ODhlYzguLmZlZjU3ZTM0YmU2ZWQ3NTkyMTg3YzNlMWZkNzNjOTg5
YmY3OWRhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNl
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBOYXRpdmVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CiAgICAgTmF0aXZlV2ViTW91c2VF
dmVudChUeXBlLCBCdXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tD
b3VudCwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wLCBkb3VibGUgZm9y
Y2UsIEdlc3R1cmVXYXNDYW5jZWxsZWQsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUpOworICAg
IE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaKTsKICNl
bGlmIFVTRShMSUJXUEUpCiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChzdHJ1Y3Qgd3BlX2lucHV0
X3BvaW50ZXJfZXZlbnQqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAjZWxpZiBQTEFURk9S
TShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91
c2VFdmVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2
ZW50SU9TLm1tCmluZGV4IDQ2MTM5NDE1YTMxZmFhNWNhODExYTM2ZTA1YjAxYTU5MDE1ZTVlYTYu
LjA4ODBiZjgzZTEwZDljYTlkMzc2MGNmNWMwYmRmMDA3ZjMzOTY0YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCkBAIC00Myw2
ICs0MywxMSBAQCBOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUg
dHlwZSwgQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hvcgogewogfQogCitOYXRpdmVXZWJNb3Vz
ZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmIG90
aGVyRXZlbnQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwg
ZmxvYXQgZGVsdGFaKQorICAgIDogV2ViTW91c2VFdmVudChvdGhlckV2ZW50LnR5cGUoKSwgb3Ro
ZXJFdmVudC5idXR0b24oKSwgb3RoZXJFdmVudC5idXR0b25zKCksIHBvc2l0aW9uLCBnbG9iYWxQ
b3NpdGlvbiwgZGVsdGFYLCBkZWx0YVksIGRlbHRhWiwgb3RoZXJFdmVudC5jbGlja0NvdW50KCks
IG90aGVyRXZlbnQubW9kaWZpZXJzKCksIG90aGVyRXZlbnQudGltZXN0YW1wKCksIG90aGVyRXZl
bnQuZm9yY2UoKSwgb3RoZXJFdmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSwgb3RoZXJFdmVudC5w
b2ludGVySWQoKSwgb3RoZXJFdmVudC5wb2ludGVyVHlwZSgpLCBvdGhlckV2ZW50Lmdlc3R1cmVX
YXNDYW5jZWxsZWQoKSkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZjgyNDhmNWMzNTRkNzg3YjAxM2NmYzdmMGI2NjUyOTk0YTJlNDg3My4uMzA1
ZTJiOWFiZGYzNWRiMGViODZkYWRmM2E5MTMzNDA3MjYyMmVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTE1Niw2ICsxMTE1NiwxMSBAQCBib29sIFdl
YlBhZ2VQcm94eTo6c2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdAogICAgIHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24tPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRl
cyhGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RmxvYXRSZWN0
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKHJl
Y3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBQTEFURk9STShDT0NP
QSkKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggYTQ0N2M3MGMwODQwNjE0OTBjMWI0OTVlZmIxODdmMTY1YTFlY2NiMi4uZjM3OWI5ZDc2
OGUxMTA1ZWQ5NWM2YzFhMmEwYmY2YWVlZmNkOGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwNTksNiArMjA1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
YXNzaWZ5TW9kYWxDb250YWluZXJDb250cm9scyhWZWN0b3I8U3RyaW5nPiYmIHRleHRzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNb2RhbENvbnRhaW5lckNvbnRyb2xU
eXBlPiYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JNb2RhbENvbnRhaW5lcihPcHRp
b25TZXQ8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6TW9kYWxDb250YWluZXJEZWNpc2lvbik+JiYpOwogCisgICAgdm9p
ZCBpbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKFdlYkNvcmU6OkZsb2F0
UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0Pik+
JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMjk2MzY3Mzg5YWI1NTg4NjJkZTliMmFk
NjMzZTRmNjk2Yjg2YWJkNy4uN2ZmN2E3ZjU4ODNmMzgyM2FjNTEzZTc2ZmIwZmY0MDc4MmQ5Mzc4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaApAQCAtMjIyLDcgKzIyMiw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ZW51bSBTdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVk
aXRhYmxlUm9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1
c2VkRWxlbWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmlu
ZyA9IDEgPDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgSG92
ZXJQbGF0dGVyRW5hYmxlZCA9IDEgPDwgMywKIH07CiAKIHN0cnVjdCBXS1NlbGVjdGlvbkRyYXdp
bmdJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDI2YmM5NTQ3ZjI4Y2RlNWYwMGU2MzhmNDM3NzQ0
ZjU4ZDMyOTBhNWQuLjMyMTk0ZTU5MmY1MzAwNjY1NDAxNzMzYWUxNTM3YzdjMjQ1NTg1ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQpAQCAtODg1LDYgKzg4NSwxNyBAQCAtICh2b2lkKV9jcmVhdGVBbmRDb25m
aWd1cmVEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcgogICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJl
Y29nbml6ZXIgcmVxdWlyZUdlc3R1cmVSZWNvZ25pemVyVG9GYWlsOl9kb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX2NyZWF0ZUFuZENvbmZpZ3VyZUhpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCit7CisgICAgaWYgKFdLSG92ZXJQbGF0dGVy
RG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzcykKKyAgICAgICAg
cmV0dXJuOworCisgICAgX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyID0gYWRv
cHROUyhbW1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRX
aXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2du
aXplZDopXSk7CisgICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXRE
ZWxheTpoaWdobGlnaHREZWxheV07CisgICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXpl
cjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworfQorCiAtICh2
b2lkKV9jcmVhdGVBbmRDb25maWd1cmVMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgogewogICAg
IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSUxvbmdQcmVzc0dlc3R1
cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3Io
X2xvbmdQcmVzc1JlY29nbml6ZWQ6KV0pOwpAQCAtMTAxMywxMSArMTAyNCw3IEBAIC0gKHZvaWQp
c2V0VXBJbnRlcmFjdGlvbgogICAgIFtfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6
ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3
b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAotICAgIF9oaWdobGln
aHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tXS0hpZ2hsaWdodExvbmdQ
cmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpA
c2VsZWN0b3IoX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KV0pOwotICAgIFtfaGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsYXk6aGlnaGxpZ2h0RGVsYXldOwot
ICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2Vs
Zl07Ci0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2hpZ2hsaWdodExvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLQorICAgIFtzZWxmIF9jcmVhdGVBbmRDb25maWd1cmVI
aWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcl07CiAgICAgW3NlbGYgX2NyZWF0ZUFu
ZENvbmZpZ3VyZUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyXTsKIAogI2lmIEhBVkUoTElOS19Q
UkVWSUVXKQpAQCAtMTI4Nyw2ICsxMjk0LDkgQEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24K
ICAgICBbc2VsZiBfaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdDpXZWJDb3JlOjpET01Q
YXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlXTsKICAgICBbc2VsZiBfY2FuY2Vs
UGVuZGluZ0tleUV2ZW50SGFuZGxlcl07CiAKKyAgICBpZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4u
cm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNzKQorICAgICAgICBbc2VsZiBf
c3RhcnRTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OkhvdmVy
UGxhdHRlckVuYWJsZWRdOworCiAgICAgX2NhY2hlZFNlbGVjdGVkVGV4dFJhbmdlID0gbmlsOwog
fQogCkBAIC0zMDg5LDIzICszMDk5LDQ5IEBAIC0gKFdlYktpdDo6VGFwSWRlbnRpZmllciluZXh0
VGFwSWRlbnRpZmllcgogICAgIHJldHVybiBfbGF0ZXN0VGFwSUQ7CiB9CiAKKy0gKENHUG9pbnQp
X2xvY2F0aW9uRm9yR2VzdHVyZTooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25p
emVyCit7CisgICAgYXV0byBsb2NhdGlvbiA9IFtnZXN0dXJlUmVjb2duaXplciBsb2NhdGlvbklu
VmlldzpzZWxmXTsKKworI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQorICAgIGlm
IChXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MuZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuIFtfaG92ZXJQbGF0dGVyIGFkanVzdGVkUG9pbnRGb3JQb2ludDpsb2NhdGlvbl07CisjZW5k
aWYKKworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKworLSAoQ0dQb2ludClfc3RhcnRQb2ludEZv
ckdlc3R1cmU6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXpl
cgoreworICAgIGF1dG8gbG9jYXRpb24gPSBbZ2VzdHVyZVJlY29nbml6ZXIgc3RhcnRQb2ludF07
CisKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKKyAgICBpZiAoV0tIb3ZlclBs
YXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLmVuYWJsZWQpCisgICAgICAgIHJldHVybiBbX2hvdmVy
UGxhdHRlciBhZGp1c3RlZFBvaW50Rm9yUG9pbnQ6bG9jYXRpb25dOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gbG9jYXRpb247Cit9CisKIC0gKHZvaWQpX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6
ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewog
ICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIpOwogICAgIFtzZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107CiAKLSAg
ICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50
OworICAgIGF1dG8gc3RhcnRQb2ludCA9IFtzZWxmIF9zdGFydFBvaW50Rm9yR2VzdHVyZTpnZXN0
dXJlUmVjb2duaXplcl07CisKKyAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBzdGFydFBv
aW50OwogCiAgICAgc3dpdGNoIChbZ2VzdHVyZVJlY29nbml6ZXIgc3RhdGVdKSB7CiAgICAgY2Fz
ZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbjoKICAgICAgICAgX2xvbmdQcmVzc0NhbkNs
aWNrID0gWUVTOwogICAgICAgICBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShzZWxmKTsK
LSAgICAgICAgX3BhZ2UtPnRhcEhpZ2hsaWdodEF0UG9zaXRpb24oW2dlc3R1cmVSZWNvZ25pemVy
IHN0YXJ0UG9pbnRdLCBbc2VsZiBuZXh0VGFwSWRlbnRpZmllcl0pOworICAgICAgICBfcGFnZS0+
dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihzdGFydFBvaW50LCBbc2VsZiBuZXh0VGFwSWRlbnRpZmll
cl0pOwogICAgICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVTOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOgogICAgICAgICBpZiAo
X2xvbmdQcmVzc0NhbkNsaWNrICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzRWxlbWVudCkgewot
ICAgICAgICAgICAgW3NlbGYgX2F0dGVtcHRTeW50aGV0aWNDbGlja0F0TG9jYXRpb246Z2VzdHVy
ZVJlY29nbml6ZXIuc3RhcnRQb2ludCBtb2RpZmllckZsYWdzOmdlc3R1cmVSZWNvZ25pemVyLm1v
ZGlmaWVyRmxhZ3NdOworICAgICAgICAgICAgW3NlbGYgX2F0dGVtcHRTeW50aGV0aWNDbGlja0F0
TG9jYXRpb246c3RhcnRQb2ludCBtb2RpZmllckZsYWdzOmdlc3R1cmVSZWNvZ25pemVyLm1vZGlm
aWVyRmxhZ3NdOwogICAgICAgICAgICAgW3NlbGYgX2ZpbmlzaEludGVyYWN0aW9uXTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBbc2VsZiBfY2FuY2VsSW50ZXJhY3Rpb25dOwpAQCAtMzEy
MiwxNCArMzE1OCwxNCBAQCAtICh2b2lkKV9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOihV
SUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlYwogCiAtICh2b2lkKV9kb3Vi
bGVUYXBSZWNvZ25pemVkRm9yRG91YmxlQ2xpY2s6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogewotICAgIF9wYWdlLT5oYW5kbGVEb3VibGVUYXBGb3JEb3VibGVD
bGlja0F0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24p
LCBXZWJLaXQ6OndlYkV2ZW50TW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2duaXplci5tb2RpZmll
ckZsYWdzKSwgX2xheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RJbnRlcmFjdGlvblN0YXJ0KTsK
KyAgICBfcGFnZS0+aGFuZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50KFdlYkNvcmU6
OkludFBvaW50KFtzZWxmIF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdKSwg
V2ViS2l0Ojp3ZWJFdmVudE1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29nbml6ZXIubW9kaWZpZXJG
bGFncyksIF9sYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0SW50ZXJhY3Rpb25TdGFydCk7CiB9
CiAKIC0gKHZvaWQpX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVkOihVSVRhcEdl
c3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBfaXNUYXBIaWdobGln
aHRJRFZhbGlkID0gWUVTOwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSBZ
RVM7Ci0gICAgX3BhZ2UtPmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KGdlc3R1cmVSZWNvZ25pemVyLmNlbnRyb2lkKSwgV2ViS2l0Ojp3ZWJFdmVudE1v
ZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29nbml6ZXIubW9kaWZpZXJGbGFncyB8IFVJS2V5TW9kaWZp
ZXJDb21tYW5kKSwgW3NlbGYgbmV4dFRhcElkZW50aWZpZXJdKTsKKyAgICBfcGFnZS0+aGFuZGxl
VHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW3NlbGYgX2xvY2F0
aW9uRm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXplcl0pLCBXZWJLaXQ6OndlYkV2ZW50TW9kaWZp
ZXJGbGFncyhnZXN0dXJlUmVjb2duaXplci5tb2RpZmllckZsYWdzIHwgVUlLZXlNb2RpZmllckNv
bW1hbmQpLCBbc2VsZiBuZXh0VGFwSWRlbnRpZmllcl0pOwogfQogCiAtICh2b2lkKV9sb25nUHJl
c3NSZWNvZ25pemVkOihVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKQEAgLTMxMzcsOSArMzE3MywxOCBAQCAtICh2b2lkKV9sb25nUHJlc3NSZWNvZ25pemVk
OihVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICAgICBB
U1NFUlQoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyKTsK
ICAgICBbc2VsZiBfcmVzZXRJc0RvdWJsZVRhcFBlbmRpbmddOwogICAgIFtzZWxmIF9jYW5jZWxU
b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXJdOworCisjaWYgSEFWRShVSUtJVF9XSVRIX01PVVNF
X1NVUFBPUlQpCisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0
dGVyRW5hYmxlZEZvckxvbmdQcmVzcykgeworICAgICAgICBbX2hvdmVyUGxhdHRlciBkaWRMb25n
UHJlc3NBdFBvaW50Omdlc3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnRdOworICAgICAgICBfbGFz
dEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50OworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBfcGFnZS0+ZGlkUmVjb2duaXplTG9u
Z1ByZXNzKCk7CiAKLSAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2du
aXplci5zdGFydFBvaW50OworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IFtzZWxmIF9z
dGFydFBvaW50Rm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXplcl07CiAKICAgICBpZiAoW2dlc3R1
cmVSZWNvZ25pemVyIHN0YXRlXSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikgewog
ICAgICAgICBTRUwgYWN0aW9uID0gW3NlbGYgX2FjdGlvbkZvckxvbmdQcmVzc107CkBAIC0zMTYz
LDcgKzMyMDgsNiBAQCAtICh2b2lkKV9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3VibGVUYXBH
ZXN0dXJlc0lmTmVjZXNzYXJ5CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKIH0K
IAotCiAtICh2b2lkKV9zaW5nbGVUYXBJZGVudGlmaWVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVy
ICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NFUlQoZ2VzdHVyZVJlY29nbml6ZXIgPT0g
X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKQEAgLTMxNzYsNyArMzIyMCw3IEBAIC0gKHZv
aWQpX3NpbmdsZVRhcElkZW50aWZpZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJl
UmVjb2duaXplcgogICAgIGlmIChzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9u
KQogICAgICAgICBSRUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMsICJTaW5nbGUgdGFwIGlkZW50aWZp
ZWQuIFJlcXVlc3QgZGV0YWlscyBvbiBwb3RlbnRpYWwgem9vbS4gKCVwLCBwYWdlUHJveHlJRD0l
bGx1KSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKLSAgICBfcGFn
ZS0+cG90ZW50aWFsVGFwQXRQb3NpdGlvbihnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbiwgc2hv
dWxkUmVxdWVzdE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbiwgW3NlbGYgbmV4dFRhcElkZW50aWZp
ZXJdKTsKKyAgICBfcGFnZS0+cG90ZW50aWFsVGFwQXRQb3NpdGlvbihbc2VsZiBfbG9jYXRpb25G
b3JHZXN0dXJlOmdlc3R1cmVSZWNvZ25pemVyXSwgc2hvdWxkUmVxdWVzdE1hZ25pZmljYXRpb25J
bmZvcm1hdGlvbiwgW3NlbGYgbmV4dFRhcElkZW50aWZpZXJdKTsKICAgICBfcG90ZW50aWFsVGFw
SW5Qcm9ncmVzcyA9IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVTOwogICAg
IF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSAhX2RvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyLmdldCgpLmVuYWJsZWQ7CkBAIC0zMjUwLDcgKzMyOTQsNyBAQCAtICh2b2lkKV9zaW5n
bGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6
ZXIKIAogICAgIEFTU0VSVChfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyk7CiAKLSAgICBfbGFzdElu
dGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbjsKKyAgICBfbGFz
dEludGVyYWN0aW9uTG9jYXRpb24gPSBbc2VsZiBfbG9jYXRpb25Gb3JHZXN0dXJlOmdlc3R1cmVS
ZWNvZ25pemVyXTsKIAogICAgIFtzZWxmIF9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3VibGVU
YXBHZXN0dXJlc0lmTmVjZXNzYXJ5XTsKIApAQCAtMzI4MCw5ICszMzI0LDEwIEBAIC0gKHZvaWQp
X2RvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVj
b2duaXplcgogICAgIFJFTEVBU0VfTE9HKFZpZXdHZXN0dXJlcywgIklkZW50aWZpZWQgYSBkb3Vi
bGUgdGFwICglcCwgcGFnZVByb3h5SUQ9JWxsdSkiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigp
LnRvVUludDY0KCkpOwogCiAgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nXTsKLSAg
ICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbjsK
IAotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5oYW5kbGVTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uKTsKKyAgICBhdXRvIGxvY2F0
aW9uID0gW3NlbGYgX2xvY2F0aW9uRm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXplcl07CisgICAg
X2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gbG9jYXRpb247CisgICAgX3NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUobG9jYXRpb24p
OwogfQogCiAtICh2b2lkKV9yZXNldElzRG91YmxlVGFwUGVuZGluZwpAQCAtMzI5MiwxNiArMzMz
NywxNyBAQCAtICh2b2lkKV9yZXNldElzRG91YmxlVGFwUGVuZGluZwogCiAtICh2b2lkKV9ub25C
bG9ja2luZ0RvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplcgogewotICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVS
ZWNvZ25pemVyLmxvY2F0aW9uOworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IFtzZWxm
IF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdOwogICAgIF9pc0RvdWJsZVRh
cFBlbmRpbmcgPSBZRVM7CiB9CiAKIC0gKHZvaWQpX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6
ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIFtz
ZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107Ci0gICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0
aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb247CiAKLSAgICBfc21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlci0+aGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2VzdHVyZShnZXN0dXJlUmVj
b2duaXplci5sb2NhdGlvbik7CisgICAgYXV0byBsb2NhdGlvbiA9IFtzZWxmIF9sb2NhdGlvbkZv
ckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdOworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlv
biA9IGxvY2F0aW9uOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5oYW5kbGVS
ZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKGxvY2F0aW9uKTsKIH0KIAogLSAodm9pZClfYXR0ZW1w
dFN5bnRoZXRpY0NsaWNrQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiBtb2RpZmllckZsYWdz
OihVSUtleU1vZGlmaWVyRmxhZ3MpbW9kaWZpZXJGbGFncwpAQCAtNzg1Myw2ICs3ODk5LDggQEAg
LSAodm9pZClfdGFyZ2V0ZWRQcmV2aWV3Q29udGFpbmVyRGlkUmVtb3ZlTGFzdFN1YnZpZXc6KFdL
VGFyZ2V0ZWRQcmV2aWV3Q29udGFpbmUKIAogLSAoQk9PTClfc2hvdWxkVXNlQ29udGV4dE1lbnVz
CiB7CisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyRW5h
YmxlZEZvckxvbmdQcmVzcykKKyAgICAgICAgcmV0dXJuIE5POwogI2lmIEhBVkUoTElOS19QUkVW
SUVXKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKICAgICByZXR1cm4gbGlua2VkT25PckFmdGVyKFNE
S1ZlcnNpb246OkZpcnN0VGhhdEhhc1VJQ29udGV4dE1lbnVJbnRlcmFjdGlvbik7CiAjZW5kaWYK
QEAgLTgyMjQsNiArODI3Miw5IEBAIC0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPil3ZWJWaWV3
VUlEZWxlZ2F0ZQogCiAtICh2b2lkKXNldFVwRHJhZ0FuZERyb3BJbnRlcmFjdGlvbnMKIHsKKyAg
ICBpZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9y
TG9uZ1ByZXNzKQorICAgICAgICByZXR1cm47CisKICAgICBfZHJhZ0ludGVyYWN0aW9uID0gYWRv
cHROUyhbW1VJRHJhZ0ludGVyYWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNlbGZdKTsK
ICAgICBfZHJvcEludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJRHJvcEludGVyYWN0aW9uIGFsbG9j
XSBpbml0V2l0aERlbGVnYXRlOnNlbGZdKTsKICAgICBbX2RyYWdJbnRlcmFjdGlvbiBfc2V0TGlm
dERlbGF5OnNlbGYuZHJhZ0xpZnREZWxheV07CkBAIC05NjczLDkgKzk3MjQsMTMgQEAgLSAodm9p
ZCltb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVy
ICopZ2VzdHVyZVJlY29nbmkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBXZWJLaXQ6OldlYkV2
ZW50OjpNb3VzZVVwICYmIHNlbGYuaGFzSGlkZGVuQ29udGVudEVkaXRhYmxlICYmIHNlbGYuX2hh
c0ZvY3VzZWRFbGVtZW50ICYmICFzZWxmLndpbmRvdy5rZXlXaW5kb3cpCiAgICAgICAgIFtzZWxm
LndpbmRvdyBtYWtlS2V5V2luZG93XTsKIAorICAgIGlmIChXS0hvdmVyUGxhdHRlckRvbWFpbi5y
b290U2V0dGluZ3MuZW5hYmxlZCkgeworICAgICAgICBbX2hvdmVyUGxhdHRlciBkaWRSZWNlaXZl
TW91c2VFdmVudDoqZXZlbnRdOworICAgICAgICBfcGFnZS0+aGFuZGxlTW91c2VFdmVudChbX2hv
dmVyUGxhdHRlciBhZGp1c3RlZEV2ZW50Rm9yRXZlbnQ6KmV2ZW50XSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBfcGFnZS0+aGFuZGxlTW91c2VFdmVudCgqZXZlbnQpOwotICAgIGlm
IChXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlckVuYWJsZWRGb3JNb3Vz
ZSkKLSAgICAgICAgW19ob3ZlclBsYXR0ZXIgc2V0SG92ZXJQb2ludDpldmVudC0+cG9zaXRpb24o
KV07CiB9CiAKIC0gKHZvaWQpX2NvbmZpZ3VyZU1vdXNlR2VzdHVyZVJlY29nbml6ZXIKQEAgLTk2
OTgsNiArOTc1MywxMyBAQCAtICh2b2lkKXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JIb3ZlclBsYXR0
ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIHdpdGhSZQogICAgIFtzZWxmIGRvQWZ0
ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOmNvbXBsZXRpb25IYW5kbGVyIGZvclJlcXVlc3Q6
cmVxdWVzdF07CiB9CiAKKy0gKHZvaWQpaW50ZXJhY3RhYmxlUmVnaW9uc0ZvckhvdmVyUGxhdHRl
cjooV0tIb3ZlclBsYXR0ZXIgKilwbGF0dGVyIGluUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXJl
Y3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pbnRlcmFjdGFibGVSZWdpb25zSW5S
b290Vmlld0Nvb3JkaW5hdGVzKHJlY3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0cyk7CisgICAgfSk7Cit9CisKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNP
TlRFWFRNRU5VKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92
ZXJQbGF0dGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIu
aAppbmRleCBmZDc5MmZkNjQyNGExNDc4MTRmNTc5YjQ2NzVjMTdiODc1NmMyYTFlLi5iMzgzMmQ2
MDc2ZDIyOTgyOWI3ZGE4Nzc1ZTBiNzliYmE0NzJmYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjaWYgSEFW
RShVSUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCiAKKyNpbXBvcnQgIk5hdGl2ZVdlYk1vdXNlRXZl
bnQuaCIKKwogQGNsYXNzIFdLSG92ZXJQbGF0dGVyOwogCiBAcHJvdG9jb2wgV0tIb3ZlclBsYXR0
ZXJEZWxlZ2F0ZQpAQCAtMzIsMTIgKzM0LDIwIEBACiBAcmVxdWlyZWQKIC0gKHZvaWQpcG9zaXRp
b25JbmZvcm1hdGlvbkZvckhvdmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilob3ZlclBsYXR0
ZXIgd2l0aFJlcXVlc3Q6KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKXJl
cXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24pKWNvbXBsZXRpb25IYW5kbGVyOwogCistICh2b2lkKWludGVyYWN0
YWJsZVJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVy
IGluUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KSljb21wbGV0aW9uSGFuZGxlcjsKKwogQGVu
ZAogCiBAaW50ZXJmYWNlIFdLSG92ZXJQbGF0dGVyIDogTlNPYmplY3QKIAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVmlldzooVUlWaWV3ICopdmlldyBkZWxlZ2F0ZTooaWQgPFdLSG92ZXJQbGF0
dGVyRGVsZWdhdGU+KWRlbGVnYXRlOwogCistICh2b2lkKWRpZFJlY2VpdmVNb3VzZUV2ZW50Oihj
b25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQmKWV2ZW50OworLSAodm9pZClkaWRMb25n
UHJlc3NBdFBvaW50OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50OworCistIChXZWJDb3JlOjpG
bG9hdFBvaW50KWFkanVzdGVkUG9pbnRGb3JQb2ludDooV2ViQ29yZTo6RmxvYXRQb2ludClwb2lu
dDsKKy0gKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudClhZGp1c3RlZEV2ZW50Rm9yRXZlbnQ6
KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudCYpZXZlbnQ7CisKIC0gKHZvaWQpZGlz
bWlzc1BsYXR0ZXJXaXRoQW5pbWF0aW9uOihCT09MKXdpdGhBbmltYXRpb247CiAKIC0gKHZvaWQp
aW52YWxpZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hv
dmVyUGxhdHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRl
ci5tbQppbmRleCBmYjEzZTA0YTA5OWU2M2U3ZjlkNTdjYThiMmY5NmQ2YjQ2OTk4YmRmLi43OWEz
OTg4MTEzYmRiZWJkZjcwYTQxNDkxNTM2YjBmNDFkNGIxYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tCkBAIC02MywzNyArNjMsMjUgQEAgc3Rh
dGljIHZvaWQgYWRkQW5pbWF0aW9uKENBTGF5ZXIgKmxheWVyLCBOU1N0cmluZyAqa2V5LCBpZCBm
cm9tVmFsdWUsIGlkIHRvVmFsdWUKICAgICBbbGF5ZXIgYWRkQW5pbWF0aW9uOmFuaW1hdGlvbi5n
ZXQoKSBmb3JLZXk6a2V5XTsKIH07CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2lt
cG9ydCA8V2ViS2l0QWRkaXRpb25zL1dLSG92ZXJQbGF0dGVyQWRkaXRpb25zLm1tPgotI2Vsc2UK
LXN0YXRpYyBDR0Zsb2F0IHNldEFkZGl0aW9uYWxQbGF0dGVyTGF5ZXJQcm9wZXJ0aWVzKENBTGF5
ZXIgKiwgQ0FMYXllciAqKSB7IHJldHVybiAwOyB9Ci1zdGF0aWMgdm9pZCBhZGRBZGRpdGlvbmFs
SW5jb21pbmdBbmltYXRpb25zKENBTGF5ZXIgKiwgQ0dGbG9hdCkgeyB9Ci1zdGF0aWMgdm9pZCBh
ZGRBZGRpdGlvbmFsRGlzbWlzc2FsQW5pbWF0aW9ucyhDQUxheWVyICopIHsgfQotI2VuZGlmCi0K
IEBpbXBsZW1lbnRhdGlvbiBXS0hvdmVyUGxhdHRlciB7CiAgICAgX193ZWFrIFVJVmlldyAqX3Zp
ZXc7CiAgICAgX193ZWFrIGlkIDxXS0hvdmVyUGxhdHRlckRlbGVnYXRlPiBfZGVsZWdhdGU7CiAg
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBfaG92ZXJQb2ludDsKIAotICAgIEJPT0wgX2hhc091dHN0
YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3Q7Ci0gICAgQk9PTCBfaGFzRGVmZXJyZWRQ
b3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsKLQogICAgIEJPT0wgX2lzU2l0dGluZ0Rvd247CiAK
LSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgX2xhc3RIb3ZlckJvdW5kczsKKyAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gX3BsYXR0ZXJMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FQb3J0YWxMYXllcj4gX3Nu
YXBzaG90TGF5ZXI7CiAKLSAgICBSZXRhaW5QdHI8Q0FTaGFwZUxheWVyPiBfbGFzdE1hc2tMYXll
cjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gX2xhc3RTaGFkb3dMYXllcjsKLSAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gX2xhc3RQbGF0dGVyTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IF9s
YXN0QmFja2dyb3VuZExheWVyOwotICAgIFJldGFpblB0cjxDQVBvcnRhbExheWVyPiBfbGFzdFNu
YXBzaG90TGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IF9kZWJ1Z0luZGljYXRvckxheWVy
OworICAgIFJldGFpblB0cjxDQVRleHRMYXllcj4gX2xpbmtDb3VudExheWVyOworICAgIFJldGFp
blB0cjxDQVNoYXBlTGF5ZXI+IF9saW5rSGlnaGxpZ2h0TGF5ZXI7CiB9CiAKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFZpZXc6KFVJVmlldyAqKXZpZXcgZGVsZWdhdGU6KGlkIDxXS0hvdmVyUGxh
dHRlckRlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IFdLSG92ZXJQ
bGF0dGVyRG9tYWluLnJvb3RTZXR0aW5nczsKLSAgICBpZiAoIXBhcmFtZXRlcnMucGxhdHRlckVu
YWJsZWRGb3JNb3VzZSAmJiAhcGFyYW1ldGVycy5wbGF0dGVyRW5hYmxlZEZvckhvdmVyKSB7Cisg
ICAgaWYgKCFwYXJhbWV0ZXJzLnBsYXR0ZXJFbmFibGVkRm9yTW91c2UgJiYgIXBhcmFtZXRlcnMu
cGxhdHRlckVuYWJsZWRGb3JMb25nUHJlc3MpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgfQpAQCAtMTIwLDE3NiArMTA4LDE0MCBAQCAtIChXZWJD
b3JlOjpGbG9hdFBvaW50KWhvdmVyUG9pbnQKICAgICByZXR1cm4gX2hvdmVyUG9pbnQ7CiB9CiAK
LS0gKHZvaWQpc2V0SG92ZXJQb2ludDooV2ViQ29yZTo6RmxvYXRQb2ludClwb2ludAorLSAodm9p
ZClkaWRSZWNlaXZlTW91c2VFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50
JilldmVudAogewotICAgIF9ob3ZlclBvaW50ID0gcG9pbnQ7CisgICAgYXV0byBwb2ludCA9IGV2
ZW50LnBvc2l0aW9uKCk7CiAKLSAgICBpZiAoX2hhc091dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1h
dGlvblJlcXVlc3QpIHsKLSAgICAgICAgX2hhc0RlZmVycmVkUG9zaXRpb25JbmZvcm1hdGlvblJl
cXVlc3QgPSBZRVM7CisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5w
bGF0dGVyRW5hYmxlZEZvck1vdXNlKSB7CisgICAgICAgIF9ob3ZlclBvaW50ID0gcG9pbnQ7Cisg
ICAgICAgIFtzZWxmIHVwZGF0ZV07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBbc2Vs
ZiByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbkZvckN1cnJlbnRIb3ZlclBvaW50XTsKKyAgICBh
dXRvIGJvdW5kaW5nUmVjdCA9IHNlbGYucGxhdHRlckJvdW5kaW5nUmVjdDsKKyAgICBpZiAoIWJv
dW5kaW5nUmVjdC5jb250YWlucyhwb2ludCkgJiYgcG9pbnQgIT0gV2ViQ29yZTo6RmxvYXRQb2lu
dCB7IC0xLCAtMSB9KQorICAgICAgICBbc2VsZiBkaXNtaXNzUGxhdHRlcldpdGhBbmltYXRpb246
WUVTXTsKIH0KIAotLSAodm9pZClyZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbkZvckN1cnJlbnRI
b3ZlclBvaW50CistICh2b2lkKWRpZExvbmdQcmVzc0F0UG9pbnQ6KFdlYkNvcmU6OkZsb2F0UG9p
bnQpcG9pbnQKIHsKLSAgICBfaGFzRGVmZXJyZWRQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9
IE5POwotICAgIF9oYXNPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gWUVT
OwotICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcG9zaXRpb25JbmZv
cm1hdGlvblJlcXVlc3QgeyBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2hvdmVyUG9pbnQpIH07
Ci0gICAgLy8gRklYTUU6IFRoaXMgVGV4dEluZGljYXRvciBkb2Vzbid0IG5lZWQgYSBzbmFwc2hv
dCAoYW5kIGF2b2lkaW5nIGl0IHdvdWxkIGJlIGEgc2l6YWJsZSBwZXJmb3JtYW5jZSB3aW4pLgot
ICAgIHBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gWUVT
OwotICAgIFtfZGVsZWdhdGUgcG9zaXRpb25JbmZvcm1hdGlvbkZvckhvdmVyUGxhdHRlcjpzZWxm
IHdpdGhSZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVy
Olt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLSG92ZXJQbGF0dGVyPihzZWxmKV0gKFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pIHsKLSAgICAgICAg
W3dlYWtTZWxmIGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uOmluZm9ybWF0aW9uXTsKLSAg
ICB9XTsKKyAgICBpZiAoIVdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVy
RW5hYmxlZEZvckxvbmdQcmVzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hvdmVyUG9pbnQg
PSBwb2ludDsKKyAgICBbc2VsZiB1cGRhdGVdOwogfQogCi0tICh2b2lkKWRpZFJlY2VpdmVQb3Np
dGlvbkluZm9ybWF0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJilpbmZvcm1hdGlvbgorLSAoV2ViQ29yZTo6RmxvYXRSZWN0KXBsYXR0ZXJCb3VuZGlu
Z1JlY3QKIHsKLSAgICBfaGFzT3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9
IE5POwotICAgIGlmIChfaGFzRGVmZXJyZWRQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCkKLSAg
ICAgICAgW3NlbGYgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb25Gb3JDdXJyZW50SG92ZXJQb2lu
dF07Ci0KLSAgICBhdXRvIHByZUluZmxhdGlvbkJvdW5kaW5nUmVjdCA9IGluZm9ybWF0aW9uLmxp
bmtJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSAgICBp
ZiAocHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcHJlSW5mbGF0
aW9uQm91bmRpbmdSZWN0ID0gaW5mb3JtYXRpb24uYm91bmRzOwotCi0gICAgaWYgKCFpbmZvcm1h
dGlvbi5pc0xpbmsgfHwgcHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0LmlzRW1wdHkoKSkgewotICAg
ICAgICBfbGFzdEhvdmVyQm91bmRzID0geyB9OwotICAgICAgICBbc2VsZiBkaXNtaXNzUGxhdHRl
cldpdGhBbmltYXRpb246WUVTXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIHJh
ZGl1cyA9IFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyUmFkaXVzOwor
ICAgIHJldHVybiB7IF9ob3ZlclBvaW50IC0gV2ViQ29yZTo6RmxvYXRTaXplKHJhZGl1cywgcmFk
aXVzKSwgV2ViQ29yZTo6RmxvYXRTaXplKHJhZGl1cyAqIDIsIHJhZGl1cyAqIDIpIH07Cit9CiAK
LSAgICBpZiAoX2xhc3RIb3ZlckJvdW5kcyA9PSBwcmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QgJiYg
IV9pc1NpdHRpbmdEb3duKQotICAgICAgICByZXR1cm47Ci0gICAgX2xhc3RIb3ZlckJvdW5kcyA9
IHByZUluZmxhdGlvbkJvdW5kaW5nUmVjdDsKKy0gKFdlYkNvcmU6OkZsb2F0UmVjdClsaW5rU2Vh
cmNoUmVjdAoreworICAgIGF1dG8gcmFkaXVzID0gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNl
dHRpbmdzLmxpbmtTZWFyY2hSYWRpdXM7CisgICAgcmV0dXJuIHsgX2hvdmVyUG9pbnQgLSBXZWJD
b3JlOjpGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpLCBXZWJDb3JlOjpGbG9hdFNpemUocmFkaXVz
ICogMiwgcmFkaXVzICogMikgfTsKK30KIAorLSAodm9pZCl1cGRhdGUKK3sKICAgICBhdXRvIHBh
cmFtZXRlcnMgPSBXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3M7Ci0gICAgYXV0byBh
bmltYXRlQmV0d2VlblBsYXR0ZXJzID0gcGFyYW1ldGVycy5hbmltYXRlQmV0d2VlblBsYXR0ZXJz
OwotICAgIGlmICghYW5pbWF0ZUJldHdlZW5QbGF0dGVycykKLSAgICAgICAgW3NlbGYgZGlzbWlz
c1BsYXR0ZXJXaXRoQW5pbWF0aW9uOllFU107Ci0KLSAgICBfaXNTaXR0aW5nRG93biA9IGZhbHNl
OwogCi0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRSZWN0PiBpbmZsYXRlZEluZGljYXRlZFJlY3RzOwotICAgIGF1dG8gaW5kaWNh
dGVkUmVjdHMgPSBpbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdS
ZWN0Q29vcmRpbmF0ZXM7Ci0gICAgYXV0byBwbGF0dGVyUGFkZGluZyA9IHBhcmFtZXRlcnMucGxh
dHRlclBhZGRpbmc7Ci0gICAgaWYgKGluZGljYXRlZFJlY3RzLmlzRW1wdHkoKSkgewotICAgICAg
ICBib3VuZGluZ1JlY3QgPSBwcmVJbmZsYXRpb25Cb3VuZGluZ1JlY3Q7Ci0gICAgICAgIGJvdW5k
aW5nUmVjdC5pbmZsYXRlKHBsYXR0ZXJQYWRkaW5nKTsKLSAgICAgICAgaW5mbGF0ZWRJbmRpY2F0
ZWRSZWN0cy5hcHBlbmQocHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0KTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IGluZGljYXRlZFJlY3RzKSB7Ci0gICAgICAgICAgICBy
ZWN0LmluZmxhdGUocGxhdHRlclBhZGRpbmcpOwotICAgICAgICAgICAgaW5mbGF0ZWRJbmRpY2F0
ZWRSZWN0cy5hcHBlbmQocmVjdCk7Ci0gICAgICAgICAgICBib3VuZGluZ1JlY3QudW5pdGUocmVj
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgYm91bmRpbmdSZWN0Lm1vdmVCeShwcmVJbmZsYXRpb25C
b3VuZGluZ1JlY3QubG9jYXRpb24oKSk7Ci0gICAgfQorICAgIGlmIChwYXJhbWV0ZXJzLnNob3dE
ZWJ1Z092ZXJsYXkpCisgICAgICAgIFtzZWxmIHVwZGF0ZURlYnVnSW5kaWNhdG9yXTsKIAotICAg
IFJldGFpblB0cjxDR1BhdGhSZWY+IGluZmxhdGVkUGF0aCA9IFdlYkNvcmU6OlBhdGhVdGlsaXRp
ZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKGluZmxhdGVkSW5kaWNhdGVkUmVjdHMsIHBh
cmFtZXRlcnMucGxhdHRlckNvcm5lclJhZGl1cykucGxhdGZvcm1QYXRoKCk7Ci0gICAgYXV0byBw
bGF0dGVySW5mbGF0aW9uU2l6ZSA9IHBhcmFtZXRlcnMucGxhdHRlckluZmxhdGlvblNpemU7Ci0g
ICAgQ0dGbG9hdCBwbGF0dGVyU2NhbGUgPSBDR0Zsb2F0TWluKChib3VuZGluZ1JlY3Qud2lkdGgo
KSArIHBsYXR0ZXJJbmZsYXRpb25TaXplKSAvIGJvdW5kaW5nUmVjdC53aWR0aCgpLCAoYm91bmRp
bmdSZWN0LmhlaWdodCgpICsgcGxhdHRlckluZmxhdGlvblNpemUpIC8gYm91bmRpbmdSZWN0Lmhl
aWdodCgpKTsKLQotICAgIC8vIEZJWE1FOiBDb25zaWRlciB1c2luZyBVSUtpdCdzIGluLXByb2Nl
c3MgcmV0YXJnZXRhYmxlIGFuaW1hdGlvbnMsIGJlY2F1c2UgcmVhZGluZyBhbmltYXRpb24gc3Rh
dGUgZnJvbSB0aGUgcHJlc2VudGF0aW9uIGxheWVyIGlzIHJhY3kuCi0gICAgYm9vbCBoYWRPbGRM
YXllcnMgPSAhIV9sYXN0U2hhZG93TGF5ZXI7Ci0gICAgQ0dSZWN0IG9sZFNoYWRvd0JvdW5kcyA9
IFtfbGFzdFNoYWRvd0xheWVyIHByZXNlbnRhdGlvbkxheWVyXS5ib3VuZHM7Ci0gICAgQ0dQb2lu
dCBvbGRTaGFkb3dQb3NpdGlvbiA9IFtfbGFzdFNoYWRvd0xheWVyIHByZXNlbnRhdGlvbkxheWVy
XS5wb3NpdGlvbjsKLSAgICBDR0Zsb2F0IG9sZFNoYWRvd09wYWNpdHkgPSBbX2xhc3RTaGFkb3dM
YXllciBwcmVzZW50YXRpb25MYXllcl0uc2hhZG93T3BhY2l0eTsKLSAgICBDR0Zsb2F0IG9sZFNo
YWRvd1JhZGl1cyA9IFtfbGFzdFNoYWRvd0xheWVyIHByZXNlbnRhdGlvbkxheWVyXS5zaGFkb3dS
YWRpdXM7Ci0gICAgQ0FUcmFuc2Zvcm0zRCBvbGRTaGFkb3dTdWJsYXllclRyYW5zZm9ybSA9IF9s
YXN0U2hhZG93TGF5ZXIgPyBbX2xhc3RTaGFkb3dMYXllciBwcmVzZW50YXRpb25MYXllcl0uc3Vi
bGF5ZXJUcmFuc2Zvcm0gOiBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgUmV0YWluUHRyPENH
UGF0aFJlZj4gb2xkU2hhZG93UGF0aCA9IFtfbGFzdFNoYWRvd0xheWVyIHByZXNlbnRhdGlvbkxh
eWVyXS5zaGFkb3dQYXRoOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBzaGFkb3cgPSBfbGFzdFNo
YWRvd0xheWVyID86IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBz
aGFkb3dGcmFtZSA9IENHUmVjdE9mZnNldChib3VuZGluZ1JlY3QsIHBsYXR0ZXJQYWRkaW5nLCBw
bGF0dGVyUGFkZGluZyk7Ci0gICAgW3NoYWRvdyBzZXRGcmFtZTpzaGFkb3dGcmFtZV07Ci0gICAg
W3NoYWRvdyBzZXRTaGFkb3dDb2xvcjpVSUNvbG9yLmJsYWNrQ29sb3IuQ0dDb2xvcl07Ci0gICAg
W3NoYWRvdyBzZXRTaGFkb3dSYWRpdXM6cGFyYW1ldGVycy5wbGF0dGVyU2hhZG93UmFkaXVzXTsK
LSAgICBbc2hhZG93IHNldFNoYWRvd09mZnNldDpDR1NpemVaZXJvXTsKLSAgICBbc2hhZG93IHNl
dFNoYWRvd09wYWNpdHk6cGFyYW1ldGVycy5wbGF0dGVyU2hhZG93T3BhY2l0eV07Ci0gICAgW3No
YWRvdyBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKHBsYXR0ZXJT
Y2FsZSwgcGxhdHRlclNjYWxlLCAxKV07Ci0gICAgW3NoYWRvdyBzZXRTaGFkb3dQYXRoOmluZmxh
dGVkUGF0aC5nZXQoKV07Ci0gICAgW3NoYWRvdyB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAg
IFtbW192aWV3IHN1cGVydmlld10gbGF5ZXJdIGFkZFN1YmxheWVyOnNoYWRvdy5nZXQoKV07Ci0K
LSAgICBDR1JlY3Qgb2xkUGxhdHRlckJvdW5kcyA9IFtfbGFzdFBsYXR0ZXJMYXllciBwcmVzZW50
YXRpb25MYXllcl0uYm91bmRzOwotICAgIENHUG9pbnQgb2xkUGxhdHRlclBvc2l0aW9uID0gW19s
YXN0UGxhdHRlckxheWVyIHByZXNlbnRhdGlvbkxheWVyXS5wb3NpdGlvbjsKLSAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gcGxhdHRlciA9IF9sYXN0UGxhdHRlckxheWVyID86IGFkb3B0TlMoW1tDQUxh
eWVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBib3VuZGluZ1JlY3QgPSBzZWxmLnBsYXR0ZXJC
b3VuZGluZ1JlY3Q7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHBsYXR0ZXIgPSBfcGxhdHRlckxh
eWVyID86IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgW3BsYXR0ZXIgc2V0
Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgYm91bmRpbmdSZWN0LndpZHRoKCksIGJvdW5kaW5nUmVj
dC5oZWlnaHQoKSldOwotICAgIFtwbGF0dGVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKHNoYWRv
d0ZyYW1lLnNpemUud2lkdGggLyAyIC0gcGxhdHRlclBhZGRpbmcsIHNoYWRvd0ZyYW1lLnNpemUu
aGVpZ2h0IC8gMiAtIHBsYXR0ZXJQYWRkaW5nKV07Ci0gICAgYXV0byBvbGRQbGF0dGVyQWRkaXRp
b25hbEFuaW1hdGlvblZhbHVlID0gc2V0QWRkaXRpb25hbFBsYXR0ZXJMYXllclByb3BlcnRpZXMo
cGxhdHRlci5nZXQoKSwgW19sYXN0UGxhdHRlckxheWVyIHByZXNlbnRhdGlvbkxheWVyXSk7Cisg
ICAgW3BsYXR0ZXIgc2V0UG9zaXRpb246Ym91bmRpbmdSZWN0LmNlbnRlcigpXTsKKyAgICBbcGxh
dHRlciBzZXRTaGFkb3dDb2xvcjpVSUNvbG9yLmJsYWNrQ29sb3IuQ0dDb2xvcl07CisgICAgW3Bs
YXR0ZXIgc2V0U2hhZG93T2Zmc2V0OkNHU2l6ZU1ha2UoMCwgMTApXTsKKyAgICBbcGxhdHRlciBz
ZXRTaGFkb3dPcGFjaXR5OjAuMjVdOworICAgIFtwbGF0dGVyIHNldFNoYWRvd1JhZGl1czoxMF07
CiAgICAgW3BsYXR0ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKLSAgICBbc2hhZG93IGFkZFN1
YmxheWVyOnBsYXR0ZXIuZ2V0KCldOwotCi0gICAgQ0dSZWN0IG9sZE1hc2tCb3VuZHMgPSBbX2xh
c3RNYXNrTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLmJvdW5kczsKLSAgICBDR1BvaW50IG9sZE1h
c2tQb3NpdGlvbiA9IFtfbGFzdE1hc2tMYXllciBwcmVzZW50YXRpb25MYXllcl0ucG9zaXRpb247
Ci0gICAgUmV0YWluUHRyPENHUGF0aFJlZj4gb2xkTWFza1BhdGggPSBbX2xhc3RNYXNrTGF5ZXIg
cHJlc2VudGF0aW9uTGF5ZXJdLnBhdGg7Ci0gICAgUmV0YWluUHRyPENBU2hhcGVMYXllcj4gbWFz
ayA9IF9sYXN0TWFza0xheWVyID86IGFkb3B0TlMoW1tDQVNoYXBlTGF5ZXIgYWxsb2NdIGluaXRd
KTsKLSAgICBbbWFzayBzZXRGaWxsQ29sb3I6W1VJQ29sb3IgYmxhY2tDb2xvcl0uQ0dDb2xvcl07
Ci0gICAgW21hc2sgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgYm91bmRpbmdSZWN0LndpZHRo
KCksIGJvdW5kaW5nUmVjdC5oZWlnaHQoKSldOwotICAgIFttYXNrIHNldFBvc2l0aW9uOkNHUG9p
bnRNYWtlKGJvdW5kaW5nUmVjdC53aWR0aCgpIC8gMiArIHBsYXR0ZXJQYWRkaW5nLCBib3VuZGlu
Z1JlY3QuaGVpZ2h0KCkgLyAyICsgcGxhdHRlclBhZGRpbmcpXTsKLSAgICBbbWFzayBzZXRQYXRo
OmluZmxhdGVkUGF0aC5nZXQoKV07Ci0gICAgW21hc2sgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsK
LQotICAgIENHUmVjdCBvbGRCYWNrZ3JvdW5kQm91bmRzID0gW19sYXN0QmFja2dyb3VuZExheWVy
IHByZXNlbnRhdGlvbkxheWVyXS5ib3VuZHM7Ci0gICAgQ0dQb2ludCBvbGRCYWNrZ3JvdW5kUG9z
aXRpb24gPSBbX2xhc3RCYWNrZ3JvdW5kTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLnBvc2l0aW9u
OwotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBvbGRCYWNrZ3JvdW5kQ29sb3IgPSBbX2xhc3RC
YWNrZ3JvdW5kTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLmJhY2tncm91bmRDb2xvcjsKLSAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gYmFja2dyb3VuZCA9IF9sYXN0QmFja2dyb3VuZExheWVyID86IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2JhY2tncm91bmQgc2V0RnJhbWU6
W3BsYXR0ZXIgYm91bmRzXV07Ci0gICAgW2JhY2tncm91bmQgc2V0QmFja2dyb3VuZENvbG9yOmNh
Y2hlZENHQ29sb3IoaW5mb3JtYXRpb24ubGlua0luZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5k
Q29sb3IpLmdldCgpXTsKLSAgICBbYmFja2dyb3VuZCBzZXRNYXNrOm1hc2suZ2V0KCldOwotICAg
IFtiYWNrZ3JvdW5kIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107Ci0gICAgW3BsYXR0ZXIgYWRkU3Vi
bGF5ZXI6YmFja2dyb3VuZC5nZXQoKV07Ci0KLSAgICBDR1JlY3Qgb2xkU25hcHNob3RCb3VuZHMg
PSBbX2xhc3RTbmFwc2hvdExheWVyIHByZXNlbnRhdGlvbkxheWVyXS5ib3VuZHM7Ci0gICAgQ0dQ
b2ludCBvbGRTbmFwc2hvdFBvc2l0aW9uID0gW19sYXN0U25hcHNob3RMYXllciBwcmVzZW50YXRp
b25MYXllcl0ucG9zaXRpb247Ci0gICAgQ0FUcmFuc2Zvcm0zRCBvbGRTbmFwc2hvdFN1YmxheWVy
VHJhbnNmb3JtID0gX2xhc3RTbmFwc2hvdExheWVyID8gW19sYXN0U25hcHNob3RMYXllciBwcmVz
ZW50YXRpb25MYXllcl0uc3VibGF5ZXJUcmFuc2Zvcm0gOiBDQVRyYW5zZm9ybTNESWRlbnRpdHk7
Ci0gICAgUmV0YWluUHRyPENBUG9ydGFsTGF5ZXI+IHNuYXBzaG90ID0gX2xhc3RTbmFwc2hvdExh
eWVyID86IGFkb3B0TlMoW1tDQVBvcnRhbExheWVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tbX3Zp
ZXcgc3VwZXJ2aWV3XSBsYXllcl0gYWRkU3VibGF5ZXI6cGxhdHRlci5nZXQoKV07CisKKyAgICBS
ZXRhaW5QdHI8Q0FQb3J0YWxMYXllcj4gc25hcHNob3QgPSBfc25hcHNob3RMYXllciA/OiBhZG9w
dE5TKFtbQ0FQb3J0YWxMYXllciBhbGxvY10gaW5pdF0pOwogICAgIFtzbmFwc2hvdCBzZXRTb3Vy
Y2VMYXllcjpbX3ZpZXcgbGF5ZXJdXTsKICAgICBbc25hcHNob3Qgc2V0TWF0Y2hlc1Bvc2l0aW9u
OllFU107CiAgICAgW3NuYXBzaG90IHNldE1hdGNoZXNUcmFuc2Zvcm06WUVTXTsKKyAgICBbc25h
cHNob3Qgc2V0TWFza3NUb0JvdW5kczpZRVNdOworICAgIFtzbmFwc2hvdCBzZXRDb3JuZXJSYWRp
dXM6cGFyYW1ldGVycy5wbGF0dGVyUmFkaXVzXTsKKyAgICBbc25hcHNob3Qgc2V0QmFja2dyb3Vu
ZENvbG9yOlVJQ29sb3IuYmxhY2tDb2xvci5DR0NvbG9yXTsKKyAgICBbc25hcHNob3Qgc2V0Qm9y
ZGVyQ29sb3I6W1VJQ29sb3IgY29sb3JXaXRoV2hpdGU6MCBhbHBoYTowLjJdLkNHQ29sb3JdOwor
ICAgIFtzbmFwc2hvdCBzZXRCb3JkZXJXaWR0aDoxXTsKICAgICBbc25hcHNob3Qgc2V0QW5jaG9y
UG9pbnQ6Q0dQb2ludE1ha2UoMC41LCAwLjUpXTsKLSAgICBbc25hcHNob3Qgc2V0U3VibGF5ZXJU
cmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShwbGF0dGVyU2NhbGUsIHBsYXR0ZXJTY2Fs
ZSwgMSldOworICAgIFtzbmFwc2hvdCBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNE
TWFrZVNjYWxlKHBhcmFtZXRlcnMucGxhdHRlclNjYWxlLCBwYXJhbWV0ZXJzLnBsYXR0ZXJTY2Fs
ZSwgMSldOwogICAgIFtzbmFwc2hvdCBzZXRNYXNrc1RvQm91bmRzOllFU107CiAgICAgW3NuYXBz
aG90IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgYm91bmRpbmdSZWN0LndpZHRoKCksIGJvdW5k
aW5nUmVjdC5oZWlnaHQoKSldOwogICAgIFtzbmFwc2hvdCB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNd
OwotICAgIFtiYWNrZ3JvdW5kIGFkZFN1YmxheWVyOnNuYXBzaG90LmdldCgpXTsKLQotICAgIEJP
T0wgbmVlZHNBbmltYXRlSW4gPSAhX2xhc3RQbGF0dGVyTGF5ZXIgfHwgX2lzU2l0dGluZ0Rvd247
Ci0gICAgaWYgKG5lZWRzQW5pbWF0ZUluKSB7Ci0gICAgICAgIGFkZEFuaW1hdGlvbihzaGFkb3cu
Z2V0KCksIEAic2hhZG93T3BhY2l0eSIsIEAob2xkU2hhZG93T3BhY2l0eSksIEAoW3NoYWRvdyBz
aGFkb3dPcGFjaXR5XSkpOwotICAgICAgICBhZGRBbmltYXRpb24oc2hhZG93LmdldCgpLCBAInNo
YWRvd1JhZGl1cyIsIEAob2xkU2hhZG93UmFkaXVzKSwgQChbc2hhZG93IHNoYWRvd1JhZGl1c10p
KTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKHNoYWRvdy5nZXQoKSwgQCJzdWJsYXllclRyYW5zZm9y
bSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6b2xkU2hhZG93U3VibGF5ZXJUcmFu
c2Zvcm1dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOltzaGFkb3cgc3VibGF5ZXJU
cmFuc2Zvcm1dXSk7Ci0KLSAgICAgICAgYWRkQW5pbWF0aW9uKHNuYXBzaG90LmdldCgpLCBAInN1
YmxheWVyVHJhbnNmb3JtIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpvbGRTbmFw
c2hvdFN1YmxheWVyVHJhbnNmb3JtXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpb
c25hcHNob3Qgc3VibGF5ZXJUcmFuc2Zvcm1dXSk7Ci0KLSAgICAgICAgYWRkQWRkaXRpb25hbElu
Y29taW5nQW5pbWF0aW9ucyhwbGF0dGVyLmdldCgpLCBvbGRQbGF0dGVyQWRkaXRpb25hbEFuaW1h
dGlvblZhbHVlKTsKKyAgICBbcGxhdHRlciBhZGRTdWJsYXllcjpzbmFwc2hvdC5nZXQoKV07CisK
KyAgICBpZiAoX2lzU2l0dGluZ0Rvd24pIHsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuYW5pbWF0
ZVNjYWxlKSB7CisgICAgICAgICAgICBhdXRvIGludmVyc2VTY2FsZSA9IDEuZiAvIHBhcmFtZXRl
cnMucGxhdHRlclNjYWxlOworICAgICAgICAgICAgYWRkQW5pbWF0aW9uKHBsYXR0ZXIuZ2V0KCks
IEAidHJhbnNmb3JtIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9y
bTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAxKV0sIFtOU1ZhbHVlIHZh
bHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRElkZW50aXR5XSk7CisgICAgICAgICAg
ICBhZGRBbmltYXRpb24oc25hcHNob3QuZ2V0KCksIEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RJZGVudGl0eV0sIFtOU1Zh
bHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6W3NuYXBzaG90IHN1YmxheWVyVHJhbnNmb3JtXV0p
OworICAgICAgICAgICAgYWRkQW5pbWF0aW9uKHBsYXR0ZXIuZ2V0KCksIEAic2hhZG93T3BhY2l0
eSIsIEAwLCBAKFtwbGF0dGVyIHNoYWRvd09wYWNpdHldKSk7CisgICAgICAgICAgICBhZGRBbmlt
YXRpb24oc25hcHNob3QuZ2V0KCksIEAiYm9yZGVyQ29sb3IiLCAoaWQpVUlDb2xvci5jbGVhckNv
bG9yLkNHQ29sb3IsIChpZClbc25hcHNob3QgYm9yZGVyQ29sb3JdKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBhZGRBbmltYXRpb24ocGxhdHRlci5nZXQoKSwgQCJvcGFjaXR5IiwgQDAs
IEAxKTsKICAgICB9CiAKLSAgICBpZiAoYW5pbWF0ZUJldHdlZW5QbGF0dGVycyAmJiBoYWRPbGRM
YXllcnMpIHsKLSAgICAgICAgYWRkQW5pbWF0aW9uKG1hc2suZ2V0KCksIEAiYm91bmRzIiwgW05T
VmFsdWUgdmFsdWVXaXRoQ0dSZWN0Om9sZE1hc2tCb3VuZHNdLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
R1JlY3Q6W21hc2sgYm91bmRzXV0pOwotICAgICAgICBhZGRBbmltYXRpb24obWFzay5nZXQoKSwg
QCJwb3NpdGlvbiIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6b2xkTWFza1Bvc2l0aW9uXSwg
W05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpbbWFzayBwb3NpdGlvbl1dKTsKLSAgICAgICAgYWRk
QW5pbWF0aW9uKG1hc2suZ2V0KCksIEAicGF0aCIsIChpZClvbGRNYXNrUGF0aC5nZXQoKSwgKGlk
KVttYXNrIHBhdGhdKTsKLQotICAgICAgICBhZGRBbmltYXRpb24oc2hhZG93LmdldCgpLCBAImJv
dW5kcyIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpvbGRTaGFkb3dCb3VuZHNdLCBbTlNWYWx1
ZSB2YWx1ZVdpdGhDR1JlY3Q6W3NoYWRvdyBib3VuZHNdXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlv
bihzaGFkb3cuZ2V0KCksIEAicG9zaXRpb24iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50Om9s
ZFNoYWRvd1Bvc2l0aW9uXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpbc2hhZG93IHBvc2l0
aW9uXV0pOwotICAgICAgICBhZGRBbmltYXRpb24oc2hhZG93LmdldCgpLCBAInNoYWRvd1BhdGgi
LCAoaWQpb2xkU2hhZG93UGF0aC5nZXQoKSwgKGlkKVtzaGFkb3cgc2hhZG93UGF0aF0pOwotCi0g
ICAgICAgIGFkZEFuaW1hdGlvbihwbGF0dGVyLmdldCgpLCBAImJvdW5kcyIsIFtOU1ZhbHVlIHZh
bHVlV2l0aENHUmVjdDpvbGRQbGF0dGVyQm91bmRzXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0
OltwbGF0dGVyIGJvdW5kc11dKTsKLSAgICAgICAgYWRkQW5pbWF0aW9uKHBsYXR0ZXIuZ2V0KCks
IEAicG9zaXRpb24iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50Om9sZFBsYXR0ZXJQb3NpdGlv
bl0sIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6W3BsYXR0ZXIgcG9zaXRpb25dXSk7Ci0KLSAg
ICAgICAgYWRkQW5pbWF0aW9uKGJhY2tncm91bmQuZ2V0KCksIEAiYm91bmRzIiwgW05TVmFsdWUg
dmFsdWVXaXRoQ0dSZWN0Om9sZEJhY2tncm91bmRCb3VuZHNdLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
R1JlY3Q6W2JhY2tncm91bmQgYm91bmRzXV0pOwotICAgICAgICBhZGRBbmltYXRpb24oYmFja2dy
b3VuZC5nZXQoKSwgQCJwb3NpdGlvbiIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6b2xkQmFj
a2dyb3VuZFBvc2l0aW9uXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpbYmFja2dyb3VuZCBw
b3NpdGlvbl1dKTsKKyAgICBfcGxhdHRlckxheWVyID0gcGxhdHRlcjsKKyAgICBfc25hcHNob3RM
YXllciA9IHNuYXBzaG90OwogCi0gICAgICAgIGFkZEFuaW1hdGlvbihzbmFwc2hvdC5nZXQoKSwg
QCJib3VuZHMiLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6b2xkU25hcHNob3RCb3VuZHNdLCBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W3NuYXBzaG90IGJvdW5kc11dKTsKLSAgICAgICAgYWRk
QW5pbWF0aW9uKHNuYXBzaG90LmdldCgpLCBAInBvc2l0aW9uIiwgW05TVmFsdWUgdmFsdWVXaXRo
Q0dQb2ludDpvbGRTbmFwc2hvdFBvc2l0aW9uXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpb
c25hcHNob3QgcG9zaXRpb25dXSk7Ci0gICAgfQorICAgIF9pc1NpdHRpbmdEb3duID0gZmFsc2U7
Cit9CiAKLSAgICBfbGFzdE1hc2tMYXllciA9IG1hc2s7Ci0gICAgX2xhc3RTaGFkb3dMYXllciA9
IHNoYWRvdzsKLSAgICBfbGFzdFBsYXR0ZXJMYXllciA9IHBsYXR0ZXI7Ci0gICAgX2xhc3RCYWNr
Z3JvdW5kTGF5ZXIgPSBiYWNrZ3JvdW5kOwotICAgIF9sYXN0U25hcHNob3RMYXllciA9IHNuYXBz
aG90OworLSAodm9pZCl1cGRhdGVEZWJ1Z0luZGljYXRvcgoreworICAgIGF1dG8gc2VhcmNoQm91
bmRpbmdSZWN0ID0gc2VsZi5saW5rU2VhcmNoUmVjdDsKKworICAgIFJldGFpblB0cjxDQUxheWVy
PiBkZWJ1Z0luZGljYXRvciA9IF9kZWJ1Z0luZGljYXRvckxheWVyID86IGFkb3B0TlMoW1tDQUxh
eWVyIGFsbG9jXSBpbml0XSk7CisgICAgW2RlYnVnSW5kaWNhdG9yIHNldEJvdW5kczpDR1JlY3RN
YWtlKDAsIDAsIHNlYXJjaEJvdW5kaW5nUmVjdC53aWR0aCgpLCBzZWFyY2hCb3VuZGluZ1JlY3Qu
aGVpZ2h0KCkpXTsKKyAgICBbZGVidWdJbmRpY2F0b3Igc2V0UG9zaXRpb246c2VhcmNoQm91bmRp
bmdSZWN0LmNlbnRlcigpXTsKKyAgICBbZGVidWdJbmRpY2F0b3Igc2V0Qm9yZGVyQ29sb3I6W1VJ
Q29sb3IgY29sb3JXaXRoUmVkOjEgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0uQ0dDb2xvcl07Cisg
ICAgW2RlYnVnSW5kaWNhdG9yIHNldEJvcmRlcldpZHRoOjFdOworICAgIFtkZWJ1Z0luZGljYXRv
ciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAgIFtbX3ZpZXcgbGF5ZXJdIGFkZFN1YmxheWVy
OmRlYnVnSW5kaWNhdG9yLmdldCgpXTsKKworICAgIFJldGFpblB0cjxDQVRleHRMYXllcj4gbGlu
a0NvdW50TGF5ZXIgPSBfbGlua0NvdW50TGF5ZXIgPzogYWRvcHROUyhbW0NBVGV4dExheWVyIGFs
bG9jXSBpbml0XSk7CisgICAgW2xpbmtDb3VudExheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAs
IDAsIDUwLCAxNildOworICAgIFtsaW5rQ291bnRMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFr
ZSgtMTAsIChzZWFyY2hCb3VuZGluZ1JlY3QuaGVpZ2h0KCkgLyAyKSAtIDgpXTsKKyAgICBbbGlu
a0NvdW50TGF5ZXIgc2V0Rm9yZWdyb3VuZENvbG9yOlVJQ29sb3IuYmxhY2tDb2xvci5DR0NvbG9y
XTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0U2hhZG93Q29sb3I6VUlDb2xvci53aGl0ZUNvbG9y
LkNHQ29sb3JdOworICAgIFtsaW5rQ291bnRMYXllciBzZXRTaGFkb3dPZmZzZXQ6Q0dTaXplTWFr
ZSgwLCAwKV07CisgICAgW2xpbmtDb3VudExheWVyIHNldFNoYWRvd09wYWNpdHk6MV07CisgICAg
W2xpbmtDb3VudExheWVyIHNldFNoYWRvd1JhZGl1czoyXTsKKyAgICBbbGlua0NvdW50TGF5ZXIg
c2V0Rm9udFNpemU6MTZdOworICAgIFtsaW5rQ291bnRMYXllciBzZXRDb250ZW50c1NjYWxlOjRd
OworICAgIFtsaW5rQ291bnRMYXllciBzZXRBbGlnbm1lbnRNb2RlOmtDQUFsaWdubWVudENlbnRl
cl07CisgICAgW2xpbmtDb3VudExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CisgICAgW2Rl
YnVnSW5kaWNhdG9yIGFkZFN1YmxheWVyOmxpbmtDb3VudExheWVyLmdldCgpXTsKKworICAgIFJl
dGFpblB0cjxDQVNoYXBlTGF5ZXI+IGxpbmtIaWdobGlnaHRMYXllciA9IF9saW5rSGlnaGxpZ2h0
TGF5ZXIgPzogYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOworICAgIFtsaW5r
SGlnaGxpZ2h0TGF5ZXIgc2V0RmlsbENvbG9yOlVJQ29sb3IuY2xlYXJDb2xvci5DR0NvbG9yXTsK
KyAgICBbbGlua0hpZ2hsaWdodExheWVyIHNldFN0cm9rZUNvbG9yOltVSUNvbG9yLmJsdWVDb2xv
ciBjb2xvcldpdGhBbHBoYUNvbXBvbmVudDowLjNdLkNHQ29sb3JdOworICAgIFtsaW5rSGlnaGxp
Z2h0TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKyAgICBbW192aWV3IGxheWVyXSBhZGRT
dWJsYXllcjpsaW5rSGlnaGxpZ2h0TGF5ZXIuZ2V0KCldOworCisgICAgW19kZWxlZ2F0ZSBpbnRl
cmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOnNlbGYgaW5SZWN0OnNlYXJjaEJvdW5kaW5n
UmVjdCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3NlbGYsIHN0cm9uZ1NlbGYgPSBy
ZXRhaW5QdHIoc2VsZildIChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykgeworICAg
ICAgICBpZiAoIV9saW5rQ291bnRMYXllciAmJiAhX2xpbmtIaWdobGlnaHRMYXllcikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBbX2xpbmtDb3VudExheWVyIHNldFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIHJlY3RzLnNpemUoKV1dOworCisgICAgICAg
IFdlYkNvcmU6OlBhdGggcGF0aDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVj
dHMpCisgICAgICAgICAgICBwYXRoLmFkZFJlY3QocmVjdCk7CisgICAgICAgIFtfbGlua0hpZ2hs
aWdodExheWVyIHNldFBhdGg6cGF0aC5wbGF0Zm9ybVBhdGgoKV07CisgICAgfSkuZ2V0KCldOwor
CisgICAgX2RlYnVnSW5kaWNhdG9yTGF5ZXIgPSBkZWJ1Z0luZGljYXRvcjsKKyAgICBfbGlua0Nv
dW50TGF5ZXIgPSBsaW5rQ291bnRMYXllcjsKKyAgICBfbGlua0hpZ2hsaWdodExheWVyID0gbGlu
a0hpZ2hsaWdodExheWVyOwogfQogCiAtICh2b2lkKWRpc21pc3NQbGF0dGVyV2l0aEFuaW1hdGlv
bjooQk9PTCl3aXRoQW5pbWF0aW9uCkBAIC0yOTksNDggKzI1MSw2NCBAQCAtICh2b2lkKWRpc21p
c3NQbGF0dGVyV2l0aEFuaW1hdGlvbjooQk9PTCl3aXRoQW5pbWF0aW9uCiAgICAgX2lzU2l0dGlu
Z0Rvd24gPSB0cnVlOwogCiAgICAgaWYgKCF3aXRoQW5pbWF0aW9uKSB7Ci0gICAgICAgIFtfbGFz
dFNoYWRvd0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgW19kZWJ1Z0luZGlj
YXRvckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgW19wbGF0dGVyTGF5ZXIg
cmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICBbX2xpbmtDb3VudExheWVyIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKKyAgICAgICAgW19saW5rSGlnaGxpZ2h0TGF5ZXIgcmVtb3ZlRnJvbVN1
cGVybGF5ZXJdOwogICAgICAgICBbc2VsZiBjbGVhckxheWVyc107CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24g
c2V0Q29tcGxldGlvbkJsb2NrOltwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaGFk
b3dMYXllciA9IF9sYXN0U2hhZG93TGF5ZXJdIHsKLSAgICAgICAgW3Byb3RlY3RlZFNlbGYgZGlk
RmluaXNoQW5pbWF0aW9uRm9yU2hhZG93OnNoYWRvd0xheWVyLmdldCgpXTsKKyAgICBbQ0FUcmFu
c2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZiksIHBsYXR0ZXJMYXllciA9IF9wbGF0dGVyTGF5ZXJdIHsKKyAgICAgICAgW3Byb3RlY3RlZFNl
bGYgZGlkRmluaXNoRGlzbWlzc2FsQW5pbWF0aW9uOnBsYXR0ZXJMYXllci5nZXQoKV07CiAgICAg
fV07CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0
dGluZ3M7Ci0gICAgYWRkQW5pbWF0aW9uKF9sYXN0U2hhZG93TGF5ZXIuZ2V0KCksIEAic2hhZG93
T3BhY2l0eSIsIEAoW19sYXN0U2hhZG93TGF5ZXIgc2hhZG93T3BhY2l0eV0pLCBAMCk7Ci0gICAg
YWRkQW5pbWF0aW9uKF9sYXN0U2hhZG93TGF5ZXIuZ2V0KCksIEAic2hhZG93UmFkaXVzIiwgQChb
X2xhc3RTaGFkb3dMYXllciBzaGFkb3dSYWRpdXNdKSwgQDApOwotICAgIGFkZEFuaW1hdGlvbihf
bGFzdFNoYWRvd0xheWVyLmdldCgpLCBAInN1YmxheWVyVHJhbnNmb3JtIiwgW05TVmFsdWUgdmFs
dWVXaXRoQ0FUcmFuc2Zvcm0zRDpbX2xhc3RTaGFkb3dMYXllciBzdWJsYXllclRyYW5zZm9ybV1d
LCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RJZGVudGl0eV0p
OwotICAgIGFkZEFuaW1hdGlvbihfbGFzdFNuYXBzaG90TGF5ZXIuZ2V0KCksIEAic3VibGF5ZXJU
cmFuc2Zvcm0iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOltfbGFzdFNuYXBzaG90
TGF5ZXIgc3VibGF5ZXJUcmFuc2Zvcm1dXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0z
RDpDQVRyYW5zZm9ybTNESWRlbnRpdHldKTsKLSAgICBhZGRBZGRpdGlvbmFsRGlzbWlzc2FsQW5p
bWF0aW9ucyhfbGFzdFBsYXR0ZXJMYXllci5nZXQoKSk7CisgICAgaWYgKHBhcmFtZXRlcnMuYW5p
bWF0ZVNjYWxlKSB7CisgICAgICAgIGF1dG8gaW52ZXJzZVNjYWxlID0gMS5mIC8gcGFyYW1ldGVy
cy5wbGF0dGVyU2NhbGU7CisgICAgICAgIGFkZEFuaW1hdGlvbihfcGxhdHRlckxheWVyLmdldCgp
LCBAInRyYW5zZm9ybSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zv
cm0zRElkZW50aXR5XSwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9y
bTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAxKV0pOworICAgICAgICBh
ZGRBbmltYXRpb24oX3NuYXBzaG90TGF5ZXIuZ2V0KCksIEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBb
TlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOltfc25hcHNob3RMYXllciBzdWJsYXllclRy
YW5zZm9ybV1dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RJ
ZGVudGl0eV0pOworICAgICAgICBhZGRBbmltYXRpb24oX3BsYXR0ZXJMYXllci5nZXQoKSwgQCJz
aGFkb3dPcGFjaXR5IiwgQChbX3BsYXR0ZXJMYXllciBzaGFkb3dPcGFjaXR5XSksIEAwKTsKKyAg
ICAgICAgYWRkQW5pbWF0aW9uKF9zbmFwc2hvdExheWVyLmdldCgpLCBAImJvcmRlckNvbG9yIiwg
KGlkKVtfc25hcHNob3RMYXllciBib3JkZXJDb2xvcl0sIChpZClVSUNvbG9yLmNsZWFyQ29sb3Iu
Q0dDb2xvcik7CisgICAgfSBlbHNlCisgICAgICAgIGFkZEFuaW1hdGlvbihfcGxhdHRlckxheWVy
LmdldCgpLCBAIm9wYWNpdHkiLCBAMSwgQDApOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0
XTsKK30KIAotICAgIGlmICghcGFyYW1ldGVycy5hbmltYXRlQmV0d2VlblBsYXR0ZXJzKQotICAg
ICAgICBbc2VsZiBjbGVhckxheWVyc107CistICh2b2lkKWRpZEZpbmlzaERpc21pc3NhbEFuaW1h
dGlvbjooQ0FMYXllciAqKXBsYXR0ZXJMYXllcgoreworICAgIFtwbGF0dGVyTGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOwogfQogCi0tICh2b2lkKWRpZEZpbmlzaEFuaW1hdGlvbkZvclNoYWRv
dzooQ0FMYXllciAqKXNoYWRvd0xheWVyCistICh2b2lkKWNsZWFyTGF5ZXJzCiB7Ci0gICAgYXV0
byBwYXJhbWV0ZXJzID0gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzOwotICAgIGlm
ICghcGFyYW1ldGVycy5hbmltYXRlQmV0d2VlblBsYXR0ZXJzKQotICAgICAgICBbc2hhZG93TGF5
ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgIF9kZWJ1Z0luZGljYXRvckxheWVyID0gbmls
OworICAgIF9wbGF0dGVyTGF5ZXIgPSBuaWw7CisgICAgX3NuYXBzaG90TGF5ZXIgPSBuaWw7Cisg
ICAgX2xpbmtDb3VudExheWVyID0gbmlsOworICAgIF9saW5rSGlnaGxpZ2h0TGF5ZXIgPSBuaWw7
Cit9CiAKLSAgICBpZiAoX2lzU2l0dGluZ0Rvd24gJiYgcGFyYW1ldGVycy5hbmltYXRlQmV0d2Vl
blBsYXR0ZXJzICYmIHNoYWRvd0xheWVyID09IF9sYXN0U2hhZG93TGF5ZXIpIHsKLSAgICAgICAg
W3NoYWRvd0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgW3NlbGYgY2xlYXJM
YXllcnNdOwotICAgIH0KKy0gKFdlYkNvcmU6OkZsb2F0UG9pbnQpYWRqdXN0ZWRQb2ludEZvclBv
aW50OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50Cit7CisgICAgaWYgKF9pc1NpdHRpbmdEb3du
KQorICAgICAgICByZXR1cm4gcG9pbnQ7CisKKyAgICBhdXRvIGRlbHRhID0gcG9pbnQgLSBfaG92
ZXJQb2ludDsKKyAgICBkZWx0YS5zY2FsZSgxLmYgLyBXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290
U2V0dGluZ3MucGxhdHRlclNjYWxlKTsKKyAgICByZXR1cm4gX2hvdmVyUG9pbnQgKyBkZWx0YTsK
IH0KIAotLSAodm9pZCljbGVhckxheWVycworLSAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50
KWFkanVzdGVkRXZlbnRGb3JFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50
JilldmVudAogewotICAgIF9sYXN0TWFza0xheWVyID0gbmlsOwotICAgIF9sYXN0U2hhZG93TGF5
ZXIgPSBuaWw7Ci0gICAgX2xhc3RQbGF0dGVyTGF5ZXIgPSBuaWw7Ci0gICAgX2xhc3RCYWNrZ3Jv
dW5kTGF5ZXIgPSBuaWw7Ci0gICAgX2xhc3RTbmFwc2hvdExheWVyID0gbmlsOworICAgIGlmIChf
aXNTaXR0aW5nRG93bikKKyAgICAgICAgcmV0dXJuIGV2ZW50OworCisgICAgYXV0byBpbnZlcnNl
U2NhbGUgPSAxLmYgLyBXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3MucGxhdHRlclNj
YWxlOworICAgIGF1dG8gYWRqdXN0ZWRQb2ludCA9IHJvdW5kZWRJbnRQb2ludChbc2VsZiBhZGp1
c3RlZFBvaW50Rm9yUG9pbnQ6ZXZlbnQucG9zaXRpb24oKV0pOworICAgIHJldHVybiBXZWJLaXQ6
Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIGFkanVzdGVkUG9pbnQsIGFkanVzdGVkUG9pbnQs
IGV2ZW50LmRlbHRhWCgpICogaW52ZXJzZVNjYWxlLCBldmVudC5kZWx0YVkoKSAqIGludmVyc2VT
Y2FsZSwgZXZlbnQuZGVsdGFaKCkgKiBpbnZlcnNlU2NhbGUpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJz
LmgKaW5kZXggMWFjOGU3M2Y1NmUzZmU4ZTA2YjcwNTc4MTdjYjM4ZWU3OGM1ZTA3ZC4uYTU0MDIw
ZDhjZTFmMWYwMzY1NTAxZGY1OWJmNjhhMGZiZWNjMWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMuaApAQCAtMzAs
MjAgKzMwLDIzIEBACiBAaW50ZXJmYWNlIFdLSG92ZXJQbGF0dGVyUGFyYW1ldGVycyA6IFBUU2V0
dGluZ3MKIAogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcGxhdHRlckVuYWJsZWRGb3JNb3Vz
ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHBsYXR0ZXJFbmFibGVkRm9ySG92ZXI7CitA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBwbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzczsKIAot
QHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgcGxhdHRlckNvcm5lclJhZGl1czsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHBsYXR0ZXJQYWRkaW5nOwotQHByb3BlcnR5IChub25h
dG9taWMpIENHRmxvYXQgcGxhdHRlclNoYWRvd09wYWNpdHk7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YykgQ0dGbG9hdCBwbGF0dGVyU2hhZG93UmFkaXVzOwotQHByb3BlcnR5IChub25hdG9taWMpIHVu
c2lnbmVkIHBsYXR0ZXJJbmZsYXRpb25TaXplOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIGVuYWJsZWQ7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3dEZWJ1
Z092ZXJsYXk7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHBsYXR0ZXJSYWRpdXM7
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBwbGF0dGVyU2NhbGU7CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljKSBDR0Zsb2F0IGxpbmtTZWFyY2hSYWRpdXM7CiAKLUBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIGFuaW1hdGVCZXR3ZWVuUGxhdHRlcnM7CiBAcHJvcGVydHkgKG5vbmF0b21p
YykgQ0dGbG9hdCBzcHJpbmdNYXNzOwogQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgc3By
aW5nU3RpZmZuZXNzOwogQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgc3ByaW5nRGFtcGlu
ZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1RpbWVJbnRlcnZhbCBkdXJhdGlvbjsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHVzZVNwcmluZzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIHVzZVNwcmluZzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFuaW1hdGVTY2Fs
ZTsKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlv
bnMvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzQWRkaXRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5tbQppbmRl
eCAwZWYwMzE4ODhlZTc4MzUwYjQ2MWE2M2FjNGM5MGM0M2FiOTUzOTc3Li40Yjk4N2JlMzA3MzE3
Nzc1ZWNlYmY3ZjY0MDdmZTdkZGU1NjJkYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMubW0KQEAgLTQ5LDEzICs0
OSw2IEBAIC0gKGlkKWludGVnZXJNaW5WYWx1ZTooQ0dGbG9hdCltaW5WYWx1ZSBtYXhWYWx1ZToo
Q0dGbG9hdCltYXhWYWx1ZQogCiBAZW5kCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQot
I2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVyc0FkZGl0aW9u
cy5tbT4KLSNlbHNlCi1zdGF0aWMgdm9pZCBhZGRBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFt
ZXRlcnMoTlNNdXRhYmxlQXJyYXkgKikgeyB9Ci1zdGF0aWMgdm9pZCBzZXREZWZhdWx0VmFsdWVz
Rm9yQWRkaXRpb25hbFBsYXR0ZXJMYXlvdXRQYXJhbWV0ZXJzKFdLSG92ZXJQbGF0dGVyUGFyYW1l
dGVycyAqKSB7IH0KLSNlbmRpZgotCiBAaW1wbGVtZW50YXRpb24gV0tIb3ZlclBsYXR0ZXJQYXJh
bWV0ZXJzCiAKIC0gKHZvaWQpc2V0RGVmYXVsdFZhbHVlcwpAQCAtNjMsMzMgKzU2LDQxIEBAIC0g
KHZvaWQpc2V0RGVmYXVsdFZhbHVlcwogICAgIFtzdXBlciBzZXREZWZhdWx0VmFsdWVzXTsKIAog
ICAgIF9wbGF0dGVyRW5hYmxlZEZvck1vdXNlID0gTk87Ci0gICAgX3BsYXR0ZXJFbmFibGVkRm9y
SG92ZXIgPSBOTzsKKyAgICBfcGxhdHRlckVuYWJsZWRGb3JMb25nUHJlc3MgPSBOTzsKKworICAg
IF9zaG93RGVidWdPdmVybGF5ID0gTk87CiAKLSAgICBfcGxhdHRlckNvcm5lclJhZGl1cyA9IDY7
Ci0gICAgX3BsYXR0ZXJQYWRkaW5nID0gNTsKLSAgICBfcGxhdHRlclNoYWRvd09wYWNpdHkgPSAw
LjY7Ci0gICAgX3BsYXR0ZXJTaGFkb3dSYWRpdXMgPSAxMDsKLSAgICBfcGxhdHRlckluZmxhdGlv
blNpemUgPSA4OworICAgIF9wbGF0dGVyUmFkaXVzID0gMjAwOworICAgIF9wbGF0dGVyU2NhbGUg
PSAyOworCisgICAgX2xpbmtTZWFyY2hSYWRpdXMgPSA0MDsKIAotICAgIF9hbmltYXRlQmV0d2Vl
blBsYXR0ZXJzID0gWUVTOwogICAgIF9zcHJpbmdNYXNzID0gMjsKLSAgICBfc3ByaW5nU3RpZmZu
ZXNzID0gMTAwOwotICAgIF9zcHJpbmdEYW1waW5nID0gNTA7CisgICAgX3NwcmluZ1N0aWZmbmVz
cyA9IDIwMDsKKyAgICBfc3ByaW5nRGFtcGluZyA9IDIwMDsKICAgICBfZHVyYXRpb24gPSAwLjM7
CiAgICAgX3VzZVNwcmluZyA9IFlFUzsKKyAgICBfYW5pbWF0ZVNjYWxlID0gWUVTOworfQogCi0g
ICAgc2V0RGVmYXVsdFZhbHVlc0ZvckFkZGl0aW9uYWxQbGF0dGVyTGF5b3V0UGFyYW1ldGVycyhz
ZWxmKTsKKy0gKEJPT0wpZW5hYmxlZAoreworICAgIHJldHVybiBfcGxhdHRlckVuYWJsZWRGb3JN
b3VzZSB8fCBfcGxhdHRlckVuYWJsZWRGb3JMb25nUHJlc3M7CiB9CiAKICsgKFBUTW9kdWxlICop
c2V0dGluZ3NDb250cm9sbGVyTW9kdWxlCiB7CiAgICAgUFRTZWN0aW9uICplbmFibGVtZW50U2Vj
dGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsKICAgICAgICAgW1BUU3dpdGNoUm93
IHJvd1dpdGhUaXRsZTpAIkVuYWJsZSBQbGF0dGVyIEZvciBNb3VzZSIgdmFsdWVLZXlQYXRoOkAi
cGxhdHRlckVuYWJsZWRGb3JNb3VzZSJdLAotICAgICAgICBbUFRTd2l0Y2hSb3cgcm93V2l0aFRp
dGxlOkAiRW5hYmxlIFBsYXR0ZXIgRm9yIEhvdmVyIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVyRW5h
YmxlZEZvckhvdmVyIl0sCisgICAgICAgIFtQVFN3aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJFbmFi
bGUgUGxhdHRlciBGb3IgTG9uZyBQcmVzcyIgdmFsdWVLZXlQYXRoOkAicGxhdHRlckVuYWJsZWRG
b3JMb25nUHJlc3MiXSwKICAgICBdIHRpdGxlOkAiUGxhdHRlciJdOwogCisgICAgUFRTZWN0aW9u
ICpkZWJ1Z1NlY3Rpb24gPSBbUFRNb2R1bGUgc2VjdGlvbldpdGhSb3dzOkBbCisgICAgICAgIFtQ
VFN3aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJTaG93IERlYnVnIE92ZXJsYXkiIHZhbHVlS2V5UGF0
aDpAInNob3dEZWJ1Z092ZXJsYXkiXSwKKyAgICBdIHRpdGxlOkAiRGVidWciXTsKKwogICAgIFBU
U2VjdGlvbiAqYW5pbWF0aW9uU2VjdGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsK
LSAgICAgICAgW1BUU3dpdGNoUm93IHJvd1dpdGhUaXRsZTpAIkFuaW1hdGUgQmV0d2VlbiBQbGF0
dGVycyIgdmFsdWVLZXlQYXRoOkAiYW5pbWF0ZUJldHdlZW5QbGF0dGVycyJdLAorICAgICAgICBb
UFRTd2l0Y2hSb3cgcm93V2l0aFRpdGxlOkAiQW5pbWF0ZSBTY2FsZSIgdmFsdWVLZXlQYXRoOkAi
YW5pbWF0ZVNjYWxlIl0sCiAgICAgICAgIFtQVFN3aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJVc2Ug
U3ByaW5nIiB2YWx1ZUtleVBhdGg6QCJ1c2VTcHJpbmciXSwKICAgICAgICAgW1tbUFRTbGlkZXJS
b3cgcm93V2l0aFRpdGxlOkAiRHVyYXRpb24iIHZhbHVlS2V5UGF0aDpAImR1cmF0aW9uIl0gbWlu
VmFsdWU6MCBtYXhWYWx1ZToxXSBjb25kaXRpb246W05TUHJlZGljYXRlIHByZWRpY2F0ZVdpdGhG
b3JtYXQ6QCJ1c2VTcHJpbmcgPT0gRkFMU0UiXV0sCiAgICAgICAgIFtbUFRFZGl0RmxvYXRSb3cg
cm93V2l0aFRpdGxlOkAiU3ByaW5nIE1hc3MiIHZhbHVlS2V5UGF0aDpAInNwcmluZ01hc3MiXSBj
b25kaXRpb246W05TUHJlZGljYXRlIHByZWRpY2F0ZVdpdGhGb3JtYXQ6QCJ1c2VTcHJpbmcgPT0g
VFJVRSJdXSwKQEAgLTk3LDIyICs5OCwyMCBAQCArIChQVE1vZHVsZSAqKXNldHRpbmdzQ29udHJv
bGxlck1vZHVsZQogICAgICAgICBbW1BURWRpdEZsb2F0Um93IHJvd1dpdGhUaXRsZTpAIlNwcmlu
ZyBEYW1waW5nIiB2YWx1ZUtleVBhdGg6QCJzcHJpbmdEYW1waW5nIl0gY29uZGl0aW9uOltOU1By
ZWRpY2F0ZSBwcmVkaWNhdGVXaXRoRm9ybWF0OkAidXNlU3ByaW5nID09IFRSVUUiXV0sCiAgICAg
XSB0aXRsZTpAIkFuaW1hdGlvbiJdOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBw
bGF0dGVyTGF5b3V0Um93cyA9IGFkb3B0TlMoW0BbCi0gICAgICAgIFtbUFRTbGlkZXJSb3cgcm93
V2l0aFRpdGxlOkAiQ29ybmVyIFJhZGl1cyIgdmFsdWVLZXlQYXRoOkAicGxhdHRlckNvcm5lclJh
ZGl1cyJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZhbHVlOjIwXSwKLSAgICAgICAgW1tQVFNsaWRl
clJvdyByb3dXaXRoVGl0bGU6QCJQYWRkaW5nIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVyUGFkZGlu
ZyJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZhbHVlOjIwXSwKLSAgICAgICAgW1tQVFNsaWRlclJv
dyByb3dXaXRoVGl0bGU6QCJTaGFkb3cgT3BhY2l0eSIgdmFsdWVLZXlQYXRoOkAicGxhdHRlclNo
YWRvd09wYWNpdHkiXSBtaW5WYWx1ZTowIG1heFZhbHVlOjFdLAotICAgICAgICBbW1BUU2xpZGVy
Um93IHJvd1dpdGhUaXRsZTpAIlNoYWRvdyBSYWRpdXMiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJT
aGFkb3dSYWRpdXMiXSBpbnRlZ2VyTWluVmFsdWU6MCBtYXhWYWx1ZToyMF0sCi0gICAgICAgIFtb
UFRTbGlkZXJSb3cgcm93V2l0aFRpdGxlOkAiSW5mbGF0aW9uIFNpemUiIHZhbHVlS2V5UGF0aDpA
InBsYXR0ZXJJbmZsYXRpb25TaXplIl0gaW50ZWdlck1pblZhbHVlOjAgbWF4VmFsdWU6MzBdCi0g
ICAgXSBtdXRhYmxlQ29weV0pOwotICAgIGFkZEFkZGl0aW9uYWxQbGF0dGVyTGF5b3V0UGFyYW1l
dGVycyhwbGF0dGVyTGF5b3V0Um93cy5nZXQoKSk7CisgICAgUFRTZWN0aW9uICpwbGF0dGVyU2Vj
dGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsKKyAgICAgICAgW1tQVFNsaWRlclJv
dyByb3dXaXRoVGl0bGU6QCJSYWRpdXMiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJSYWRpdXMiXSBp
bnRlZ2VyTWluVmFsdWU6MCBtYXhWYWx1ZTo0MDBdLAorICAgICAgICBbW1BUU2xpZGVyUm93IHJv
d1dpdGhUaXRsZTpAIlNjYWxlIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVyU2NhbGUiXSBtaW5WYWx1
ZToxIG1heFZhbHVlOjRdLAorICAgIF0gdGl0bGU6QCJQbGF0dGVyIl07CiAKLSAgICBQVFNlY3Rp
b24gKnBsYXR0ZXJMYXlvdXRTZWN0aW9uID0gW1BUTW9kdWxlIHNlY3Rpb25XaXRoUm93czpwbGF0
dGVyTGF5b3V0Um93cy5nZXQoKSB0aXRsZTpAIlBsYXR0ZXIgTGF5b3V0Il07CisgICAgUFRTZWN0
aW9uICpsaW5rU2VhcmNoaW5nU2VjdGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsK
KyAgICAgICAgW1tQVFNsaWRlclJvdyByb3dXaXRoVGl0bGU6QCJSYWRpdXMiIHZhbHVlS2V5UGF0
aDpAImxpbmtTZWFyY2hSYWRpdXMiXSBpbnRlZ2VyTWluVmFsdWU6MCBtYXhWYWx1ZToyMDBdLAor
ICAgIF0gdGl0bGU6QCJMaW5rIFNlYXJjaGluZyJdOwogCiAgICAgUFRTZWN0aW9uICpyZXN0b3Jl
RGVmYXVsdHNTZWN0aW9uID0gW1BUTW9kdWxlIHNlY3Rpb25XaXRoUm93czpAWwogICAgICAgICBb
UFRCdXR0b25Sb3cgcm93V2l0aFRpdGxlOkAiUmVzdG9yZSBEZWZhdWx0cyIgYWN0aW9uOltQVFJl
c3RvcmVEZWZhdWx0U2V0dGluZ3NSb3dBY3Rpb24gYWN0aW9uXV0KICAgICBdXTsKIAotICAgIHJl
dHVybiBbUFRNb2R1bGUgbW9kdWxlV2l0aFRpdGxlOm5pbCBjb250ZW50czpAWyBlbmFibGVtZW50
U2VjdGlvbiwgYW5pbWF0aW9uU2VjdGlvbiwgcGxhdHRlckxheW91dFNlY3Rpb24sIHJlc3RvcmVE
ZWZhdWx0c1NlY3Rpb24gXV07CisgICAgcmV0dXJuIFtQVE1vZHVsZSBtb2R1bGVXaXRoVGl0bGU6
bmlsIGNvbnRlbnRzOkBbIGVuYWJsZW1lbnRTZWN0aW9uLCBkZWJ1Z1NlY3Rpb24sIGFuaW1hdGlv
blNlY3Rpb24sIHBsYXR0ZXJTZWN0aW9uLCBsaW5rU2VhcmNoaW5nU2VjdGlvbiwgcmVzdG9yZURl
ZmF1bHRzU2VjdGlvbiBdXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiOGY4ZGU2N2QxMmE2M2Y4MjNhMTA1MTI5ZjA5NzEy
OTVlOTlkMmI5Li5iNzkyYzJkNjliZGI1NjY2YTFjMjRiZGFkZTNmZDEwMzA3NWYxMGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjI2NSw2
ICs2MjY1LDQzIEBAIHZvaWQgV2ViUGFnZTo6Y2FuY2VsZWRDb21wb3NpdGlvbigpCiAgICAgc2Vu
ZEVkaXRvclN0YXRlVXBkYXRlKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW50ZXJhY3RhYmxlUmVn
aW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8RmxvYXRSZWN0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
UmVmIGZyYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOworCisgICAgaWYgKFJlZlB0ciBmcmFtZVZp
ZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAgICBmcmFtZVZpZXctPnVwZGF0ZUxheW91dEFuZFN0
eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKKworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3Vs
dCB7IExheW91dFJlY3QocmVjdCkgfTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KHsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAorICAgICAgICBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5LAor
ICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMKKyAg
ICB9KTsKKyAgICBkb2N1bWVudC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworCisgICAgVmVj
dG9yPEZsb2F0UmVjdD4gcmVjdHM7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5vZGUgOiByZXN1
bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpKSB7CisgICAgICAgIGlmICghaXM8RWxlbWVudD4obm9k
ZS5nZXQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byYgZWxlbWVudCA9
IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUuZ2V0KCkpOworCisgICAgICAgIGlmICghbm9kZS0+d2ls
bFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIHJlY3RzLmFwcGVuZChlbGVtZW50LmJvdW5kaW5nQm94SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCkpOworICAgIH0KKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3RzKTsKK30KKwogdm9p
ZCBXZWJQYWdlOjpzZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5c1No
b3dzSG9yaXpvbnRhbFNjcm9sbGVyKQogewogICAgIGlmIChhbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlciA9PSBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDdlYzZmNGFlMzYzZmJhODExMWFh
M2Q1N2I4OTAzMTJmODdkYmFlOTEuLjAzY2JlMjVjOGZmNDZkZTM5MmRiYzNkYjc5MWVlYTcyNTY4
MjlkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTkzMSw2ICs5MzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRVcGRhdGVDb21wb3NpdGlvbigp
OwogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKTsKIAorICAg
IHZvaWQgaW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpG
bG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVj
dD4pPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplQWNjZXNzaWJpbGl0eSgpOwogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMTE5MTgzN2MzNTFl
YTI3OTVkZjliMWE1YmYyYTQ2NDM2NThlMGQ0ZS4uYjVmYzg1Y2NjYjk0YTJjNzQxMGI4NTk0MmUy
NTkwNDU0ZDk4NGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02NTcsNCArNjU3LDYgQEAgR2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUKICNlbmRpZgogCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVj
dCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKKworICAgIEludGVyYWN0
YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3Qp
IC0+IChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykgQXN5bmMKIH0K
</data>
<flag name="commit-queue"
          id="478051"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451342</attachid>
            <date>2022-02-08 23:26:11 -0800</date>
            <delta_ts>2022-02-09 01:32:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236289-20220208232610.patch</filename>
            <type>text/plain</type>
            <size>54035</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1YmNkNTZjNjlhNGZmYzY1
OWE1MjlmNDQzMDM2MmY1MjU5YTcyMWEuLjBhOWY5ZjhlZTI0NzAxZWNkNWNiYWE3ZmM3YzlkOGVh
YTU4NGY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjItMDItMDggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tIb3ZlclBsYXR0ZXIg
c2hvdWxkIHNjYWxlIHVwIHRoZSBwbGF0dGVyIGNvbnRlbnQgdG8gbWFrZSBpdCBlYXNpZXIgdG8g
c2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYy
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgKiBTaGFy
ZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvTmF0aXZlV2Vi
TW91c2VFdmVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6
TmF0aXZlV2ViTW91c2VFdmVudCk6CisgICAgICAgIEFkZCBhIE5hdGl2ZVdlYk1vdXNlRXZlbnQg
Y29uc3RydWN0b3IgdGhhdCB0YWtlcyBtb3N0IHByb3BlcnRpZXMgZnJvbQorICAgICAgICBhbm90
aGVyIGV2ZW50LCBidXQgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIHBvc2l0aW9ucyBhbmQgZGVsdGFz
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRl
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW50
ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIGNvdW50IHRoZSBudW1i
ZXIgb2YgY2xpY2thYmxlIGVsZW1lbnRzIGluIGEgZ2l2ZW4gcmVjdGFuZ2xlLgorICAgICAgICBU
aGlzIGlzIGp1c3QgYSBmaXJzdCBhdHRlbXB0IGF0IHRoZSBoZXVyaXN0aWM7IHRoaXMgd2lsbCBn
ZXQgbW9yZSBjb21wbGV4IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICBBZGQgYSBzZWxlY3Rpb24gYXNz
aXN0YW50IHN1cHByZXNzaW9uIHJlYXNvbiBmb3IgV0tIb3ZlclBsYXR0ZXIuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfY3JlYXRlQW5kQ29uZmlndXJlSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXJdKToKKyAgICAgICAgRmFjdG9yIG91dCBoaWdobGlnaHQtbG9uZy1wcmVzcyBn
ZXN0dXJlIGNyZWF0aW9uIGxpa2UgbG9uZy1wcmVzcy4gQmFpbCBpZiB0aGUgcGxhdHRlciBpcyBl
bmFibGVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0VXBJbnRlcmFjdGlvbl0pOgor
ICAgICAgICBEaXNhYmxlIHRoZSBzZWxlY3Rpb24gYXNzaXN0YW50IGlmIFdLSG92ZXJQbGF0dGVy
IHdhbnRzIHRvIHVzZSBsb25nIHByZXNzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xl
YW5VcEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2xvY2F0aW9uRm9y
R2VzdHVyZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RhcnRQb2ludEZvckdlc3R1
cmU6XSk6CisgICAgICAgIEFkZCBmdW5uZWxzIGZvciBleHRyYWN0aW5nIHRoZSBwcmltYXJ5IGxv
Y2F0aW9uIG9yIHN0YXJ0aW5nIGxvY2F0aW9uIGZyb20KKyAgICAgICAgYSBnZXN0dXJlLCBhbGxv
d2luZyBXS0hvdmVyUGxhdHRlciB0byBtdXRhdGUgaXQgaWYgaXQgaXMgY3VycmVudGx5IGVuZ2Fn
ZWQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2du
aXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZG91YmxlVGFwUmVjb2duaXplZEZv
ckRvdWJsZUNsaWNrOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90d29GaW5nZXJTaW5n
bGVUYXBHZXN0dXJlUmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2lu
Z2xlVGFwSWRlbnRpZmllZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFw
UmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZG91YmxlVGFwUmVjb2du
aXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfbm9uQmxvY2tpbmdEb3VibGVUYXBS
ZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90d29GaW5nZXJEb3VibGVU
YXBSZWNvZ25pemVkOl0pOgorICAgICAgICBBZG9wdCBfbG9jYXRpb25Gb3JHZXN0dXJlL19zdGFy
dFBvaW50Rm9yR2VzdHVyZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9sb25nUHJlc3NS
ZWNvZ25pemVkOl0pOgorICAgICAgICBBZG9wdCBfbG9jYXRpb25Gb3JHZXN0dXJlL19zdGFydFBv
aW50Rm9yR2VzdHVyZS4KKyAgICAgICAgUmVkaXJlY3QgYSByZWNvZ25pemVkIGxvbmcgcHJlc3Mg
dG8gV0tIb3ZlclBsYXR0ZXIgaWYgaXQgd2FudHMgdG8gdXNlIGxvbmcgcHJlc3MuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfc2hvdWxkVXNlQ29udGV4dE1lbnVzXSk6CisgICAgICAgIERp
c2FibGUgY29udGV4dCBtZW51cyBpZiBXS0hvdmVyUGxhdHRlciB3YW50cyB0byB1c2UgbG9uZyBw
cmVzcy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwRHJhZ0FuZERyb3BJbnRlcmFj
dGlvbnNdKToKKyAgICAgICAgRGlzYWJsZSBkcmFnIGFuZCBkcm9wIGlmIFdLSG92ZXJQbGF0dGVy
IHdhbnRzIHRvIHVzZSBsb25nIHByZXNzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbW91
c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6XSk6CisgICAgICAgIEFsbG93IFdLSG92ZXJQbGF0
dGVyIHRvIG11dGF0ZSB0aGUgbG9jYXRpb24gb2YgbW91c2UgZXZlbnRzIGlmIGl0IGlzIGN1cnJl
bnRseSBlbmdhZ2VkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbnVtYmVyT2ZMaW5rc0Zv
ckhvdmVyUGxhdHRlcjppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tI
b3ZlclBsYXR0ZXIubW06CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGluaXRXaXRoVmlldzpk
ZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgZGlkUmVjZWl2ZU1vdXNlRXZl
bnQ6XSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpZExvbmdQcmVzc0F0UG9pbnQ6XSk6
CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHBsYXR0ZXJCb3VuZGluZ1JlY3RdKToKKyAgICAg
ICAgKC1bV0tIb3ZlclBsYXR0ZXIgbGlua1NlYXJjaFJlY3RdKToKKyAgICAgICAgKC1bV0tIb3Zl
clBsYXR0ZXIgdXBkYXRlXSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHVwZGF0ZURlYnVn
SW5kaWNhdG9yXSk6CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpc21pc3NQbGF0dGVyV2l0
aEFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgZGlkRmluaXNoRGlzbWlz
c2FsQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBjbGVhckxheWVyc10p
OgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBhZGp1c3RlZFBvaW50Rm9yUG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGFkanVzdGVkRXZlbnRGb3JFdmVudDpdKToKKyAgICAg
ICAgKHNldEFkZGl0aW9uYWxQbGF0dGVyTGF5ZXJQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKGFkZEFkZGl0aW9uYWxJbmNvbWluZ0FuaW1hdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAo
YWRkQWRkaXRpb25hbERpc21pc3NhbEFuaW1hdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0hvdmVyUGxhdHRlciBzZXRIb3ZlclBvaW50Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0hv
dmVyUGxhdHRlciByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbkZvckN1cnJlbnRIb3ZlclBvaW50
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIGRpZFJlY2VpdmVQb3NpdGlv
bkluZm9ybWF0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciBkaWRG
aW5pc2hBbmltYXRpb25Gb3JTaGFkb3c6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5tbToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXJQ
YXJhbWV0ZXJzIHNldERlZmF1bHRWYWx1ZXNdKToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXJQ
YXJhbWV0ZXJzIGVuYWJsZWRdKToKKyAgICAgICAgKCtbV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJz
IHNldHRpbmdzQ29udHJvbGxlck1vZHVsZV0pOgorICAgICAgICAoYWRkQWRkaXRpb25hbFBsYXR0
ZXJMYXlvdXRQYXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKHNldERlZmF1bHRWYWx1ZXNG
b3JBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICBB
ZGp1c3QgV0tIb3ZlclBsYXR0ZXIgdG8gc2NhbGUgdXAgaXRzIGNvbnRlbnQsIGFuZCBhZGp1c3Qg
dGhlIHNoYXBlCisgICAgICAgIGFuZCBhbmltYXRpb25zLgorCiAyMDIyLTAyLTA3ICBCZW4gTmhh
bSAgPG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQdXNoU2VydmljZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCmluZGV4IGEzYTY1ZDEwMzYxZGIyNGQ1
N2M4OTI0Y2M1MDkxOGM3OTE2ODhlYzguLmZlZjU3ZTM0YmU2ZWQ3NTkyMTg3YzNlMWZkNzNjOTg5
YmY3OWRhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNl
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBOYXRpdmVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CiAgICAgTmF0aXZlV2ViTW91c2VF
dmVudChUeXBlLCBCdXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tD
b3VudCwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wLCBkb3VibGUgZm9y
Y2UsIEdlc3R1cmVXYXNDYW5jZWxsZWQsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUpOworICAg
IE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaKTsKICNl
bGlmIFVTRShMSUJXUEUpCiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChzdHJ1Y3Qgd3BlX2lucHV0
X3BvaW50ZXJfZXZlbnQqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAjZWxpZiBQTEFURk9S
TShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvTmF0aXZlV2ViTW91
c2VFdmVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2
ZW50SU9TLm1tCmluZGV4IDQ2MTM5NDE1YTMxZmFhNWNhODExYTM2ZTA1YjAxYTU5MDE1ZTVlYTYu
LjA4ODBiZjgzZTEwZDljYTlkMzc2MGNmNWMwYmRmMDA3ZjMzOTY0YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tCkBAIC00Myw2
ICs0MywxMSBAQCBOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUg
dHlwZSwgQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hvcgogewogfQogCitOYXRpdmVXZWJNb3Vz
ZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmIG90
aGVyRXZlbnQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwg
ZmxvYXQgZGVsdGFaKQorICAgIDogV2ViTW91c2VFdmVudChvdGhlckV2ZW50LnR5cGUoKSwgb3Ro
ZXJFdmVudC5idXR0b24oKSwgb3RoZXJFdmVudC5idXR0b25zKCksIHBvc2l0aW9uLCBnbG9iYWxQ
b3NpdGlvbiwgZGVsdGFYLCBkZWx0YVksIGRlbHRhWiwgb3RoZXJFdmVudC5jbGlja0NvdW50KCks
IG90aGVyRXZlbnQubW9kaWZpZXJzKCksIG90aGVyRXZlbnQudGltZXN0YW1wKCksIG90aGVyRXZl
bnQuZm9yY2UoKSwgb3RoZXJFdmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSwgb3RoZXJFdmVudC5w
b2ludGVySWQoKSwgb3RoZXJFdmVudC5wb2ludGVyVHlwZSgpLCBvdGhlckV2ZW50Lmdlc3R1cmVX
YXNDYW5jZWxsZWQoKSkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZjgyNDhmNWMzNTRkNzg3YjAxM2NmYzdmMGI2NjUyOTk0YTJlNDg3My4uMzA1
ZTJiOWFiZGYzNWRiMGViODZkYWRmM2E5MTMzNDA3MjYyMmVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTE1Niw2ICsxMTE1NiwxMSBAQCBib29sIFdl
YlBhZ2VQcm94eTo6c2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdAogICAgIHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24tPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRl
cyhGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RmxvYXRSZWN0
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKHJl
Y3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBQTEFURk9STShDT0NP
QSkKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggYTQ0N2M3MGMwODQwNjE0OTBjMWI0OTVlZmIxODdmMTY1YTFlY2NiMi4uZjM3OWI5ZDc2
OGUxMTA1ZWQ5NWM2YzFhMmEwYmY2YWVlZmNkOGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwNTksNiArMjA1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
YXNzaWZ5TW9kYWxDb250YWluZXJDb250cm9scyhWZWN0b3I8U3RyaW5nPiYmIHRleHRzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNb2RhbENvbnRhaW5lckNvbnRyb2xU
eXBlPiYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JNb2RhbENvbnRhaW5lcihPcHRp
b25TZXQ8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6TW9kYWxDb250YWluZXJEZWNpc2lvbik+JiYpOwogCisgICAgdm9p
ZCBpbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKFdlYkNvcmU6OkZsb2F0
UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0Pik+
JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMjk2MzY3Mzg5YWI1NTg4NjJkZTliMmFk
NjMzZTRmNjk2Yjg2YWJkNy4uN2ZmN2E3ZjU4ODNmMzgyM2FjNTEzZTc2ZmIwZmY0MDc4MmQ5Mzc4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaApAQCAtMjIyLDcgKzIyMiw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ZW51bSBTdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEVk
aXRhYmxlUm9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IDEgPDwgMCwKICAgICBGb2N1
c2VkRWxlbWVudElzVG9vU21hbGwgPSAxIDw8IDEsCi0gICAgSW50ZXJhY3Rpb25Jc0hhcHBlbmlu
ZyA9IDEgPDwgMgorICAgIEludGVyYWN0aW9uSXNIYXBwZW5pbmcgPSAxIDw8IDIsCisgICAgSG92
ZXJQbGF0dGVyRW5hYmxlZCA9IDEgPDwgMywKIH07CiAKIHN0cnVjdCBXS1NlbGVjdGlvbkRyYXdp
bmdJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDI2YmM5NTQ3ZjI4Y2RlNWYwMGU2MzhmNDM3NzQ0
ZjU4ZDMyOTBhNWQuLmI2MDE0ODljZDY0N2Y2ZTRmNjNkM2QyNDVlNmQ1YjkzMTIyOGVkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQpAQCAtODg1LDYgKzg4NSwxOSBAQCAtICh2b2lkKV9jcmVhdGVBbmRDb25m
aWd1cmVEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcgogICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJl
Y29nbml6ZXIgcmVxdWlyZUdlc3R1cmVSZWNvZ25pemVyVG9GYWlsOl9kb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX2NyZWF0ZUFuZENvbmZpZ3VyZUhpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCit7CisjaWYgSEFWRShVSUtJVF9XSVRIX01P
VVNFX1NVUFBPUlQpCisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5w
bGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzcykKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAg
ICBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tIaWdo
bGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2Vs
ZiBhY3Rpb246QHNlbGVjdG9yKF9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOildKTsKKyAg
ICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNldERlbGF5OmhpZ2hsaWdo
dERlbGF5XTsKKyAgICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNldERl
bGVnYXRlOnNlbGZdOworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9oaWdobGlnaHRM
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKV07Cit9CisKIC0gKHZvaWQpX2NyZWF0ZUFu
ZENvbmZpZ3VyZUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgX2xvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIg
YWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfbG9uZ1ByZXNzUmVj
b2duaXplZDopXSk7CkBAIC0xMDEzLDExICsxMDI2LDcgQEAgLSAodm9pZClzZXRVcEludGVyYWN0
aW9uCiAgICAgW190d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0
ZTpzZWxmXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91Ymxl
VGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCi0gICAgX2hpZ2hsaWdodExvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJl
Y29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfaGln
aGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDopXSk7Ci0gICAgW19oaWdobGlnaHRMb25nUHJlc3NH
ZXN0dXJlUmVjb2duaXplciBzZXREZWxheTpoaWdobGlnaHREZWxheV07Ci0gICAgW19oaWdobGln
aHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbc2Vs
ZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCldOwotCisgICAgW3NlbGYgX2NyZWF0ZUFuZENvbmZpZ3VyZUhpZ2hsaWdodExvbmdQ
cmVzc0dlc3R1cmVSZWNvZ25pemVyXTsKICAgICBbc2VsZiBfY3JlYXRlQW5kQ29uZmlndXJlTG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXJdOwogCiAjaWYgSEFWRShMSU5LX1BSRVZJRVcpCkBAIC0x
Mjg3LDYgKzEyOTYsMTEgQEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICBbc2VsZiBf
aGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdDpXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlXTsKICAgICBbc2VsZiBfY2FuY2VsUGVuZGluZ0tleUV2
ZW50SGFuZGxlcl07CiAKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKKyAgICBp
ZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTG9u
Z1ByZXNzKQorICAgICAgICBbc2VsZiBfc3RhcnRTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFu
dEZvclJlYXNvbjpXZWJLaXQ6OkhvdmVyUGxhdHRlckVuYWJsZWRdOworI2VuZGlmCisKICAgICBf
Y2FjaGVkU2VsZWN0ZWRUZXh0UmFuZ2UgPSBuaWw7CiB9CiAKQEAgLTMwODksMjMgKzMxMDMsNDkg
QEAgLSAoV2ViS2l0OjpUYXBJZGVudGlmaWVyKW5leHRUYXBJZGVudGlmaWVyCiAgICAgcmV0dXJu
IF9sYXRlc3RUYXBJRDsKIH0KIAorLSAoQ0dQb2ludClfbG9jYXRpb25Gb3JHZXN0dXJlOihVSUdl
c3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBhdXRvIGxvY2F0aW9u
ID0gW2dlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3OnNlbGZdOworCisjaWYgSEFWRShV
SUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJv
b3RTZXR0aW5ncy5lbmFibGVkKQorICAgICAgICByZXR1cm4gW19ob3ZlclBsYXR0ZXIgYWRqdXN0
ZWRQb2ludEZvclBvaW50OmxvY2F0aW9uXTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGxvY2F0aW9u
OworfQorCistIChDR1BvaW50KV9zdGFydFBvaW50Rm9yR2VzdHVyZTooVUlMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgYXV0byBsb2NhdGlvbiA9
IFtnZXN0dXJlUmVjb2duaXplciBzdGFydFBvaW50XTsKKworI2lmIEhBVkUoVUlLSVRfV0lUSF9N
T1VTRV9TVVBQT1JUKQorICAgIGlmIChXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3Mu
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFtfaG92ZXJQbGF0dGVyIGFkanVzdGVkUG9pbnRGb3JQ
b2ludDpsb2NhdGlvbl07CisjZW5kaWYKKworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKwogLSAo
dm9pZClfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25p
emVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcik7CiAgICAgW3NlbGYg
X3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nXTsKIAotICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlv
biA9IGdlc3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnQ7CisgICAgYXV0byBzdGFydFBvaW50ID0g
W3NlbGYgX3N0YXJ0UG9pbnRGb3JHZXN0dXJlOmdlc3R1cmVSZWNvZ25pemVyXTsKKworICAgIF9s
YXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IHN0YXJ0UG9pbnQ7CiAKICAgICBzd2l0Y2ggKFtnZXN0
dXJlUmVjb2duaXplciBzdGF0ZV0pIHsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZUJlZ2FuOgogICAgICAgICBfbG9uZ1ByZXNzQ2FuQ2xpY2sgPSBZRVM7CiAgICAgICAgIGNhbmNl
bFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KHNlbGYpOwotICAgICAgICBfcGFnZS0+dGFwSGlnaGxp
Z2h0QXRQb3NpdGlvbihbZ2VzdHVyZVJlY29nbml6ZXIgc3RhcnRQb2ludF0sIFtzZWxmIG5leHRU
YXBJZGVudGlmaWVyXSk7CisgICAgICAgIF9wYWdlLT50YXBIaWdobGlnaHRBdFBvc2l0aW9uKHN0
YXJ0UG9pbnQsIFtzZWxmIG5leHRUYXBJZGVudGlmaWVyXSk7CiAgICAgICAgIF9pc1RhcEhpZ2hs
aWdodElEVmFsaWQgPSBZRVM7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUlHZXN0dXJlUmVj
b2duaXplclN0YXRlRW5kZWQ6CiAgICAgICAgIGlmIChfbG9uZ1ByZXNzQ2FuQ2xpY2sgJiYgX3Bv
c2l0aW9uSW5mb3JtYXRpb24uaXNFbGVtZW50KSB7Ci0gICAgICAgICAgICBbc2VsZiBfYXR0ZW1w
dFN5bnRoZXRpY0NsaWNrQXRMb2NhdGlvbjpnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50IG1v
ZGlmaWVyRmxhZ3M6Z2VzdHVyZVJlY29nbml6ZXIubW9kaWZpZXJGbGFnc107CisgICAgICAgICAg
ICBbc2VsZiBfYXR0ZW1wdFN5bnRoZXRpY0NsaWNrQXRMb2NhdGlvbjpzdGFydFBvaW50IG1vZGlm
aWVyRmxhZ3M6Z2VzdHVyZVJlY29nbml6ZXIubW9kaWZpZXJGbGFnc107CiAgICAgICAgICAgICBb
c2VsZiBfZmluaXNoSW50ZXJhY3Rpb25dOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtz
ZWxmIF9jYW5jZWxJbnRlcmFjdGlvbl07CkBAIC0zMTIyLDE0ICszMTYyLDE0IEBAIC0gKHZvaWQp
X2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjCiAKIC0gKHZvaWQpX2RvdWJsZVRhcFJlY29nbml6ZWRGb3JEb3VibGVD
bGljazooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7Ci0gICAg
X3BhZ2UtPmhhbmRsZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2ludChXZWJDb3JlOjpJbnRQ
b2ludChnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbiksIFdlYktpdDo6d2ViRXZlbnRNb2RpZmll
ckZsYWdzKGdlc3R1cmVSZWNvZ25pemVyLm1vZGlmaWVyRmxhZ3MpLCBfbGF5ZXJUcmVlVHJhbnNh
Y3Rpb25JZEF0TGFzdEludGVyYWN0aW9uU3RhcnQpOworICAgIF9wYWdlLT5oYW5kbGVEb3VibGVU
YXBGb3JEb3VibGVDbGlja0F0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoW3NlbGYgX2xvY2F0aW9u
Rm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXplcl0pLCBXZWJLaXQ6OndlYkV2ZW50TW9kaWZpZXJG
bGFncyhnZXN0dXJlUmVjb2duaXplci5tb2RpZmllckZsYWdzKSwgX2xheWVyVHJlZVRyYW5zYWN0
aW9uSWRBdExhc3RJbnRlcmFjdGlvblN0YXJ0KTsKIH0KIAogLSAodm9pZClfdHdvRmluZ2VyU2lu
Z2xlVGFwR2VzdHVyZVJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJl
UmVjb2duaXplcgogewogICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CiAgICAgX2lz
RXhwZWN0aW5nRmFzdFNpbmdsZVRhcENvbW1pdCA9IFlFUzsKLSAgICBfcGFnZS0+aGFuZGxlVHdv
RmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2VzdHVyZVJlY29nbml6
ZXIuY2VudHJvaWQpLCBXZWJLaXQ6OndlYkV2ZW50TW9kaWZpZXJGbGFncyhnZXN0dXJlUmVjb2du
aXplci5tb2RpZmllckZsYWdzIHwgVUlLZXlNb2RpZmllckNvbW1hbmQpLCBbc2VsZiBuZXh0VGFw
SWRlbnRpZmllcl0pOworICAgIF9wYWdlLT5oYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChbc2VsZiBfbG9jYXRpb25Gb3JHZXN0dXJlOmdlc3R1cmVSZWNv
Z25pemVyXSksIFdlYktpdDo6d2ViRXZlbnRNb2RpZmllckZsYWdzKGdlc3R1cmVSZWNvZ25pemVy
Lm1vZGlmaWVyRmxhZ3MgfCBVSUtleU1vZGlmaWVyQ29tbWFuZCksIFtzZWxmIG5leHRUYXBJZGVu
dGlmaWVyXSk7CiB9CiAKIC0gKHZvaWQpX2xvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgpAQCAtMzEzNyw5ICszMTc3LDE4
IEBAIC0gKHZvaWQpX2xvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9
PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIpOwogICAgIFtzZWxmIF9yZXNldElzRG91Ymxl
VGFwUGVuZGluZ107CiAgICAgW3NlbGYgX2NhbmNlbFRvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXpl
cl07CisKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKKyAgICBpZiAoV0tIb3Zl
clBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNzKSB7
CisgICAgICAgIFtfaG92ZXJQbGF0dGVyIGRpZExvbmdQcmVzc0F0UG9pbnQ6Z2VzdHVyZVJlY29n
bml6ZXIuc3RhcnRQb2ludF07CisgICAgICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdl
c3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKwogICAgIF9wYWdlLT5kaWRSZWNvZ25pemVMb25nUHJlc3MoKTsKIAotICAgIF9sYXN0SW50
ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnQ7CisgICAgX2xh
c3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gW3NlbGYgX3N0YXJ0UG9pbnRGb3JHZXN0dXJlOmdlc3R1
cmVSZWNvZ25pemVyXTsKIAogICAgIGlmIChbZ2VzdHVyZVJlY29nbml6ZXIgc3RhdGVdID09IFVJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKSB7CiAgICAgICAgIFNFTCBhY3Rpb24gPSBbc2Vs
ZiBfYWN0aW9uRm9yTG9uZ1ByZXNzXTsKQEAgLTMxNjMsNyArMzIxMiw2IEBAIC0gKHZvaWQpX2Vu
ZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZOZWNlc3NhcnkKICAgICBf
cG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POwogfQogCi0KIC0gKHZvaWQpX3NpbmdsZVRhcElk
ZW50aWZpZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewog
ICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXIpOwpAQCAtMzE3Niw3ICszMjI0LDcgQEAgLSAodm9pZClfc2luZ2xlVGFwSWRlbnRpZmllZDoo
VUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgaWYgKHNob3Vs
ZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRpb24pCiAgICAgICAgIFJFTEVBU0VfTE9HKFZp
ZXdHZXN0dXJlcywgIlNpbmdsZSB0YXAgaWRlbnRpZmllZC4gUmVxdWVzdCBkZXRhaWxzIG9uIHBv
dGVudGlhbCB6b29tLiAoJXAsIHBhZ2VQcm94eUlEPSVsbHUpIiwgc2VsZiwgX3BhZ2UtPmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAotICAgIF9wYWdlLT5wb3RlbnRpYWxUYXBBdFBvc2l0aW9u
KGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uLCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbklu
Zm9ybWF0aW9uLCBbc2VsZiBuZXh0VGFwSWRlbnRpZmllcl0pOworICAgIF9wYWdlLT5wb3RlbnRp
YWxUYXBBdFBvc2l0aW9uKFtzZWxmIF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6
ZXJdLCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uLCBbc2VsZiBuZXh0VGFw
SWRlbnRpZmllcl0pOwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gWUVTOwogICAgIF9p
c1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRh
cENvbW1pdCA9ICFfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCkuZW5hYmxlZDsKQEAg
LTMyNTAsNyArMzI5OCw3IEBAIC0gKHZvaWQpX3NpbmdsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogCiAgICAgQVNTRVJUKF9wb3RlbnRp
YWxUYXBJblByb2dyZXNzKTsKIAotICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1
cmVSZWNvZ25pemVyLmxvY2F0aW9uOworICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IFtz
ZWxmIF9sb2NhdGlvbkZvckdlc3R1cmU6Z2VzdHVyZVJlY29nbml6ZXJdOwogCiAgICAgW3NlbGYg
X2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZOZWNlc3NhcnldOwog
CkBAIC0zMjgwLDkgKzMzMjgsMTAgQEAgLSAodm9pZClfZG91YmxlVGFwUmVjb2duaXplZDooVUlU
YXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgUkVMRUFTRV9MT0co
Vmlld0dlc3R1cmVzLCAiSWRlbnRpZmllZCBhIGRvdWJsZSB0YXAgKCVwLCBwYWdlUHJveHlJRD0l
bGx1KSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBbc2Vs
ZiBfcmVzZXRJc0RvdWJsZVRhcFBlbmRpbmddOwotICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlv
biA9IGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uOwogCi0gICAgX3NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoZ2VzdHVyZVJlY29n
bml6ZXIubG9jYXRpb24pOworICAgIGF1dG8gbG9jYXRpb24gPSBbc2VsZiBfbG9jYXRpb25Gb3JH
ZXN0dXJlOmdlc3R1cmVSZWNvZ25pemVyXTsKKyAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24g
PSBsb2NhdGlvbjsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShsb2NhdGlvbik7CiB9CiAKIC0gKHZvaWQpX3Jlc2V0SXNE
b3VibGVUYXBQZW5kaW5nCkBAIC0zMjkyLDE2ICszMzQxLDE3IEBAIC0gKHZvaWQpX3Jlc2V0SXNE
b3VibGVUYXBQZW5kaW5nCiAKIC0gKHZvaWQpX25vbkJsb2NraW5nRG91YmxlVGFwUmVjb2duaXpl
ZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7Ci0gICAgX2xh
c3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb247CisgICAg
X2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gW3NlbGYgX2xvY2F0aW9uRm9yR2VzdHVyZTpnZXN0
dXJlUmVjb2duaXplcl07CiAgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IFlFUzsKIH0KIAogLSAo
dm9pZClfdHdvRmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5k
aW5nXTsKLSAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5s
b2NhdGlvbjsKIAotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5oYW5kbGVSZXNl
dE1hZ25pZmljYXRpb25HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uKTsKKyAgICBh
dXRvIGxvY2F0aW9uID0gW3NlbGYgX2xvY2F0aW9uRm9yR2VzdHVyZTpnZXN0dXJlUmVjb2duaXpl
cl07CisgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gbG9jYXRpb247CisgICAgX3NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlvbkdlc3R1cmUo
bG9jYXRpb24pOwogfQogCiAtICh2b2lkKV9hdHRlbXB0U3ludGhldGljQ2xpY2tBdExvY2F0aW9u
OihDR1BvaW50KWxvY2F0aW9uIG1vZGlmaWVyRmxhZ3M6KFVJS2V5TW9kaWZpZXJGbGFncyltb2Rp
ZmllckZsYWdzCkBAIC03ODUzLDYgKzc5MDMsMTAgQEAgLSAodm9pZClfdGFyZ2V0ZWRQcmV2aWV3
Q29udGFpbmVyRGlkUmVtb3ZlTGFzdFN1YnZpZXc6KFdLVGFyZ2V0ZWRQcmV2aWV3Q29udGFpbmUK
IAogLSAoQk9PTClfc2hvdWxkVXNlQ29udGV4dE1lbnVzCiB7CisjaWYgSEFWRShVSUtJVF9XSVRI
X01PVVNFX1NVUFBPUlQpCisgICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5n
cy5wbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzcykKKyAgICAgICAgcmV0dXJuIE5POworI2VuZGlm
CiAjaWYgSEFWRShMSU5LX1BSRVZJRVcpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogICAgIHJldHVy
biBsaW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RUaGF0SGFzVUlDb250ZXh0TWVudUlu
dGVyYWN0aW9uKTsKICNlbmRpZgpAQCAtODIyNCw2ICs4Mjc4LDExIEBAIC0gKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPil3ZWJWaWV3VUlEZWxlZ2F0ZQogCiAtICh2b2lkKXNldFVwRHJhZ0FuZERy
b3BJbnRlcmFjdGlvbnMKIHsKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKKyAg
ICBpZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9y
TG9uZ1ByZXNzKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIF9kcmFnSW50ZXJhY3Rp
b24gPSBhZG9wdE5TKFtbVUlEcmFnSW50ZXJhY3Rpb24gYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6
c2VsZl0pOwogICAgIF9kcm9wSW50ZXJhY3Rpb24gPSBhZG9wdE5TKFtbVUlEcm9wSW50ZXJhY3Rp
b24gYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOwogICAgIFtfZHJhZ0ludGVyYWN0aW9u
IF9zZXRMaWZ0RGVsYXk6c2VsZi5kcmFnTGlmdERlbGF5XTsKQEAgLTk2NzMsOSArOTczMiwxMyBA
QCAtICh2b2lkKW1vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOihXS01vdXNlR2VzdHVyZVJl
Y29nbml6ZXIgKilnZXN0dXJlUmVjb2duaQogICAgIGlmIChldmVudC0+dHlwZSgpID09IFdlYktp
dDo6V2ViRXZlbnQ6Ok1vdXNlVXAgJiYgc2VsZi5oYXNIaWRkZW5Db250ZW50RWRpdGFibGUgJiYg
c2VsZi5faGFzRm9jdXNlZEVsZW1lbnQgJiYgIXNlbGYud2luZG93LmtleVdpbmRvdykKICAgICAg
ICAgW3NlbGYud2luZG93IG1ha2VLZXlXaW5kb3ddOwogCisgICAgaWYgKFdLSG92ZXJQbGF0dGVy
RG9tYWluLnJvb3RTZXR0aW5ncy5lbmFibGVkKSB7CisgICAgICAgIFtfaG92ZXJQbGF0dGVyIGRp
ZFJlY2VpdmVNb3VzZUV2ZW50OipldmVudF07CisgICAgICAgIF9wYWdlLT5oYW5kbGVNb3VzZUV2
ZW50KFtfaG92ZXJQbGF0dGVyIGFkanVzdGVkRXZlbnRGb3JFdmVudDoqZXZlbnRdKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIF9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50KCpldmVudCk7
Ci0gICAgaWYgKFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyRW5hYmxl
ZEZvck1vdXNlKQotICAgICAgICBbX2hvdmVyUGxhdHRlciBzZXRIb3ZlclBvaW50OmV2ZW50LT5w
b3NpdGlvbigpXTsKIH0KIAogLSAodm9pZClfY29uZmlndXJlTW91c2VHZXN0dXJlUmVjb2duaXpl
cgpAQCAtOTY5OCw2ICs5NzYxLDEzIEBAIC0gKHZvaWQpcG9zaXRpb25JbmZvcm1hdGlvbkZvckhv
dmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgd2l0aFJlCiAgICAgW3Nl
bGYgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6Y29tcGxldGlvbkhhbmRsZXIgZm9y
UmVxdWVzdDpyZXF1ZXN0XTsKIH0KIAorLSAodm9pZClpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92
ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKXBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9h
dFJlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVmVjdG9yPFdlYkNvcmU6OkZs
b2F0UmVjdD4pKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmludGVyYWN0YWJsZVJl
Z2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMocmVjdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+
IHJlY3RzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3RzKTsKKyAgICB9KTsKK30K
KwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYg
VVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tIb3ZlclBsYXR0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVy
UGxhdHRlci5oCmluZGV4IGZkNzkyZmQ2NDI0YTE0NzgxNGY1NzliNDY3NWMxN2I4NzU2YzJhMWUu
LmIzODMyZDYwNzZkMjI5ODI5YjdkYTg3NzVlMGI3OWJiYTQ3MmZhNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oCkBAIC0yNSw2ICsyNSw4IEBACiAK
ICNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKIAorI2ltcG9ydCAiTmF0aXZlV2Vi
TW91c2VFdmVudC5oIgorCiBAY2xhc3MgV0tIb3ZlclBsYXR0ZXI7CiAKIEBwcm90b2NvbCBXS0hv
dmVyUGxhdHRlckRlbGVnYXRlCkBAIC0zMiwxMiArMzQsMjAgQEAKIEByZXF1aXJlZAogLSAodm9p
ZClwb3NpdGlvbkluZm9ybWF0aW9uRm9ySG92ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKWhv
dmVyUGxhdHRlciB3aXRoUmVxdWVzdDooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbikpY29tcGxldGlvbkhhbmRsZXI7CiAKKy0gKHZvaWQp
aW50ZXJhY3RhYmxlUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilob3Zl
clBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pKWNvbXBsZXRpb25IYW5kbGVy
OworCiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tIb3ZlclBsYXR0ZXIgOiBOU09iamVjdAogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGRlbGVnYXRlOihpZCA8V0tI
b3ZlclBsYXR0ZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CiAKKy0gKHZvaWQpZGlkUmVjZWl2ZU1vdXNl
RXZlbnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudCYpZXZlbnQ7CistICh2b2lk
KWRpZExvbmdQcmVzc0F0UG9pbnQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpcG9pbnQ7CisKKy0gKFdl
YkNvcmU6OkZsb2F0UG9pbnQpYWRqdXN0ZWRQb2ludEZvclBvaW50OihXZWJDb3JlOjpGbG9hdFBv
aW50KXBvaW50OworLSAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50KWFkanVzdGVkRXZlbnRG
b3JFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50JilldmVudDsKKwogLSAo
dm9pZClkaXNtaXNzUGxhdHRlcldpdGhBbmltYXRpb246KEJPT0wpd2l0aEFuaW1hdGlvbjsKIAog
LSAodm9pZClpbnZhbGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSG92ZXJQbGF0dGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92
ZXJQbGF0dGVyLm1tCmluZGV4IGZiMTNlMDRhMDk5ZTYzZTdmOWQ1N2NhOGIyZjk2ZDZiNDY5OThi
ZGYuLjc5YTM5ODgxMTNiZGJlYmRmNzBhNDE0OTE1MzZiMGY0MWQ0YjFjNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KQEAgLTYzLDM3ICs2Mywy
NSBAQCBzdGF0aWMgdm9pZCBhZGRBbmltYXRpb24oQ0FMYXllciAqbGF5ZXIsIE5TU3RyaW5nICpr
ZXksIGlkIGZyb21WYWx1ZSwgaWQgdG9WYWx1ZQogICAgIFtsYXllciBhZGRBbmltYXRpb246YW5p
bWF0aW9uLmdldCgpIGZvcktleTprZXldOwogfTsKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tIb3ZlclBsYXR0ZXJBZGRpdGlvbnMubW0+
Ci0jZWxzZQotc3RhdGljIENHRmxvYXQgc2V0QWRkaXRpb25hbFBsYXR0ZXJMYXllclByb3BlcnRp
ZXMoQ0FMYXllciAqLCBDQUxheWVyICopIHsgcmV0dXJuIDA7IH0KLXN0YXRpYyB2b2lkIGFkZEFk
ZGl0aW9uYWxJbmNvbWluZ0FuaW1hdGlvbnMoQ0FMYXllciAqLCBDR0Zsb2F0KSB7IH0KLXN0YXRp
YyB2b2lkIGFkZEFkZGl0aW9uYWxEaXNtaXNzYWxBbmltYXRpb25zKENBTGF5ZXIgKikgeyB9Ci0j
ZW5kaWYKLQogQGltcGxlbWVudGF0aW9uIFdLSG92ZXJQbGF0dGVyIHsKICAgICBfX3dlYWsgVUlW
aWV3ICpfdmlldzsKICAgICBfX3dlYWsgaWQgPFdLSG92ZXJQbGF0dGVyRGVsZWdhdGU+IF9kZWxl
Z2F0ZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IF9ob3ZlclBvaW50OwogCi0gICAgQk9PTCBf
aGFzT3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsKLSAgICBCT09MIF9oYXNE
ZWZlcnJlZFBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OwotCiAgICAgQk9PTCBfaXNTaXR0aW5n
RG93bjsKIAotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBfbGFzdEhvdmVyQm91bmRzOworICAgIFJl
dGFpblB0cjxDQUxheWVyPiBfcGxhdHRlckxheWVyOworICAgIFJldGFpblB0cjxDQVBvcnRhbExh
eWVyPiBfc25hcHNob3RMYXllcjsKIAotICAgIFJldGFpblB0cjxDQVNoYXBlTGF5ZXI+IF9sYXN0
TWFza0xheWVyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBfbGFzdFNoYWRvd0xheWVyOwotICAg
IFJldGFpblB0cjxDQUxheWVyPiBfbGFzdFBsYXR0ZXJMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gX2xhc3RCYWNrZ3JvdW5kTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBUG9ydGFsTGF5ZXI+
IF9sYXN0U25hcHNob3RMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gX2RlYnVnSW5kaWNh
dG9yTGF5ZXI7CisgICAgUmV0YWluUHRyPENBVGV4dExheWVyPiBfbGlua0NvdW50TGF5ZXI7Cisg
ICAgUmV0YWluUHRyPENBU2hhcGVMYXllcj4gX2xpbmtIaWdobGlnaHRMYXllcjsKIH0KIAogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooVUlWaWV3ICopdmlldyBkZWxlZ2F0ZTooaWQgPFdL
SG92ZXJQbGF0dGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0g
V0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzOwotICAgIGlmICghcGFyYW1ldGVycy5w
bGF0dGVyRW5hYmxlZEZvck1vdXNlICYmICFwYXJhbWV0ZXJzLnBsYXR0ZXJFbmFibGVkRm9ySG92
ZXIpIHsKKyAgICBpZiAoIXBhcmFtZXRlcnMucGxhdHRlckVuYWJsZWRGb3JNb3VzZSAmJiAhcGFy
YW1ldGVycy5wbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzcykgewogICAgICAgICBbc2VsZiByZWxl
YXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CkBAIC0xMjAsMTc2ICsxMDgsMTQwIEBA
IC0gKFdlYkNvcmU6OkZsb2F0UG9pbnQpaG92ZXJQb2ludAogICAgIHJldHVybiBfaG92ZXJQb2lu
dDsKIH0KIAotLSAodm9pZClzZXRIb3ZlclBvaW50OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50
CistICh2b2lkKWRpZFJlY2VpdmVNb3VzZUV2ZW50Oihjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYk1v
dXNlRXZlbnQmKWV2ZW50CiB7Ci0gICAgX2hvdmVyUG9pbnQgPSBwb2ludDsKKyAgICBhdXRvIHBv
aW50ID0gZXZlbnQucG9zaXRpb24oKTsKIAotICAgIGlmIChfaGFzT3V0c3RhbmRpbmdQb3NpdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCkgewotICAgICAgICBfaGFzRGVmZXJyZWRQb3NpdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCA9IFlFUzsKKyAgICBpZiAoV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNl
dHRpbmdzLnBsYXR0ZXJFbmFibGVkRm9yTW91c2UpIHsKKyAgICAgICAgX2hvdmVyUG9pbnQgPSBw
b2ludDsKKyAgICAgICAgW3NlbGYgdXBkYXRlXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFtzZWxmIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uRm9yQ3VycmVudEhvdmVyUG9pbnRd
OworICAgIGF1dG8gYm91bmRpbmdSZWN0ID0gc2VsZi5wbGF0dGVyQm91bmRpbmdSZWN0OworICAg
IGlmICghYm91bmRpbmdSZWN0LmNvbnRhaW5zKHBvaW50KSAmJiBwb2ludCAhPSBXZWJDb3JlOjpG
bG9hdFBvaW50IHsgLTEsIC0xIH0pCisgICAgICAgIFtzZWxmIGRpc21pc3NQbGF0dGVyV2l0aEFu
aW1hdGlvbjpZRVNdOwogfQogCi0tICh2b2lkKXJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uRm9y
Q3VycmVudEhvdmVyUG9pbnQKKy0gKHZvaWQpZGlkTG9uZ1ByZXNzQXRQb2ludDooV2ViQ29yZTo6
RmxvYXRQb2ludClwb2ludAogewotICAgIF9oYXNEZWZlcnJlZFBvc2l0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0ID0gTk87Ci0gICAgX2hhc091dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVl
c3QgPSBZRVM7Ci0gICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBwb3Np
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCB7IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfaG92ZXJQ
b2ludCkgfTsKLSAgICAvLyBGSVhNRTogVGhpcyBUZXh0SW5kaWNhdG9yIGRvZXNuJ3QgbmVlZCBh
IHNuYXBzaG90IChhbmQgYXZvaWRpbmcgaXQgd291bGQgYmUgYSBzaXphYmxlIHBlcmZvcm1hbmNl
IHdpbikuCi0gICAgcG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0
b3IgPSBZRVM7Ci0gICAgW19kZWxlZ2F0ZSBwb3NpdGlvbkluZm9ybWF0aW9uRm9ySG92ZXJQbGF0
dGVyOnNlbGYgd2l0aFJlcXVlc3Q6cG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgY29tcGxldGlv
bkhhbmRsZXI6W3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tIb3ZlclBsYXR0ZXI+KHNlbGYpXSAo
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikgewot
ICAgICAgICBbd2Vha1NlbGYgZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb246aW5mb3JtYXRp
b25dOwotICAgIH1dOworICAgIGlmICghV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdz
LnBsYXR0ZXJFbmFibGVkRm9yTG9uZ1ByZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBfaG92
ZXJQb2ludCA9IHBvaW50OworICAgIFtzZWxmIHVwZGF0ZV07CiB9CiAKLS0gKHZvaWQpZGlkUmVj
ZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb246KGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKWluZm9ybWF0aW9uCistIChXZWJDb3JlOjpGbG9hdFJlY3QpcGxhdHRl
ckJvdW5kaW5nUmVjdAogewotICAgIF9oYXNPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0ID0gTk87Ci0gICAgaWYgKF9oYXNEZWZlcnJlZFBvc2l0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0KQotICAgICAgICBbc2VsZiByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbkZvckN1cnJlbnRI
b3ZlclBvaW50XTsKLQotICAgIGF1dG8gcHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0ID0gaW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
OwotICAgIGlmIChwcmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBw
cmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QgPSBpbmZvcm1hdGlvbi5ib3VuZHM7Ci0KLSAgICBpZiAo
IWluZm9ybWF0aW9uLmlzTGluayB8fCBwcmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIF9sYXN0SG92ZXJCb3VuZHMgPSB7IH07Ci0gICAgICAgIFtzZWxmIGRpc21p
c3NQbGF0dGVyV2l0aEFuaW1hdGlvbjpZRVNdOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGF1dG8gcmFkaXVzID0gV0tIb3ZlclBsYXR0ZXJEb21haW4ucm9vdFNldHRpbmdzLnBsYXR0ZXJS
YWRpdXM7CisgICAgcmV0dXJuIHsgX2hvdmVyUG9pbnQgLSBXZWJDb3JlOjpGbG9hdFNpemUocmFk
aXVzLCByYWRpdXMpLCBXZWJDb3JlOjpGbG9hdFNpemUocmFkaXVzICogMiwgcmFkaXVzICogMikg
fTsKK30KIAotICAgIGlmIChfbGFzdEhvdmVyQm91bmRzID09IHByZUluZmxhdGlvbkJvdW5kaW5n
UmVjdCAmJiAhX2lzU2l0dGluZ0Rvd24pCi0gICAgICAgIHJldHVybjsKLSAgICBfbGFzdEhvdmVy
Qm91bmRzID0gcHJlSW5mbGF0aW9uQm91bmRpbmdSZWN0OworLSAoV2ViQ29yZTo6RmxvYXRSZWN0
KWxpbmtTZWFyY2hSZWN0Cit7CisgICAgYXV0byByYWRpdXMgPSBXS0hvdmVyUGxhdHRlckRvbWFp
bi5yb290U2V0dGluZ3MubGlua1NlYXJjaFJhZGl1czsKKyAgICByZXR1cm4geyBfaG92ZXJQb2lu
dCAtIFdlYkNvcmU6OkZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cyksIFdlYkNvcmU6OkZsb2F0U2l6
ZShyYWRpdXMgKiAyLCByYWRpdXMgKiAyKSB9OworfQogCistICh2b2lkKXVwZGF0ZQorewogICAg
IGF1dG8gcGFyYW1ldGVycyA9IFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5nczsKLSAg
ICBhdXRvIGFuaW1hdGVCZXR3ZWVuUGxhdHRlcnMgPSBwYXJhbWV0ZXJzLmFuaW1hdGVCZXR3ZWVu
UGxhdHRlcnM7Ci0gICAgaWYgKCFhbmltYXRlQmV0d2VlblBsYXR0ZXJzKQotICAgICAgICBbc2Vs
ZiBkaXNtaXNzUGxhdHRlcldpdGhBbmltYXRpb246WUVTXTsKLQotICAgIF9pc1NpdHRpbmdEb3du
ID0gZmFsc2U7CiAKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0OwotICAgIFZl
Y3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IGluZmxhdGVkSW5kaWNhdGVkUmVjdHM7Ci0gICAgYXV0
byBpbmRpY2F0ZWRSZWN0cyA9IGluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IudGV4dFJlY3RzSW5C
b3VuZGluZ1JlY3RDb29yZGluYXRlczsKLSAgICBhdXRvIHBsYXR0ZXJQYWRkaW5nID0gcGFyYW1l
dGVycy5wbGF0dGVyUGFkZGluZzsKLSAgICBpZiAoaW5kaWNhdGVkUmVjdHMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGJvdW5kaW5nUmVjdCA9IHByZUluZmxhdGlvbkJvdW5kaW5nUmVjdDsKLSAgICAg
ICAgYm91bmRpbmdSZWN0LmluZmxhdGUocGxhdHRlclBhZGRpbmcpOwotICAgICAgICBpbmZsYXRl
ZEluZGljYXRlZFJlY3RzLmFwcGVuZChwcmVJbmZsYXRpb25Cb3VuZGluZ1JlY3QpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byByZWN0IDogaW5kaWNhdGVkUmVjdHMpIHsKLSAgICAg
ICAgICAgIHJlY3QuaW5mbGF0ZShwbGF0dGVyUGFkZGluZyk7Ci0gICAgICAgICAgICBpbmZsYXRl
ZEluZGljYXRlZFJlY3RzLmFwcGVuZChyZWN0KTsKLSAgICAgICAgICAgIGJvdW5kaW5nUmVjdC51
bml0ZShyZWN0KTsKLSAgICAgICAgfQotICAgICAgICBib3VuZGluZ1JlY3QubW92ZUJ5KHByZUlu
ZmxhdGlvbkJvdW5kaW5nUmVjdC5sb2NhdGlvbigpKTsKLSAgICB9CisgICAgaWYgKHBhcmFtZXRl
cnMuc2hvd0RlYnVnT3ZlcmxheSkKKyAgICAgICAgW3NlbGYgdXBkYXRlRGVidWdJbmRpY2F0b3Jd
OwogCi0gICAgUmV0YWluUHRyPENHUGF0aFJlZj4gaW5mbGF0ZWRQYXRoID0gV2ViQ29yZTo6UGF0
aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHMoaW5mbGF0ZWRJbmRpY2F0ZWRS
ZWN0cywgcGFyYW1ldGVycy5wbGF0dGVyQ29ybmVyUmFkaXVzKS5wbGF0Zm9ybVBhdGgoKTsKLSAg
ICBhdXRvIHBsYXR0ZXJJbmZsYXRpb25TaXplID0gcGFyYW1ldGVycy5wbGF0dGVySW5mbGF0aW9u
U2l6ZTsKLSAgICBDR0Zsb2F0IHBsYXR0ZXJTY2FsZSA9IENHRmxvYXRNaW4oKGJvdW5kaW5nUmVj
dC53aWR0aCgpICsgcGxhdHRlckluZmxhdGlvblNpemUpIC8gYm91bmRpbmdSZWN0LndpZHRoKCks
IChib3VuZGluZ1JlY3QuaGVpZ2h0KCkgKyBwbGF0dGVySW5mbGF0aW9uU2l6ZSkgLyBib3VuZGlu
Z1JlY3QuaGVpZ2h0KCkpOwotCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIHVzaW5nIFVJS2l0J3Mg
aW4tcHJvY2VzcyByZXRhcmdldGFibGUgYW5pbWF0aW9ucywgYmVjYXVzZSByZWFkaW5nIGFuaW1h
dGlvbiBzdGF0ZSBmcm9tIHRoZSBwcmVzZW50YXRpb24gbGF5ZXIgaXMgcmFjeS4KLSAgICBib29s
IGhhZE9sZExheWVycyA9ICEhX2xhc3RTaGFkb3dMYXllcjsKLSAgICBDR1JlY3Qgb2xkU2hhZG93
Qm91bmRzID0gW19sYXN0U2hhZG93TGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLmJvdW5kczsKLSAg
ICBDR1BvaW50IG9sZFNoYWRvd1Bvc2l0aW9uID0gW19sYXN0U2hhZG93TGF5ZXIgcHJlc2VudGF0
aW9uTGF5ZXJdLnBvc2l0aW9uOwotICAgIENHRmxvYXQgb2xkU2hhZG93T3BhY2l0eSA9IFtfbGFz
dFNoYWRvd0xheWVyIHByZXNlbnRhdGlvbkxheWVyXS5zaGFkb3dPcGFjaXR5OwotICAgIENHRmxv
YXQgb2xkU2hhZG93UmFkaXVzID0gW19sYXN0U2hhZG93TGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJd
LnNoYWRvd1JhZGl1czsKLSAgICBDQVRyYW5zZm9ybTNEIG9sZFNoYWRvd1N1YmxheWVyVHJhbnNm
b3JtID0gX2xhc3RTaGFkb3dMYXllciA/IFtfbGFzdFNoYWRvd0xheWVyIHByZXNlbnRhdGlvbkxh
eWVyXS5zdWJsYXllclRyYW5zZm9ybSA6IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBSZXRh
aW5QdHI8Q0dQYXRoUmVmPiBvbGRTaGFkb3dQYXRoID0gW19sYXN0U2hhZG93TGF5ZXIgcHJlc2Vu
dGF0aW9uTGF5ZXJdLnNoYWRvd1BhdGg7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IHNoYWRvdyA9
IF9sYXN0U2hhZG93TGF5ZXIgPzogYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAg
ICBhdXRvIHNoYWRvd0ZyYW1lID0gQ0dSZWN0T2Zmc2V0KGJvdW5kaW5nUmVjdCwgcGxhdHRlclBh
ZGRpbmcsIHBsYXR0ZXJQYWRkaW5nKTsKLSAgICBbc2hhZG93IHNldEZyYW1lOnNoYWRvd0ZyYW1l
XTsKLSAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOlVJQ29sb3IuYmxhY2tDb2xvci5DR0NvbG9y
XTsKLSAgICBbc2hhZG93IHNldFNoYWRvd1JhZGl1czpwYXJhbWV0ZXJzLnBsYXR0ZXJTaGFkb3dS
YWRpdXNdOwotICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0OkNHU2l6ZVplcm9dOwotICAgIFtz
aGFkb3cgc2V0U2hhZG93T3BhY2l0eTpwYXJhbWV0ZXJzLnBsYXR0ZXJTaGFkb3dPcGFjaXR5XTsK
LSAgICBbc2hhZG93IHNldFN1YmxheWVyVHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlU2NhbGUo
cGxhdHRlclNjYWxlLCBwbGF0dGVyU2NhbGUsIDEpXTsKLSAgICBbc2hhZG93IHNldFNoYWRvd1Bh
dGg6aW5mbGF0ZWRQYXRoLmdldCgpXTsKLSAgICBbc2hhZG93IHdlYl9kaXNhYmxlQWxsQWN0aW9u
c107Ci0gICAgW1tbX3ZpZXcgc3VwZXJ2aWV3XSBsYXllcl0gYWRkU3VibGF5ZXI6c2hhZG93Lmdl
dCgpXTsKLQotICAgIENHUmVjdCBvbGRQbGF0dGVyQm91bmRzID0gW19sYXN0UGxhdHRlckxheWVy
IHByZXNlbnRhdGlvbkxheWVyXS5ib3VuZHM7Ci0gICAgQ0dQb2ludCBvbGRQbGF0dGVyUG9zaXRp
b24gPSBbX2xhc3RQbGF0dGVyTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLnBvc2l0aW9uOwotICAg
IFJldGFpblB0cjxDQUxheWVyPiBwbGF0dGVyID0gX2xhc3RQbGF0dGVyTGF5ZXIgPzogYWRvcHRO
UyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGJvdW5kaW5nUmVjdCA9IHNlbGYu
cGxhdHRlckJvdW5kaW5nUmVjdDsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gcGxhdHRlciA9IF9w
bGF0dGVyTGF5ZXIgPzogYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbcGxh
dHRlciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCBib3VuZGluZ1JlY3Qud2lkdGgoKSwgYm91
bmRpbmdSZWN0LmhlaWdodCgpKV07Ci0gICAgW3BsYXR0ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1h
a2Uoc2hhZG93RnJhbWUuc2l6ZS53aWR0aCAvIDIgLSBwbGF0dGVyUGFkZGluZywgc2hhZG93RnJh
bWUuc2l6ZS5oZWlnaHQgLyAyIC0gcGxhdHRlclBhZGRpbmcpXTsKLSAgICBhdXRvIG9sZFBsYXR0
ZXJBZGRpdGlvbmFsQW5pbWF0aW9uVmFsdWUgPSBzZXRBZGRpdGlvbmFsUGxhdHRlckxheWVyUHJv
cGVydGllcyhwbGF0dGVyLmdldCgpLCBbX2xhc3RQbGF0dGVyTGF5ZXIgcHJlc2VudGF0aW9uTGF5
ZXJdKTsKKyAgICBbcGxhdHRlciBzZXRQb3NpdGlvbjpib3VuZGluZ1JlY3QuY2VudGVyKCldOwor
ICAgIFtwbGF0dGVyIHNldFNoYWRvd0NvbG9yOlVJQ29sb3IuYmxhY2tDb2xvci5DR0NvbG9yXTsK
KyAgICBbcGxhdHRlciBzZXRTaGFkb3dPZmZzZXQ6Q0dTaXplTWFrZSgwLCAxMCldOworICAgIFtw
bGF0dGVyIHNldFNoYWRvd09wYWNpdHk6MC4yNV07CisgICAgW3BsYXR0ZXIgc2V0U2hhZG93UmFk
aXVzOjEwXTsKICAgICBbcGxhdHRlciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwotICAgIFtzaGFk
b3cgYWRkU3VibGF5ZXI6cGxhdHRlci5nZXQoKV07Ci0KLSAgICBDR1JlY3Qgb2xkTWFza0JvdW5k
cyA9IFtfbGFzdE1hc2tMYXllciBwcmVzZW50YXRpb25MYXllcl0uYm91bmRzOwotICAgIENHUG9p
bnQgb2xkTWFza1Bvc2l0aW9uID0gW19sYXN0TWFza0xheWVyIHByZXNlbnRhdGlvbkxheWVyXS5w
b3NpdGlvbjsKLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBvbGRNYXNrUGF0aCA9IFtfbGFzdE1h
c2tMYXllciBwcmVzZW50YXRpb25MYXllcl0ucGF0aDsKLSAgICBSZXRhaW5QdHI8Q0FTaGFwZUxh
eWVyPiBtYXNrID0gX2xhc3RNYXNrTGF5ZXIgPzogYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxv
Y10gaW5pdF0pOwotICAgIFttYXNrIHNldEZpbGxDb2xvcjpbVUlDb2xvciBibGFja0NvbG9yXS5D
R0NvbG9yXTsKLSAgICBbbWFzayBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCBib3VuZGluZ1Jl
Y3Qud2lkdGgoKSwgYm91bmRpbmdSZWN0LmhlaWdodCgpKV07Ci0gICAgW21hc2sgc2V0UG9zaXRp
b246Q0dQb2ludE1ha2UoYm91bmRpbmdSZWN0LndpZHRoKCkgLyAyICsgcGxhdHRlclBhZGRpbmcs
IGJvdW5kaW5nUmVjdC5oZWlnaHQoKSAvIDIgKyBwbGF0dGVyUGFkZGluZyldOwotICAgIFttYXNr
IHNldFBhdGg6aW5mbGF0ZWRQYXRoLmdldCgpXTsKLSAgICBbbWFzayB3ZWJfZGlzYWJsZUFsbEFj
dGlvbnNdOwotCi0gICAgQ0dSZWN0IG9sZEJhY2tncm91bmRCb3VuZHMgPSBbX2xhc3RCYWNrZ3Jv
dW5kTGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLmJvdW5kczsKLSAgICBDR1BvaW50IG9sZEJhY2tn
cm91bmRQb3NpdGlvbiA9IFtfbGFzdEJhY2tncm91bmRMYXllciBwcmVzZW50YXRpb25MYXllcl0u
cG9zaXRpb247Ci0gICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IG9sZEJhY2tncm91bmRDb2xvciA9
IFtfbGFzdEJhY2tncm91bmRMYXllciBwcmVzZW50YXRpb25MYXllcl0uYmFja2dyb3VuZENvbG9y
OwotICAgIFJldGFpblB0cjxDQUxheWVyPiBiYWNrZ3JvdW5kID0gX2xhc3RCYWNrZ3JvdW5kTGF5
ZXIgPzogYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbYmFja2dyb3VuZCBz
ZXRGcmFtZTpbcGxhdHRlciBib3VuZHNdXTsKLSAgICBbYmFja2dyb3VuZCBzZXRCYWNrZ3JvdW5k
Q29sb3I6Y2FjaGVkQ0dDb2xvcihpbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmVzdGltYXRlZEJh
Y2tncm91bmRDb2xvcikuZ2V0KCldOwotICAgIFtiYWNrZ3JvdW5kIHNldE1hc2s6bWFzay5nZXQo
KV07Ci0gICAgW2JhY2tncm91bmQgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKLSAgICBbcGxhdHRl
ciBhZGRTdWJsYXllcjpiYWNrZ3JvdW5kLmdldCgpXTsKLQotICAgIENHUmVjdCBvbGRTbmFwc2hv
dEJvdW5kcyA9IFtfbGFzdFNuYXBzaG90TGF5ZXIgcHJlc2VudGF0aW9uTGF5ZXJdLmJvdW5kczsK
LSAgICBDR1BvaW50IG9sZFNuYXBzaG90UG9zaXRpb24gPSBbX2xhc3RTbmFwc2hvdExheWVyIHBy
ZXNlbnRhdGlvbkxheWVyXS5wb3NpdGlvbjsKLSAgICBDQVRyYW5zZm9ybTNEIG9sZFNuYXBzaG90
U3VibGF5ZXJUcmFuc2Zvcm0gPSBfbGFzdFNuYXBzaG90TGF5ZXIgPyBbX2xhc3RTbmFwc2hvdExh
eWVyIHByZXNlbnRhdGlvbkxheWVyXS5zdWJsYXllclRyYW5zZm9ybSA6IENBVHJhbnNmb3JtM0RJ
ZGVudGl0eTsKLSAgICBSZXRhaW5QdHI8Q0FQb3J0YWxMYXllcj4gc25hcHNob3QgPSBfbGFzdFNu
YXBzaG90TGF5ZXIgPzogYWRvcHROUyhbW0NBUG9ydGFsTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbW1tfdmlldyBzdXBlcnZpZXddIGxheWVyXSBhZGRTdWJsYXllcjpwbGF0dGVyLmdldCgpXTsK
KworICAgIFJldGFpblB0cjxDQVBvcnRhbExheWVyPiBzbmFwc2hvdCA9IF9zbmFwc2hvdExheWVy
ID86IGFkb3B0TlMoW1tDQVBvcnRhbExheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgW3NuYXBzaG90
IHNldFNvdXJjZUxheWVyOltfdmlldyBsYXllcl1dOwogICAgIFtzbmFwc2hvdCBzZXRNYXRjaGVz
UG9zaXRpb246WUVTXTsKICAgICBbc25hcHNob3Qgc2V0TWF0Y2hlc1RyYW5zZm9ybTpZRVNdOwor
ICAgIFtzbmFwc2hvdCBzZXRNYXNrc1RvQm91bmRzOllFU107CisgICAgW3NuYXBzaG90IHNldENv
cm5lclJhZGl1czpwYXJhbWV0ZXJzLnBsYXR0ZXJSYWRpdXNdOworICAgIFtzbmFwc2hvdCBzZXRC
YWNrZ3JvdW5kQ29sb3I6VUlDb2xvci5ibGFja0NvbG9yLkNHQ29sb3JdOworICAgIFtzbmFwc2hv
dCBzZXRCb3JkZXJDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhXaGl0ZTowIGFscGhhOjAuMl0uQ0dD
b2xvcl07CisgICAgW3NuYXBzaG90IHNldEJvcmRlcldpZHRoOjFdOwogICAgIFtzbmFwc2hvdCBz
ZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZSgwLjUsIDAuNSldOwotICAgIFtzbmFwc2hvdCBzZXRT
dWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKHBsYXR0ZXJTY2FsZSwgcGxh
dHRlclNjYWxlLCAxKV07CisgICAgW3NuYXBzaG90IHNldFN1YmxheWVyVHJhbnNmb3JtOkNBVHJh
bnNmb3JtM0RNYWtlU2NhbGUocGFyYW1ldGVycy5wbGF0dGVyU2NhbGUsIHBhcmFtZXRlcnMucGxh
dHRlclNjYWxlLCAxKV07CiAgICAgW3NuYXBzaG90IHNldE1hc2tzVG9Cb3VuZHM6WUVTXTsKICAg
ICBbc25hcHNob3Qgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBib3VuZGluZ1JlY3Qud2lkdGgo
KSwgYm91bmRpbmdSZWN0LmhlaWdodCgpKV07CiAgICAgW3NuYXBzaG90IHdlYl9kaXNhYmxlQWxs
QWN0aW9uc107Ci0gICAgW2JhY2tncm91bmQgYWRkU3VibGF5ZXI6c25hcHNob3QuZ2V0KCldOwot
Ci0gICAgQk9PTCBuZWVkc0FuaW1hdGVJbiA9ICFfbGFzdFBsYXR0ZXJMYXllciB8fCBfaXNTaXR0
aW5nRG93bjsKLSAgICBpZiAobmVlZHNBbmltYXRlSW4pIHsKLSAgICAgICAgYWRkQW5pbWF0aW9u
KHNoYWRvdy5nZXQoKSwgQCJzaGFkb3dPcGFjaXR5IiwgQChvbGRTaGFkb3dPcGFjaXR5KSwgQChb
c2hhZG93IHNoYWRvd09wYWNpdHldKSk7Ci0gICAgICAgIGFkZEFuaW1hdGlvbihzaGFkb3cuZ2V0
KCksIEAic2hhZG93UmFkaXVzIiwgQChvbGRTaGFkb3dSYWRpdXMpLCBAKFtzaGFkb3cgc2hhZG93
UmFkaXVzXSkpOwotICAgICAgICBhZGRBbmltYXRpb24oc2hhZG93LmdldCgpLCBAInN1YmxheWVy
VHJhbnNmb3JtIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpvbGRTaGFkb3dTdWJs
YXllclRyYW5zZm9ybV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6W3NoYWRvdyBz
dWJsYXllclRyYW5zZm9ybV1dKTsKLQotICAgICAgICBhZGRBbmltYXRpb24oc25hcHNob3QuZ2V0
KCksIEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNE
Om9sZFNuYXBzaG90U3VibGF5ZXJUcmFuc2Zvcm1dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5z
Zm9ybTNEOltzbmFwc2hvdCBzdWJsYXllclRyYW5zZm9ybV1dKTsKLQotICAgICAgICBhZGRBZGRp
dGlvbmFsSW5jb21pbmdBbmltYXRpb25zKHBsYXR0ZXIuZ2V0KCksIG9sZFBsYXR0ZXJBZGRpdGlv
bmFsQW5pbWF0aW9uVmFsdWUpOworICAgIFtwbGF0dGVyIGFkZFN1YmxheWVyOnNuYXBzaG90Lmdl
dCgpXTsKKworICAgIGlmIChfaXNTaXR0aW5nRG93bikgeworICAgICAgICBpZiAocGFyYW1ldGVy
cy5hbmltYXRlU2NhbGUpIHsKKyAgICAgICAgICAgIGF1dG8gaW52ZXJzZVNjYWxlID0gMS5mIC8g
cGFyYW1ldGVycy5wbGF0dGVyU2NhbGU7CisgICAgICAgICAgICBhZGRBbmltYXRpb24ocGxhdHRl
ci5nZXQoKSwgQCJ0cmFuc2Zvcm0iLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNB
VHJhbnNmb3JtM0RNYWtlU2NhbGUoaW52ZXJzZVNjYWxlLCBpbnZlcnNlU2NhbGUsIDEpXSwgW05T
VmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRpdHldKTsKKyAg
ICAgICAgICAgIGFkZEFuaW1hdGlvbihzbmFwc2hvdC5nZXQoKSwgQCJzdWJsYXllclRyYW5zZm9y
bSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRElkZW50aXR5
XSwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpbc25hcHNob3Qgc3VibGF5ZXJUcmFu
c2Zvcm1dXSk7CisgICAgICAgICAgICBhZGRBbmltYXRpb24ocGxhdHRlci5nZXQoKSwgQCJzaGFk
b3dPcGFjaXR5IiwgQDAsIEAoW3BsYXR0ZXIgc2hhZG93T3BhY2l0eV0pKTsKKyAgICAgICAgICAg
IGFkZEFuaW1hdGlvbihzbmFwc2hvdC5nZXQoKSwgQCJib3JkZXJDb2xvciIsIChpZClVSUNvbG9y
LmNsZWFyQ29sb3IuQ0dDb2xvciwgKGlkKVtzbmFwc2hvdCBib3JkZXJDb2xvcl0pOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGFkZEFuaW1hdGlvbihwbGF0dGVyLmdldCgpLCBAIm9wYWNp
dHkiLCBAMCwgQDEpOwogICAgIH0KIAotICAgIGlmIChhbmltYXRlQmV0d2VlblBsYXR0ZXJzICYm
IGhhZE9sZExheWVycykgewotICAgICAgICBhZGRBbmltYXRpb24obWFzay5nZXQoKSwgQCJib3Vu
ZHMiLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6b2xkTWFza0JvdW5kc10sIFtOU1ZhbHVlIHZh
bHVlV2l0aENHUmVjdDpbbWFzayBib3VuZHNdXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlvbihtYXNr
LmdldCgpLCBAInBvc2l0aW9uIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpvbGRNYXNrUG9z
aXRpb25dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OlttYXNrIHBvc2l0aW9uXV0pOwotICAg
ICAgICBhZGRBbmltYXRpb24obWFzay5nZXQoKSwgQCJwYXRoIiwgKGlkKW9sZE1hc2tQYXRoLmdl
dCgpLCAoaWQpW21hc2sgcGF0aF0pOwotCi0gICAgICAgIGFkZEFuaW1hdGlvbihzaGFkb3cuZ2V0
KCksIEAiYm91bmRzIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0Om9sZFNoYWRvd0JvdW5kc10s
IFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpbc2hhZG93IGJvdW5kc11dKTsKLSAgICAgICAgYWRk
QW5pbWF0aW9uKHNoYWRvdy5nZXQoKSwgQCJwb3NpdGlvbiIsIFtOU1ZhbHVlIHZhbHVlV2l0aENH
UG9pbnQ6b2xkU2hhZG93UG9zaXRpb25dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OltzaGFk
b3cgcG9zaXRpb25dXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlvbihzaGFkb3cuZ2V0KCksIEAic2hh
ZG93UGF0aCIsIChpZClvbGRTaGFkb3dQYXRoLmdldCgpLCAoaWQpW3NoYWRvdyBzaGFkb3dQYXRo
XSk7Ci0KLSAgICAgICAgYWRkQW5pbWF0aW9uKHBsYXR0ZXIuZ2V0KCksIEAiYm91bmRzIiwgW05T
VmFsdWUgdmFsdWVXaXRoQ0dSZWN0Om9sZFBsYXR0ZXJCb3VuZHNdLCBbTlNWYWx1ZSB2YWx1ZVdp
dGhDR1JlY3Q6W3BsYXR0ZXIgYm91bmRzXV0pOwotICAgICAgICBhZGRBbmltYXRpb24ocGxhdHRl
ci5nZXQoKSwgQCJwb3NpdGlvbiIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6b2xkUGxhdHRl
clBvc2l0aW9uXSwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpbcGxhdHRlciBwb3NpdGlvbl1d
KTsKLQotICAgICAgICBhZGRBbmltYXRpb24oYmFja2dyb3VuZC5nZXQoKSwgQCJib3VuZHMiLCBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6b2xkQmFja2dyb3VuZEJvdW5kc10sIFtOU1ZhbHVlIHZh
bHVlV2l0aENHUmVjdDpbYmFja2dyb3VuZCBib3VuZHNdXSk7Ci0gICAgICAgIGFkZEFuaW1hdGlv
bihiYWNrZ3JvdW5kLmdldCgpLCBAInBvc2l0aW9uIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0dQb2lu
dDpvbGRCYWNrZ3JvdW5kUG9zaXRpb25dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OltiYWNr
Z3JvdW5kIHBvc2l0aW9uXV0pOworICAgIF9wbGF0dGVyTGF5ZXIgPSBwbGF0dGVyOworICAgIF9z
bmFwc2hvdExheWVyID0gc25hcHNob3Q7CiAKLSAgICAgICAgYWRkQW5pbWF0aW9uKHNuYXBzaG90
LmdldCgpLCBAImJvdW5kcyIsIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpvbGRTbmFwc2hvdEJv
dW5kc10sIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpbc25hcHNob3QgYm91bmRzXV0pOwotICAg
ICAgICBhZGRBbmltYXRpb24oc25hcHNob3QuZ2V0KCksIEAicG9zaXRpb24iLCBbTlNWYWx1ZSB2
YWx1ZVdpdGhDR1BvaW50Om9sZFNuYXBzaG90UG9zaXRpb25dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhD
R1BvaW50OltzbmFwc2hvdCBwb3NpdGlvbl1dKTsKLSAgICB9CisgICAgX2lzU2l0dGluZ0Rvd24g
PSBmYWxzZTsKK30KIAotICAgIF9sYXN0TWFza0xheWVyID0gbWFzazsKLSAgICBfbGFzdFNoYWRv
d0xheWVyID0gc2hhZG93OwotICAgIF9sYXN0UGxhdHRlckxheWVyID0gcGxhdHRlcjsKLSAgICBf
bGFzdEJhY2tncm91bmRMYXllciA9IGJhY2tncm91bmQ7Ci0gICAgX2xhc3RTbmFwc2hvdExheWVy
ID0gc25hcHNob3Q7CistICh2b2lkKXVwZGF0ZURlYnVnSW5kaWNhdG9yCit7CisgICAgYXV0byBz
ZWFyY2hCb3VuZGluZ1JlY3QgPSBzZWxmLmxpbmtTZWFyY2hSZWN0OworCisgICAgUmV0YWluUHRy
PENBTGF5ZXI+IGRlYnVnSW5kaWNhdG9yID0gX2RlYnVnSW5kaWNhdG9yTGF5ZXIgPzogYWRvcHRO
UyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbZGVidWdJbmRpY2F0b3Igc2V0Qm91bmRz
OkNHUmVjdE1ha2UoMCwgMCwgc2VhcmNoQm91bmRpbmdSZWN0LndpZHRoKCksIHNlYXJjaEJvdW5k
aW5nUmVjdC5oZWlnaHQoKSldOworICAgIFtkZWJ1Z0luZGljYXRvciBzZXRQb3NpdGlvbjpzZWFy
Y2hCb3VuZGluZ1JlY3QuY2VudGVyKCldOworICAgIFtkZWJ1Z0luZGljYXRvciBzZXRCb3JkZXJD
b2xvcjpbVUlDb2xvciBjb2xvcldpdGhSZWQ6MSBncmVlbjowIGJsdWU6MCBhbHBoYToxXS5DR0Nv
bG9yXTsKKyAgICBbZGVidWdJbmRpY2F0b3Igc2V0Qm9yZGVyV2lkdGg6MV07CisgICAgW2RlYnVn
SW5kaWNhdG9yIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CisgICAgW1tfdmlldyBsYXllcl0gYWRk
U3VibGF5ZXI6ZGVidWdJbmRpY2F0b3IuZ2V0KCldOworCisgICAgUmV0YWluUHRyPENBVGV4dExh
eWVyPiBsaW5rQ291bnRMYXllciA9IF9saW5rQ291bnRMYXllciA/OiBhZG9wdE5TKFtbQ0FUZXh0
TGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0Qm91bmRzOkNHUmVj
dE1ha2UoMCwgMCwgNTAsIDE2KV07CisgICAgW2xpbmtDb3VudExheWVyIHNldFBvc2l0aW9uOkNH
UG9pbnRNYWtlKC0xMCwgKHNlYXJjaEJvdW5kaW5nUmVjdC5oZWlnaHQoKSAvIDIpIC0gOCldOwor
ICAgIFtsaW5rQ291bnRMYXllciBzZXRGb3JlZ3JvdW5kQ29sb3I6VUlDb2xvci5ibGFja0NvbG9y
LkNHQ29sb3JdOworICAgIFtsaW5rQ291bnRMYXllciBzZXRTaGFkb3dDb2xvcjpVSUNvbG9yLndo
aXRlQ29sb3IuQ0dDb2xvcl07CisgICAgW2xpbmtDb3VudExheWVyIHNldFNoYWRvd09mZnNldDpD
R1NpemVNYWtlKDAsIDApXTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTox
XTsKKyAgICBbbGlua0NvdW50TGF5ZXIgc2V0U2hhZG93UmFkaXVzOjJdOworICAgIFtsaW5rQ291
bnRMYXllciBzZXRGb250U2l6ZToxNl07CisgICAgW2xpbmtDb3VudExheWVyIHNldENvbnRlbnRz
U2NhbGU6NF07CisgICAgW2xpbmtDb3VudExheWVyIHNldEFsaWdubWVudE1vZGU6a0NBQWxpZ25t
ZW50Q2VudGVyXTsKKyAgICBbbGlua0NvdW50TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsK
KyAgICBbZGVidWdJbmRpY2F0b3IgYWRkU3VibGF5ZXI6bGlua0NvdW50TGF5ZXIuZ2V0KCldOwor
CisgICAgUmV0YWluUHRyPENBU2hhcGVMYXllcj4gbGlua0hpZ2hsaWdodExheWVyID0gX2xpbmtI
aWdobGlnaHRMYXllciA/OiBhZG9wdE5TKFtbQ0FTaGFwZUxheWVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2xpbmtIaWdobGlnaHRMYXllciBzZXRGaWxsQ29sb3I6VUlDb2xvci5jbGVhckNvbG9yLkNH
Q29sb3JdOworICAgIFtsaW5rSGlnaGxpZ2h0TGF5ZXIgc2V0U3Ryb2tlQ29sb3I6W1VJQ29sb3Iu
Ymx1ZUNvbG9yIGNvbG9yV2l0aEFscGhhQ29tcG9uZW50OjAuM10uQ0dDb2xvcl07CisgICAgW2xp
bmtIaWdobGlnaHRMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAgIFtbX3ZpZXcgbGF5
ZXJdIGFkZFN1YmxheWVyOmxpbmtIaWdobGlnaHRMYXllci5nZXQoKV07CisKKyAgICBbX2RlbGVn
YXRlIGludGVyYWN0YWJsZVJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6c2VsZiBpblJlY3Q6c2VhcmNo
Qm91bmRpbmdSZWN0IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc2VsZiwgc3Ryb25n
U2VsZiA9IHJldGFpblB0cihzZWxmKV0gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3Rz
KSB7CisgICAgICAgIGlmICghX2xpbmtDb3VudExheWVyICYmICFfbGlua0hpZ2hsaWdodExheWVy
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFtfbGlua0NvdW50TGF5ZXIgc2V0U3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXp1IiwgcmVjdHMuc2l6ZSgpXV07CisK
KyAgICAgICAgV2ViQ29yZTo6UGF0aCBwYXRoOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJl
Y3QgOiByZWN0cykKKyAgICAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKKyAgICAgICAgW19s
aW5rSGlnaGxpZ2h0TGF5ZXIgc2V0UGF0aDpwYXRoLnBsYXRmb3JtUGF0aCgpXTsKKyAgICB9KS5n
ZXQoKV07CisKKyAgICBfZGVidWdJbmRpY2F0b3JMYXllciA9IGRlYnVnSW5kaWNhdG9yOworICAg
IF9saW5rQ291bnRMYXllciA9IGxpbmtDb3VudExheWVyOworICAgIF9saW5rSGlnaGxpZ2h0TGF5
ZXIgPSBsaW5rSGlnaGxpZ2h0TGF5ZXI7CiB9CiAKIC0gKHZvaWQpZGlzbWlzc1BsYXR0ZXJXaXRo
QW5pbWF0aW9uOihCT09MKXdpdGhBbmltYXRpb24KQEAgLTI5OSw0OCArMjUxLDY0IEBAIC0gKHZv
aWQpZGlzbWlzc1BsYXR0ZXJXaXRoQW5pbWF0aW9uOihCT09MKXdpdGhBbmltYXRpb24KICAgICBf
aXNTaXR0aW5nRG93biA9IHRydWU7CiAKICAgICBpZiAoIXdpdGhBbmltYXRpb24pIHsKLSAgICAg
ICAgW19sYXN0U2hhZG93TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICBbX2Rl
YnVnSW5kaWNhdG9yTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICBbX3BsYXR0
ZXJMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIFtfbGlua0NvdW50TGF5ZXIg
cmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICBbX2xpbmtIaWdobGlnaHRMYXllciByZW1v
dmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgIFtzZWxmIGNsZWFyTGF5ZXJzXTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFu
c2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZiksIHNoYWRvd0xheWVyID0gX2xhc3RTaGFkb3dMYXllcl0gewotICAgICAgICBbcHJvdGVjdGVk
U2VsZiBkaWRGaW5pc2hBbmltYXRpb25Gb3JTaGFkb3c6c2hhZG93TGF5ZXIuZ2V0KCldOworICAg
IFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgcGxhdHRlckxheWVyID0gX3BsYXR0ZXJMYXllcl0geworICAgICAgICBbcHJv
dGVjdGVkU2VsZiBkaWRGaW5pc2hEaXNtaXNzYWxBbmltYXRpb246cGxhdHRlckxheWVyLmdldCgp
XTsKICAgICB9XTsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IFdLSG92ZXJQbGF0dGVyRG9tYWlu
LnJvb3RTZXR0aW5nczsKLSAgICBhZGRBbmltYXRpb24oX2xhc3RTaGFkb3dMYXllci5nZXQoKSwg
QCJzaGFkb3dPcGFjaXR5IiwgQChbX2xhc3RTaGFkb3dMYXllciBzaGFkb3dPcGFjaXR5XSksIEAw
KTsKLSAgICBhZGRBbmltYXRpb24oX2xhc3RTaGFkb3dMYXllci5nZXQoKSwgQCJzaGFkb3dSYWRp
dXMiLCBAKFtfbGFzdFNoYWRvd0xheWVyIHNoYWRvd1JhZGl1c10pLCBAMCk7Ci0gICAgYWRkQW5p
bWF0aW9uKF9sYXN0U2hhZG93TGF5ZXIuZ2V0KCksIEAic3VibGF5ZXJUcmFuc2Zvcm0iLCBbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOltfbGFzdFNoYWRvd0xheWVyIHN1YmxheWVyVHJh
bnNmb3JtXV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRElk
ZW50aXR5XSk7Ci0gICAgYWRkQW5pbWF0aW9uKF9sYXN0U25hcHNob3RMYXllci5nZXQoKSwgQCJz
dWJsYXllclRyYW5zZm9ybSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6W19sYXN0
U25hcHNob3RMYXllciBzdWJsYXllclRyYW5zZm9ybV1dLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRy
YW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RJZGVudGl0eV0pOwotICAgIGFkZEFkZGl0aW9uYWxEaXNt
aXNzYWxBbmltYXRpb25zKF9sYXN0UGxhdHRlckxheWVyLmdldCgpKTsKKyAgICBpZiAocGFyYW1l
dGVycy5hbmltYXRlU2NhbGUpIHsKKyAgICAgICAgYXV0byBpbnZlcnNlU2NhbGUgPSAxLmYgLyBw
YXJhbWV0ZXJzLnBsYXR0ZXJTY2FsZTsKKyAgICAgICAgYWRkQW5pbWF0aW9uKF9wbGF0dGVyTGF5
ZXIuZ2V0KCksIEAidHJhbnNmb3JtIiwgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpD
QVRyYW5zZm9ybTNESWRlbnRpdHldLCBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNB
VHJhbnNmb3JtM0RNYWtlU2NhbGUoaW52ZXJzZVNjYWxlLCBpbnZlcnNlU2NhbGUsIDEpXSk7Cisg
ICAgICAgIGFkZEFuaW1hdGlvbihfc25hcHNob3RMYXllci5nZXQoKSwgQCJzdWJsYXllclRyYW5z
Zm9ybSIsIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6W19zbmFwc2hvdExheWVyIHN1
YmxheWVyVHJhbnNmb3JtXV0sIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Q0FUcmFu
c2Zvcm0zRElkZW50aXR5XSk7CisgICAgICAgIGFkZEFuaW1hdGlvbihfcGxhdHRlckxheWVyLmdl
dCgpLCBAInNoYWRvd09wYWNpdHkiLCBAKFtfcGxhdHRlckxheWVyIHNoYWRvd09wYWNpdHldKSwg
QDApOworICAgICAgICBhZGRBbmltYXRpb24oX3NuYXBzaG90TGF5ZXIuZ2V0KCksIEAiYm9yZGVy
Q29sb3IiLCAoaWQpW19zbmFwc2hvdExheWVyIGJvcmRlckNvbG9yXSwgKGlkKVVJQ29sb3IuY2xl
YXJDb2xvci5DR0NvbG9yKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYWRkQW5pbWF0aW9uKF9wbGF0
dGVyTGF5ZXIuZ2V0KCksIEAib3BhY2l0eSIsIEAxLCBAMCk7CiAKICAgICBbQ0FUcmFuc2FjdGlv
biBjb21taXRdOworfQogCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmFuaW1hdGVCZXR3ZWVuUGxhdHRl
cnMpCi0gICAgICAgIFtzZWxmIGNsZWFyTGF5ZXJzXTsKKy0gKHZvaWQpZGlkRmluaXNoRGlzbWlz
c2FsQW5pbWF0aW9uOihDQUxheWVyICopcGxhdHRlckxheWVyCit7CisgICAgW3BsYXR0ZXJMYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiB9CiAKLS0gKHZvaWQpZGlkRmluaXNoQW5pbWF0aW9u
Rm9yU2hhZG93OihDQUxheWVyICopc2hhZG93TGF5ZXIKKy0gKHZvaWQpY2xlYXJMYXllcnMKIHsK
LSAgICBhdXRvIHBhcmFtZXRlcnMgPSBXS0hvdmVyUGxhdHRlckRvbWFpbi5yb290U2V0dGluZ3M7
Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLmFuaW1hdGVCZXR3ZWVuUGxhdHRlcnMpCi0gICAgICAgIFtz
aGFkb3dMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgX2RlYnVnSW5kaWNhdG9yTGF5
ZXIgPSBuaWw7CisgICAgX3BsYXR0ZXJMYXllciA9IG5pbDsKKyAgICBfc25hcHNob3RMYXllciA9
IG5pbDsKKyAgICBfbGlua0NvdW50TGF5ZXIgPSBuaWw7CisgICAgX2xpbmtIaWdobGlnaHRMYXll
ciA9IG5pbDsKK30KIAotICAgIGlmIChfaXNTaXR0aW5nRG93biAmJiBwYXJhbWV0ZXJzLmFuaW1h
dGVCZXR3ZWVuUGxhdHRlcnMgJiYgc2hhZG93TGF5ZXIgPT0gX2xhc3RTaGFkb3dMYXllcikgewot
ICAgICAgICBbc2hhZG93TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICBbc2Vs
ZiBjbGVhckxheWVyc107Ci0gICAgfQorLSAoV2ViQ29yZTo6RmxvYXRQb2ludClhZGp1c3RlZFBv
aW50Rm9yUG9pbnQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpcG9pbnQKK3sKKyAgICBpZiAoX2lzU2l0
dGluZ0Rvd24pCisgICAgICAgIHJldHVybiBwb2ludDsKKworICAgIGF1dG8gZGVsdGEgPSBwb2lu
dCAtIF9ob3ZlclBvaW50OworICAgIGRlbHRhLnNjYWxlKDEuZiAvIFdLSG92ZXJQbGF0dGVyRG9t
YWluLnJvb3RTZXR0aW5ncy5wbGF0dGVyU2NhbGUpOworICAgIHJldHVybiBfaG92ZXJQb2ludCAr
IGRlbHRhOwogfQogCi0tICh2b2lkKWNsZWFyTGF5ZXJzCistIChXZWJLaXQ6Ok5hdGl2ZVdlYk1v
dXNlRXZlbnQpYWRqdXN0ZWRFdmVudEZvckV2ZW50Oihjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYk1v
dXNlRXZlbnQmKWV2ZW50CiB7Ci0gICAgX2xhc3RNYXNrTGF5ZXIgPSBuaWw7Ci0gICAgX2xhc3RT
aGFkb3dMYXllciA9IG5pbDsKLSAgICBfbGFzdFBsYXR0ZXJMYXllciA9IG5pbDsKLSAgICBfbGFz
dEJhY2tncm91bmRMYXllciA9IG5pbDsKLSAgICBfbGFzdFNuYXBzaG90TGF5ZXIgPSBuaWw7Cisg
ICAgaWYgKF9pc1NpdHRpbmdEb3duKQorICAgICAgICByZXR1cm4gZXZlbnQ7CisKKyAgICBhdXRv
IGludmVyc2VTY2FsZSA9IDEuZiAvIFdLSG92ZXJQbGF0dGVyRG9tYWluLnJvb3RTZXR0aW5ncy5w
bGF0dGVyU2NhbGU7CisgICAgYXV0byBhZGp1c3RlZFBvaW50ID0gcm91bmRlZEludFBvaW50KFtz
ZWxmIGFkanVzdGVkUG9pbnRGb3JQb2ludDpldmVudC5wb3NpdGlvbigpXSk7CisgICAgcmV0dXJu
IFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudChldmVudCwgYWRqdXN0ZWRQb2ludCwgYWRqdXN0
ZWRQb2ludCwgZXZlbnQuZGVsdGFYKCkgKiBpbnZlcnNlU2NhbGUsIGV2ZW50LmRlbHRhWSgpICog
aW52ZXJzZVNjYWxlLCBldmVudC5kZWx0YVooKSAqIGludmVyc2VTY2FsZSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBh
cmFtZXRlcnMuaAppbmRleCAxYWM4ZTczZjU2ZTNmZThlMDZiNzA1NzgxN2NiMzhlZTc4YzVlMDdk
Li5hNTQwMjBkOGNlMWYxZjAzNjU1MDFkZjU5YmY2OGEwZmJlY2MxZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5o
CkBAIC0zMCwyMCArMzAsMjMgQEAKIEBpbnRlcmZhY2UgV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJz
IDogUFRTZXR0aW5ncwogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBwbGF0dGVyRW5hYmxl
ZEZvck1vdXNlOwotQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcGxhdHRlckVuYWJsZWRGb3JI
b3ZlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHBsYXR0ZXJFbmFibGVkRm9yTG9uZ1By
ZXNzOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBwbGF0dGVyQ29ybmVyUmFkaXVz
OwotQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgcGxhdHRlclBhZGRpbmc7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYykgQ0dGbG9hdCBwbGF0dGVyU2hhZG93T3BhY2l0eTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBDR0Zsb2F0IHBsYXR0ZXJTaGFkb3dSYWRpdXM7Ci1AcHJvcGVydHkgKG5vbmF0
b21pYykgdW5zaWduZWQgcGxhdHRlckluZmxhdGlvblNpemU7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIEJPT0wgZW5hYmxlZDsKKworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
c2hvd0RlYnVnT3ZlcmxheTsKKworQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgcGxhdHRl
clJhZGl1czsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHBsYXR0ZXJTY2FsZTsKKwor
QHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgbGlua1NlYXJjaFJhZGl1czsKIAotQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgYW5pbWF0ZUJldHdlZW5QbGF0dGVyczsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBDR0Zsb2F0IHNwcmluZ01hc3M7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dG
bG9hdCBzcHJpbmdTdGlmZm5lc3M7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBzcHJp
bmdEYW1waW5nOwogQHByb3BlcnR5IChub25hdG9taWMpIE5TVGltZUludGVydmFsIGR1cmF0aW9u
OwotQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgdXNlU3ByaW5nOworQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgdXNlU3ByaW5nOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYW5p
bWF0ZVNjYWxlOwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnNBZGRpdGlvbnMuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJz
Lm1tCmluZGV4IDBlZjAzMTg4OGVlNzgzNTBiNDYxYTYzYWM0YzkwYzQzYWI5NTM5NzcuLjRiOTg3
YmUzMDczMTc3NzVlY2ViZjdmNjQwN2ZlN2RkZTU2MmRhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5tbQpAQCAt
NDksMTMgKzQ5LDYgQEAgLSAoaWQpaW50ZWdlck1pblZhbHVlOihDR0Zsb2F0KW1pblZhbHVlIG1h
eFZhbHVlOihDR0Zsb2F0KW1heFZhbHVlCiAKIEBlbmQKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJz
QWRkaXRpb25zLm1tPgotI2Vsc2UKLXN0YXRpYyB2b2lkIGFkZEFkZGl0aW9uYWxQbGF0dGVyTGF5
b3V0UGFyYW1ldGVycyhOU011dGFibGVBcnJheSAqKSB7IH0KLXN0YXRpYyB2b2lkIHNldERlZmF1
bHRWYWx1ZXNGb3JBZGRpdGlvbmFsUGxhdHRlckxheW91dFBhcmFtZXRlcnMoV0tIb3ZlclBsYXR0
ZXJQYXJhbWV0ZXJzICopIHsgfQotI2VuZGlmCi0KIEBpbXBsZW1lbnRhdGlvbiBXS0hvdmVyUGxh
dHRlclBhcmFtZXRlcnMKIAogLSAodm9pZClzZXREZWZhdWx0VmFsdWVzCkBAIC02MywzMyArNTYs
NDEgQEAgLSAodm9pZClzZXREZWZhdWx0VmFsdWVzCiAgICAgW3N1cGVyIHNldERlZmF1bHRWYWx1
ZXNdOwogCiAgICAgX3BsYXR0ZXJFbmFibGVkRm9yTW91c2UgPSBOTzsKLSAgICBfcGxhdHRlckVu
YWJsZWRGb3JIb3ZlciA9IE5POworICAgIF9wbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzcyA9IE5P
OworCisgICAgX3Nob3dEZWJ1Z092ZXJsYXkgPSBOTzsKIAotICAgIF9wbGF0dGVyQ29ybmVyUmFk
aXVzID0gNjsKLSAgICBfcGxhdHRlclBhZGRpbmcgPSA1OwotICAgIF9wbGF0dGVyU2hhZG93T3Bh
Y2l0eSA9IDAuNjsKLSAgICBfcGxhdHRlclNoYWRvd1JhZGl1cyA9IDEwOwotICAgIF9wbGF0dGVy
SW5mbGF0aW9uU2l6ZSA9IDg7CisgICAgX3BsYXR0ZXJSYWRpdXMgPSAyMDA7CisgICAgX3BsYXR0
ZXJTY2FsZSA9IDI7CisKKyAgICBfbGlua1NlYXJjaFJhZGl1cyA9IDQwOwogCi0gICAgX2FuaW1h
dGVCZXR3ZWVuUGxhdHRlcnMgPSBZRVM7CiAgICAgX3NwcmluZ01hc3MgPSAyOwotICAgIF9zcHJp
bmdTdGlmZm5lc3MgPSAxMDA7Ci0gICAgX3NwcmluZ0RhbXBpbmcgPSA1MDsKKyAgICBfc3ByaW5n
U3RpZmZuZXNzID0gMjAwOworICAgIF9zcHJpbmdEYW1waW5nID0gMjAwOwogICAgIF9kdXJhdGlv
biA9IDAuMzsKICAgICBfdXNlU3ByaW5nID0gWUVTOworICAgIF9hbmltYXRlU2NhbGUgPSBZRVM7
Cit9CiAKLSAgICBzZXREZWZhdWx0VmFsdWVzRm9yQWRkaXRpb25hbFBsYXR0ZXJMYXlvdXRQYXJh
bWV0ZXJzKHNlbGYpOworLSAoQk9PTCllbmFibGVkCit7CisgICAgcmV0dXJuIF9wbGF0dGVyRW5h
YmxlZEZvck1vdXNlIHx8IF9wbGF0dGVyRW5hYmxlZEZvckxvbmdQcmVzczsKIH0KIAogKyAoUFRN
b2R1bGUgKilzZXR0aW5nc0NvbnRyb2xsZXJNb2R1bGUKIHsKICAgICBQVFNlY3Rpb24gKmVuYWJs
ZW1lbnRTZWN0aW9uID0gW1BUTW9kdWxlIHNlY3Rpb25XaXRoUm93czpAWwogICAgICAgICBbUFRT
d2l0Y2hSb3cgcm93V2l0aFRpdGxlOkAiRW5hYmxlIFBsYXR0ZXIgRm9yIE1vdXNlIiB2YWx1ZUtl
eVBhdGg6QCJwbGF0dGVyRW5hYmxlZEZvck1vdXNlIl0sCi0gICAgICAgIFtQVFN3aXRjaFJvdyBy
b3dXaXRoVGl0bGU6QCJFbmFibGUgUGxhdHRlciBGb3IgSG92ZXIiIHZhbHVlS2V5UGF0aDpAInBs
YXR0ZXJFbmFibGVkRm9ySG92ZXIiXSwKKyAgICAgICAgW1BUU3dpdGNoUm93IHJvd1dpdGhUaXRs
ZTpAIkVuYWJsZSBQbGF0dGVyIEZvciBMb25nIFByZXNzIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVy
RW5hYmxlZEZvckxvbmdQcmVzcyJdLAogICAgIF0gdGl0bGU6QCJQbGF0dGVyIl07CiAKKyAgICBQ
VFNlY3Rpb24gKmRlYnVnU2VjdGlvbiA9IFtQVE1vZHVsZSBzZWN0aW9uV2l0aFJvd3M6QFsKKyAg
ICAgICAgW1BUU3dpdGNoUm93IHJvd1dpdGhUaXRsZTpAIlNob3cgRGVidWcgT3ZlcmxheSIgdmFs
dWVLZXlQYXRoOkAic2hvd0RlYnVnT3ZlcmxheSJdLAorICAgIF0gdGl0bGU6QCJEZWJ1ZyJdOwor
CiAgICAgUFRTZWN0aW9uICphbmltYXRpb25TZWN0aW9uID0gW1BUTW9kdWxlIHNlY3Rpb25XaXRo
Um93czpAWwotICAgICAgICBbUFRTd2l0Y2hSb3cgcm93V2l0aFRpdGxlOkAiQW5pbWF0ZSBCZXR3
ZWVuIFBsYXR0ZXJzIiB2YWx1ZUtleVBhdGg6QCJhbmltYXRlQmV0d2VlblBsYXR0ZXJzIl0sCisg
ICAgICAgIFtQVFN3aXRjaFJvdyByb3dXaXRoVGl0bGU6QCJBbmltYXRlIFNjYWxlIiB2YWx1ZUtl
eVBhdGg6QCJhbmltYXRlU2NhbGUiXSwKICAgICAgICAgW1BUU3dpdGNoUm93IHJvd1dpdGhUaXRs
ZTpAIlVzZSBTcHJpbmciIHZhbHVlS2V5UGF0aDpAInVzZVNwcmluZyJdLAogICAgICAgICBbW1tQ
VFNsaWRlclJvdyByb3dXaXRoVGl0bGU6QCJEdXJhdGlvbiIgdmFsdWVLZXlQYXRoOkAiZHVyYXRp
b24iXSBtaW5WYWx1ZTowIG1heFZhbHVlOjFdIGNvbmRpdGlvbjpbTlNQcmVkaWNhdGUgcHJlZGlj
YXRlV2l0aEZvcm1hdDpAInVzZVNwcmluZyA9PSBGQUxTRSJdXSwKICAgICAgICAgW1tQVEVkaXRG
bG9hdFJvdyByb3dXaXRoVGl0bGU6QCJTcHJpbmcgTWFzcyIgdmFsdWVLZXlQYXRoOkAic3ByaW5n
TWFzcyJdIGNvbmRpdGlvbjpbTlNQcmVkaWNhdGUgcHJlZGljYXRlV2l0aEZvcm1hdDpAInVzZVNw
cmluZyA9PSBUUlVFIl1dLApAQCAtOTcsMjIgKzk4LDIwIEBAICsgKFBUTW9kdWxlICopc2V0dGlu
Z3NDb250cm9sbGVyTW9kdWxlCiAgICAgICAgIFtbUFRFZGl0RmxvYXRSb3cgcm93V2l0aFRpdGxl
OkAiU3ByaW5nIERhbXBpbmciIHZhbHVlS2V5UGF0aDpAInNwcmluZ0RhbXBpbmciXSBjb25kaXRp
b246W05TUHJlZGljYXRlIHByZWRpY2F0ZVdpdGhGb3JtYXQ6QCJ1c2VTcHJpbmcgPT0gVFJVRSJd
XSwKICAgICBdIHRpdGxlOkAiQW5pbWF0aW9uIl07CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHBsYXR0ZXJMYXlvdXRSb3dzID0gYWRvcHROUyhbQFsKLSAgICAgICAgW1tQVFNsaWRl
clJvdyByb3dXaXRoVGl0bGU6QCJDb3JuZXIgUmFkaXVzIiB2YWx1ZUtleVBhdGg6QCJwbGF0dGVy
Q29ybmVyUmFkaXVzIl0gaW50ZWdlck1pblZhbHVlOjAgbWF4VmFsdWU6MjBdLAotICAgICAgICBb
W1BUU2xpZGVyUm93IHJvd1dpdGhUaXRsZTpAIlBhZGRpbmciIHZhbHVlS2V5UGF0aDpAInBsYXR0
ZXJQYWRkaW5nIl0gaW50ZWdlck1pblZhbHVlOjAgbWF4VmFsdWU6MjBdLAotICAgICAgICBbW1BU
U2xpZGVyUm93IHJvd1dpdGhUaXRsZTpAIlNoYWRvdyBPcGFjaXR5IiB2YWx1ZUtleVBhdGg6QCJw
bGF0dGVyU2hhZG93T3BhY2l0eSJdIG1pblZhbHVlOjAgbWF4VmFsdWU6MV0sCi0gICAgICAgIFtb
UFRTbGlkZXJSb3cgcm93V2l0aFRpdGxlOkAiU2hhZG93IFJhZGl1cyIgdmFsdWVLZXlQYXRoOkAi
cGxhdHRlclNoYWRvd1JhZGl1cyJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZhbHVlOjIwXSwKLSAg
ICAgICAgW1tQVFNsaWRlclJvdyByb3dXaXRoVGl0bGU6QCJJbmZsYXRpb24gU2l6ZSIgdmFsdWVL
ZXlQYXRoOkAicGxhdHRlckluZmxhdGlvblNpemUiXSBpbnRlZ2VyTWluVmFsdWU6MCBtYXhWYWx1
ZTozMF0KLSAgICBdIG11dGFibGVDb3B5XSk7Ci0gICAgYWRkQWRkaXRpb25hbFBsYXR0ZXJMYXlv
dXRQYXJhbWV0ZXJzKHBsYXR0ZXJMYXlvdXRSb3dzLmdldCgpKTsKKyAgICBQVFNlY3Rpb24gKnBs
YXR0ZXJTZWN0aW9uID0gW1BUTW9kdWxlIHNlY3Rpb25XaXRoUm93czpAWworICAgICAgICBbW1BU
U2xpZGVyUm93IHJvd1dpdGhUaXRsZTpAIlJhZGl1cyIgdmFsdWVLZXlQYXRoOkAicGxhdHRlclJh
ZGl1cyJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZhbHVlOjQwMF0sCisgICAgICAgIFtbUFRTbGlk
ZXJSb3cgcm93V2l0aFRpdGxlOkAiU2NhbGUiIHZhbHVlS2V5UGF0aDpAInBsYXR0ZXJTY2FsZSJd
IG1pblZhbHVlOjEgbWF4VmFsdWU6NF0sCisgICAgXSB0aXRsZTpAIlBsYXR0ZXIiXTsKIAotICAg
IFBUU2VjdGlvbiAqcGxhdHRlckxheW91dFNlY3Rpb24gPSBbUFRNb2R1bGUgc2VjdGlvbldpdGhS
b3dzOnBsYXR0ZXJMYXlvdXRSb3dzLmdldCgpIHRpdGxlOkAiUGxhdHRlciBMYXlvdXQiXTsKKyAg
ICBQVFNlY3Rpb24gKmxpbmtTZWFyY2hpbmdTZWN0aW9uID0gW1BUTW9kdWxlIHNlY3Rpb25XaXRo
Um93czpAWworICAgICAgICBbW1BUU2xpZGVyUm93IHJvd1dpdGhUaXRsZTpAIlJhZGl1cyIgdmFs
dWVLZXlQYXRoOkAibGlua1NlYXJjaFJhZGl1cyJdIGludGVnZXJNaW5WYWx1ZTowIG1heFZhbHVl
OjIwMF0sCisgICAgXSB0aXRsZTpAIkxpbmsgU2VhcmNoaW5nIl07CiAKICAgICBQVFNlY3Rpb24g
KnJlc3RvcmVEZWZhdWx0c1NlY3Rpb24gPSBbUFRNb2R1bGUgc2VjdGlvbldpdGhSb3dzOkBbCiAg
ICAgICAgIFtQVEJ1dHRvblJvdyByb3dXaXRoVGl0bGU6QCJSZXN0b3JlIERlZmF1bHRzIiBhY3Rp
b246W1BUUmVzdG9yZURlZmF1bHRTZXR0aW5nc1Jvd0FjdGlvbiBhY3Rpb25dXQogICAgIF1dOwog
Ci0gICAgcmV0dXJuIFtQVE1vZHVsZSBtb2R1bGVXaXRoVGl0bGU6bmlsIGNvbnRlbnRzOkBbIGVu
YWJsZW1lbnRTZWN0aW9uLCBhbmltYXRpb25TZWN0aW9uLCBwbGF0dGVyTGF5b3V0U2VjdGlvbiwg
cmVzdG9yZURlZmF1bHRzU2VjdGlvbiBdXTsKKyAgICByZXR1cm4gW1BUTW9kdWxlIG1vZHVsZVdp
dGhUaXRsZTpuaWwgY29udGVudHM6QFsgZW5hYmxlbWVudFNlY3Rpb24sIGRlYnVnU2VjdGlvbiwg
YW5pbWF0aW9uU2VjdGlvbiwgcGxhdHRlclNlY3Rpb24sIGxpbmtTZWFyY2hpbmdTZWN0aW9uLCBy
ZXN0b3JlRGVmYXVsdHNTZWN0aW9uIF1dOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI4ZjhkZTY3ZDEyYTYzZjgyM2ExMDUx
MjlmMDk3MTI5NWU5OWQyYjkuLmI3OTJjMmQ2OWJkYjU2NjZhMWMyNGJkYWRlM2ZkMTAzMDc1ZjEw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC02MjY1LDYgKzYyNjUsNDMgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxlZENvbXBvc2l0aW9uKCkK
ICAgICBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKIH0KIAordm9pZCBXZWJQYWdlOjppbnRlcmFj
dGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKEZsb2F0UmVjdCByZWN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxGbG9hdFJlY3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBSZWYgZnJhbWUobV9wYWdlLT5tYWluRnJhbWUoKSk7CisKKyAgICBpZiAoUmVmUHRy
IGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpCisgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlTGF5
b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworCisgICAgYXV0byByZXN1bHQgPSBIaXRU
ZXN0UmVzdWx0IHsgTGF5b3V0UmVjdChyZWN0KSB9OworICAgIFJlZlB0ciBkb2N1bWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoeworICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksCisg
ICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVu
dE9ubHksCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpDb2xsZWN0TXVsdGlwbGVFbGVt
ZW50cworICAgIH0pOworICAgIGRvY3VtZW50LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisK
KyAgICBWZWN0b3I8RmxvYXRSZWN0PiByZWN0czsKKworICAgIGZvciAoY29uc3QgYXV0byYgbm9k
ZSA6IHJlc3VsdC5saXN0QmFzZWRUZXN0UmVzdWx0KCkpIHsKKyAgICAgICAgaWYgKCFpczxFbGVt
ZW50Pihub2RlLmdldCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvJiBl
bGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZS5nZXQoKSk7CisKKyAgICAgICAgaWYgKCFu
b2RlLT53aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgcmVjdHMuYXBwZW5kKGVsZW1lbnQuYm91bmRpbmdCb3hJblJvb3RWaWV3
Q29vcmRpbmF0ZXMoKSk7CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdHMpOwor
fQorCiB2b2lkIFdlYlBhZ2U6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wg
YWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCiB7CiAgICAgaWYgKGFsd2F5c1Nob3dzSG9y
aXpvbnRhbFNjcm9sbGVyID09IG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggN2VjNmY0YWUzNjNm
YmE4MTExYWEzZDU3Yjg5MDMxMmY4N2RiYWU5MS4uMDNjYmUyNWM4ZmY0NmRlMzkyZGJjM2RiNzkx
ZWVhNzI1NjgyOWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtOTMxLDYgKzkzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFVwZGF0ZUNvbXBv
c2l0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygp
OwogCisgICAgdm9pZCBpbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKFdl
YkNvcmU6OkZsb2F0UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
RmxvYXRSZWN0Pik+JiYpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxMTkx
ODM3YzM1MWVhMjc5NWRmOWIxYTViZjJhNDY0MzY1OGUwZDRlLi5iNWZjODVjY2NiOTRhMmM3NDEw
Yjg1OTQyZTI1OTA0NTRkOTg0YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTY1Nyw0ICs2NTcsNiBAQCBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlmCiAKICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6
RmxvYXRSZWN0IHRhcmdldFJlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQorCisgICAg
SW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJl
Y3QgcmVjdCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3luYwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>