<?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>179070</bug_id>
          
          <creation_ts>2017-10-31 12:43:04 -0700</creation_ts>
          <short_desc>Web Inspector: Canvas Tab: show activated GL extensions for selected canvas</short_desc>
          <delta_ts>2017-12-04 17:38:15 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>175485</blocked>
    
    <blocked>179205</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1366498</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-10-31 12:43:04 -0700</bug_when>
    <thetext>I think this could go in the Canvas details sidebar. It&apos;s not that important, but worth enumerating somewhere since there is no way to enumerate extensions directly via JS API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366500</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-31 12:43:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/35278276&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366527</commentid>
    <comment_count>2</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-10-31 13:18:05 -0700</bug_when>
    <thetext>I&apos;m not sure how useful this is.  Listing supported extensions is as simple as calling `getSupportedExtensions()`.

    document.createElement(&quot;canvas&quot;).getContext(&quot;webgl&quot;).getSupportedExtensions()

I think it would be more useful to list what extensions are enabled per context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367286</commentid>
    <comment_count>3</comment_count>
      <attachid>325702</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-02 03:42:05 -0700</bug_when>
    <thetext>Created attachment 325702
Patch

Too tired to add comments to ChangeLog :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367287</commentid>
    <comment_count>4</comment_count>
      <attachid>325703</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-02 03:43:11 -0700</bug_when>
    <thetext>Created attachment 325703
[Image] After Patch is applied

Not the prettiest, I know, but I&apos;m not really sure what UI to use here.  DataGrid doesn&apos;t make a lot of sense as every item shown will be true/on, and that seems like a waste.  I figured that this is better than nothing ¯\_(ツ)_/¯</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367369</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-02 09:48:14 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #2)
&gt; I&apos;m not sure how useful this is.  Listing supported extensions is as simple
&gt; as calling `getSupportedExtensions()`.
&gt; 
&gt;    
&gt; document.createElement(&quot;canvas&quot;).getContext(&quot;webgl&quot;).getSupportedExtensions()
&gt; 
&gt; I think it would be more useful to list what extensions are enabled per
&gt; context.

Yes, this sounds more useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367419</commentid>
    <comment_count>6</comment_count>
      <attachid>325702</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-02 10:51:36 -0700</bug_when>
    <thetext>Comment on attachment 325702
Patch

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

r=me, looks awesome! You may want to adjust the bug title and changelog to reflect what the patch actually does, though.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1084
&gt; +#define ENABLE_EXTENSION(type, variable, nameLiteral, ternaryCondition) \

This is a great cleanup, but the macro name is nonsensical as it conditionally enables an extension, but this reads as if we are enabling all extensions. Maybe ENABLE_EXTENSION_IF_REQUESTED(...).

I also think ternaryCondition is a bit obtuse, perhaps it reads better as &quot;canEnable&quot;:

variable = (canEnable) ? std::make_unique&lt;type&gt;(*this) : nullptr;

&gt; Source/WebCore/inspector/InspectorCanvasAgent.cpp:103
&gt; +        if (is&lt;WebGLRenderingContextBase&gt;(context)) {

Does this handle WebGL2 as well?

&gt; LayoutTests/inspector/canvas/extensions-expected.txt:1
&gt; +Test that CanvasManager tracks canvas memory costs and is notified of changes.

Nope, lol. Please add subtly different boilerplate text.

&gt; LayoutTests/inspector/canvas/extensions.html:48
&gt; +    &lt;p&gt;Test that CanvasManager tracks canvas memory costs and is notified of changes.&lt;/p&gt;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367420</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-02 10:53:18 -0700</bug_when>
    <thetext>Thinking a bit more, you could easily capture a stack trace for these getExtension calls and put them in the UI. I think this would be reasonable in the &quot;live&quot; case (Web Inspector is open when the calls happen). There&apos;s no point trying to save a call stack if Inspector isn&apos;t open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367520</commentid>
    <comment_count>8</comment_count>
      <attachid>325702</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-02 13:41:57 -0700</bug_when>
    <thetext>Comment on attachment 325702
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorCanvasAgent.cpp:103
&gt;&gt; +        if (is&lt;WebGLRenderingContextBase&gt;(context)) {
&gt; 
&gt; Does this handle WebGL2 as well?

Yes this works for both.  `getSupportedExtensions` is virtual and implemented by each subclass, and `extensionIsEnabled` is defined on WebGLRenderingContextBase.

&gt;&gt; LayoutTests/inspector/canvas/extensions-expected.txt:1
&gt;&gt; +Test that CanvasManager tracks canvas memory costs and is notified of changes.
&gt; 
&gt; Nope, lol. Please add subtly different boilerplate text.

I did mention this when I uploaded the patch :P

&gt; (In reply to Devin Rousso from comment #3)
&gt;&gt; Created attachment 325702 [details]
&gt;&gt; Patch
&gt;&gt; 
&gt;&gt; Too tired to add comments to ChangeLog :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367593</commentid>
    <comment_count>9</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-02 15:42:17 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #7)
&gt; Thinking a bit more, you could easily capture a stack trace for these
&gt; getExtension calls and put them in the UI. I think this would be reasonable
&gt; in the &quot;live&quot; case (Web Inspector is open when the calls happen). There&apos;s no
&gt; point trying to save a call stack if Inspector isn&apos;t open.
I don&apos;t think that a backtrace for `getExtension` is really all that useful, since AFAIK an enabled extension doesn&apos;t really do anything by itself.  Furthermore, the user could just as easily put a breakpoint on any `getExtension` line and see it that way.  I&apos;m happy to add it, but I am skeptical of how useful it would be (and how to present it nicely in the UI).

Regardless, I think it should be a separate change. &lt;https://webkit.org/b/179205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367594</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-02 15:42:53 -0700</bug_when>
    <thetext>Neat! What does it look like when there are no extensions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367596</commentid>
    <comment_count>11</comment_count>
      <attachid>325785</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-02 15:49:14 -0700</bug_when>
    <thetext>Created attachment 325785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367670</commentid>
    <comment_count>12</comment_count>
      <attachid>325785</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-02 17:54:42 -0700</bug_when>
    <thetext>Comment on attachment 325785
Patch

Rejecting attachment 325785 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 325785, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
LayoutTests
:040000 040000 fa6a38837d8e81970cb71cacb32c83aa9dbe0e07 fbe2d210b97d5f1faa5461bbb7037ec9426da33a M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/5082908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367672</commentid>
    <comment_count>13</comment_count>
      <attachid>325808</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-02 18:10:10 -0700</bug_when>
    <thetext>Created attachment 325808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367698</commentid>
    <comment_count>14</comment_count>
      <attachid>325808</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-02 18:53:21 -0700</bug_when>
    <thetext>Comment on attachment 325808
Patch

Clearing flags on attachment: 325808

Committed r224370: &lt;https://trac.webkit.org/changeset/224370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367699</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-02 18:53:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325702</attachid>
            <date>2017-11-02 03:42:05 -0700</date>
            <delta_ts>2017-11-02 15:49:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179070-20171102034204.patch</filename>
            <type>text/plain</type>
            <size>46407</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVjZThlMjZlYzUzZmI2YjJjODQ5ZDdlMDg0ZjRi
ZTRjYWU0ZTFiOGIuLmQ0OGMyYWY3NWQxYjIxNTg0Njc4ZGNkNmUwMzVjMDI3NGIzZjAwYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTExLTAyICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENhbnZhcyBUYWI6IHNob3cgc3VwcG9ydGVkIEdMIGV4dGVuc2lvbnMgZm9yIHNlbGVjdGVk
IGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI3ODI3Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9D
YW52YXMuanNvbjoKKyAgICAgICAgQWRkIGBleHRlbnNpb25FbmFibGVkYCBldmVudCB0aGF0IGlz
IGZpcmVkIGVhY2ggdGltZSBgZ2V0RXh0ZW5zaW9uYCBpcyBjYWxsZWQgd2l0aCBhCisgICAgICAg
IGRpZmZlcmVudCBzdHJpbmcgb24gYSBXZWJHTCBjb250ZXh0LgorCiAyMDE3LTExLTAxICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgV0tGdWxs
c2NyZWVuV2luZG93Q29udHJvbGxlciBmb3IgaU9TLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMwMDExYzYxYjY1
MGJhOTBlMmIyYjJmZmExYWZlNmU2YTFmNDA5NzMuLjdlOGQ3Yzc3ZGRjNjEyMWMzMmMzNjQ5ZjY2
MjgzOTcwZDJiYmI0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0xMS0wMiAg
RGV2aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91c3NvLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDYW52YXMgVGFiOiBzaG93IHN1cHBvcnRlZCBHTCBleHRlbnNpb25zIGZvciBzZWxl
Y3RlZCBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTA3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNzgyNzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2Nh
bnZhcy9leHRlbnNpb25zLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKToKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbik6CisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpleHRl
bnNpb25Jc0VuYWJsZWQpOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZEVuYWJsZUV4dGVuc2lvbik6CisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbklt
cGwpOgorCiAyMDE3LTExLTAxICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV0IGlzPFQ+KCkgYWNjZXB0IFJlZlB0cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
CmluZGV4IGMyYTFlODQ1MTJkODc1ZGZmODdlMWY1NzY3ZWJmMDNmM2Q0MjdlMTUuLjQxZTA5ZTI0
YjIyNWIxZDA1NDg0ZmVkOWE1ZmM4NTZlZWE2MmFlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTAyICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2
aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhbnZhcyBUYWI6IHNob3cg
c3VwcG9ydGVkIEdMIGV4dGVuc2lvbnMgZm9yIHNlbGVjdGVkIGNhbnZhcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDcwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zNTI3ODI3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
czoKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ2FudmFzT2JzZXJ2ZXIuanM6
CisgICAgICAgIChXSS5DYW52YXNPYnNlcnZlci5wcm90b3R5cGUuZXh0ZW5zaW9uRW5hYmxlZCk6
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanM6
CisgICAgICAgIChXSS5DYW52YXNNYW5hZ2VyLnByb3RvdHlwZS5leHRlbnNpb25FbmFibGVkKToK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qczoKKyAgICAgICAgKFdJ
LkNhbnZhcy5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbnMpOgorICAgICAgICAoV0kuQ2FudmFzLnBy
b3RvdHlwZS5lbmFibGVFeHRlbnNpb24pOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsLmNzczoKKyAgICAgICAgKC5zaWRlYmFyID4gLnBh
bmVsLmRldGFpbHMuY2FudmFzIC5kZXRhaWxzLXNlY3Rpb24uY2FudmFzLWV4dGVuc2lvbnMgLmNv
bnRlbnQgPiB1bCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxz
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUuc2V0IGNhbnZhcyk6CisgICAgICAgIChXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNhbnZhc0RldGFpbHNT
aWRlYmFyUGFuZWwucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXSS5DYW52YXNEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcmVmcmVzaEF0dHJpYnV0ZXNTZWN0aW9uKToKKyAgICAg
ICAgKFdJLkNhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWZyZXNoRXh0ZW5z
aW9uc1NlY3Rpb24pOgorCiAyMDE3LTExLTAxICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5y
b3Vzc28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGlkYXRlIERPTVRyZWVF
bGVtZW50IGNvbnRleHRtZW51IGl0ZW1zIGludG8gc3VibWVudXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCmluZGV4IGU2YTky
ZTk2YWY3ODA4OTA4NjZjZjIxOWY1MWQ0ZTExZTQ4NTAyMGMuLjViNzM5MTBmYWUxOWIyZjc1ZTRj
OGJjYTRiMTM2OWE0NjE4ZTdjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbgpAQCAtMTcxLDYgKzE3MSwxMyBAQAogICAg
ICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJl
eHRlbnNpb25FbmFibGVkIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiY2FudmFzSWQiLCAiJHJlZiI6ICJDYW52YXNJZCIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImV4dGVuc2lvbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJOYW1lIG9mIHRoZSBleHRlbnNpb24gdGhhdCB3YXMgZW5hYmxlZC4iIH0KKyAg
ICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAi
Y3NzQ2FudmFzQ2xpZW50Tm9kZXNDaGFuZ2VkIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FudmFzSWQiLCAiJHJlZiI6ICJDYW52YXNJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIGNhbnZhcyB0aGF0IGNoYW5nZWQuIiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IGUyMzlmZTRkNzFkMjRjYjVkYTcwOWViZDBjNjdkMjcyNmZkNTUwMTku
LjgxMTA2YjhiMTA0YjNlNDQ1ZGE5ZTZhODFlZTEwMWNlNTYwMWIxZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIK
ICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXRMaW5lYXIuaCIKICNpbmNsdWRlICJPRVNUZXh0dXJl
SGFsZkZsb2F0LmgiCkBAIC0xMDgwLDg3ICsxMDgxLDI5IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9F
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkgewotICAgICAgICBpZiAoIW1fZXh0VGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7Ci0gICAgICAgICAgICBtX2V4dFRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYyA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8RVhU
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5nZXQoKTsKLSAgICB9
Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0
IikpIHsKLSAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkgewotICAgICAgICAgICAgbV9v
ZXNUZXh0dXJlRmxvYXQgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJl
X2Zsb2F0IikKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZs
b2F0PigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1Rl
eHR1cmVGbG9hdC5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNU
ZXh0dXJlRmxvYXRMaW5lYXIpIHsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
ID0gZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXRMaW5l
YXI+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2VzVGV4
dHVyZUZsb2F0TGluZWFyLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKSB7Ci0gICAgICAgIGlmICghbV9v
ZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXQg
PSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQot
ICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pigq
dGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1RleHR1cmVI
YWxmRmxvYXQuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7Ci0gICAgICAgIGlmICghbV9v
ZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hh
bGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VT
VGV4dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmdldCgpOwotICAgIH0KLSAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfbG9zZV9jb250ZXh0Iikp
IHsKLSAgICAgICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCi0gICAgICAgICAgICBtX3dlYmds
TG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+KCp0aGlzKTsK
LSAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKLSAgICB9Ci0gICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfYXRjIikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMp
IHsKLSAgICAgICAgICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQo
KnRoaXMpKQotICAgICAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQz4oKnRoaXMpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMuZ2V0KCk7Ci0g
ICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQykgewotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
UFZSVEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykKLSAg
ICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVQVlJUQy5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikpIHsKLSAg
ICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDKSB7Ci0gICAgICAgICAgICBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OnN1cHBvcnRlZCgqdGhpcykKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMuZ2V0KCk7Ci0gICAgfQot
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90ZXh0dXJl
IikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsRGVwdGhUZXh0dXJlKSB7Ci0gICAgICAgICAgICBt
X3dlYmdsRGVwdGhUZXh0dXJlID0gV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCgqZ3JhcGhp
Y3NDb250ZXh0M0QoKSkKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xE
ZXB0aFRleHR1cmU+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKLSAgICAgICAg
aWYgKCFtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICBtX3dlYmdsRGVidWdS
ZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+KCp0
aGlzKTsKLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mby5nZXQoKTsKLSAg
ICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlYnVnX3No
YWRlcnMiKSkgewotICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpIHsKLSAgICAgICAg
ICAgIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cyhBU0NJSUxpdGVyYWwgeyAiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIiB9
KQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnU2hhZGVycz4o
KnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV93ZWJnbERlYnVn
U2hhZGVycy5nZXQoKTsKLSAgICB9Ci0KKyNkZWZpbmUgRU5BQkxFX0VYVEVOU0lPTih0eXBlLCB2
YXJpYWJsZSwgbmFtZUxpdGVyYWwsIHRlcm5hcnlDb25kaXRpb24pIFwKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAorICAgICAgICBpZiAoIXZh
cmlhYmxlKSB7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gdGVybmFyeUNvbmRpdGlvbiA/IHN0
ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgaWYg
KHZhcmlhYmxlICE9IG51bGxwdHIpIFwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKKyAgICAgICAgfSBc
CisgICAgICAgIHJldHVybiB2YXJpYWJsZS5nZXQoKTsgXAorICAgIH0KKworICAgIEVOQUJMRV9F
WFRFTlNJT04oRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJsZVN1cHBv
cnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpOworICAg
IEVOQUJMRV9FWFRFTlNJT04oRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3BpYywgIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpOwor
ICAgIEVOQUJMRV9FWFRFTlNJT04oT0VTVGV4dHVyZUZsb2F0LCBtX29lc1RleHR1cmVGbG9hdCwg
Ik9FU190ZXh0dXJlX2Zsb2F0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4
dHVyZV9mbG9hdCIpKTsKKyAgICBFTkFCTEVfRVhURU5TSU9OKE9FU1RleHR1cmVGbG9hdExpbmVh
ciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKTsK
KyAgICBFTkFCTEVfRVhURU5TSU9OKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhh
bGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNp
b24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIsICJP
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSk7CisgICAgRU5BQkxFX0VYVEVOU0lP
TihXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQsICJXRUJHTF9sb3NlX2NvbnRl
eHQiLCB0cnVlKTsKKyAgICBFTkFCTEVfRVhURU5TSU9OKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfYXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCp0aGlz
KSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1f
d2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlz
KSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVO
QUJMRV9FWFRFTlNJT04oV2ViR0xEZXB0aFRleHR1cmUsIG1fd2ViZ2xEZXB0aFRleHR1cmUsICJX
RUJHTF9kZXB0aF90ZXh0dXJlIiwgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCgqZ3JhcGhp
Y3NDb250ZXh0M0QoKSkpOworICAgIEVOQUJMRV9FWFRFTlNJT04oV2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5m
byIsIHRydWUpOworICAgIEVOQUJMRV9FWFRFTlNJT04oV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2Vi
Z2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoQVNDSUlMaXRlcmFsIHsgIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hh
ZGVyX3NvdXJjZSIgfSkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3
ODgxODlhMjM0OGEyMDI1NjcxZmE5ZTcyMzZkYzg5ZWUzYzhlNTU5Li40ZDc3ODQ4YzljZjVhOGZj
YTcxZjQ3ODQ4N2I0OWQ5OThmY2NlZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5o
IgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk9FU0VsZW1lbnRJbmRleFVpbnQuaCIKICNpbmNsdWRlICJPRVNT
dGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCkBAIC04
OSwyOCArOTAsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhUX2JsZW5kX21pbm1heCIpKSB7Ci0gICAgICAgIGlm
ICghbV9leHRCbGVuZE1pbk1heCkgewotICAgICAgICAgICAgbV9leHRCbGVuZE1pbk1heCA9IGVu
YWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX2JsZW5kX21pbm1heCIpCi0gICAgICAgICAg
ICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPEVYVEJsZW5kTWluTWF4PigqdGhpcykgOiBudWxscHRy
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2V4dEJsZW5kTWluTWF4LmdldCgpOwotICAg
IH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhUX3NSR0IiKSkgewot
ICAgICAgICBpZiAoIW1fZXh0c1JHQikgewotICAgICAgICAgICAgbV9leHRzUkdCID0gZW5hYmxl
U3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfc1JHQiIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6
Om1ha2VfdW5pcXVlPEVYVHNSR0I+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG1fZXh0c1JHQi5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgIkVYVF9mcmFnX2RlcHRoIikpIHsKLSAgICAgICAgaWYgKCFtX2V4dEZy
YWdEZXB0aCkgewotICAgICAgICAgICAgbV9leHRGcmFnRGVwdGggPSBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFr
ZV91bmlxdWU8RVhURnJhZ0RlcHRoPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBtX2V4dEZyYWdEZXB0aC5nZXQoKTsKKworI2RlZmluZSBFTkFCTEVfRVhURU5T
SU9OKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgdGVybmFyeUNvbmRpdGlvbikgXAorICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCisgICAg
ICAgIGlmICghdmFyaWFibGUpIHsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSB0ZXJuYXJ5Q29u
ZGl0aW9uID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAg
ICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAorICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAor
ICAgICAgICB9IFwKKyAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmdldCgpOyBcCiAgICAgfQorCisg
ICAgRU5BQkxFX0VYVEVOU0lPTihFWFRCbGVuZE1pbk1heCwgbV9leHRCbGVuZE1pbk1heCwgIkVY
VF9ibGVuZF9taW5tYXgiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9ibGVuZF9t
aW5tYXgiKSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihFWFRzUkdCLCBtX2V4dHNSR0IsICJFWFRf
c1JHQiIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3NSR0IiKSk7CisgICAgRU5B
QkxFX0VYVEVOU0lPTihFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVw
dGgiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIikpOwogICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9k
IikpIHsKICAgICAgICAgaWYgKCFtX2V4dFNoYWRlclRleHR1cmVMT0QpIHsKICAgICAgICAgICAg
IGlmICghKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCB7
ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIiB9KSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zdXBwb3J0cyhBU0NJSUxpdGVyYWwgeyAiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCIg
fSkpKQpAQCAtMTE4LDk5ICsxMTEsMjUgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoQVNDSUlMaXRlcmFsIHsgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiIH0pOwogICAg
ICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhU
U2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOworICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9leHRTaGFkZXJUZXh0dXJlTE9ELmdldCgp
OwogICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
V0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKSB7Ci0gICAgICAgIGlmICgh
bV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpIHsKLSAgICAgICAgICAgIG1fZXh0VGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljID0gZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3Vu
aXF1ZTxFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmdldCgp
OwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3N0YW5k
YXJkX2Rlcml2YXRpdmVzIikpIHsKLSAgICAgICAgaWYgKCFtX29lc1N0YW5kYXJkRGVyaXZhdGl2
ZXMpIHsKLSAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcyA9IGVuYWJsZVN1cHBv
cnRlZEV4dGVuc2lvbigiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikKLSAgICAgICAgICAg
ICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4oKnRoaXMpIDog
bnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRp
dmVzLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
T0VTX3RleHR1cmVfZmxvYXQiKSkgewotICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7
Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lv
bigiR0xfT0VTX3RleHR1cmVfZmxvYXQiKQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3Vu
aXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0LmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpIHsKLSAg
ICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9vZXNU
ZXh0dXJlRmxvYXRMaW5lYXIgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1RleHR1cmVGbG9hdExpbmVhcj4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpIHsK
LSAgICAgICAgaWYgKCFtX29lc1RleHR1cmVIYWxmRmxvYXQpIHsKLSAgICAgICAgICAgIG1fb2Vz
VGV4dHVyZUhhbGZGbG9hdCA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9FU1Rl
eHR1cmVIYWxmRmxvYXQ+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdC5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpIHsK
LSAgICAgICAgaWYgKCFtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIpIHsKLSAgICAgICAgICAg
IG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICAgICAgICAgID8gc3Rk
OjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyPigqdGhpcykgOiBudWxscHRy
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIu
Z2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNf
dmVydGV4X2FycmF5X29iamVjdCIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCkgewotICAgICAgICAgICAgbV9vZXNWZXJ0ZXhBcnJheU9iamVjdCA9IGVuYWJsZVN1cHBv
cnRlZEV4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQotICAgICAgICAgICAg
ICAgID8gc3RkOjptYWtlX3VuaXF1ZTxPRVNWZXJ0ZXhBcnJheU9iamVjdD4oKnRoaXMpIDogbnVs
bHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNWZXJ0ZXhBcnJheU9iamVjdC5n
ZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU19l
bGVtZW50X2luZGV4X3VpbnQiKSkgewotICAgICAgICBpZiAoIW1fb2VzRWxlbWVudEluZGV4VWlu
dCkgewotICAgICAgICAgICAgbV9vZXNFbGVtZW50SW5kZXhVaW50ID0gZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikKLSAgICAgICAgICAgICAgICA/
IHN0ZDo6bWFrZV91bmlxdWU8T0VTRWxlbWVudEluZGV4VWludD4oKnRoaXMpIDogbnVsbHB0cjsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNFbGVtZW50SW5kZXhVaW50LmdldCgpOwot
ICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfbG9zZV9j
b250ZXh0IikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCi0gICAgICAgICAg
ICBtX3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+
KCp0aGlzKTsKLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKLSAgICB9
Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21w
cmVzc2VkX3RleHR1cmVfYXRjIikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVBVEMpIHsKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykKLSAgICAgICAgICAgICAg
ICA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQz4oKnRoaXMpIDog
bnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0
dXJlQVRDLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKSB7Ci0gICAgICAgIGlm
ICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMpIHsKLSAgICAgICAgICAgIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBw
b3J0ZWQoKnRoaXMpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQz4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMuZ2V0KCk7Ci0gICAgfQotICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfczN0YyIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQykg
ewotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpCi0gICAgICAgICAgICAgICAgPyBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDPigqdGhpcykgOiBudWxscHRy
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VC
R0xfZGVwdGhfdGV4dHVyZSIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkg
ewotICAgICAgICAgICAgbV93ZWJnbERlcHRoVGV4dHVyZSA9IFdlYkdMRGVwdGhUZXh0dXJlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xEZXB0aFRleHR1cmU+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7Ci0gICAgfQorICAgIEVOQUJMRV9FWFRF
TlNJT04oRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVGaWx0ZXJBbmlz
b3Ryb3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJsZVN1cHBvcnRl
ZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpOworICAgIEVO
QUJMRV9FWFRFTlNJT04oRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYywgIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMi
LCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyIpKTsKKyAgICBFTkFCTEVfRVhURU5TSU9OKE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMsIG1f
b2VzU3RhbmRhcmREZXJpdmF0aXZlcywgIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikpOworICAg
IEVOQUJMRV9FWFRFTlNJT04oT0VTVGV4dHVyZUZsb2F0LCBtX29lc1RleHR1cmVGbG9hdCwgIk9F
U190ZXh0dXJlX2Zsb2F0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCIpKTsKKyAgICBFTkFCTEVfRVhURU5TSU9OKE9FU1RleHR1cmVGbG9hdExpbmVhciwg
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFi
bGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKTsKKyAg
ICBFTkFCTEVfRVhURU5TSU9OKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLCBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIsICJPRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihP
RVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9iamVjdCwgIk9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpKTsKKyAgICBFTkFCTEVfRVhURU5TSU9OKE9FU0VsZW1lbnRJbmRleFVpbnQs
IG1fb2VzRWxlbWVudEluZGV4VWludCwgIk9FU19lbGVtZW50X2luZGV4X3VpbnQiLCBlbmFibGVT
dXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSk7CisgICAgRU5B
QkxFX0VYVEVOU0lPTihXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQsICJXRUJH
TF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKKyAgICBFTkFCTEVfRVhURU5TSU9OKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3Vw
cG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2Nv
bXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3Vw
cG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0VYVEVOU0lPTihXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhp
cykpOworICAgIEVOQUJMRV9FWFRFTlNJT04oV2ViR0xEZXB0aFRleHR1cmUsIG1fd2ViZ2xEZXB0
aFRleHR1cmUsICJXRUJHTF9kZXB0aF90ZXh0dXJlIiwgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBv
cnRlZCgqbV9jb250ZXh0KSk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
IldFQkdMX2RyYXdfYnVmZmVycyIpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbERyYXdCdWZmZXJz
KSB7CiAgICAgICAgICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKQEAgLTIxOCw2ICsx
MzcsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChBU0NJSUxpdGVyYWwg
eyAiR0xfRVhUX2RyYXdfYnVmZmVycyIgfSk7CiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdC
dWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24o
KnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
X3dlYmdsRHJhd0J1ZmZlcnMuZ2V0KCk7CkBAIC0yMjksMjMgKzE0OSwxMyBAQCBXZWJHTEV4dGVu
c2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChBU0NJSUxpdGVyYWwgeyAiR0xfQU5HTEVfaW5zdGFu
Y2VkX2FycmF5cyIgfSk7CiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9
IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhp
cywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fYW5n
bGVJbnN0YW5jZWRBcnJheXMuZ2V0KCk7CiAgICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKLSAgICAgICAgaWYg
KCFtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICBtX3dlYmdsRGVidWdSZW5k
ZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+KCp0aGlz
KTsKLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mby5nZXQoKTsKLSAgICB9
Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlYnVnX3NoYWRl
cnMiKSkgewotICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpIHsKLSAgICAgICAgICAg
IG1fd2ViZ2xEZWJ1Z1NoYWRlcnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cyhBU0NJSUxpdGVyYWwgeyAiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIiB9KQot
ICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnU2hhZGVycz4oKnRo
aXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV93ZWJnbERlYnVnU2hh
ZGVycy5nZXQoKTsKLSAgICB9Ci0KKyAgICBFTkFCTEVfRVhURU5TSU9OKFdlYkdMRGVidWdSZW5k
ZXJlckluZm8sIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbywgIldFQkdMX2RlYnVnX3JlbmRlcmVy
X2luZm8iLCB0cnVlKTsKKyAgICBFTkFCTEVfRVhURU5TSU9OKFdlYkdMRGVidWdTaGFkZXJzLCBt
X3dlYmdsRGVidWdTaGFkZXJzLCAiV0VCR0xfZGVidWdfc2hhZGVycyIsIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCB7ICJHTF9BTkdMRV90cmFuc2xhdGVk
X3NoYWRlcl9zb3VyY2UiIH0pKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCAyNGQ3YjIxODQxYTcyZjJiMjhmMDRiZGUzM2E1YzZlOGM1NzM2Mjg5Li5jZjJi
MzcyZjVjOTI0NTVkZjAzNDVjZDlmYzRlMjZhNGY2MGE4ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtMjc0MCw2ICsyNzQwLDM3IEBAIGxvbmcgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlCiAgICAgcmV0dXJu
IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSk7CiB9CiAKK2Jv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyNkZWZpbmUgQ0hFQ0tfRVhURU5TSU9OKHZhcmlhYmxlLCBuYW1lTGl0
ZXJhbCkgXAorICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFs
KSkgXAorICAgICAgICByZXR1cm4gdmFyaWFibGUgIT0gbnVsbHB0cjsKKworICAgIENIRUNLX0VY
VEVOU0lPTihtX2V4dEZyYWdEZXB0aCwgIkVYVF9mcmFnX2RlcHRoIik7CisgICAgQ0hFQ0tfRVhU
RU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgsICJFWFRfYmxlbmRfbWlubWF4Iik7CisgICAgQ0hFQ0tf
RVhURU5TSU9OKG1fZXh0c1JHQiwgIkVYVF9zUkdCIik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljIik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgIENIRUNLX0VY
VEVOU0lPTihtX2V4dFNoYWRlclRleHR1cmVMT0QsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7
CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fb2VzVGV4dHVyZUZsb2F0LCAiT0VTX3RleHR1cmVfZmxv
YXQiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNf
dGV4dHVyZV9mbG9hdF9saW5lYXIiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV9vZXNUZXh0dXJl
SGFsZkZsb2F0LCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOworICAgIENIRUNLX0VYVEVOU0lP
TihtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMsICJP
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV9vZXNWZXJ0
ZXhBcnJheU9iamVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgQ0hFQ0tfRVhU
RU5TSU9OKG1fb2VzRWxlbWVudEluZGV4VWludCwgIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKTsK
KyAgICBDSEVDS19FWFRFTlNJT04obV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0Iik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbywgIldF
QkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV93ZWJnbERl
YnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKKyAgICBDSEVDS19FWFRFTlNJT04o
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
UFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7CisgICAgQ0hF
Q0tfRVhURU5TSU9OKG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfczN0YyIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX3dlYmdsRGVwdGhUZXh0
dXJlLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX3dlYmds
RHJhd0J1ZmZlcnMsICJXRUJHTF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBDSEVDS19FWFRFTlNJT04o
bV9hbmdsZUluc3RhbmNlZEFycmF5cywgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIEdDM0Rib29sZWFuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmlzQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGY4NWM1OWJmMTJjN2YwN2Fh
ZDNmMzk0YjRlNjRjMzMzNjA2NDBjMDguLjlhNjU2MDRmMWQwM2E2ZjUxNTIxOTY3NTI2ZmUyOWNk
Y2E0NWU3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTIxMCw2ICsyMTAsOCBAQCBwdWJsaWM6CiAgICAg
V2ViR0xBbnkgZ2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSk7
CiAgICAgbG9uZyBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0Mz
RGVudW0gcG5hbWUpOwogCisgICAgYm9vbCBleHRlbnNpb25Jc0VuYWJsZWQoY29uc3QgU3RyaW5n
Jik7CisKICAgICBib29sIGlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyOyB9CiAgICAgdm9pZCBzZXRQcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIoYm9vbCB2YWx1ZSkgeyBtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3
aW5nQnVmZmVyID0gdmFsdWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggYzNkNjdkMmM0MDBiNTJlZDY3ZDZkZDZkZTJh
MjM2ZjYzZGFkMjYxMC4uMGUyYTkyZDI1Njg0ZjY3ZjUwY2Y3Y2ExMzU3ZTM4YzQ3ZjYwYmZlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC05NSwxMCArOTUsMjQgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxl
KEVycm9yU3RyaW5nJikKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogCiAgICAgY29uc3QgYm9vbCBj
YXB0dXJlQmFja3RyYWNlID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBpbnNwZWN0b3JDYW52YXMg
OiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8m
IGluc3BlY3RvckNhbnZhcyA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnZhbHVlcygp
KSB7CiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jYW52YXNBZGRlZChpbnNwZWN0b3JD
YW52YXMtPmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKG1faW5zdHJ1bWVudGluZ0FnZW50cywgY2FwdHVy
ZUJhY2t0cmFjZSkpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQorICAgICAgICBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXMoKS5yZW5kZXJpbmdD
b250ZXh0KCk7CisgICAgICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihjb250
ZXh0KSkgeworICAgICAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dFdl
YkdMID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY29udGV4dCk7CisgICAg
ICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZXh0ZW5zaW9ucyA9IGNv
bnRleHRXZWJHTC0+Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpKSB7CisgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiA6ICpleHRlbnNpb25zKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0V2ViR0wtPmV4dGVuc2lvbklzRW5hYmxlZChleHRlbnNpb24p
KQorICAgICAgICAgICAgICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV4dGVuc2lv
bkVuYWJsZWQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGV4dGVuc2lvbik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKKyAgICB9CisK
KyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JQcm9ncmFtIDogbV9p
ZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8mIGlu
c3BlY3RvckNhbnZhcyA9IGluc3BlY3RvclByb2dyYW0tPmNhbnZhcygpOwogICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+cHJvZ3JhbUNyZWF0ZWQoaW5zcGVjdG9yQ2FudmFzLmlkZW50aWZp
ZXIoKSwgaW5zcGVjdG9yUHJvZ3JhbS0+aWRlbnRpZmllcigpKTsKQEAgLTUwOCw2ICs1MjIsMTUg
QEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJh
bWUoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnYKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZEVuYWJsZUV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBhdXRv
KiBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGNvbnRleHQuY2FudmFzKCkp
OworICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+ZXh0ZW5zaW9uRW5hYmxlZChpbnNwZWN0b3JDYW52YXMtPmlkZW50
aWZpZXIoKSwgZXh0ZW5zaW9uKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlk
Q3JlYXRlUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0LCBXZWJHTFBy
b2dyYW0mIHByb2dyYW0pCiB7CiAgICAgYXV0byogaW5zcGVjdG9yQ2FudmFzID0gZmluZEluc3Bl
Y3RvckNhbnZhcyhjb250ZXh0LmNhbnZhcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggMTFhNWU2NmYwZmE0M2E2OGM0ZDI3MDAy
NzJjNzUyYTQ5YTU1M2NkMS4uNTNmMTJhMTdkZTY0MGFhNjliMjNjYjllYTM3MzAxODIwNzhiZWM2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVjb3JkQ2FudmFzQWN0aW9u
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8UmVjb3JkQ2Fu
dmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZWNvcmRpbmdD
YW52YXNGcmFtZShIVE1MQ2FudmFzRWxlbWVudCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNl
KTsKICNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBkaWRFbmFibGVFeHRlbnNpb24oV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkQ3JlYXRl
UHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7CiAgICAg
dm9pZCB3aWxsRGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0mKTsKICAgICBib29sIGlzU2hhZGVy
UHJvZ3JhbURpc2FibGVkKFdlYkdMUHJvZ3JhbSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAzMjFjZWFiNWVj
ZGQyNjhhZjVmNTAyYWIyOGE2NDAzZjE1MTdmYTM1Li42OTc0MjIwNmU2ZTMxYWE0N2U4Mjc4Zjkw
MDM4NjYwODkzZjZlYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTAxMyw2ICsxMDEzLDEyIEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZUlt
cGwoSW5zdHJ1bWVudGluZ0FnCiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBpZiAoSW5zcGVjdG9yQ2FudmFz
QWdlbnQqIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNB
Z2VudCgpKQorICAgICAgICBjYW52YXNBZ2VudC0+ZGlkRW5hYmxlRXh0ZW5zaW9uKGNvbnRleHQs
IGV4dGVuc2lvbik7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVQcm9ncmFtSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0LCBXZWJHTFByb2dyYW0mIHByb2dyYW0p
CiB7CiAgICAgaWYgKEluc3BlY3RvckNhbnZhc0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBjNjM2Y2ZjNjZk
ZTg4MDhlZjBiMThlMmQzNGVjYzk1N2Y2YzI1MmViLi41MzUwNDg1NDhhNGU3MTk3YjkzNDNjMGJk
OTE1M2RlNTAxYTA5YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0yNTAsOCArMjUwLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGRpZENoYW5nZUNhbnZhc01lbW9yeShIVE1MQ2FudmFzRWxlbWVudCYpOwog
ICAgIHN0YXRpYyB2b2lkIHJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0
JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7
IH0pOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKEhUTUxD
YW52YXNFbGVtZW50JiwgYm9vbCBmb3JjZURpc3BhdGNoID0gZmFsc2UpOwotCiAjaWYgRU5BQkxF
KFdFQkdMKQorICAgIHN0YXRpYyB2b2lkIGRpZEVuYWJsZUV4dGVuc2lvbihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRl
UHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7CiAgICAg
c3RhdGljIHZvaWQgd2lsbERlbGV0ZVByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYs
IFdlYkdMUHJvZ3JhbSYpOwogICAgIHN0YXRpYyBib29sIGlzU2hhZGVyUHJvZ3JhbURpc2FibGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKQEAgLTQyMyw2ICs0
MjMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlY29yZENhbnZhc0FjdGlvbkltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7CiAgICAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWVJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBIVE1MQ2FudmFzRWxlbWVudCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNlKTsK
ICNpZiBFTkFCTEUoV0VCR0wpCisgICAgc3RhdGljIHZvaWQgZGlkRW5hYmxlRXh0ZW5zaW9uSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVByb2dyYW1JbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7
CiAgICAgc3RhdGljIHZvaWQgd2lsbERlbGV0ZVByb2dyYW1JbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBXZWJHTFByb2dyYW0mKTsKICAgICBzdGF0aWMgYm9vbCBpc1NoYWRlclByb2dyYW1EaXNh
YmxlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwpAQCAtMTIwMiw2
ICsxMjAzLDEzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoSFRNTENhbnZhc0VsCiB9CiAKICNpZiBFTkFCTEUoV0VC
R0wpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVu
c2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JEb2N1bWVudChjb250ZXh0LmNhbnZhcygpLmRvY3VtZW50KCkpKQorICAg
ICAgICBkaWRFbmFibGVFeHRlbnNpb25JbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBjb250ZXh0
LCBleHRlbnNpb24pOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZVByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgV2Vi
R0xQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGNvbnRleHQu
Y2FudmFzKCkuZG9jdW1lbnQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRl
eCAyYjZmNWFhZTA5ZmE5MDJlNWVlZjVkZDZkZTc4YzJjYmYyNzcxYTcyLi4xNmI2ZmI0NWRjMjk1
ODIwMDMyNzU4YWRlYTQyODc1NGU3Y2I4MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMKQEAgLTM5NSw2ICszOTUsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBvcnQiXSA9ICJF
eHBvcnQiOwogbG9jYWxpemVkU3RyaW5nc1siRXhwb3J0IEhBUiJdID0gIkV4cG9ydCBIQVIiOwog
bG9jYWxpemVkU3RyaW5nc1siRXhwcmVzc2lvbiJdID0gIkV4cHJlc3Npb24iOwogbG9jYWxpemVk
U3RyaW5nc1siRXh0ZW5zaW9uIFNjcmlwdHMiXSA9ICJFeHRlbnNpb24gU2NyaXB0cyI7Citsb2Nh
bGl6ZWRTdHJpbmdzWyJFeHRlbnNpb25zIl0gPSAiRXh0ZW5zaW9ucyI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJFeHRyYSBTY3JpcHRzIl0gPSAiRXh0cmEgU2NyaXB0cyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJGYWRlIHVuZXhlY3V0ZWQgY29kZSJdID0gIkZhZGUgdW5leGVjdXRlZCBjb2RlIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkZhaWxlZCB0byB1cGdyYWRlIl0gPSAiRmFpbGVkIHRvIHVwZ3JhZGUiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ2FudmFzTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMKaW5kZXggN2I1Nzc2MzA2YWEzZjk2ZTIwNmQx
YWVhODIwODc5Mzk3ODI3MWI3Zi4uMzExOTUwZjUxZDc3YTMyNTc4MTdhZTEyYTI2MzBjZWZjOTYx
ZjdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpzCkBAIC0xNjAsNiArMTYwLDE4
IEBAIFdJLkNhbnZhc01hbmFnZXIgPSBjbGFzcyBDYW52YXNNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNhbnZhc01hbmFn
ZXIuRXZlbnQuUmVjb3JkaW5nU3RvcHBlZCwge2NhbnZhcywgcmVjb3JkaW5nfSk7CiAgICAgfQog
CisgICAgZXh0ZW5zaW9uRW5hYmxlZChjYW52YXNJZGVudGlmaWVyLCBleHRlbnNpb24pCisgICAg
eworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DYW52YXNPYnNlcnZlci4KKworICAgICAgICBs
ZXQgY2FudmFzID0gdGhpcy5fY2FudmFzSWRlbnRpZmllck1hcC5nZXQoY2FudmFzSWRlbnRpZmll
cik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbnZhcyk7CisgICAgICAgIGlmICghY2FudmFz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhbnZhcy5lbmFibGVFeHRlbnNpb24o
ZXh0ZW5zaW9uKTsKKyAgICB9CisKICAgICBwcm9ncmFtQ3JlYXRlZChjYW52YXNJZGVudGlmaWVy
LCBwcm9ncmFtSWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkNh
bnZhc09ic2VydmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NhbnZhcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DYW52YXMuanMKaW5kZXggODY3NjMzOGVhYmI2MWQ5MmYwZjU0MTIyMmFlZDRi
MWVmMzI3NTA2Ni4uOWM0ZTExZjdjNDQ2ZmI0NDllY2NkZWQ1NGI2YWY2NTk5YzBjOWJhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZh
cy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2Fu
dmFzLmpzCkBAIC0zOSw2ICszOSw3IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENhbnZhcyBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kb21Ob2RlID0gZG9tTm9kZSB8fCBudWxsOwogICAg
ICAgICB0aGlzLl9jc3NDYW52YXNOYW1lID0gY3NzQ2FudmFzTmFtZSB8fCAiIjsKICAgICAgICAg
dGhpcy5fY29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcyB8fCB7fTsKKyAgICAg
ICAgdGhpcy5fZXh0ZW5zaW9ucyA9IG5ldyBTZXQ7CiAgICAgICAgIHRoaXMuX21lbW9yeUNvc3Qg
PSBtZW1vcnlDb3N0IHx8IE5hTjsKICAgICAgICAgdGhpcy5fYmFja3RyYWNlID0gYmFja3RyYWNl
IHx8IFtdOwogCkBAIC0xMTEsNiArMTEyLDcgQEAgV0kuQ2FudmFzID0gY2xhc3MgQ2FudmFzIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IGZyYW1lKCkgeyByZXR1cm4gdGhpcy5fZnJhbWU7IH0K
ICAgICBnZXQgY3NzQ2FudmFzTmFtZSgpIHsgcmV0dXJuIHRoaXMuX2Nzc0NhbnZhc05hbWU7IH0K
ICAgICBnZXQgY29udGV4dEF0dHJpYnV0ZXMoKSB7IHJldHVybiB0aGlzLl9jb250ZXh0QXR0cmli
dXRlczsgfQorICAgIGdldCBleHRlbnNpb25zKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uczsg
fQogICAgIGdldCBiYWNrdHJhY2UoKSB7IHJldHVybiB0aGlzLl9iYWNrdHJhY2U7IH0KICAgICBn
ZXQgc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24oKSB7IHJldHVybiB0aGlzLl9zaGFkZXJQcm9ncmFt
Q29sbGVjdGlvbjsgfQogICAgIGdldCByZWNvcmRpbmdDb2xsZWN0aW9uKCkgeyByZXR1cm4gdGhp
cy5fcmVjb3JkaW5nQ29sbGVjdGlvbjsgfQpAQCAtMjY1LDYgKzI2NywxNSBAQCBXSS5DYW52YXMg
PSBjbGFzcyBDYW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIH0KIAorICAgIGVuYWJsZUV4
dGVuc2lvbihleHRlbnNpb24pCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DYW52
YXNNYW5hZ2VyLgorCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ2FudmFzLkV2ZW50LkV4
dGVuc2lvbkVuYWJsZWQsIHtleHRlbnNpb259KTsKKyAgICB9CisKICAgICBjc3NDYW52YXNDbGll
bnROb2Rlc0NoYW5nZWQoKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ2FudmFz
TWFuYWdlci4KQEAgLTI5OSw1ICszMTAsNiBAQCBXSS5DYW52YXMuQ29udGV4dFR5cGUgPSB7CiAK
IFdJLkNhbnZhcy5FdmVudCA9IHsKICAgICBNZW1vcnlDaGFuZ2VkOiAiY2FudmFzLW1lbW9yeS1j
aGFuZ2VkIiwKKyAgICBFeHRlbnNpb25FbmFibGVkOiAiY2FudmFzLWV4dGVuc2lvbi1lbmFibGVk
IiwKICAgICBDU1NDYW52YXNDbGllbnROb2Rlc0NoYW5nZWQ6ICJjYW52YXMtY3NzLWNhbnZhcy1j
bGllbnQtbm9kZXMtY2hhbmdlZCIsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ2FudmFzT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DYW52YXNPYnNlcnZlci5qcwppbmRl
eCBkZWQyODFmYjNmYTJkY2I4ZjQ0ZGQ3ZmU0MjQyN2ZiNjBhNGFmZTYxLi42NTY3ODNkMGUzMTVh
M2U2YjIwMzU2ZWQxYzJkMDI2OGRkOGMyMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DYW52YXNPYnNlcnZlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DYW52YXNPYnNlcnZlci5q
cwpAQCAtNTIsNiArNTIsMTEgQEAgV0kuQ2FudmFzT2JzZXJ2ZXIgPSBjbGFzcyBDYW52YXNPYnNl
cnZlcgogICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLnJlY29yZGluZ0ZpbmlzaGVkKGNhbnZhc0lk
LCByZWNvcmRpbmcpOwogICAgIH0KIAorICAgIGV4dGVuc2lvbkVuYWJsZWQoY2FudmFzSWQsIGV4
dGVuc2lvbikKKyAgICB7CisgICAgICAgIFdJLmNhbnZhc01hbmFnZXIuZXh0ZW5zaW9uRW5hYmxl
ZChjYW52YXNJZCwgZXh0ZW5zaW9uKTsKKyAgICB9CisKICAgICBwcm9ncmFtQ3JlYXRlZChjYW52
YXNJZCwgcHJvZ3JhbUlkKQogICAgIHsKICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5wcm9ncmFt
Q3JlYXRlZChjYW52YXNJZCwgcHJvZ3JhbUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWls
c1NpZGViYXJQYW5lbC5jc3MKaW5kZXggYzdkYjQ4NGJhYTRmZTQ3NzY2ZTg0NjhhOTQwZmY0ZTY3
NjQ1MjZhNi4uOTQwMWJkMThlMTJjNTIzNzE0YWJlMjBmNmRhOWI0YmU4MzA5ZGU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0
YWlsc1NpZGViYXJQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKQEAgLTI3LDYgKzI3LDEx
IEBACiAgICAgZGlzcGxheTogYmxvY2s7CiB9CiAKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y2FudmFzIC5kZXRhaWxzLXNlY3Rpb24uY2FudmFzLWV4dGVuc2lvbnMgLmNvbnRlbnQgPiB1bCB7
CisgICAgbWFyZ2luOiA0cHggMDsKKyAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDIyLjVweDsK
K30KKwogLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jYW52YXMgLmRldGFpbHMtc2VjdGlvbi5j
YW52YXMtYmFja3RyYWNlIC5jYWxsLWZyYW1lIHsKICAgICBtYXJnaW46IDNweDsKICAgICBmb250
LXNpemU6IDExcHg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpp
bmRleCA3ZTM5ODM1MjZhOTA2YzdjOGQxYjFkYWQwYmU4MDdlZWZlYmFjNDg2Li41NmZiZDdkNDAy
NjRhMGI3M2Q2ZjNmMTE1ZjAzYzRiOGM4ZDFkOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc0Rl
dGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTc3LDYgKzc3LDcgQEAgV0kuQ2FudmFzRGV0YWlsc1Np
ZGViYXJQYW5lbCA9IGNsYXNzIENhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5E
ZXRhaWwKIAogICAgICAgICBpZiAodGhpcy5fY2FudmFzKSB7CiAgICAgICAgICAgICB0aGlzLl9j
YW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DYW52YXMuRXZlbnQuTWVtb3J5Q2hhbmdlZCwg
dGhpcy5fY2FudmFzTWVtb3J5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9jYW52
YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DYW52YXMuRXZlbnQuRXh0ZW5zaW9uRW5hYmxlZCwg
dGhpcy5fcmVmcmVzaEV4dGVuc2lvbnNTZWN0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIHRoaXMu
X2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNhbnZhcy5FdmVudC5DU1NDYW52YXNDbGll
bnROb2Rlc0NoYW5nZWQsIHRoaXMuX3JlZnJlc2hDU1NDYW52YXNTZWN0aW9uLCB0aGlzKTsKICAg
ICAgICAgfQogCkBAIC04NCw2ICs4NSw3IEBAIFdJLkNhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwg
PSBjbGFzcyBDYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsCiAKICAg
ICAgICAgaWYgKHRoaXMuX2NhbnZhcykgewogICAgICAgICAgICAgdGhpcy5fY2FudmFzLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQ2FudmFzLkV2ZW50Lk1lbW9yeUNoYW5nZWQsIHRoaXMuX2NhbnZhc01l
bW9yeUNoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlz
dGVuZXIoV0kuQ2FudmFzLkV2ZW50LkV4dGVuc2lvbkVuYWJsZWQsIHRoaXMuX3JlZnJlc2hFeHRl
bnNpb25zU2VjdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9jYW52YXMuYWRkRXZlbnRM
aXN0ZW5lcihXSS5DYW52YXMuRXZlbnQuQ1NTQ2FudmFzQ2xpZW50Tm9kZXNDaGFuZ2VkLCB0aGlz
Ll9yZWZyZXNoQ1NTQ2FudmFzU2VjdGlvbiwgdGhpcyk7CiAgICAgICAgIH0KIApAQCAtMTE3LDkg
KzExOSwxNCBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0
YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAogCiAgICAgICAgIHRoaXMuX2F0dHJp
YnV0ZXNEYXRhR3JpZFJvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93KG51bGws
IFdJLlVJU3RyaW5nKCJObyBBdHRyaWJ1dGVzIikpOwogCi0gICAgICAgIGxldCBhdHRyaWJ1dGVz
U2VjdGlvbiA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbigiY2FudmFzLWF0dHJpYnV0ZXMiLCBXSS5V
SVN0cmluZygiQXR0cmlidXRlcyIpKTsKLSAgICAgICAgYXR0cmlidXRlc1NlY3Rpb24uZ3JvdXBz
ID0gW25ldyBXSS5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRS
b3ddKV07Ci0gICAgICAgIHRoaXMuX3NlY3Rpb25zLnB1c2goYXR0cmlidXRlc1NlY3Rpb24pOwor
ICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU2VjdGlvbiA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbigi
Y2FudmFzLWF0dHJpYnV0ZXMiLCBXSS5VSVN0cmluZygiQXR0cmlidXRlcyIpKTsKKyAgICAgICAg
dGhpcy5fYXR0cmlidXRlc1NlY3Rpb24uZ3JvdXBzID0gW25ldyBXSS5EZXRhaWxzU2VjdGlvbkdy
b3VwKFt0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRSb3ddKV07CisgICAgICAgIHRoaXMuX2F0dHJp
YnV0ZXNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fc2VjdGlv
bnMucHVzaCh0aGlzLl9hdHRyaWJ1dGVzU2VjdGlvbik7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5z
aW9uc1NlY3Rpb24gPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb24oImNhbnZhcy1leHRlbnNpb25zIiwg
V0kuVUlTdHJpbmcoIkV4dGVuc2lvbnMiKSk7CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnNTZWN0
aW9uLmVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMucHVzaCh0
aGlzLl9leHRlbnNpb25zU2VjdGlvbik7CiAKICAgICAgICAgdGhpcy5fY3NzQ2FudmFzQ2xpZW50
c1JvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXSS5VSVN0cmluZygiTm9kZXMi
KSk7CiAKQEAgLTE1Niw2ICsxNjMsNyBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsID0g
Y2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAogICAgICAg
ICB0aGlzLl9yZWZyZXNoSWRlbnRpdHlTZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hT
b3VyY2VTZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hBdHRyaWJ1dGVzU2VjdGlvbigp
OworICAgICAgICB0aGlzLl9yZWZyZXNoRXh0ZW5zaW9uc1NlY3Rpb24oKTsKICAgICAgICAgdGhp
cy5fcmVmcmVzaENTU0NhbnZhc1NlY3Rpb24oKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaEJhY2t0
cmFjZVNlY3Rpb24oKTsKICAgICB9CkBAIC0yNDQsMTEgKzI1MiwxMCBAQCBXSS5DYW52YXNEZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRz
IFdJLkRldGFpbAogCiAgICAgX3JlZnJlc2hBdHRyaWJ1dGVzU2VjdGlvbigpCiAgICAgewotICAg
ICAgICBpZiAoaXNFbXB0eU9iamVjdCh0aGlzLl9jYW52YXMuY29udGV4dEF0dHJpYnV0ZXMpKSB7
Ci0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIERhdGFHcmlkIHRvIHNob3cgdGhlIHBsYWNlaG9s
ZGVyIHRleHQuCi0gICAgICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRSb3cuZGF0YUdy
aWQgPSBudWxsOworICAgICAgICBsZXQgaGFzQXR0cmlidXRlcyA9ICFpc0VtcHR5T2JqZWN0KHRo
aXMuX2NhbnZhcy5jb250ZXh0QXR0cmlidXRlcyk7CisgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNT
ZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gIWhhc0F0dHJpYnV0ZXM7CisgICAgICAgIGlmICghaGFz
QXR0cmlidXRlcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAgIGxl
dCBkYXRhR3JpZCA9IHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdy5kYXRhR3JpZDsKICAgICAg
ICAgaWYgKCFkYXRhR3JpZCkgewpAQCAtMjY5LDYgKzI3NiwyMSBAQCBXSS5DYW52YXNEZXRhaWxz
U2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJ
LkRldGFpbAogICAgICAgICBkYXRhR3JpZC51cGRhdGVMYXlvdXRJZk5lZWRlZCgpOwogICAgIH0K
IAorICAgIF9yZWZyZXNoRXh0ZW5zaW9uc1NlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGhh
c0VuYWJsZWRFeHRlbnNpb25zID0gdGhpcy5fY2FudmFzLmV4dGVuc2lvbnMuc2l6ZSA+IDA7Cisg
ICAgICAgIHRoaXMuX2V4dGVuc2lvbnNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gIWhhc0VuYWJs
ZWRFeHRlbnNpb25zOworICAgICAgICBpZiAoIWhhc0VuYWJsZWRFeHRlbnNpb25zKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidWwiKTsKKyAgICAgICAgZm9yIChsZXQgZXh0ZW5zaW9uIG9mIHRoaXMuX2NhbnZhcy5l
eHRlbnNpb25zKSB7CisgICAgICAgICAgICBsZXQgbGlzdEVsZW1lbnQgPSBlbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIikpOworICAgICAgICAgICAgbGlzdEVs
ZW1lbnQudGV4dENvbnRlbnQgPSBleHRlbnNpb247CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
ZXh0ZW5zaW9uc1NlY3Rpb24uZ3JvdXBzID0gW3tlbGVtZW50fV07CisgICAgfQorCiAgICAgX3Jl
ZnJlc2hDU1NDYW52YXNTZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kaWRJbml0
aWFsTGF5b3V0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDZkYjMxYjJhZmQ1N2RjODU5NzI5MjQzODBlM2MyM2RhYTEyZWEz
MmIuLjM1MThmYzFhOTQzNmJmM2I5ODVkOWRmMmU2YmM1Y2I3MTFjYTQwM2MgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0xMS0wMiAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91c3Nv
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXMgVGFiOiBzaG93IHN1cHBvcnRl
ZCBHTCBleHRlbnNpb25zIGZvciBzZWxlY3RlZCBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA3MAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzUyNzgyNzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL2V4dGVuc2lvbnMuaHRtbDogQWRkZWQuCisKIDIw
MTctMTEtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBNYXJrIG1lZGlhIGxvYWRpbmcgdGVzdHMgYXMgb25seSBmbGFreSBvbiBTaWVycmEu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL2V4dGVuc2lvbnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9leHRlbnNpb25zLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNzNmYmZjM2ViZDA4MzZjYjNmMTk4ZmRmMmI0MjU1MjE1NTdk
MjI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9leHRl
bnNpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhhdCBDYW52YXNNYW5h
Z2VyIHRyYWNrcyBjYW52YXMgbWVtb3J5IGNvc3RzIGFuZCBpcyBub3RpZmllZCBvZiBjaGFuZ2Vz
LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLmV4dGVuc2lvbnMKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBDYW52YXMuZXh0ZW5zaW9ucy5lbmFibGUKK1BBU1M6IFRoZSBuZXdseSBl
bmFibGVkIGV4dGVuc2lvbiBzaG91bGQgYmUgIldFQkdMX2xvc2VfY29udGV4dCIuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9leHRlbnNpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk2
YmZjNjc3ZmEzNWZlMmY1NDg0MDhiM2JkNDZmMjRlZjFiOWRhMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy5odG1sCkBAIC0wLDAgKzEs
NTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWQoKSB7CisgICAgd2luZG93LmNvbnRleHQgPSBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp
KS5nZXRDb250ZXh0KCJ3ZWJnbCIpOworCisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiBl
bmFibGVFeHRlbnNpb24obmFtZSkgeworICAgIHdpbmRvdy5jb250ZXh0LmdldEV4dGVuc2lvbihu
YW1lKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZhcy5leHRlbnNpb25zIik7CisKKyAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDYW52YXMuZXh0ZW5zaW9ucy5lbmFibGUiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZW5hYmxpbmcgYW4gZXh0ZW5zaW9uIG5v
dGlmaWVzIHRoZSBmcm9udGVuZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgbGV0IGNhbnZhc2VzID0gV0kuY2FudmFzTWFuYWdlci5jYW52YXNlcy5maWx0
ZXIoKGNhbnZhcykgPT4gY2FudmFzLmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5
cGUuV2ViR0wpOworICAgICAgICAgICAgaWYgKCFjYW52YXNlcy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgICAgICByZWplY3QoIk1pc3NpbmcgV2ViR0wgY2FudmFzLiIpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQoY2FudmFzZXMubGVuZ3RoID09PSAxLCAiVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIFdlYkdM
IGNhbnZhcy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZhc2VzWzBd
LmV4dGVuc2lvbnMuc2l6ZSA9PT0gMCwgIlRoZSBjYW52YXMgc2hvdWxkIGhhdmUgbm8gZXh0ZW5z
aW9ucyBlbmFibGVkIGFmdGVyIGJlaW5nIGNyZWF0ZWQiKTsKKworICAgICAgICAgICAgY29uc3Qg
ZXh0ZW5zaW9uTmFtZSA9ICJXRUJHTF9sb3NlX2NvbnRleHQiOworICAgICAgICAgICAgY2FudmFz
ZXNbMF0uYXdhaXRFdmVudChXSS5DYW52YXMuRXZlbnQuRXh0ZW5zaW9uRW5hYmxlZCkudGhlbigo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGV2
ZW50LmRhdGEuZXh0ZW5zaW9uLCBleHRlbnNpb25OYW1lLCBgVGhlIG5ld2x5IGVuYWJsZWQgZXh0
ZW5zaW9uIHNob3VsZCBiZSAiJHtleHRlbnNpb25OYW1lfSIuYCk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzZXNbMF0uZXh0ZW5zaW9ucy5zaXplID09PSAxLCAi
VGhlIGNhbnZhcyBzaG91bGQgbm93IGhhdmUgb25lIGV4dGVuc2lvbi4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52YXNlc1swXS5leHRlbnNpb25zLmhhcyhldmVu
dC5kYXRhLmV4dGVuc2lvbiksIGBUaGUgb25lIGV4dGVuc2lvbiBzaG91bGQgYmUgIiR7ZXh0ZW5z
aW9uTmFtZX0iLmApOworICAgICAgICAgICAgfSkudGhlbihyZXNvbHZlLCByZWplY3QpOworCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBlbmFibGVFeHRlbnNpb24o
IiR7ZXh0ZW5zaW9uTmFtZX0iKWApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJsb2FkKCkiPgorICAgIDxwPlRlc3QgdGhhdCBDYW52YXNNYW5hZ2VyIHRyYWNrcyBjYW52
YXMgbWVtb3J5IGNvc3RzIGFuZCBpcyBub3RpZmllZCBvZiBjaGFuZ2VzLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>325703</attachid>
            <date>2017-11-02 03:43:11 -0700</date>
            <delta_ts>2017-11-02 03:43:11 -0700</delta_ts>
            <desc>[Image] After Patch is applied</desc>
            <filename>Screen Shot 2017-11-02 at 03.37.00.png</filename>
            <type>image/png</type>
            <size>22992</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAR4AAAEWCAYAAACwmvi7AAAKs2lDQ1BJQ0MgUHJvZmlsZQAASImV
lgdUU2kWx7/30hstEAEpofcuEEB6Db03C4QESCgxJgQUuzI4gmNBRASUARkUULBRZFARCxYGAQv2
CTKoqOtgQVRU9gFL2Nk9u3v2/85993duvne/e1/ed84FgPwHSyDIgOUAyORnCcN9PeixcfF03BDA
AyqQRS4tFlskcA8NDQSI5vxf9fEugKb9LbPpXP/++3+VPCdZxAYACkU4iSNiZyJ8GrHrbIEwCwDU
RiSuk5MlmOYahBWFSIEIt01z6iz3THPSLEtm1kSGeyL8AQA8mcUSpgJAnt6Lns1ORfKQ6Qhb8jk8
PsLT+7qwuSwOwrsQNs3MXDHNHQgbJv1TntS/5EyS5mSxUqU828uM8F48kSCDtfr/fB3/W5kZ4rk9
dBAjc4V+4YinTb+39BUBUuYnBYfMMY8zs36GuWK/qDlmizzj55jD8gqYY3F6lPscs4Tzz+ZyI2Pm
WLgiXJqfnxEcKM2fzJRyssg7Yo5TeD5MaT1ZzMg5zuZFB8+xKD0iYH4vT2lcKA6X1pwpmq8nRegj
7ZfLY0rXZ3Ej/aQ9suZrSBbFSmvjJHt5S+P8KOkaQZaHNKcgI3S+lwxfaVyUHSF9Ngv52OY4jeUf
Op8nVNoj8ALeIBC56CAUWAMbYIXckQqzkldlTTfjuUKwWshL5WbR3ZETlExn8tnmpnRrSyt7AKbP
4+zf/f7ezDmDaPj5mOAsAM4JSPDifCzhKQCn6wGQOTMf02cAQJkAoOsEWyzMno2hp28YQEROuSJQ
ARrI92QIzJDK7IATcEMq9gchIBLEgeWADbggEwhBDlgLNoF8UAh2gb2gDFSCQ+AIOAZOglbQAS6A
K+AG6AN3wEMgASPgFRgDH8EkBEE4iAJRIRVIE9KDTCBriAG5QN5QIBQOxUGJUCrEh8TQWmgLVAgV
QWVQFVQHnYDOQBega1A/dB8agkahd9AXGAWTYUVYHdaHLWAG7A4HwJHwMjgVXgnnwnnwDrgUroaP
wi3wBfgGfAeWwK/gcRRAkVA0lBbKDMVAeaJCUPGoFJQQtR5VgCpBVaMaUe2obtQtlAT1GvUZjUVT
0XS0GdoJ7YeOQrPRK9Hr0dvRZegj6Bb0JfQt9BB6DP0dQ8GoYUwwjhgmJhaTisnB5GNKMLWYZsxl
zB3MCOYjFoulYQ2w9lg/bBw2DbsGux17ANuE7cT2Y4ex4zgcTgVngnPGheBYuCxcPm4/7ijuPG4A
N4L7hCfhNfHWeB98PJ6P34wvwdfjz+EH8M/xkwQ5gh7BkRBC4BBWE3YSagjthJuEEcIkUZ5oQHQm
RhLTiJuIpcRG4mXiI+J7EomkTXIghZF4pI2kUtJx0lXSEOkzWYFsTPYkLyWLyTvIh8md5Pvk9xQK
RZ/iRomnZFF2UOooFylPKJ9kqDLmMkwZjswGmXKZFpkBmTeyBFk9WXfZ5bK5siWyp2Rvyr6WI8jp
y3nKseTWy5XLnZEblBuXp8pbyYfIZ8pvl6+Xvyb/QgGnoK/grcBRyFM4pHBRYZiKoupQPals6hZq
DfUydUQRq2igyFRMUyxUPKbYqzimpKC0SClaaZVSudJZJQkNRdOnMWkZtJ20k7S7tC8L1Be4L0he
sG1B44KBBRPKC5XdlJOVC5SblO8of1Ghq3irpKvsVmlVeayKVjVWDVPNUT2oeln19ULFhU4L2QsL
Fp5c+EANVjNWC1dbo3ZIrUdtXF1D3VddoL5f/aL6aw2ahptGmkaxxjmNUU2qposmT7NY87zmS7oS
3Z2eQS+lX6KPaalp+WmJtaq0erUmtQ20o7Q3azdpP9Yh6jB0UnSKdbp0xnQ1dYN01+o26D7QI+gx
9Lh6+/S69Sb0DfRj9Lfqt+q/MFA2YBrkGjQYPDKkGLoarjSsNrxthDViGKUbHTDqM4aNbY25xuXG
N01gEzsTnskBk35TjKmDKd+02nTQjGzmbpZt1mA2ZE4zDzTfbN5q/sZC1yLeYrdFt8V3S1vLDMsa
y4dWClb+Vput2q3eWRtbs63LrW/bUGx8bDbYtNm8XWSyKHnRwUX3bKm2QbZbbbtsv9nZ2wntGu1G
7XXtE+0r7AcZioxQxnbGVQeMg4fDBocOh8+Odo5Zjicd/3Qyc0p3qnd6sdhgcfLimsXDztrOLOcq
Z4kL3SXR5WcXiauWK8u12vWpm44bx63W7bm7kXua+1H3Nx6WHkKPZo8JT0fPdZ6dXigvX68Cr15v
Be8o7zLvJz7aPqk+DT5jvra+a3w7/TB+AX67/QaZ6kw2s4455m/vv87/UgA5ICKgLOBpoHGgMLA9
CA7yD9oT9ChYL5gf3BoCQpghe0IehxqErgz9NQwbFhpWHvYs3Cp8bXh3BDUiIaI+4mOkR+TOyIdR
hlHiqK5o2eil0XXREzFeMUUxkliL2HWxN+JU43hxbfG4+Oj42vjxJd5L9i4ZWWq7NH/p3WUGy1Yt
u7ZcdXnG8rMJsgmshFOJmMSYxPrEr6wQVjVrPImZVJE0xvZk72O/4rhxijmjyc7JRcnPU5xTilJe
pDqn7kkd5bpyS7iveZ68Mt7bNL+0yrSJ9JD0w+lTGTEZTZn4zMTMM3wFfjr/0gqNFatW9AtMBPkC
yUrHlXtXjgkDhLUiSLRM1JaliAw+PWJD8Q/ioWyX7PLsTznROadWya/ir+pZbbx62+rnuT65v6xB
r2Gv6VqrtXbT2qF17uuq1kPrk9Z3bdDZkLdhZKPvxiObiJvSN/222XJz0eYPW2K2tOep523MG/7B
94eGfJl8Yf7gVqetlT+if+T92LvNZtv+bd8LOAXXCy0LSwq/bmdvv/6T1U+lP03tSNnRu9Nu58Fd
2F38XXd3u+4+UiRflFs0vCdoT0sxvbig+MPehL3XShaVVO4j7hPvk5QGlrbt192/a//XMm7ZnXKP
8qYKtYptFRMHOAcGDrodbKxUryys/PIz7+d7Vb5VLdX61SWHsIeyDz2ria7p/oXxS12tam1h7bfD
/MOSI+FHLtXZ19XVq9XvbIAbxA2jR5ce7Tvmdayt0ayxqonWVHgcHBcff3ki8cTdkwEnu04xTjWe
1jtd0UxtLmiBWla3jLVyWyVtcW39Z/zPdLU7tTf/av7r4Q6tjvKzSmd3niOeyzs3dT73/HinoPP1
hdQLw10JXQ8vxl68fSnsUu/lgMtXr/hcudjt3n3+qvPVjmuO185cZ1xvvWF3o6XHtqf5N9vfmnvt
eltu2t9s63Poa+9f3H9uwHXgwi2vW1duM2/fuBN8p/9u1N17g0sHJfc4917cz7j/9kH2g8mHGx9h
HhU8lntc8kTtSfXvRr83SewkZ4e8hnqeRjx9OMwefvWH6I+vI3nPKM9Knms+r3th/aJj1Ge07+WS
lyOvBK8mX+f/Tf5vFW8M35z+0+3PnrHYsZG3wrdT77a/V3l/+MOiD13joeNPPmZ+nJwo+KTy6chn
xufuLzFfnk/mfMV9Lf1m9K39e8D3R1OZU1MClpA1MwqgEINTUgB4dxiZE+IAoPYBQFwyOy/PCJqd
8WcI/CeenalnZAdA9UYA4joBCEF8lRsygyBGQTgU8ZFuALaxkdo/JEqxsZ7NRWpFRpOSqan3yLyJ
MwLg2+DU1GTr1NS3WqTYBwB0fpyd06cldxQAtxxPa5+gGwcCwL/q7xraCWVIXaxlAAABnWlUWHRY
TUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIg
eDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0
aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUu
Y29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yODY8L2V4aWY6
UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+Mjc4PC9leGlm
OlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4K
PC94OnhtcG1ldGE+CsvmJhkAAEAASURBVHgB7b0JXFRHtj/+9f1AWmkQcIlr3CZERdxQHxowuIyO
6ENJ3MblRUcjMjEocaLIKCHquDBPQ4yORGPUSIgsCjIIasQFXIiKURGiRHCHRBAUWmyk/+P/3Nvd
0GA3gtJ0057i09331q06dc731P3eqmr6VKOcnJxn4KQXBFJTU/HOO+/oRTYLZQQaMgL/1ZCVZ90Z
AUagYSLAxNMw/cZaMwINGgEmngbtPlaeEWiYCDDxNEy/lWutUJSiVKEoP3+Vg0fXjmDbtr3IeqSA
4tEtJCUcwc+3Hr2KSK7LCGhFgIlHKyz6z/zPf/6DF71epIXi9yOY5uEJTw8PxGaVVhQvvYe9mzZh
7+l75Xn3zu3F+k17cUujWPlF1cGdpG2Ijt6Ok3eIzO4cx9qvNmDt4eyqxV54XpO2XiiEC5g0AmYm
bZ2RGvfs2TMkJCTg999/16nhG2+8AXd3dzRq1EhnmayTh1Gsurr/aAY8uvZVnv0/GY7Fx+OJ1R/x
/mBllvzXY0iMf4JR897XKa/n//4LXwyRo+vblii9Zi6Wa2nZVGd5XRdq0pauupz/eiDAIx4D+Fkg
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
ASbo8JaQj3hfAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325785</attachid>
            <date>2017-11-02 15:49:14 -0700</date>
            <delta_ts>2017-11-02 18:10:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179070-20171102154913.patch</filename>
            <type>text/plain</type>
            <size>46936</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk2OGY1YzIyM2NlNTljMGQyYmI5MWM1Y2Y4NDNh
MDljODJjNGQyMjMuLmJiMDEyN2UyNTMyMTk0NGM0MzM5MWU1NGY2ZDNjNGFlMjVjYjQyNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTExLTAyICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENhbnZhcyBUYWI6IHNob3cgc3VwcG9ydGVkIEdMIGV4dGVuc2lvbnMgZm9yIHNlbGVjdGVk
IGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI3ODI3Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZh
cy5qc29uOgorICAgICAgICBBZGQgYGV4dGVuc2lvbkVuYWJsZWRgIGV2ZW50IHRoYXQgaXMgZmly
ZWQgZWFjaCB0aW1lIGBnZXRFeHRlbnNpb25gIGlzIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgZGlm
ZmVyZW50IHN0cmluZyBvbiBhIFdlYkdMIGNvbnRleHQuCisKIDIwMTctMTEtMDIgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnNwZWN0b3Igc2hvdWxk
IGRpc3BsYXkgc2VydmljZSB3b3JrZXIgc2VydmVkIHJlc3BvbnNlcyBwcm9wZXJseQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDZiZWNmNWIyNWI4OTc1OTliMjdkYWM1ZjIzOTYzNzk5YzBhN2E5ZTUuLjYxZmNhNDcw
ZjA1OGYzYjdkOGU1YTdkYzQ0NTJmZWNmMzY2NzY1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NCBAQAorMjAxNy0xMS0wMiAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91c3NvLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXMgVGFiOiBzaG93IHN1cHBvcnRlZCBHTCBl
eHRlbnNpb25zIGZvciBzZWxlY3RlZCBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUy
NzgyNzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICBUZXN0
OiBpbnNwZWN0b3IvY2FudmFzL2V4dGVuc2lvbnMuaHRtbAorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIFJld29yayBjb21tb24gbG9naWMgaW50
byBhIG1hY3JvIGZvciByZWFkYWJpbGl0eSBhbmQgdG8gc2ltcGxpZnkgYWRkaW5nIGNhbGxzIHRv
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBmdW5jdGlvbnMuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpleHRlbnNpb25Jc0VuYWJsZWQpOgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OmRpZEVuYWJsZUV4dGVuc2lvbik6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbkltcGwpOgorCiAyMDE3LTExLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1bXAgdGhlIHNp
emUgb2YgU2FtZUFzUmVuZGVyRWxlbWVudCBhZnRlciByMjI0MzI0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZwppbmRleCA0NjhlMzdiN2ViNDU2MmFkNGJmMGJiNTU4YzgyZTYzZTdmMjZhNjE5Li5kYjEw
Y2RlMjAxNTI1YmNhMGJkMTcyYTAwNjNiYjZmNzkzZWQ5YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNy0xMS0wMiAgRGV2aW4gUm91c3NvICA8d2Via2l0
QGRldmlucm91c3NvLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXMgVGFiOiBz
aG93IHN1cHBvcnRlZCBHTCBleHRlbnNpb25zIGZvciBzZWxlY3RlZCBjYW52YXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA3MAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzUyNzgyNzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVy
Zy4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
czoKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ2FudmFzT2JzZXJ2ZXIuanM6
CisgICAgICAgIChXSS5DYW52YXNPYnNlcnZlci5wcm90b3R5cGUuZXh0ZW5zaW9uRW5hYmxlZCk6
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanM6
CisgICAgICAgIChXSS5DYW52YXNNYW5hZ2VyLnByb3RvdHlwZS5leHRlbnNpb25FbmFibGVkKToK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qczoKKyAgICAgICAgKFdJ
LkNhbnZhcy5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbnMpOgorICAgICAgICAoV0kuQ2FudmFzLnBy
b3RvdHlwZS5lbmFibGVFeHRlbnNpb24pOgorICAgICAgICBNYWludGFpbiBhIFNldCBvZiBlbmFi
bGVkIGV4dGVuc2lvbnMsIGFuZCBkaXNwYXRjaCBhbiBldmVudCB3aGVuZXZlciBhbiBleHRlbnNp
b24gaXMgZW5hYmxlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0
YWlsc1NpZGViYXJQYW5lbC5jc3M6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxz
LmNhbnZhcyAuZGV0YWlscy1zZWN0aW9uLmNhbnZhcy1leHRlbnNpb25zIC5jb250ZW50ID4gdWwp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5l
bC5qczoKKyAgICAgICAgKFdJLkNhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNl
dCBjYW52YXMpOgorICAgICAgICAoV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUuaW5pdGlhbExheW91dCk6CisgICAgICAgIChXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUuX3JlZnJlc2hBdHRyaWJ1dGVzU2VjdGlvbik6CisgICAgICAgIChXSS5DYW52
YXNEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcmVmcmVzaEV4dGVuc2lvbnNTZWN0aW9u
KToKKyAgICAgICAgRHJpdmUtYnk6IGhpZGUgQXR0cmlidXRlcyBzZWN0aW9uIHdoZW4gdGhlIGNh
bnZhcyBoYXMgbm8gYXR0cmlidXRlcy4KKwogMjAxNy0xMS0wMiAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIEluc3BlY3RvciBzaG91bGQgZGlzcGxheSBz
ZXJ2aWNlIHdvcmtlciBzZXJ2ZWQgcmVzcG9uc2VzIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbgppbmRleCBlNmE5
MmU5NmFmNzgwODkwODY2Y2YyMTlmNTFkNGUxMWU0ODUwMjBjLi41YjczOTEwZmFlMTliMmY3NWU0
YzhiY2E0YjEzNjlhNDYxOGU3YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KQEAgLTE3MSw2ICsxNzEsMTMgQEAKICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
ZXh0ZW5zaW9uRW5hYmxlZCIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQiIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJleHRlbnNpb24iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiTmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRoYXQgd2FzIGVuYWJsZWQuIiB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
ImNzc0NhbnZhc0NsaWVudE5vZGVzQ2hhbmdlZCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFz
SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiBjYW52YXMgdGhhdCBjaGFuZ2VkLiIg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCBlMjM5ZmU0ZDcxZDI0Y2I1ZGE3MDllYmQwYzY3ZDI3MjZmZDU1MDE5
Li5jYjhhZjNkNjQ3NDk1Mjc4ZDNhZjA4YTFjN2VlYzdiYzk5YjI3NzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0Lmgi
CiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0TGluZWFyLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVy
ZUhhbGZGbG9hdC5oIgpAQCAtMTA4MCw4NyArMTA4MSwyOSBAQCBXZWJHTEV4dGVuc2lvbiogV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRf
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKLSAgICAgICAgaWYgKCFtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewotICAgICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPEVY
VFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7Ci0gICAg
fQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9h
dCIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxvYXQpIHsKLSAgICAgICAgICAgIG1f
b2VzVGV4dHVyZUZsb2F0ID0gZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVG
bG9hdD4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNU
ZXh0dXJlRmxvYXQuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgewotICAgICAgICBpZiAoIW1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVh
ciA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFy
IikKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGlu
ZWFyPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1Rl
eHR1cmVGbG9hdExpbmVhci5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgewotICAgICAgICBpZiAoIW1f
b2VzVGV4dHVyZUhhbGZGbG9hdCkgewotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
ID0gZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikK
LSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdD4o
KnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJl
SGFsZkZsb2F0LmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgewotICAgICAgICBpZiAoIW1f
b2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFs
ZkZsb2F0TGluZWFyID0gZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhci5nZXQoKTsKLSAgICB9Ci0g
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2xvc2VfY29udGV4dCIp
KSB7Ci0gICAgICAgIGlmICghbV93ZWJnbExvc2VDb250ZXh0KQotICAgICAgICAgICAgbV93ZWJn
bExvc2VDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0PigqdGhpcyk7
Ci0gICAgICAgIHJldHVybiBtX3dlYmdsTG9zZUNvbnRleHQuZ2V0KCk7Ci0gICAgfQotICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX2F0YyIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRD
KSB7Ci0gICAgICAgICAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KCp0aGlzKSkKLSAgICAgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM+KCp0aGlzKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLmdldCgpOwot
ICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEMpIHsKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpCi0g
ICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQz4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpKSB7Ci0g
ICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQykgewotICAgICAgICAgICAg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
OjpzdXBwb3J0ZWQoKnRoaXMpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOwotICAgIH0K
LSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZGVwdGhfdGV4dHVy
ZSIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgewotICAgICAgICAgICAg
bV93ZWJnbERlcHRoVGV4dHVyZSA9IFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBo
aWNzQ29udGV4dDNEKCkpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
RGVwdGhUZXh0dXJlPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpKSB7Ci0gICAgICAg
IGlmICghbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQotICAgICAgICAgICAgbV93ZWJnbERlYnVn
UmVuZGVyZXJJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigq
dGhpcyk7Ci0gICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7Ci0g
ICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19z
aGFkZXJzIikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKSB7Ci0gICAgICAg
ICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoQVNDSUlMaXRlcmFsIHsgIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIg
fSkKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+
KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1
Z1NoYWRlcnMuZ2V0KCk7Ci0gICAgfQotCisjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlw
ZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKKyAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAorICAgICAgICBpZiAoIXZhcmlh
YmxlKSB7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIGlmICh2YXJpYWJs
ZSAhPSBudWxscHRyKSBcCisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCisgICAgICAgIH0gXAorICAgICAg
ICByZXR1cm4gdmFyaWFibGUuZ2V0KCk7IFwKKyAgICB9CisKKyAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKTsKKyAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMsICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQs
ICJPRVNfdGV4dHVyZV9mbG9hdCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRM
aW5lYXIsIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFy
IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlSGFsZkZsb2F0LCBtX29lc1Rl
eHR1cmVIYWxmRmxvYXQsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VC
R0xfbG9zZV9jb250ZXh0IiwgdHJ1ZSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRf
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6
OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQktJVF9X
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEM6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVwdGhUZXh0dXJl
LCBtX3dlYmdsRGVwdGhUZXh0dXJlLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIsIFdlYkdMRGVwdGhU
ZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNzQ29udGV4dDNEKCkpKTsKKyAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKFdlYkdMRGVidWdSZW5kZXJlckluZm8sIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5m
bywgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iLCB0cnVlKTsKKyAgICBFTkFCTEVfSUZfUkVR
VUVTVEVEKFdlYkdMRGVidWdTaGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAiV0VCR0xfZGVi
dWdfc2hhZGVycyIsIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKEFTQ0lJTGl0
ZXJhbCB7ICJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiIH0pKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNzg4MTg5YTIzNDhhMjAyNTY3MWZhOWU3MjM2
ZGM4OWVlM2M4ZTU1OS4uNTU4MDExODEwMjE2MDJhODE5OWVkMWIxOTBkZWQzNGVjMTVhNTg4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJPRVNFbGVt
ZW50SW5kZXhVaW50LmgiCiAjaW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2lu
Y2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgpAQCAtODksMjggKzkwLDIwIEBAIFdlYkdMRXh0ZW5z
aW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVY
VF9ibGVuZF9taW5tYXgiKSkgewotICAgICAgICBpZiAoIW1fZXh0QmxlbmRNaW5NYXgpIHsKLSAg
ICAgICAgICAgIG1fZXh0QmxlbmRNaW5NYXggPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdM
X0VYVF9ibGVuZF9taW5tYXgiKQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxF
WFRCbGVuZE1pbk1heD4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gbV9leHRCbGVuZE1pbk1heC5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgIkVYVF9zUkdCIikpIHsKLSAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsK
LSAgICAgICAgICAgIG1fZXh0c1JHQiA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhU
X3NSR0IiKQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxFWFRzUkdCPigqdGhp
cykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2V4dHNSR0IuZ2V0KCk7
Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfZnJhZ19k
ZXB0aCIpKSB7Ci0gICAgICAgIGlmICghbV9leHRGcmFnRGVwdGgpIHsKLSAgICAgICAgICAgIG1f
ZXh0RnJhZ0RlcHRoID0gZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfZnJhZ19kZXB0
aCIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPEVYVEZyYWdEZXB0aD4oKnRo
aXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9leHRGcmFnRGVwdGgu
Z2V0KCk7CisKKyNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFt
ZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAorICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsIG5hbWVMaXRlcmFsKSkgeyBcCisgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAorICAgICAg
ICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRo
aXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVu
c2lvbigqdGhpcywgbmFtZSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHJldHVybiB2YXJpYWJs
ZS5nZXQoKTsgXAogICAgIH0KKworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQmxlbmRNaW5N
YXgsIG1fZXh0QmxlbmRNaW5NYXgsICJFWFRfYmxlbmRfbWlubWF4IiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUc1JHQiwgbV9leHRzUkdCLCAiRVhUX3NSR0IiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNp
b24oIkdMX0VYVF9zUkdCIikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhURnJhZ0RlcHRo
LCBtX2V4dEZyYWdEZXB0aCwgIkVYVF9mcmFnX2RlcHRoIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfZnJhZ19kZXB0aCIpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpKSB7CiAgICAgICAgIGlmICghbV9leHRT
aGFkZXJUZXh0dXJlTE9EKSB7CiAgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cyhBU0NJSUxpdGVyYWwgeyAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCIgfSkgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoQVNDSUlMaXRlcmFs
IHsgIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiIH0pKSkKQEAgLTExOCw5OSArMTExLDI1IEBA
IFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKEFTQ0lJTGl0ZXJhbCB7ICJHTF9F
WFRfc2hhZGVyX3RleHR1cmVfbG9kIiB9KTsKICAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRl
eHR1cmVMT0QgPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVu
c2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fZXh0U2hhZGVyVGV4dHVyZUxPRC5nZXQoKTsKICAgICB9Ci0gICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpIHx8
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiKSkgewotICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKSB7Ci0gICAgICAgICAgICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikK
LSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2V4
dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKSB7Ci0gICAg
ICAgIGlmICghbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzKSB7Ci0gICAgICAgICAgICBtX29lc1N0
YW5kYXJkRGVyaXZhdGl2ZXMgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19zdGFu
ZGFyZF9kZXJpdmF0aXZlcyIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1N0YW5kYXJkRGVyaXZhdGl2ZXM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcy5nZXQoKTsKLSAgICB9Ci0gICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0IikpIHsKLSAg
ICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkgewotICAgICAgICAgICAgbV9vZXNUZXh0dXJl
RmxvYXQgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0IikK
LSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0PigqdGhp
cykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9h
dC5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9F
U190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIpIHsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0gZW5hYmxl
U3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKQotICAgICAg
ICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXRMaW5lYXI+KCp0aGlz
KSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0
TGluZWFyLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNUZXh0dXJl
SGFsZkZsb2F0KSB7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXQgPSBlbmFibGVT
dXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQotICAgICAgICAg
ICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0PigqdGhpcykgOiBu
dWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXQu
Z2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNUZXh0dXJl
SGFsZkZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyIikKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhh
bGZGbG9hdExpbmVhcj4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkgewot
ICAgICAgICBpZiAoIW1fb2VzVmVydGV4QXJyYXlPYmplY3QpIHsKLSAgICAgICAgICAgIG1fb2Vz
VmVydGV4QXJyYXlPYmplY3QgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU192ZXJ0
ZXhfYXJyYXlfb2JqZWN0IikKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VT
VmVydGV4QXJyYXlPYmplY3Q+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG1fb2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikpIHsKLSAg
ICAgICAgaWYgKCFtX29lc0VsZW1lbnRJbmRleFVpbnQpIHsKLSAgICAgICAgICAgIG1fb2VzRWxl
bWVudEluZGV4VWludCA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCIpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1l
bnRJbmRleFVpbnQ+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1fb2VzRWxlbWVudEluZGV4VWludC5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2xvc2VfY29udGV4dCIpKSB7Ci0gICAgICAgIGlmICgh
bV93ZWJnbExvc2VDb250ZXh0KQotICAgICAgICAgICAgbV93ZWJnbExvc2VDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0PigqdGhpcyk7Ci0gICAgICAgIHJldHVybiBt
X3dlYmdsTG9zZUNvbnRleHQuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpKSB7Ci0g
ICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDKSB7Ci0gICAgICAgICAgICBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKnRoaXMpCi0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQy5nZXQoKTsKLSAgICB9Ci0gICAg
aWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfcHZydGMiKSkgewotICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDKSB7Ci0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQyA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKQotICAgICAgICAgICAg
ICAgID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+KCp0aGlz
KSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSkgewotICAgICAgICBpZiAo
IW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMpIHsKLSAgICAgICAgICAgIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVk
KCp0aGlzKQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQz4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKSkgewotICAg
ICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fd2ViZ2xEZXB0
aFRleHR1cmUgPSBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKCptX2NvbnRleHQpCi0gICAg
ICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPigqdGhpcykg
OiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJl
LmdldCgpOwotICAgIH0KKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJX
RUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0
ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSk7CisgICAgRU5BQkxF
X0lGX1JFUVVFU1RFRChPRVNTdGFuZGFyZERlcml2YXRpdmVzLCBtX29lc1N0YW5kYXJkRGVyaXZh
dGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNp
b24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNfdGV4dHVyZV9mbG9h
dCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2VzVGV4dHVy
ZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSk7CisgICAgRU5BQkxFX0lG
X1JFUVVFU1RFRChPRVNUZXh0dXJlSGFsZkZsb2F0LCBtX29lc1RleHR1cmVIYWxmRmxvYXQsICJP
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0IikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCAiT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VT
VmVydGV4QXJyYXlPYmplY3QsIG1fb2VzVmVydGV4QXJyYXlPYmplY3QsICJPRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJh
eV9vYmplY3QiKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNFbGVtZW50SW5kZXhVaW50
LCBtX29lc0VsZW1lbnRJbmRleFVpbnQsICJPRVNfZWxlbWVudF9pbmRleF91aW50IiwgZW5hYmxl
U3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAi
V0VCR0xfbG9zZV9jb250ZXh0IiwgdHJ1ZSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEM6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQktJ
VF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpz
dXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVwdGhUZXh0
dXJlLCBtX3dlYmdsRGVwdGhUZXh0dXJlLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIsIFdlYkdMRGVw
dGhUZXh0dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kcmF3X2J1ZmZlcnMiKSkgewogICAgICAgICBpZiAoIW1f
d2ViZ2xEcmF3QnVmZmVycykgewogICAgICAgICAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJz
KCkpCkBAIC0yMTgsNiArMTM3LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoQVNDSUlMaXRlcmFsIHsgIkdMX0VYVF9kcmF3X2J1ZmZlcnMiIH0pOwogICAgICAgICAgICAg
ICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVy
cz4oKnRoaXMpOworICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gbV93ZWJnbERyYXdCdWZmZXJzLmdldCgpOwpAQCAtMjI5LDIzICsxNDks
MTMgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoQVNDSUlMaXRlcmFsIHsg
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiIH0pOwogICAgICAgICAgICAgICAgIG1fYW5nbGVJ
bnN0YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigq
dGhpcyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFi
bGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzLmdldCgpOwogICAgIH0KLSAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIp
KSB7Ci0gICAgICAgIGlmICghbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQotICAgICAgICAgICAg
bV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvPigqdGhpcyk7Ci0gICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdSZW5kZXJlcklu
Zm8uZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJX
RUJHTF9kZWJ1Z19zaGFkZXJzIikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJz
KSB7Ci0gICAgICAgICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoQVNDSUlMaXRlcmFsIHsgIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hh
ZGVyX3NvdXJjZSIgfSkKLSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xE
ZWJ1Z1NoYWRlcnM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7Ci0gICAgfQotCisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJX
RUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTERlYnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3No
YWRlcnMiLCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cyhBU0NJSUxpdGVyYWwg
eyAiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIiB9KSk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMjRkN2IyMTg0MWE3MmYyYjI4ZjA0YmRl
MzNhNWM2ZThjNTczNjI4OS4uY2YyYjM3MmY1YzkyNDU1ZGYwMzQ1Y2Q5ZmM0ZTI2YTRmNjBhOGVk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTI3NDAsNiArMjc0MCwzNyBAQCBsb25nIGxvbmcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGlu
ZGV4LCBHQzNEZQogICAgIHJldHVybiBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChp
bmRleCwgcG5hbWUpOwogfQogCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmV4dGVu
c2lvbklzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisjZGVmaW5lIENIRUNLX0VYVEVO
U0lPTih2YXJpYWJsZSwgbmFtZUxpdGVyYWwpIFwKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIFwKKyAgICAgICAgcmV0dXJuIHZhcmlhYmxlICE9IG51
bGxwdHI7CisKKyAgICBDSEVDS19FWFRFTlNJT04obV9leHRGcmFnRGVwdGgsICJFWFRfZnJhZ19k
ZXB0aCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dEJsZW5kTWluTWF4LCAiRVhUX2JsZW5k
X21pbm1heCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dHNSR0IsICJFWFRfc1JHQiIpOwor
ICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgIkVYVF90
ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJlTE9ELCAiRVhU
X3NoYWRlcl90ZXh0dXJlX2xvZCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX29lc1RleHR1cmVG
bG9hdCwgIk9FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fb2VzVGV4
dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7CisgICAgQ0hFQ0tf
RVhURU5TSU9OKG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQi
KTsKKyAgICBDSEVDS19FWFRFTlNJT04obV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCAiT0VT
X3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV9vZXNT
dGFuZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7CisgICAgQ0hF
Q0tfRVhURU5TSU9OKG1fb2VzVmVydGV4QXJyYXlPYmplY3QsICJPRVNfdmVydGV4X2FycmF5X29i
amVjdCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX29lc0VsZW1lbnRJbmRleFVpbnQsICJPRVNf
ZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fd2ViZ2xMb3NlQ29u
dGV4dCwgIldFQkdMX2xvc2VfY29udGV4dCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX3dlYmds
RGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7CisgICAgQ0hF
Q0tfRVhURU5TSU9OKG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIik7
CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQywgIldFQktJ
VF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1f
d2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9wdnJ0YyIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX3dlYmdsQ29tcHJlc3NlZFRleHR1
cmVTM1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBDSEVDS19FWFRF
TlNJT04obV93ZWJnbERlcHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKTsKKyAgICBD
SEVDS19FWFRFTlNJT04obV93ZWJnbERyYXdCdWZmZXJzLCAiV0VCR0xfZHJhd19idWZmZXJzIik7
CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fYW5nbGVJbnN0YW5jZWRBcnJheXMsICJBTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBHQzNEYm9vbGVhbiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0J1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQogewog
ICAgIGlmICghYnVmZmVyIHx8IGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApp
bmRleCBmODVjNTliZjEyYzdmMDdhYWQzZjM5NGI0ZTY0YzMzMzYwNjQwYzA4Li45YTY1NjA0ZjFk
MDNhNmY1MTUyMTk2NzUyNmZlMjljZGNhNDVlNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0yMTAsNiAr
MjEwLDggQEAgcHVibGljOgogICAgIFdlYkdMQW55IGdldFZlcnRleEF0dHJpYihHQzNEdWludCBp
bmRleCwgR0MzRGVudW0gcG5hbWUpOwogICAgIGxvbmcgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lKTsKIAorICAgIGJvb2wgZXh0ZW5zaW9u
SXNFbmFibGVkKGNvbnN0IFN0cmluZyYpOworCiAgICAgYm9vbCBpc1ByZXNlcnZpbmdEcmF3aW5n
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
cjsgfQogICAgIHZvaWQgc2V0UHJlc2VydmVEcmF3aW5nQnVmZmVyKGJvb2wgdmFsdWUpIHsgbV9h
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHZhbHVlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5k
ZXggMzIxY2VhYjVlY2RkMjY4YWY1ZjUwMmFiMjhhNjQwM2YxNTE3ZmEzNS4uNjk3NDIyMDZlNmUz
MWFhNDdlODI3OGY5MDAzODY2MDg5M2Y2ZWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTEwMTMsNiArMTAx
MywxMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3JkaW5n
Q2FudmFzRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbkltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgaWYgKElu
c3BlY3RvckNhbnZhc0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAgICAgICAgY2FudmFzQWdlbnQtPmRpZEVuYWJsZUV4dGVu
c2lvbihjb250ZXh0LCBleHRlbnNpb24pOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlUHJvZ3JhbUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgV2ViR0xQcm9n
cmFtJiBwcm9ncmFtKQogewogICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggYzYzNmNmYzY2ZGU4ODA4ZWYwYjE4ZTJkMzRlY2M5NTdmNmMyNTJlYi4uNTM1MDQ4NTQ4YTRl
NzE5N2I5MzQzYzBiZDkxNTNkZTUwMWEwOWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMjUwLDggKzI1MCw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VDYW52YXNNZW1vcnkoSFRNTENhbnZh
c0VsZW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCByZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb25W
YXJpYW50PiYmID0geyB9KTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hSZWNvcmRpbmdDYW52
YXNGcmFtZShIVE1MQ2FudmFzRWxlbWVudCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNlKTsK
LQogI2lmIEVOQUJMRShXRUJHTCkKKyAgICBzdGF0aWMgdm9pZCBkaWRFbmFibGVFeHRlbnNpb24o
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZENyZWF0ZVByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJv
Z3JhbSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEZWxldGVQcm9ncmFtKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICAgICBzdGF0aWMgYm9vbCBpc1NoYWRlclBy
b2dyYW1EaXNhYmxlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7
CkBAIC00MjMsNiArNDIzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZWNvcmRDYW52
YXNBY3Rpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7
IH0pOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgSFRNTENhbnZhc0VsZW1lbnQmLCBib29sIGZvcmNlRGlzcGF0
Y2ggPSBmYWxzZSk7CiAjaWYgRU5BQkxFKFdFQkdMKQorICAgIHN0YXRpYyB2b2lkIGRpZEVuYWJs
ZUV4dGVuc2lvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVQcm9ncmFt
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdl
YkdMUHJvZ3JhbSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEZWxldGVQcm9ncmFtSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgV2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNTaGFk
ZXJQcm9ncmFtRGlzYWJsZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHTFByb2dyYW0m
KTsKQEAgLTEyMDIsNiArMTIwMywxMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKEhUTUxDYW52YXNFbAogfQogCiAj
aWYgRU5BQkxFKFdFQkdMKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRFbmFibGVFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoY29udGV4dC5jYW52YXMoKS5kb2N1
bWVudCgpKSkKKyAgICAgICAgZGlkRW5hYmxlRXh0ZW5zaW9uSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29udGV4dCwgZXh0ZW5zaW9uKTsKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQsIFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1
bWVudChjb250ZXh0LmNhbnZhcygpLmRvY3VtZW50KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBj
M2Q2N2QyYzQwMGI1MmVkNjdkNmRkNmRlMmEyMzZmNjNkYWQyNjEwLi4wZTJhOTJkMjU2ODRmNjdm
NTBjZjdjYTEzNTdlMzhjNDdmNjBiZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtOTUsMTAgKzk1
LDI0IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAg
ICAgbV9lbmFibGVkID0gdHJ1ZTsKIAogICAgIGNvbnN0IGJvb2wgY2FwdHVyZUJhY2t0cmFjZSA9
IGZhbHNlOwotICAgIGZvciAoYXV0byYgaW5zcGVjdG9yQ2FudmFzIDogbV9pZGVudGlmaWVyVG9J
bnNwZWN0b3JDYW52YXMudmFsdWVzKCkpCisgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JDYW52YXMg
OiBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewogICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+Y2FudmFzQWRkZWQoaW5zcGVjdG9yQ2FudmFzLT5idWlsZE9iamVj
dEZvckNhbnZhcyhtX2luc3RydW1lbnRpbmdBZ2VudHMsIGNhcHR1cmVCYWNrdHJhY2UpKTsKIAog
I2lmIEVOQUJMRShXRUJHTCkKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzKCkucmVuZGVyaW5nQ29udGV4dCgpOworICAgICAg
ICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY29udGV4dCkpIHsKKyAgICAgICAg
ICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHRXZWJHTCA9IGRvd25jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KGNvbnRleHQpOworICAgICAgICAgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGV4dGVuc2lvbnMgPSBjb250ZXh0V2ViR0wtPmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMoKSkgeworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgU3RyaW5n
JiBleHRlbnNpb24gOiAqZXh0ZW5zaW9ucykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29u
dGV4dFdlYkdMLT5leHRlbnNpb25Jc0VuYWJsZWQoZXh0ZW5zaW9uKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5leHRlbnNpb25FbmFibGVkKGluc3BlY3Rv
ckNhbnZhcy0+aWRlbnRpZmllcigpLCBleHRlbnNpb24pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisjaWYgRU5BQkxFKFdFQkdM
KQogICAgIGZvciAoYXV0byYgaW5zcGVjdG9yUHJvZ3JhbSA6IG1faWRlbnRpZmllclRvSW5zcGVj
dG9yUHJvZ3JhbS52YWx1ZXMoKSkgewogICAgICAgICBhdXRvJiBpbnNwZWN0b3JDYW52YXMgPSBp
bnNwZWN0b3JQcm9ncmFtLT5jYW52YXMoKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnByb2dyYW1DcmVhdGVkKGluc3BlY3RvckNhbnZhcy5pZGVudGlmaWVyKCksIGluc3BlY3RvclBy
b2dyYW0tPmlkZW50aWZpZXIoKSk7CkBAIC01MDgsNiArNTIyLDE1IEBAIHZvaWQgSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52CiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCit2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpkaWRFbmFibGVFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgYXV0byogaW5zcGVjdG9yQ2FudmFz
ID0gZmluZEluc3BlY3RvckNhbnZhcyhjb250ZXh0LmNhbnZhcygpKTsKKyAgICBpZiAoIWluc3Bl
Y3RvckNhbnZhcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmV4dGVuc2lvbkVuYWJsZWQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGV4dGVuc2lv
bik7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVByb2dyYW0oV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQog
ewogICAgIGF1dG8qIGluc3BlY3RvckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoY29udGV4
dC5jYW52YXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggMTFhNWU2NmYwZmE0M2E2OGM0ZDI3MDAyNzJj
NzUyYTQ5YTU1M2NkMS4uNTNmMTJhMTdkZTY0MGFhNjliMjNjYjllYTM3MzAxODIwNzhiZWM2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRD
YW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKICAgICB2b2lkIGRpZEZpbmlz
aFJlY29yZGluZ0NhbnZhc0ZyYW1lKEhUTUxDYW52YXNFbGVtZW50JiwgYm9vbCBmb3JjZURpc3Bh
dGNoID0gZmFsc2UpOwogI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGRpZEVuYWJsZUV4dGVu
c2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBkaWRDcmVhdGVQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dy
YW0mKTsKICAgICB2b2lkIHdpbGxEZWxldGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSYpOwogICAgIGJv
b2wgaXNTaGFkZXJQcm9ncmFtRGlzYWJsZWQoV2ViR0xQcm9ncmFtJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qcwppbmRleCAxN2QxNzhhOTA4OTA2MmE5MmJkMWYyNzRmZjdkMjkzN2Uz
MTliMThjLi4yNDRkZDFmNGVjNDhkNzE2NWNlYTRmOGRhYzA5ZmNmYTc3NzA3YjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTM5NSw2ICszOTUsNyBAQCBsb2NhbGl6ZWRT
dHJpbmdzWyJFeHBvcnQiXSA9ICJFeHBvcnQiOwogbG9jYWxpemVkU3RyaW5nc1siRXhwb3J0IEhB
UiJdID0gIkV4cG9ydCBIQVIiOwogbG9jYWxpemVkU3RyaW5nc1siRXhwcmVzc2lvbiJdID0gIkV4
cHJlc3Npb24iOwogbG9jYWxpemVkU3RyaW5nc1siRXh0ZW5zaW9uIFNjcmlwdHMiXSA9ICJFeHRl
bnNpb24gU2NyaXB0cyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJFeHRlbnNpb25zIl0gPSAiRXh0ZW5z
aW9ucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeHRyYSBTY3JpcHRzIl0gPSAiRXh0cmEgU2NyaXB0
cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGYWRlIHVuZXhlY3V0ZWQgY29kZSJdID0gIkZhZGUgdW5l
eGVjdXRlZCBjb2RlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZhaWxlZCB0byB1cGdyYWRlIl0gPSAi
RmFpbGVkIHRvIHVwZ3JhZGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMKaW5kZXgg
N2I1Nzc2MzA2YWEzZjk2ZTIwNmQxYWVhODIwODc5Mzk3ODI3MWI3Zi4uMzExOTUwZjUxZDc3YTMy
NTc4MTdhZTEyYTI2MzBjZWZjOTYxZjdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNNYW5hZ2Vy
LmpzCkBAIC0xNjAsNiArMTYwLDE4IEBAIFdJLkNhbnZhc01hbmFnZXIgPSBjbGFzcyBDYW52YXNN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkNhbnZhc01hbmFnZXIuRXZlbnQuUmVjb3JkaW5nU3RvcHBlZCwge2NhbnZhcywg
cmVjb3JkaW5nfSk7CiAgICAgfQogCisgICAgZXh0ZW5zaW9uRW5hYmxlZChjYW52YXNJZGVudGlm
aWVyLCBleHRlbnNpb24pCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DYW52YXNP
YnNlcnZlci4KKworICAgICAgICBsZXQgY2FudmFzID0gdGhpcy5fY2FudmFzSWRlbnRpZmllck1h
cC5nZXQoY2FudmFzSWRlbnRpZmllcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbnZhcyk7
CisgICAgICAgIGlmICghY2FudmFzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNh
bnZhcy5lbmFibGVFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICB9CisKICAgICBwcm9ncmFtQ3Jl
YXRlZChjYW52YXNJZGVudGlmaWVyLCBwcm9ncmFtSWRlbnRpZmllcikKICAgICB7CiAgICAgICAg
IC8vIENhbGxlZCBmcm9tIFdJLkNhbnZhc09ic2VydmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMKaW5kZXggODY3NjMzOGVh
YmI2MWQ5MmYwZjU0MTIyMmFlZDRiMWVmMzI3NTA2Ni4uOWM0ZTExZjdjNDQ2ZmI0NDllY2NkZWQ1
NGI2YWY2NTk5YzBjOWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ2FudmFzLmpzCkBAIC0zOSw2ICszOSw3IEBAIFdJLkNhbnZhcyA9
IGNsYXNzIENhbnZhcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kb21Ob2RlID0g
ZG9tTm9kZSB8fCBudWxsOwogICAgICAgICB0aGlzLl9jc3NDYW52YXNOYW1lID0gY3NzQ2FudmFz
TmFtZSB8fCAiIjsKICAgICAgICAgdGhpcy5fY29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0
cmlidXRlcyB8fCB7fTsKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9ucyA9IG5ldyBTZXQ7CiAgICAg
ICAgIHRoaXMuX21lbW9yeUNvc3QgPSBtZW1vcnlDb3N0IHx8IE5hTjsKICAgICAgICAgdGhpcy5f
YmFja3RyYWNlID0gYmFja3RyYWNlIHx8IFtdOwogCkBAIC0xMTEsNiArMTEyLDcgQEAgV0kuQ2Fu
dmFzID0gY2xhc3MgQ2FudmFzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IGZyYW1lKCkgeyBy
ZXR1cm4gdGhpcy5fZnJhbWU7IH0KICAgICBnZXQgY3NzQ2FudmFzTmFtZSgpIHsgcmV0dXJuIHRo
aXMuX2Nzc0NhbnZhc05hbWU7IH0KICAgICBnZXQgY29udGV4dEF0dHJpYnV0ZXMoKSB7IHJldHVy
biB0aGlzLl9jb250ZXh0QXR0cmlidXRlczsgfQorICAgIGdldCBleHRlbnNpb25zKCkgeyByZXR1
cm4gdGhpcy5fZXh0ZW5zaW9uczsgfQogICAgIGdldCBiYWNrdHJhY2UoKSB7IHJldHVybiB0aGlz
Ll9iYWNrdHJhY2U7IH0KICAgICBnZXQgc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24oKSB7IHJldHVy
biB0aGlzLl9zaGFkZXJQcm9ncmFtQ29sbGVjdGlvbjsgfQogICAgIGdldCByZWNvcmRpbmdDb2xs
ZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcmVjb3JkaW5nQ29sbGVjdGlvbjsgfQpAQCAtMjY1LDYg
KzI2NywxNSBAQCBXSS5DYW52YXMgPSBjbGFzcyBDYW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgIH0KIAorICAgIGVuYWJsZUV4dGVuc2lvbihleHRlbnNpb24pCisgICAgeworICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5DYW52YXNNYW5hZ2VyLgorCisgICAgICAgIHRoaXMuX2V4dGVuc2lv
bnMuYWRkKGV4dGVuc2lvbik7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuQ2FudmFzLkV2ZW50LkV4dGVuc2lvbkVuYWJsZWQsIHtleHRlbnNpb259KTsKKyAgICB9
CisKICAgICBjc3NDYW52YXNDbGllbnROb2Rlc0NoYW5nZWQoKQogICAgIHsKICAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuQ2FudmFzTWFuYWdlci4KQEAgLTI5OSw1ICszMTAsNiBAQCBXSS5DYW52
YXMuQ29udGV4dFR5cGUgPSB7CiAKIFdJLkNhbnZhcy5FdmVudCA9IHsKICAgICBNZW1vcnlDaGFu
Z2VkOiAiY2FudmFzLW1lbW9yeS1jaGFuZ2VkIiwKKyAgICBFeHRlbnNpb25FbmFibGVkOiAiY2Fu
dmFzLWV4dGVuc2lvbi1lbmFibGVkIiwKICAgICBDU1NDYW52YXNDbGllbnROb2Rlc0NoYW5nZWQ6
ICJjYW52YXMtY3NzLWNhbnZhcy1jbGllbnQtbm9kZXMtY2hhbmdlZCIsCiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ2FudmFzT2Jz
ZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9D
YW52YXNPYnNlcnZlci5qcwppbmRleCBkZWQyODFmYjNmYTJkY2I4ZjQ0ZGQ3ZmU0MjQyN2ZiNjBh
NGFmZTYxLi42NTY3ODNkMGUzMTVhM2U2YjIwMzU2ZWQxYzJkMDI2OGRkOGMyMjdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DYW52YXNP
YnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9DYW52YXNPYnNlcnZlci5qcwpAQCAtNTIsNiArNTIsMTEgQEAgV0kuQ2FudmFzT2JzZXJ2
ZXIgPSBjbGFzcyBDYW52YXNPYnNlcnZlcgogICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLnJlY29y
ZGluZ0ZpbmlzaGVkKGNhbnZhc0lkLCByZWNvcmRpbmcpOwogICAgIH0KIAorICAgIGV4dGVuc2lv
bkVuYWJsZWQoY2FudmFzSWQsIGV4dGVuc2lvbikKKyAgICB7CisgICAgICAgIFdJLmNhbnZhc01h
bmFnZXIuZXh0ZW5zaW9uRW5hYmxlZChjYW52YXNJZCwgZXh0ZW5zaW9uKTsKKyAgICB9CisKICAg
ICBwcm9ncmFtQ3JlYXRlZChjYW52YXNJZCwgcHJvZ3JhbUlkKQogICAgIHsKICAgICAgICAgV0ku
Y2FudmFzTWFuYWdlci5wcm9ncmFtQ3JlYXRlZChjYW52YXNJZCwgcHJvZ3JhbUlkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc0Rl
dGFpbHNTaWRlYmFyUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKaW5kZXggYzdkYjQ4NGJhYTRm
ZTQ3NzY2ZTg0NjhhOTQwZmY0ZTY3NjQ1MjZhNi4uOTQwMWJkMThlMTJjNTIzNzE0YWJlMjBmNmRh
OWI0YmU4MzA5ZGU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5l
bC5jc3MKQEAgLTI3LDYgKzI3LDExIEBACiAgICAgZGlzcGxheTogYmxvY2s7CiB9CiAKKy5zaWRl
YmFyID4gLnBhbmVsLmRldGFpbHMuY2FudmFzIC5kZXRhaWxzLXNlY3Rpb24uY2FudmFzLWV4dGVu
c2lvbnMgLmNvbnRlbnQgPiB1bCB7CisgICAgbWFyZ2luOiA0cHggMDsKKyAgICAtd2Via2l0LXBh
ZGRpbmctc3RhcnQ6IDIyLjVweDsKK30KKwogLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jYW52
YXMgLmRldGFpbHMtc2VjdGlvbi5jYW52YXMtYmFja3RyYWNlIC5jYWxsLWZyYW1lIHsKICAgICBt
YXJnaW46IDNweDsKICAgICBmb250LXNpemU6IDExcHg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0
YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA3ZTM5ODM1MjZhOTA2YzdjOGQxYjFkYWQwYmU4MDdl
ZWZlYmFjNDg2Li41NmZiZDdkNDAyNjRhMGI3M2Q2ZjNmMTE1ZjAzYzRiOGM4ZDFkOTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTc3LDYgKzc3LDcg
QEAgV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENhbnZhc0RldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWwKIAogICAgICAgICBpZiAodGhpcy5fY2FudmFzKSB7
CiAgICAgICAgICAgICB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DYW52YXMu
RXZlbnQuTWVtb3J5Q2hhbmdlZCwgdGhpcy5fY2FudmFzTWVtb3J5Q2hhbmdlZCwgdGhpcyk7Cisg
ICAgICAgICAgICB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DYW52YXMuRXZl
bnQuRXh0ZW5zaW9uRW5hYmxlZCwgdGhpcy5fcmVmcmVzaEV4dGVuc2lvbnNTZWN0aW9uLCB0aGlz
KTsKICAgICAgICAgICAgIHRoaXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNhbnZh
cy5FdmVudC5DU1NDYW52YXNDbGllbnROb2Rlc0NoYW5nZWQsIHRoaXMuX3JlZnJlc2hDU1NDYW52
YXNTZWN0aW9uLCB0aGlzKTsKICAgICAgICAgfQogCkBAIC04NCw2ICs4NSw3IEBAIFdJLkNhbnZh
c0RldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsIGV4
dGVuZHMgV0kuRGV0YWlsCiAKICAgICAgICAgaWYgKHRoaXMuX2NhbnZhcykgewogICAgICAgICAg
ICAgdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ2FudmFzLkV2ZW50Lk1lbW9yeUNo
YW5nZWQsIHRoaXMuX2NhbnZhc01lbW9yeUNoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgdGhp
cy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ2FudmFzLkV2ZW50LkV4dGVuc2lvbkVuYWJs
ZWQsIHRoaXMuX3JlZnJlc2hFeHRlbnNpb25zU2VjdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICB0
aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5DYW52YXMuRXZlbnQuQ1NTQ2FudmFzQ2xp
ZW50Tm9kZXNDaGFuZ2VkLCB0aGlzLl9yZWZyZXNoQ1NTQ2FudmFzU2VjdGlvbiwgdGhpcyk7CiAg
ICAgICAgIH0KIApAQCAtMTE3LDkgKzExOSwxNCBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBh
bmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAog
CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdyA9IG5ldyBXSS5EZXRhaWxzU2Vj
dGlvbkRhdGFHcmlkUm93KG51bGwsIFdJLlVJU3RyaW5nKCJObyBBdHRyaWJ1dGVzIikpOwogCi0g
ICAgICAgIGxldCBhdHRyaWJ1dGVzU2VjdGlvbiA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbigiY2Fu
dmFzLWF0dHJpYnV0ZXMiLCBXSS5VSVN0cmluZygiQXR0cmlidXRlcyIpKTsKLSAgICAgICAgYXR0
cmlidXRlc1NlY3Rpb24uZ3JvdXBzID0gW25ldyBXSS5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlz
Ll9hdHRyaWJ1dGVzRGF0YUdyaWRSb3ddKV07Ci0gICAgICAgIHRoaXMuX3NlY3Rpb25zLnB1c2go
YXR0cmlidXRlc1NlY3Rpb24pOworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU2VjdGlvbiA9IG5l
dyBXSS5EZXRhaWxzU2VjdGlvbigiY2FudmFzLWF0dHJpYnV0ZXMiLCBXSS5VSVN0cmluZygiQXR0
cmlidXRlcyIpKTsKKyAgICAgICAgdGhpcy5fYXR0cmlidXRlc1NlY3Rpb24uZ3JvdXBzID0gW25l
dyBXSS5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRSb3ddKV07
CisgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fc2VjdGlvbnMucHVzaCh0aGlzLl9hdHRyaWJ1dGVzU2VjdGlvbik7CisK
KyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uc1NlY3Rpb24gPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb24o
ImNhbnZhcy1leHRlbnNpb25zIiwgV0kuVUlTdHJpbmcoIkV4dGVuc2lvbnMiKSk7CisgICAgICAg
IHRoaXMuX2V4dGVuc2lvbnNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5fc2VjdGlvbnMucHVzaCh0aGlzLl9leHRlbnNpb25zU2VjdGlvbik7CiAKICAgICAgICAg
dGhpcy5fY3NzQ2FudmFzQ2xpZW50c1JvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dyhXSS5VSVN0cmluZygiTm9kZXMiKSk7CiAKQEAgLTE1Niw2ICsxNjMsNyBAQCBXSS5DYW52YXNE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRl
bmRzIFdJLkRldGFpbAogICAgICAgICB0aGlzLl9yZWZyZXNoSWRlbnRpdHlTZWN0aW9uKCk7CiAg
ICAgICAgIHRoaXMuX3JlZnJlc2hTb3VyY2VTZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX3JlZnJl
c2hBdHRyaWJ1dGVzU2VjdGlvbigpOworICAgICAgICB0aGlzLl9yZWZyZXNoRXh0ZW5zaW9uc1Nl
Y3Rpb24oKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaENTU0NhbnZhc1NlY3Rpb24oKTsKICAgICAg
ICAgdGhpcy5fcmVmcmVzaEJhY2t0cmFjZVNlY3Rpb24oKTsKICAgICB9CkBAIC0yNDQsMTEgKzI1
MiwxMCBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWls
c1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAogCiAgICAgX3JlZnJlc2hBdHRyaWJ1dGVz
U2VjdGlvbigpCiAgICAgewotICAgICAgICBpZiAoaXNFbXB0eU9iamVjdCh0aGlzLl9jYW52YXMu
Y29udGV4dEF0dHJpYnV0ZXMpKSB7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIERhdGFHcmlk
IHRvIHNob3cgdGhlIHBsYWNlaG9sZGVyIHRleHQuCi0gICAgICAgICAgICB0aGlzLl9hdHRyaWJ1
dGVzRGF0YUdyaWRSb3cuZGF0YUdyaWQgPSBudWxsOworICAgICAgICBsZXQgaGFzQXR0cmlidXRl
cyA9ICFpc0VtcHR5T2JqZWN0KHRoaXMuX2NhbnZhcy5jb250ZXh0QXR0cmlidXRlcyk7CisgICAg
ICAgIHRoaXMuX2F0dHJpYnV0ZXNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gIWhhc0F0dHJpYnV0
ZXM7CisgICAgICAgIGlmICghaGFzQXR0cmlidXRlcykKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogCiAgICAgICAgIGxldCBkYXRhR3JpZCA9IHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3Jp
ZFJvdy5kYXRhR3JpZDsKICAgICAgICAgaWYgKCFkYXRhR3JpZCkgewpAQCAtMjY5LDYgKzI3Niwy
MSBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1Np
ZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAogICAgICAgICBkYXRhR3JpZC51cGRhdGVMYXlv
dXRJZk5lZWRlZCgpOwogICAgIH0KIAorICAgIF9yZWZyZXNoRXh0ZW5zaW9uc1NlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgbGV0IGhhc0VuYWJsZWRFeHRlbnNpb25zID0gdGhpcy5fY2FudmFzLmV4
dGVuc2lvbnMuc2l6ZSA+IDA7CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnNTZWN0aW9uLmVsZW1l
bnQuaGlkZGVuID0gIWhhc0VuYWJsZWRFeHRlbnNpb25zOworICAgICAgICBpZiAoIWhhc0VuYWJs
ZWRFeHRlbnNpb25zKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKKyAgICAgICAgZm9yIChsZXQgZXh0ZW5z
aW9uIG9mIHRoaXMuX2NhbnZhcy5leHRlbnNpb25zKSB7CisgICAgICAgICAgICBsZXQgbGlzdEVs
ZW1lbnQgPSBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIikp
OworICAgICAgICAgICAgbGlzdEVsZW1lbnQudGV4dENvbnRlbnQgPSBleHRlbnNpb247CisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uc1NlY3Rpb24uZ3JvdXBzID0gW3tlbGVtZW50
fV07CisgICAgfQorCiAgICAgX3JlZnJlc2hDU1NDYW52YXNTZWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5kaWRJbml0aWFsTGF5b3V0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxNTFmMzgzOWU0Y2RjYjZl
MWI5NWFjMjdmZjc1NDdkYmE5MTQ4ZjIuLjlhMWM2OTY0ZGNhM2JhYjM2NDM1Y2MxYzgxNzVjNTY3
OTI3ZDVmMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0xMS0wMiAgRGV2aW4gUm91c3Nv
ICA8d2Via2l0QGRldmlucm91c3NvLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52
YXMgVGFiOiBzaG93IHN1cHBvcnRlZCBHTCBleHRlbnNpb25zIGZvciBzZWxlY3RlZCBjYW52YXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA3MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNzgyNzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QnJpYW4gQnVyZy4KKworICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy5o
dG1sOiBBZGRlZC4KKwogMjAxNy0xMS0wMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEluc3BlY3RvciBzaG91bGQgZGlzcGxheSBzZXJ2aWNlIHdvcmtl
ciBzZXJ2ZWQgcmVzcG9uc2VzIHByb3Blcmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY2FudmFzL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy9leHRlbnNpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmEyYmQ2Mzdm
MTk4Yzc1Njg5OWJhOTEzNDIxY2NjOTFjZDc4YTQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9leHRlbnNpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDcgQEAKK1Rlc3QgdGhhdCBDYW52YXNNYW5hZ2VyIGlzIG5vdGlmaWVkIHdoZW5ldmVyIGEgV2Vi
R0wgZXh0ZW5zaW9uIGlzIGVuYWJsZWQgZm9yIGEgZ2l2ZW4gY2FudmFzIGNvbnRleHQuCisKKwor
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMuZXh0ZW5zaW9ucworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IENhbnZhcy5leHRlbnNpb25zLmVuYWJsZQorUEFTUzogVGhlIG5ld2x5IGVuYWJsZWQg
ZXh0ZW5zaW9uIHNob3VsZCBiZSAiV0VCR0xfbG9zZV9jb250ZXh0Ii4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9leHRlbnNpb25zLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY2FudmFzL2V4dGVuc2lvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGZjYmZlMDA3
M2MxOWIzODVjNDZiOTdkNDE1ZmY4OTdiYWYxZTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9leHRlbnNpb25zLmh0bWwKQEAgLTAsMCArMSw1MCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gbG9hZCgpIHsKKyAgICB3aW5kb3cuY29udGV4dCA9IGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikpLmdldENv
bnRleHQoIndlYmdsIik7CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGVuYWJsZUV4
dGVuc2lvbihuYW1lKSB7CisgICAgd2luZG93LmNvbnRleHQuZ2V0RXh0ZW5zaW9uKG5hbWUpOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiQ2FudmFzLmV4dGVuc2lvbnMiKTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIkNhbnZhcy5leHRlbnNpb25zLmVuYWJsZSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBlbmFibGluZyBhbiBleHRlbnNpb24gbm90aWZpZXMg
dGhlIGZyb250ZW5kLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAg
ICAgICBsZXQgY2FudmFzZXMgPSBXSS5jYW52YXNNYW5hZ2VyLmNhbnZhc2VzLmZpbHRlcigoY2Fu
dmFzKSA9PiBjYW52YXMuY29udGV4dFR5cGUgPT09IFdJLkNhbnZhcy5Db250ZXh0VHlwZS5XZWJH
TCk7CisgICAgICAgICAgICBpZiAoIWNhbnZhc2VzLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
IHJlamVjdCgiTWlzc2luZyBXZWJHTCBjYW52YXMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjYW52
YXNlcy5sZW5ndGggPT09IDEsICJUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgV2ViR0wgY2FudmFz
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzZXNbMF0uZXh0ZW5z
aW9ucy5zaXplID09PSAwLCAiVGhlIGNhbnZhcyBzaG91bGQgaGF2ZSBubyBleHRlbnNpb25zIGVu
YWJsZWQgYWZ0ZXIgYmVpbmcgY3JlYXRlZCIpOworCisgICAgICAgICAgICBjb25zdCBleHRlbnNp
b25OYW1lID0gIldFQkdMX2xvc2VfY29udGV4dCI7CisgICAgICAgICAgICBjYW52YXNlc1swXS5h
d2FpdEV2ZW50KFdJLkNhbnZhcy5FdmVudC5FeHRlbnNpb25FbmFibGVkKS50aGVuKChldmVudCkg
PT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZXZlbnQuZGF0
YS5leHRlbnNpb24sIGV4dGVuc2lvbk5hbWUsIGBUaGUgbmV3bHkgZW5hYmxlZCBleHRlbnNpb24g
c2hvdWxkIGJlICIke2V4dGVuc2lvbk5hbWV9Ii5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChjYW52YXNlc1swXS5leHRlbnNpb25zLnNpemUgPT09IDEsICJUaGUgY2Fu
dmFzIHNob3VsZCBub3cgaGF2ZSBvbmUgZXh0ZW5zaW9uLiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZhc2VzWzBdLmV4dGVuc2lvbnMuaGFzKGV2ZW50LmRhdGEu
ZXh0ZW5zaW9uKSwgYFRoZSBvbmUgZXh0ZW5zaW9uIHNob3VsZCBiZSAiJHtleHRlbnNpb25OYW1l
fSIuYCk7CisgICAgICAgICAgICB9KS50aGVuKHJlc29sdmUsIHJlamVjdCk7CisKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGVuYWJsZUV4dGVuc2lvbigiJHtleHRl
bnNpb25OYW1lfSIpYCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Imxv
YWQoKSI+CisgICAgPHA+VGVzdCB0aGF0IENhbnZhc01hbmFnZXIgaXMgbm90aWZpZWQgd2hlbmV2
ZXIgYSBXZWJHTCBleHRlbnNpb24gaXMgZW5hYmxlZCBmb3IgYSBnaXZlbiBjYW52YXMgY29udGV4
dC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325808</attachid>
            <date>2017-11-02 18:10:10 -0700</date>
            <delta_ts>2017-11-02 18:53:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179070-20171102181007.patch</filename>
            <type>text/plain</type>
            <size>47045</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVlZmQyNTY2NzIxODE0YjM3OTI3ZTAzZTY0YmJi
NzNjYTIxZWJmMWQuLjBjNGQ0MDJiOThmZTUwMjM2NTRiODdiZjE4NmExZGZlMzkxZjBhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTExLTAyICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENhbnZhcyBUYWI6IHNob3cgc3VwcG9ydGVkIEdMIGV4dGVuc2lvbnMgZm9yIHNlbGVjdGVk
IGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI3ODI3Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZh
cy5qc29uOgorICAgICAgICBBZGQgYGV4dGVuc2lvbkVuYWJsZWRgIGV2ZW50IHRoYXQgaXMgZmly
ZWQgZWFjaCB0aW1lIGBnZXRFeHRlbnNpb25gIGlzIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgZGlm
ZmVyZW50IHN0cmluZyBvbiBhIFdlYkdMIGNvbnRleHQuCisKIDIwMTctMTEtMDIgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgREZHIG5lZWRzIHRvIGhhbmRs
ZSBjb2RlIG1vdGlvbiBvZiBjb2RlIGluIGZvci4uaW4gbG9vcCBib2RpZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1OWVjZTNjOWQxNjkyZDE3MjY0MDVhZWEyZTgyYWI4NTI4NjlkZjA0Li5kYzk5MWIwOTcwNGEx
ZWFkZjc1ZDg2YjJlMjUyZGM0MzNmZmMzZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTctMTEtMDIgIERldmluIFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ2FudmFzIFRhYjogc2hvdyBzdXBwb3J0ZWQgR0wgZXh0ZW5z
aW9ucyBmb3Igc2VsZWN0ZWQgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzkwNzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1Mjc4Mjc2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgVGVzdDogaW5z
cGVjdG9yL2NhbnZhcy9leHRlbnNpb25zLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICBSZXdvcmsgY29tbW9uIGxvZ2ljIGludG8gYSBt
YWNybyBmb3IgcmVhZGFiaWxpdHkgYW5kIHRvIHNpbXBsaWZ5IGFkZGluZyBjYWxscyB0bworICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gZnVuY3Rpb25zLgorCisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKToKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpkaWRFbmFibGVFeHRlbnNpb24pOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRFbmFibGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb25JbXBsKToKKwogMjAxNy0xMS0wMiAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgZGlzcGxheTpjb250ZW50cyBzaG91
bGQgd29yayB3aXRoIGR5bmFtaWMgdGFibGUgbXV0YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwppbmRleCBkZDg5MDQ0NWIwZDEwNmJkZjNiNmJkNzU2ZDMyZGUwODA5ZTFhZGY1Li40Y2YwNGVk
YzRlNTI2MjcwZThlMGUwZTg4YmYwMjE5NTkwOWFhMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0xMS0wMiAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRl
dmlucm91c3NvLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXMgVGFiOiBzaG93
IHN1cHBvcnRlZCBHTCBleHRlbnNpb25zIGZvciBzZWxlY3RlZCBjYW52YXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA3MAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzUyNzgyNzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4K
KworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ2FudmFzT2JzZXJ2ZXIuanM6Cisg
ICAgICAgIChXSS5DYW52YXNPYnNlcnZlci5wcm90b3R5cGUuZXh0ZW5zaW9uRW5hYmxlZCk6CisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanM6Cisg
ICAgICAgIChXSS5DYW52YXNNYW5hZ2VyLnByb3RvdHlwZS5leHRlbnNpb25FbmFibGVkKToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qczoKKyAgICAgICAgKFdJLkNh
bnZhcy5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbnMpOgorICAgICAgICAoV0kuQ2FudmFzLnByb3Rv
dHlwZS5lbmFibGVFeHRlbnNpb24pOgorICAgICAgICBNYWludGFpbiBhIFNldCBvZiBlbmFibGVk
IGV4dGVuc2lvbnMsIGFuZCBkaXNwYXRjaCBhbiBldmVudCB3aGVuZXZlciBhbiBleHRlbnNpb24g
aXMgZW5hYmxlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWls
c1NpZGViYXJQYW5lbC5jc3M6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNh
bnZhcyAuZGV0YWlscy1zZWN0aW9uLmNhbnZhcy1leHRlbnNpb25zIC5jb250ZW50ID4gdWwpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5q
czoKKyAgICAgICAgKFdJLkNhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNldCBj
YW52YXMpOgorICAgICAgICAoV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUu
aW5pdGlhbExheW91dCk6CisgICAgICAgIChXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV0kuQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUuX3JlZnJlc2hBdHRyaWJ1dGVzU2VjdGlvbik6CisgICAgICAgIChXSS5DYW52YXNE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcmVmcmVzaEV4dGVuc2lvbnNTZWN0aW9uKToK
KyAgICAgICAgRHJpdmUtYnk6IGhpZGUgQXR0cmlidXRlcyBzZWN0aW9uIHdoZW4gdGhlIGNhbnZh
cyBoYXMgbm8gYXR0cmlidXRlcy4KKworMjAxNy0xMS0wMiAgRGV2aW4gUm91c3NvICA8d2Via2l0
QGRldmlucm91c3NvLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHJlY29y
ZGluZyBwYXJhbWV0ZXJzIHRoYXQgaW5jbHVkZSBhbiBJbWFnZSBzaG91bGQgc2hvdyBhbiBJbmxp
bmVTd2F0Y2ggKDJEIGNhbnZhcykKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NzAzMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbgppbmRleCBlNmE5MmU5NmFmNzgwODkwODY2Y2Yy
MTlmNTFkNGUxMWU0ODUwMjBjLi41YjczOTEwZmFlMTliMmY3NWU0YzhiY2E0YjEzNjlhNDYxOGU3
YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L0NhbnZhcy5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvQ2FudmFzLmpzb24KQEAgLTE3MSw2ICsxNzEsMTMgQEAKICAgICAgICAgICAgIF0KICAgICAg
ICAgfSwKICAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZXh0ZW5zaW9uRW5hYmxlZCIs
CisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJleHRlbnNpb24iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZSBv
ZiB0aGUgZXh0ZW5zaW9uIHRoYXQgd2FzIGVuYWJsZWQuIiB9CisgICAgICAgICAgICBdCisgICAg
ICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImNzc0NhbnZhc0NsaWVudE5v
ZGVzQ2hhbmdlZCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImNhbnZhc0lkIiwgIiRyZWYiOiAiQ2FudmFzSWQiLCAiZGVzY3JpcHRpb24i
OiAiSWRlbnRpZmllciBvZiBjYW52YXMgdGhhdCBjaGFuZ2VkLiIgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBl
MjM5ZmU0ZDcxZDI0Y2I1ZGE3MDllYmQwYzY3ZDI3MjZmZDU1MDE5Li5jYjhhZjNkNjQ3NDk1Mjc4
ZDNhZjA4YTFjN2VlYzdiYzk5YjI3NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUhhbGZGbG9hdC5oIgpAQCAt
MTA4MCw4NyArMTA4MSwyOSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSB8
fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIikpIHsKLSAgICAgICAgaWYgKCFtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYykgewotICAgICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMgPSBlbmFi
bGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
Ci0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPEVYVFRleHR1cmVGaWx0ZXJBbmlz
b3Ryb3BpYz4oKnRoaXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9l
eHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdCIpKSB7Ci0gICAgICAgIGlm
ICghbV9vZXNUZXh0dXJlRmxvYXQpIHsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0g
ZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpCi0gICAgICAg
ICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdD4oKnRoaXMpIDogbnVs
bHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7
Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiKSkgewotICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
KSB7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IGVuYWJsZVN1cHBvcnRl
ZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikKLSAgICAgICAgICAgICAg
ICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGluZWFyPigqdGhpcykgOiBudWxs
cHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdExpbmVhci5n
ZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190
ZXh0dXJlX2hhbGZfZmxvYXQiKSkgewotICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9h
dCkgewotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikKLSAgICAgICAgICAgICAgICA/
IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdD4oKnRoaXMpIDogbnVsbHB0cjsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0LmdldCgpOwot
ICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVf
aGFsZl9mbG9hdF9saW5lYXIiKSkgewotICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9h
dExpbmVhcikgewotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyID0gZW5h
YmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIp
Ci0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXI+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2Vz
VGV4dHVyZUhhbGZGbG9hdExpbmVhci5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2xvc2VfY29udGV4dCIpKSB7Ci0gICAgICAgIGlmICgh
bV93ZWJnbExvc2VDb250ZXh0KQotICAgICAgICAgICAgbV93ZWJnbExvc2VDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0PigqdGhpcyk7Ci0gICAgICAgIHJldHVybiBt
X3dlYmdsTG9zZUNvbnRleHQuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpKSB7Ci0g
ICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDKSB7Ci0gICAgICAgICAgICBp
ZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCp0aGlzKSkKLSAgICAgICAg
ICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEM+KCp0aGlzKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVy
ZV9wdnJ0YyIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMp
IHsKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDID0gV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpCi0gICAgICAgICAgICAgICAgPyBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQz4oKnRoaXMpIDogbnVs
bHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUzNUQykgewotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlUzNUQyA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMp
Ci0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDPigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIpKSB7Ci0gICAgICAgIGlm
ICghbV93ZWJnbERlcHRoVGV4dHVyZSkgewotICAgICAgICAgICAgbV93ZWJnbERlcHRoVGV4dHVy
ZSA9IFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNzQ29udGV4dDNEKCkpCi0g
ICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPigqdGhp
cykgOiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0
dXJlLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
V0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbERlYnVn
UmVuZGVyZXJJbmZvKQotICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigqdGhpcyk7Ci0gICAgICAgIHJl
dHVybiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIikpIHsKLSAgICAg
ICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKSB7Ci0gICAgICAgICAgICBtX3dlYmdsRGVidWdT
aGFkZXJzID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoQVNDSUlMaXRlcmFs
IHsgIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIgfSkKLSAgICAgICAgICAgICAg
ICA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KCp0aGlzKSA6IG51bGxwdHI7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7Ci0g
ICAgfQotCisjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVM
aXRlcmFsLCBjYW5FbmFibGUpIFwKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCBuYW1lTGl0ZXJhbCkpIHsgXAorICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKKyAgICAgICAg
ICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlz
KSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNp
b24oKnRoaXMsIG5hbWUpOyBcCisgICAgICAgIH0gXAorICAgICAgICByZXR1cm4gdmFyaWFibGUu
Z2V0KCk7IFwKKyAgICB9CisKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0
ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90
ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMs
ICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNfdGV4dHVyZV9mbG9h
dCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2VzVGV4dHVy
ZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSk7CisgICAgRU5BQkxFX0lG
X1JFUVVFU1RFRChPRVNUZXh0dXJlSGFsZkZsb2F0LCBtX29lc1RleHR1cmVIYWxmRmxvYXQsICJP
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0IikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCAiT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2Vi
R0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250ZXh0Iiwg
dHJ1ZSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
LCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykp
OworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhp
cykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
czN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVwdGhUZXh0dXJlLCBtX3dlYmdsRGVwdGhUZXh0
dXJlLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIsIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQo
KmdyYXBoaWNzQ29udGV4dDNEKCkpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVi
dWdSZW5kZXJlckluZm8sIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbywgIldFQkdMX2RlYnVnX3Jl
bmRlcmVyX2luZm8iLCB0cnVlKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVidWdT
aGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAiV0VCR0xfZGVidWdfc2hhZGVycyIsIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCB7ICJHTF9BTkdMRV90
cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiIH0pKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggNzg4MTg5YTIzNDhhMjAyNTY3MWZhOWU3MjM2ZGM4OWVlM2M4ZTU1OS4uNTU4
MDExODEwMjE2MDJhODE5OWVkMWIxOTBkZWQzNGVjMTVhNTg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxW
aWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJPRVNFbGVtZW50SW5kZXhVaW50LmgiCiAj
aW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIk9FU1RleHR1cmVG
bG9hdC5oIgpAQCAtODksMjggKzkwLDIwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0g
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9ibGVuZF9taW5tYXgiKSkg
ewotICAgICAgICBpZiAoIW1fZXh0QmxlbmRNaW5NYXgpIHsKLSAgICAgICAgICAgIG1fZXh0Qmxl
bmRNaW5NYXggPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9ibGVuZF9taW5tYXgi
KQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxFWFRCbGVuZE1pbk1heD4oKnRo
aXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9leHRCbGVuZE1pbk1h
eC5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVY
VF9zUkdCIikpIHsKLSAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKLSAgICAgICAgICAgIG1fZXh0
c1JHQiA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3NSR0IiKQotICAgICAgICAg
ICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxFWFRzUkdCPigqdGhpcykgOiBudWxscHRyOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBtX2V4dHNSR0IuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfZnJhZ19kZXB0aCIpKSB7Ci0gICAgICAg
IGlmICghbV9leHRGcmFnRGVwdGgpIHsKLSAgICAgICAgICAgIG1fZXh0RnJhZ0RlcHRoID0gZW5h
YmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfZnJhZ19kZXB0aCIpCi0gICAgICAgICAgICAg
ICAgPyBzdGQ6Om1ha2VfdW5pcXVlPEVYVEZyYWdEZXB0aD4oKnRoaXMpIDogbnVsbHB0cjsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gbV9leHRGcmFnRGVwdGguZ2V0KCk7CisKKyNkZWZpbmUg
RU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJs
ZSkgXAorICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkg
eyBcCisgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAo
Y2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAor
ICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7
IFwKKyAgICAgICAgfSBcCisgICAgICAgIHJldHVybiB2YXJpYWJsZS5nZXQoKTsgXAogICAgIH0K
KworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQmxlbmRNaW5NYXgsIG1fZXh0QmxlbmRNaW5N
YXgsICJFWFRfYmxlbmRfbWlubWF4IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRf
YmxlbmRfbWlubWF4IikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUc1JHQiwgbV9leHRz
UkdCLCAiRVhUX3NSR0IiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9zUkdCIikp
OworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhURnJhZ0RlcHRoLCBtX2V4dEZyYWdEZXB0aCwg
IkVYVF9mcmFnX2RlcHRoIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfZnJhZ19k
ZXB0aCIpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpKSB7CiAgICAgICAgIGlmICghbV9leHRTaGFkZXJUZXh0dXJlTE9EKSB7
CiAgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cyhB
U0NJSUxpdGVyYWwgeyAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIgfSkgfHwgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoQVNDSUlMaXRlcmFsIHsgIkdMX0FSQl9zaGFkZXJf
dGV4dHVyZV9sb2QiIH0pKSkKQEAgLTExOCw5OSArMTExLDI1IEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKEFTQ0lJTGl0ZXJhbCB7ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVf
bG9kIiB9KTsKICAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fZXh0U2hhZGVyVGV4
dHVyZUxPRC5nZXQoKTsKICAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkgewot
ICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7Ci0gICAgICAgICAg
ICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgICAgICAgICA/
IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPigqdGhpcykgOiBu
dWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2V4dFRleHR1cmVGaWx0ZXJBbmlz
b3Ryb3BpYy5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzKSB7Ci0gICAgICAgICAgICBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMg
PSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIp
Ci0gICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2VzU3Rh
bmRhcmREZXJpdmF0aXZlcy5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0IikpIHsKLSAgICAgICAgaWYgKCFtX29lc1Rl
eHR1cmVGbG9hdCkgewotICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXQgPSBlbmFibGVTdXBw
b3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0IikKLSAgICAgICAgICAgICAgICA/
IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0PigqdGhpcykgOiBudWxscHRyOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdC5nZXQoKTsKLSAgICB9Ci0g
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIpIHsKLSAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0gZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKQotICAgICAgICAgICAgICAgID8gc3RkOjpt
YWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXRMaW5lYXI+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyLmdldCgpOwotICAg
IH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAg
ICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXQgPSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtl
X3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0PigqdGhpcykgOiBudWxscHRyOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXQuZ2V0KCk7Ci0gICAgfQotICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
X2xpbmVhciIpKSB7Ci0gICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKSB7
Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPSBlbmFibGVTdXBwb3J0
ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAg
ICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRo
aXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFs
ZkZsb2F0TGluZWFyLmdldCgpOwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkgewotICAgICAgICBpZiAoIW1fb2Vz
VmVydGV4QXJyYXlPYmplY3QpIHsKLSAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3Qg
PSBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikK
LSAgICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8T0VTVmVydGV4QXJyYXlPYmplY3Q+
KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2VzVmVydGV4
QXJyYXlPYmplY3QuZ2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikpIHsKLSAgICAgICAgaWYgKCFtX29lc0Vs
ZW1lbnRJbmRleFVpbnQpIHsKLSAgICAgICAgICAgIG1fb2VzRWxlbWVudEluZGV4VWludCA9IGVu
YWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpCi0gICAg
ICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KCp0aGlz
KSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2VzRWxlbWVudEluZGV4
VWludC5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
IldFQkdMX2xvc2VfY29udGV4dCIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJnbExvc2VDb250ZXh0
KQotICAgICAgICAgICAgbV93ZWJnbExvc2VDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJH
TExvc2VDb250ZXh0PigqdGhpcyk7Ci0gICAgICAgIHJldHVybiBtX3dlYmdsTG9zZUNvbnRleHQu
Z2V0KCk7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpKSB7Ci0gICAgICAgIGlmICghbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlQVRDKSB7Ci0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVBVEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpCi0g
ICAgICAgICAgICAgICAgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZUFUQy5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKSkg
ewotICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKSB7Ci0gICAgICAg
ICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQyA9IFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKQotICAgICAgICAgICAgICAgID8gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+KCp0aGlzKSA6IG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmdldCgp
OwotICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3MzdGMiKSkgewotICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMpIHsKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMg
PSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKQotICAgICAgICAg
ICAgICAgID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4oKnRo
aXMpIDogbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5nZXQoKTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKSkgewotICAgICAgICBpZiAoIW1fd2ViZ2xE
ZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBXZWJHTERl
cHRoVGV4dHVyZTo6c3VwcG9ydGVkKCptX2NvbnRleHQpCi0gICAgICAgICAgICAgICAgPyBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPigqdGhpcykgOiBudWxscHRyOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgpOwotICAgIH0KKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMi
LCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyIpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJXRUJLSVRfRVhUX3RleHR1cmVf
ZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNT
dGFuZGFyZERlcml2YXRpdmVzLCBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyIpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9h
dCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNfdGV4dHVyZV9mbG9hdCIsIGVuYWJsZVN1cHBvcnRl
ZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyLCAiT0VT
X3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNf
dGV4dHVyZV9mbG9hdF9saW5lYXIiKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0
dXJlSGFsZkZsb2F0LCBtX29lc1RleHR1cmVIYWxmRmxvYXQsICJPRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
IikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwg
bV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyIikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVmVydGV4QXJyYXlPYmplY3Qs
IG1fb2VzVmVydGV4QXJyYXlPYmplY3QsICJPRVNfdmVydGV4X2FycmF5X29iamVjdCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNFbGVtZW50SW5kZXhVaW50LCBtX29lc0VsZW1lbnRJbmRl
eFVpbnQsICJPRVNfZWxlbWVudF9pbmRleF91aW50IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250ZXh0
IiwgdHJ1ZSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhp
cykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
LCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgq
dGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfczN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
KyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVwdGhUZXh0dXJlLCBtX3dlYmdsRGVwdGhU
ZXh0dXJlLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIsIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJX
RUJHTF9kcmF3X2J1ZmZlcnMiKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEcmF3QnVmZmVycykg
ewogICAgICAgICAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCkBAIC0yMTgsNiArMTM3
LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoQVNDSUlMaXRlcmFsIHsg
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiIH0pOwogICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVm
ZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOworICAgICAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0
aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV93
ZWJnbERyYXdCdWZmZXJzLmdldCgpOwpAQCAtMjI5LDIzICsxNDksMTMgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoQVNDSUlMaXRlcmFsIHsgIkdMX0FOR0xFX2luc3RhbmNl
ZF9hcnJheXMiIH0pOwogICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMs
IG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2FuZ2xl
SW5zdGFuY2VkQXJyYXlzLmdldCgpOwogICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpKSB7Ci0gICAgICAgIGlmICgh
bV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQotICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVy
ZXJJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigqdGhpcyk7
Ci0gICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7Ci0gICAgfQot
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19zaGFkZXJz
IikpIHsKLSAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKSB7Ci0gICAgICAgICAgICBt
X3dlYmdsRGVidWdTaGFkZXJzID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
QVNDSUlMaXRlcmFsIHsgIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIgfSkKLSAg
ICAgICAgICAgICAgICA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KCp0aGlz
KSA6IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRl
cnMuZ2V0KCk7Ci0gICAgfQotCisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1Z19yZW5kZXJl
cl9pbmZvIiwgdHJ1ZSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnU2hhZGVy
cywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cyhBU0NJSUxpdGVyYWwgeyAiR0xfQU5HTEVfdHJhbnNs
YXRlZF9zaGFkZXJfc291cmNlIiB9KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKaW5kZXggMjRkN2IyMTg0MWE3MmYyYjI4ZjA0YmRlMzNhNWM2ZThjNTczNjI4OS4u
Y2YyYjM3MmY1YzkyNDU1ZGYwMzQ1Y2Q5ZmM0ZTI2YTRmNjBhOGVkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKQEAgLTI3NDAsNiArMjc0MCwzNyBAQCBsb25nIGxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZQogICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpOwogfQog
Citib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmV4dGVuc2lvbklzRW5hYmxlZChjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisjZGVmaW5lIENIRUNLX0VYVEVOU0lPTih2YXJpYWJsZSwgbmFt
ZUxpdGVyYWwpIFwKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0
ZXJhbCkpIFwKKyAgICAgICAgcmV0dXJuIHZhcmlhYmxlICE9IG51bGxwdHI7CisKKyAgICBDSEVD
S19FWFRFTlNJT04obV9leHRGcmFnRGVwdGgsICJFWFRfZnJhZ19kZXB0aCIpOworICAgIENIRUNL
X0VYVEVOU0lPTihtX2V4dEJsZW5kTWluTWF4LCAiRVhUX2JsZW5kX21pbm1heCIpOworICAgIENI
RUNLX0VYVEVOU0lPTihtX2V4dHNSR0IsICJFWFRfc1JHQiIpOworICAgIENIRUNLX0VYVEVOU0lP
TihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYywgIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICBDSEVD
S19FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJlTE9ELCAiRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX29lc1RleHR1cmVGbG9hdCwgIk9FU190ZXh0dXJl
X2Zsb2F0Iik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyLCAi
T0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fb2VzVGV4
dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICBDSEVDS19FWFRF
TlNJT04obV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV9vZXNTdGFuZGFyZERlcml2YXRpdmVz
LCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fb2Vz
VmVydGV4QXJyYXlPYmplY3QsICJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIENIRUNL
X0VYVEVOU0lPTihtX29lc0VsZW1lbnRJbmRleFVpbnQsICJPRVNfZWxlbWVudF9pbmRleF91aW50
Iik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fd2ViZ2xMb3NlQ29udGV4dCwgIldFQkdMX2xvc2Vf
Y29udGV4dCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX3dlYmdsRGVidWdSZW5kZXJlckluZm8s
ICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fd2Vi
Z2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIik7CisgICAgQ0hFQ0tfRVhURU5T
SU9OKG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfYXRjIik7CisgICAgQ0hFQ0tfRVhURU5TSU9OKG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpOworICAg
IENIRUNLX0VYVEVOU0lPTihtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLCAiV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV93ZWJnbERlcHRo
VGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKTsKKyAgICBDSEVDS19FWFRFTlNJT04obV93
ZWJnbERyYXdCdWZmZXJzLCAiV0VCR0xfZHJhd19idWZmZXJzIik7CisgICAgQ0hFQ0tfRVhURU5T
SU9OKG1fYW5nbGVJbnN0YW5jZWRBcnJheXMsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBHQzNEYm9vbGVhbiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjppc0J1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyIHx8
IGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBmODVjNTliZjEyYzdm
MDdhYWQzZjM5NGI0ZTY0YzMzMzYwNjQwYzA4Li45YTY1NjA0ZjFkMDNhNmY1MTUyMTk2NzUyNmZl
MjljZGNhNDVlNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0yMTAsNiArMjEwLDggQEAgcHVibGljOgog
ICAgIFdlYkdMQW55IGdldFZlcnRleEF0dHJpYihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5h
bWUpOwogICAgIGxvbmcgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgs
IEdDM0RlbnVtIHBuYW1lKTsKIAorICAgIGJvb2wgZXh0ZW5zaW9uSXNFbmFibGVkKGNvbnN0IFN0
cmluZyYpOworCiAgICAgYm9vbCBpc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsgfQogICAgIHZvaWQgc2V0
UHJlc2VydmVEcmF3aW5nQnVmZmVyKGJvb2wgdmFsdWUpIHsgbV9hdHRyaWJ1dGVzLnByZXNlcnZl
RHJhd2luZ0J1ZmZlciA9IHZhbHVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMzIxY2VhYjVlY2RkMjY4
YWY1ZjUwMmFiMjhhNjQwM2YxNTE3ZmEzNS4uNjk3NDIyMDZlNmUzMWFhNDdlODI3OGY5MDAzODY2
MDg5M2Y2ZWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTEwMTMsNiArMTAxMywxMiBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWVJbXBsKElu
c3RydW1lbnRpbmdBZwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgaWYgKEluc3BlY3RvckNhbnZhc0FnZW50
KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQo
KSkKKyAgICAgICAgY2FudmFzQWdlbnQtPmRpZEVuYWJsZUV4dGVuc2lvbihjb250ZXh0LCBleHRl
bnNpb24pOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlUHJv
Z3JhbUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogewog
ICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYzYzNmNmYzY2ZGU4ODA4
ZWYwYjE4ZTJkMzRlY2M5NTdmNmMyNTJlYi4uNTM1MDQ4NTQ4YTRlNzE5N2I5MzQzYzBiZDkxNTNk
ZTUwMWEwOWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMjUwLDggKzI1MCw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBkaWRDaGFuZ2VDYW52YXNNZW1vcnkoSFRNTENhbnZhc0VsZW1lbnQmKTsKICAgICBz
dGF0aWMgdm9pZCByZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShIVE1MQ2FudmFz
RWxlbWVudCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNlKTsKLQogI2lmIEVOQUJMRShXRUJH
TCkKKyAgICBzdGF0aWMgdm9pZCBkaWRFbmFibGVFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVByb2dy
YW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJvZ3JhbSYpOwogICAgIHN0YXRp
YyB2b2lkIHdpbGxEZWxldGVQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJH
TFByb2dyYW0mKTsKICAgICBzdGF0aWMgYm9vbCBpc1NoYWRlclByb2dyYW1EaXNhYmxlZChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7CkBAIC00MjMsNiArNDIzLDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZWNvcmRDYW52YXNBY3Rpb25JbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwg
VmVjdG9yPFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwogICAgIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgSFRNTENhbnZhc0VsZW1lbnQmLCBib29sIGZvcmNlRGlzcGF0Y2ggPSBmYWxzZSk7CiAjaWYg
RU5BQkxFKFdFQkdMKQorICAgIHN0YXRpYyB2b2lkIGRpZEVuYWJsZUV4dGVuc2lvbkltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVQcm9ncmFtSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJvZ3JhbSYpOwogICAg
IHN0YXRpYyB2b2lkIHdpbGxEZWxldGVQcm9ncmFtSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
V2ViR0xQcm9ncmFtJik7CiAgICAgc3RhdGljIGJvb2wgaXNTaGFkZXJQcm9ncmFtRGlzYWJsZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHTFByb2dyYW0mKTsKQEAgLTEyMDIsNiArMTIw
MywxMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFJl
Y29yZGluZ0NhbnZhc0ZyYW1lKEhUTUxDYW52YXNFbAogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24o
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBleHRlbnNp
b24pCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRG9jdW1lbnQoY29udGV4dC5jYW52YXMoKS5kb2N1bWVudCgpKSkKKyAgICAgICAg
ZGlkRW5hYmxlRXh0ZW5zaW9uSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY29udGV4dCwgZXh0
ZW5zaW9uKTsKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQsIFdlYkdMUHJv
Z3JhbSYgcHJvZ3JhbSkKIHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChjb250ZXh0LmNhbnZh
cygpLmRvY3VtZW50KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBjM2Q2N2QyYzQwMGI1MmVkNjdk
NmRkNmRlMmEyMzZmNjNkYWQyNjEwLi4wZTJhOTJkMjU2ODRmNjdmNTBjZjdjYTEzNTdlMzhjNDdm
NjBiZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtOTUsMTAgKzk1LDI0IEBAIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gdHJ1
ZTsKIAogICAgIGNvbnN0IGJvb2wgY2FwdHVyZUJhY2t0cmFjZSA9IGZhbHNlOwotICAgIGZvciAo
YXV0byYgaW5zcGVjdG9yQ2FudmFzIDogbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMudmFs
dWVzKCkpCisgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JDYW52YXMgOiBtX2lkZW50aWZpZXJUb0lu
c3BlY3RvckNhbnZhcy52YWx1ZXMoKSkgewogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Y2FudmFzQWRkZWQoaW5zcGVjdG9yQ2FudmFzLT5idWlsZE9iamVjdEZvckNhbnZhcyhtX2luc3Ry
dW1lbnRpbmdBZ2VudHMsIGNhcHR1cmVCYWNrdHJhY2UpKTsKIAogI2lmIEVOQUJMRShXRUJHTCkK
KyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IGluc3BlY3RvckNhbnZh
cy0+Y2FudmFzKCkucmVuZGVyaW5nQ29udGV4dCgpOworICAgICAgICBpZiAoaXM8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZT4oY29udGV4dCkpIHsKKyAgICAgICAgICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIGNvbnRleHRXZWJHTCA9IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U+KGNvbnRleHQpOworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+IGV4dGVuc2lvbnMgPSBjb250ZXh0V2ViR0wtPmdldFN1cHBvcnRlZEV4dGVuc2lvbnMo
KSkgeworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHRlbnNpb24gOiAqZXh0
ZW5zaW9ucykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dFdlYkdMLT5leHRlbnNp
b25Jc0VuYWJsZWQoZXh0ZW5zaW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5leHRlbnNpb25FbmFibGVkKGluc3BlY3RvckNhbnZhcy0+aWRlbnRpZmll
cigpLCBleHRlbnNpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorI2VuZGlmCisgICAgfQorCisjaWYgRU5BQkxFKFdFQkdMKQogICAgIGZvciAoYXV0byYg
aW5zcGVjdG9yUHJvZ3JhbSA6IG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJvZ3JhbS52YWx1ZXMo
KSkgewogICAgICAgICBhdXRvJiBpbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JQcm9ncmFtLT5j
YW52YXMoKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnByb2dyYW1DcmVhdGVkKGlu
c3BlY3RvckNhbnZhcy5pZGVudGlmaWVyKCksIGluc3BlY3RvclByb2dyYW0tPmlkZW50aWZpZXIo
KSk7CkBAIC01MDgsNiArNTIyLDE1IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZEZp
bmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKEhUTUxDYW52YXNFbGVtZW50JiBjYW52CiB9CiAKICNp
ZiBFTkFCTEUoV0VCR0wpCit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRFbmFibGVFeHRl
bnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pCit7CisgICAgYXV0byogaW5zcGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNh
bnZhcyhjb250ZXh0LmNhbnZhcygpKTsKKyAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV4dGVuc2lvbkVuYWJsZWQo
aW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGV4dGVuc2lvbik7Cit9CisKIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZVByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCwgV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIGF1dG8qIGluc3Bl
Y3RvckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoY29udGV4dC5jYW52YXMoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmgKaW5kZXggMTFhNWU2NmYwZmE0M2E2OGM0ZDI3MDAyNzJjNzUyYTQ5YTU1M2NkMS4uNTNm
MTJhMTdkZTY0MGFhNjliMjNjYjllYTM3MzAxODIwNzhiZWM2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAt
ODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxSZWNvcmRDYW52YXNBY3Rp
b25WYXJpYW50PiYmID0geyB9KTsKICAgICB2b2lkIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0Zy
YW1lKEhUTUxDYW52YXNFbGVtZW50JiwgYm9vbCBmb3JjZURpc3BhdGNoID0gZmFsc2UpOwogI2lm
IEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGRpZEVuYWJsZUV4dGVuc2lvbihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRDcmVhdGVQcm9ncmFt
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICAgICB2b2lkIHdp
bGxEZWxldGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSYpOwogICAgIGJvb2wgaXNTaGFkZXJQcm9ncmFt
RGlzYWJsZWQoV2ViR0xQcm9ncmFtJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpp
bmRleCA2NTk4YmNlMjY4NDM1OTYzMmVhNDFlYjRmOGJlYjMzYTkwZmM3Yzc0Li4xZjQzNDEzM2Ji
YTkwMTU3ZjI5NTFjZTg2NGIzYmNjNDJkZmY3Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKQEAgLTM5NSw2ICszOTUsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBvcnQiXSA9
ICJFeHBvcnQiOwogbG9jYWxpemVkU3RyaW5nc1siRXhwb3J0IEhBUiJdID0gIkV4cG9ydCBIQVIi
OwogbG9jYWxpemVkU3RyaW5nc1siRXhwcmVzc2lvbiJdID0gIkV4cHJlc3Npb24iOwogbG9jYWxp
emVkU3RyaW5nc1siRXh0ZW5zaW9uIFNjcmlwdHMiXSA9ICJFeHRlbnNpb24gU2NyaXB0cyI7Cits
b2NhbGl6ZWRTdHJpbmdzWyJFeHRlbnNpb25zIl0gPSAiRXh0ZW5zaW9ucyI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJFeHRyYSBTY3JpcHRzIl0gPSAiRXh0cmEgU2NyaXB0cyI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJGYWRlIHVuZXhlY3V0ZWQgY29kZSJdID0gIkZhZGUgdW5leGVjdXRlZCBjb2RlIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkZhaWxlZCB0byB1cGdyYWRlIl0gPSAiRmFpbGVkIHRvIHVwZ3JhZGUi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvQ2FudmFzTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMKaW5kZXggN2I1Nzc2MzA2YWEzZjk2ZTIw
NmQxYWVhODIwODc5Mzk3ODI3MWI3Zi4uMzExOTUwZjUxZDc3YTMyNTc4MTdhZTEyYTI2MzBjZWZj
OTYxZjdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpzCkBAIC0xNjAsNiArMTYw
LDE4IEBAIFdJLkNhbnZhc01hbmFnZXIgPSBjbGFzcyBDYW52YXNNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNhbnZhc01h
bmFnZXIuRXZlbnQuUmVjb3JkaW5nU3RvcHBlZCwge2NhbnZhcywgcmVjb3JkaW5nfSk7CiAgICAg
fQogCisgICAgZXh0ZW5zaW9uRW5hYmxlZChjYW52YXNJZGVudGlmaWVyLCBleHRlbnNpb24pCisg
ICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DYW52YXNPYnNlcnZlci4KKworICAgICAg
ICBsZXQgY2FudmFzID0gdGhpcy5fY2FudmFzSWRlbnRpZmllck1hcC5nZXQoY2FudmFzSWRlbnRp
Zmllcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbnZhcyk7CisgICAgICAgIGlmICghY2Fu
dmFzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhbnZhcy5lbmFibGVFeHRlbnNp
b24oZXh0ZW5zaW9uKTsKKyAgICB9CisKICAgICBwcm9ncmFtQ3JlYXRlZChjYW52YXNJZGVudGlm
aWVyLCBwcm9ncmFtSWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJ
LkNhbnZhc09ic2VydmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DYW52YXMuanMKaW5kZXggODY3NjMzOGVhYmI2MWQ5MmYwZjU0MTIyMmFl
ZDRiMWVmMzI3NTA2Ni4uOWM0ZTExZjdjNDQ2ZmI0NDllY2NkZWQ1NGI2YWY2NTk5YzBjOWJhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nh
bnZhcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q2FudmFzLmpzCkBAIC0zOSw2ICszOSw3IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENhbnZhcyBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kb21Ob2RlID0gZG9tTm9kZSB8fCBudWxsOwog
ICAgICAgICB0aGlzLl9jc3NDYW52YXNOYW1lID0gY3NzQ2FudmFzTmFtZSB8fCAiIjsKICAgICAg
ICAgdGhpcy5fY29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcyB8fCB7fTsKKyAg
ICAgICAgdGhpcy5fZXh0ZW5zaW9ucyA9IG5ldyBTZXQ7CiAgICAgICAgIHRoaXMuX21lbW9yeUNv
c3QgPSBtZW1vcnlDb3N0IHx8IE5hTjsKICAgICAgICAgdGhpcy5fYmFja3RyYWNlID0gYmFja3Ry
YWNlIHx8IFtdOwogCkBAIC0xMTEsNiArMTEyLDcgQEAgV0kuQ2FudmFzID0gY2xhc3MgQ2FudmFz
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IGZyYW1lKCkgeyByZXR1cm4gdGhpcy5fZnJhbWU7
IH0KICAgICBnZXQgY3NzQ2FudmFzTmFtZSgpIHsgcmV0dXJuIHRoaXMuX2Nzc0NhbnZhc05hbWU7
IH0KICAgICBnZXQgY29udGV4dEF0dHJpYnV0ZXMoKSB7IHJldHVybiB0aGlzLl9jb250ZXh0QXR0
cmlidXRlczsgfQorICAgIGdldCBleHRlbnNpb25zKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9u
czsgfQogICAgIGdldCBiYWNrdHJhY2UoKSB7IHJldHVybiB0aGlzLl9iYWNrdHJhY2U7IH0KICAg
ICBnZXQgc2hhZGVyUHJvZ3JhbUNvbGxlY3Rpb24oKSB7IHJldHVybiB0aGlzLl9zaGFkZXJQcm9n
cmFtQ29sbGVjdGlvbjsgfQogICAgIGdldCByZWNvcmRpbmdDb2xsZWN0aW9uKCkgeyByZXR1cm4g
dGhpcy5fcmVjb3JkaW5nQ29sbGVjdGlvbjsgfQpAQCAtMjY1LDYgKzI2NywxNSBAQCBXSS5DYW52
YXMgPSBjbGFzcyBDYW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIH0KIAorICAgIGVuYWJs
ZUV4dGVuc2lvbihleHRlbnNpb24pCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5D
YW52YXNNYW5hZ2VyLgorCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7
CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ2FudmFzLkV2ZW50
LkV4dGVuc2lvbkVuYWJsZWQsIHtleHRlbnNpb259KTsKKyAgICB9CisKICAgICBjc3NDYW52YXND
bGllbnROb2Rlc0NoYW5nZWQoKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ2Fu
dmFzTWFuYWdlci4KQEAgLTI5OSw1ICszMTAsNiBAQCBXSS5DYW52YXMuQ29udGV4dFR5cGUgPSB7
CiAKIFdJLkNhbnZhcy5FdmVudCA9IHsKICAgICBNZW1vcnlDaGFuZ2VkOiAiY2FudmFzLW1lbW9y
eS1jaGFuZ2VkIiwKKyAgICBFeHRlbnNpb25FbmFibGVkOiAiY2FudmFzLWV4dGVuc2lvbi1lbmFi
bGVkIiwKICAgICBDU1NDYW52YXNDbGllbnROb2Rlc0NoYW5nZWQ6ICJjYW52YXMtY3NzLWNhbnZh
cy1jbGllbnQtbm9kZXMtY2hhbmdlZCIsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ2FudmFzT2JzZXJ2ZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DYW52YXNPYnNlcnZlci5qcwpp
bmRleCBkZWQyODFmYjNmYTJkY2I4ZjQ0ZGQ3ZmU0MjQyN2ZiNjBhNGFmZTYxLi42NTY3ODNkMGUz
MTVhM2U2YjIwMzU2ZWQxYzJkMDI2OGRkOGMyMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DYW52YXNPYnNlcnZlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DYW52YXNPYnNlcnZl
ci5qcwpAQCAtNTIsNiArNTIsMTEgQEAgV0kuQ2FudmFzT2JzZXJ2ZXIgPSBjbGFzcyBDYW52YXNP
YnNlcnZlcgogICAgICAgICBXSS5jYW52YXNNYW5hZ2VyLnJlY29yZGluZ0ZpbmlzaGVkKGNhbnZh
c0lkLCByZWNvcmRpbmcpOwogICAgIH0KIAorICAgIGV4dGVuc2lvbkVuYWJsZWQoY2FudmFzSWQs
IGV4dGVuc2lvbikKKyAgICB7CisgICAgICAgIFdJLmNhbnZhc01hbmFnZXIuZXh0ZW5zaW9uRW5h
YmxlZChjYW52YXNJZCwgZXh0ZW5zaW9uKTsKKyAgICB9CisKICAgICBwcm9ncmFtQ3JlYXRlZChj
YW52YXNJZCwgcHJvZ3JhbUlkKQogICAgIHsKICAgICAgICAgV0kuY2FudmFzTWFuYWdlci5wcm9n
cmFtQ3JlYXRlZChjYW52YXNJZCwgcHJvZ3JhbUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0
YWlsc1NpZGViYXJQYW5lbC5jc3MKaW5kZXggYzdkYjQ4NGJhYTRmZTQ3NzY2ZTg0NjhhOTQwZmY0
ZTY3NjQ1MjZhNi4uOTQwMWJkMThlMTJjNTIzNzE0YWJlMjBmNmRhOWI0YmU4MzA5ZGU3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFz
RGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MKQEAgLTI3LDYgKzI3
LDExIEBACiAgICAgZGlzcGxheTogYmxvY2s7CiB9CiAKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY2FudmFzIC5kZXRhaWxzLXNlY3Rpb24uY2FudmFzLWV4dGVuc2lvbnMgLmNvbnRlbnQgPiB1
bCB7CisgICAgbWFyZ2luOiA0cHggMDsKKyAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDIyLjVw
eDsKK30KKwogLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jYW52YXMgLmRldGFpbHMtc2VjdGlv
bi5jYW52YXMtYmFja3RyYWNlIC5jYWxsLWZyYW1lIHsKICAgICBtYXJnaW46IDNweDsKICAgICBm
b250LXNpemU6IDExcHg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbC5q
cwppbmRleCA3ZTM5ODM1MjZhOTA2YzdjOGQxYjFkYWQwYmU4MDdlZWZlYmFjNDg2Li41NmZiZDdk
NDAyNjRhMGI3M2Q2ZjNmMTE1ZjAzYzRiOGM4ZDFkOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZh
c0RldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTc3LDYgKzc3LDcgQEAgV0kuQ2FudmFzRGV0YWls
c1NpZGViYXJQYW5lbCA9IGNsYXNzIENhbnZhc0RldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
SS5EZXRhaWwKIAogICAgICAgICBpZiAodGhpcy5fY2FudmFzKSB7CiAgICAgICAgICAgICB0aGlz
Ll9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DYW52YXMuRXZlbnQuTWVtb3J5Q2hhbmdl
ZCwgdGhpcy5fY2FudmFzTWVtb3J5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9j
YW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DYW52YXMuRXZlbnQuRXh0ZW5zaW9uRW5hYmxl
ZCwgdGhpcy5fcmVmcmVzaEV4dGVuc2lvbnNTZWN0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIHRo
aXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNhbnZhcy5FdmVudC5DU1NDYW52YXND
bGllbnROb2Rlc0NoYW5nZWQsIHRoaXMuX3JlZnJlc2hDU1NDYW52YXNTZWN0aW9uLCB0aGlzKTsK
ICAgICAgICAgfQogCkBAIC04NCw2ICs4NSw3IEBAIFdJLkNhbnZhc0RldGFpbHNTaWRlYmFyUGFu
ZWwgPSBjbGFzcyBDYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsCiAK
ICAgICAgICAgaWYgKHRoaXMuX2NhbnZhcykgewogICAgICAgICAgICAgdGhpcy5fY2FudmFzLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQ2FudmFzLkV2ZW50Lk1lbW9yeUNoYW5nZWQsIHRoaXMuX2NhbnZh
c01lbW9yeUNoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fY2FudmFzLmFkZEV2ZW50
TGlzdGVuZXIoV0kuQ2FudmFzLkV2ZW50LkV4dGVuc2lvbkVuYWJsZWQsIHRoaXMuX3JlZnJlc2hF
eHRlbnNpb25zU2VjdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9jYW52YXMuYWRkRXZl
bnRMaXN0ZW5lcihXSS5DYW52YXMuRXZlbnQuQ1NTQ2FudmFzQ2xpZW50Tm9kZXNDaGFuZ2VkLCB0
aGlzLl9yZWZyZXNoQ1NTQ2FudmFzU2VjdGlvbiwgdGhpcyk7CiAgICAgICAgIH0KIApAQCAtMTE3
LDkgKzExOSwxNCBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFz
RGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAogCiAgICAgICAgIHRoaXMuX2F0
dHJpYnV0ZXNEYXRhR3JpZFJvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93KG51
bGwsIFdJLlVJU3RyaW5nKCJObyBBdHRyaWJ1dGVzIikpOwogCi0gICAgICAgIGxldCBhdHRyaWJ1
dGVzU2VjdGlvbiA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbigiY2FudmFzLWF0dHJpYnV0ZXMiLCBX
SS5VSVN0cmluZygiQXR0cmlidXRlcyIpKTsKLSAgICAgICAgYXR0cmlidXRlc1NlY3Rpb24uZ3Jv
dXBzID0gW25ldyBXSS5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9hdHRyaWJ1dGVzRGF0YUdy
aWRSb3ddKV07Ci0gICAgICAgIHRoaXMuX3NlY3Rpb25zLnB1c2goYXR0cmlidXRlc1NlY3Rpb24p
OworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU2VjdGlvbiA9IG5ldyBXSS5EZXRhaWxzU2VjdGlv
bigiY2FudmFzLWF0dHJpYnV0ZXMiLCBXSS5VSVN0cmluZygiQXR0cmlidXRlcyIpKTsKKyAgICAg
ICAgdGhpcy5fYXR0cmlidXRlc1NlY3Rpb24uZ3JvdXBzID0gW25ldyBXSS5EZXRhaWxzU2VjdGlv
bkdyb3VwKFt0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRSb3ddKV07CisgICAgICAgIHRoaXMuX2F0
dHJpYnV0ZXNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fc2Vj
dGlvbnMucHVzaCh0aGlzLl9hdHRyaWJ1dGVzU2VjdGlvbik7CisKKyAgICAgICAgdGhpcy5fZXh0
ZW5zaW9uc1NlY3Rpb24gPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb24oImNhbnZhcy1leHRlbnNpb25z
IiwgV0kuVUlTdHJpbmcoIkV4dGVuc2lvbnMiKSk7CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnNT
ZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMucHVz
aCh0aGlzLl9leHRlbnNpb25zU2VjdGlvbik7CiAKICAgICAgICAgdGhpcy5fY3NzQ2FudmFzQ2xp
ZW50c1JvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXSS5VSVN0cmluZygiTm9k
ZXMiKSk7CiAKQEAgLTE1Niw2ICsxNjMsNyBAQCBXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVs
ID0gY2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbAogICAg
ICAgICB0aGlzLl9yZWZyZXNoSWRlbnRpdHlTZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX3JlZnJl
c2hTb3VyY2VTZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hBdHRyaWJ1dGVzU2VjdGlv
bigpOworICAgICAgICB0aGlzLl9yZWZyZXNoRXh0ZW5zaW9uc1NlY3Rpb24oKTsKICAgICAgICAg
dGhpcy5fcmVmcmVzaENTU0NhbnZhc1NlY3Rpb24oKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaEJh
Y2t0cmFjZVNlY3Rpb24oKTsKICAgICB9CkBAIC0yNDQsMTEgKzI1MiwxMCBAQCBXSS5DYW52YXNE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRl
bmRzIFdJLkRldGFpbAogCiAgICAgX3JlZnJlc2hBdHRyaWJ1dGVzU2VjdGlvbigpCiAgICAgewot
ICAgICAgICBpZiAoaXNFbXB0eU9iamVjdCh0aGlzLl9jYW52YXMuY29udGV4dEF0dHJpYnV0ZXMp
KSB7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIERhdGFHcmlkIHRvIHNob3cgdGhlIHBsYWNl
aG9sZGVyIHRleHQuCi0gICAgICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzRGF0YUdyaWRSb3cuZGF0
YUdyaWQgPSBudWxsOworICAgICAgICBsZXQgaGFzQXR0cmlidXRlcyA9ICFpc0VtcHR5T2JqZWN0
KHRoaXMuX2NhbnZhcy5jb250ZXh0QXR0cmlidXRlcyk7CisgICAgICAgIHRoaXMuX2F0dHJpYnV0
ZXNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gIWhhc0F0dHJpYnV0ZXM7CisgICAgICAgIGlmICgh
aGFzQXR0cmlidXRlcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAg
IGxldCBkYXRhR3JpZCA9IHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdy5kYXRhR3JpZDsKICAg
ICAgICAgaWYgKCFkYXRhR3JpZCkgewpAQCAtMjY5LDYgKzI3NiwyMSBAQCBXSS5DYW52YXNEZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ2FudmFzRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRz
IFdJLkRldGFpbAogICAgICAgICBkYXRhR3JpZC51cGRhdGVMYXlvdXRJZk5lZWRlZCgpOwogICAg
IH0KIAorICAgIF9yZWZyZXNoRXh0ZW5zaW9uc1NlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0
IGhhc0VuYWJsZWRFeHRlbnNpb25zID0gdGhpcy5fY2FudmFzLmV4dGVuc2lvbnMuc2l6ZSA+IDA7
CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnNTZWN0aW9uLmVsZW1lbnQuaGlkZGVuID0gIWhhc0Vu
YWJsZWRFeHRlbnNpb25zOworICAgICAgICBpZiAoIWhhc0VuYWJsZWRFeHRlbnNpb25zKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidWwiKTsKKyAgICAgICAgZm9yIChsZXQgZXh0ZW5zaW9uIG9mIHRoaXMuX2NhbnZh
cy5leHRlbnNpb25zKSB7CisgICAgICAgICAgICBsZXQgbGlzdEVsZW1lbnQgPSBlbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIikpOworICAgICAgICAgICAgbGlz
dEVsZW1lbnQudGV4dENvbnRlbnQgPSBleHRlbnNpb247CisgICAgICAgIH0KKyAgICAgICAgdGhp
cy5fZXh0ZW5zaW9uc1NlY3Rpb24uZ3JvdXBzID0gW3tlbGVtZW50fV07CisgICAgfQorCiAgICAg
X3JlZnJlc2hDU1NDYW52YXNTZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kaWRJ
bml0aWFsTGF5b3V0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNiMmFiNDc1MjUyMTJmZmJlMDIwNDUyNzE0ZmIwYTU2Y2Nk
YmM5ZjAuLmVkMTkzNzRmZjIwNDU4M2MyMjQ0MjlkNzAzNDAxZDFkNzY3YTYxNjggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxNy0xMS0wMiAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91
c3NvLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXMgVGFiOiBzaG93IHN1cHBv
cnRlZCBHTCBleHRlbnNpb25zIGZvciBzZWxlY3RlZCBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA3MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzUyNzgyNzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAg
ICAgICAqIGluc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy5odG1sOiBBZGRlZC4KKwogMjAx
Ny0xMS0wMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBT
a2lwIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1zcGFjZS5o
dG1sIG9uIGlPUyBkZWJ1ZyBib3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NhbnZhcy9leHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
YW52YXMvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJhMmJkNjM3ZjE5OGM3
NTY4OTliYTkxMzQyMWNjYzkxY2Q3OGE0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBA
CitUZXN0IHRoYXQgQ2FudmFzTWFuYWdlciBpcyBub3RpZmllZCB3aGVuZXZlciBhIFdlYkdMIGV4
dGVuc2lvbiBpcyBlbmFibGVkIGZvciBhIGdpdmVuIGNhbnZhcyBjb250ZXh0LgorCisKKz09IFJ1
bm5pbmcgdGVzdCBzdWl0ZTogQ2FudmFzLmV4dGVuc2lvbnMKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBDYW52YXMuZXh0ZW5zaW9ucy5lbmFibGUKK1BBU1M6IFRoZSBuZXdseSBlbmFibGVkIGV4dGVu
c2lvbiBzaG91bGQgYmUgIldFQkdMX2xvc2VfY29udGV4dCIuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NhbnZhcy9leHRlbnNpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThmY2JmZTAwNzNjMTli
Mzg1YzQ2Yjk3ZDQxNWZmODk3YmFmMWUyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvZXh0ZW5zaW9ucy5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvYWQoKSB7CisgICAgd2luZG93LmNvbnRleHQgPSBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpKS5nZXRDb250ZXh0
KCJ3ZWJnbCIpOworCisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiBlbmFibGVFeHRlbnNp
b24obmFtZSkgeworICAgIHdpbmRvdy5jb250ZXh0LmdldEV4dGVuc2lvbihuYW1lKTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFz
eW5jU3VpdGUoIkNhbnZhcy5leHRlbnNpb25zIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJDYW52YXMuZXh0ZW5zaW9ucy5lbmFibGUiLAorICAgICAgICBkZXNj
cmlwdGlvbjogIkNoZWNrIHRoYXQgZW5hYmxpbmcgYW4gZXh0ZW5zaW9uIG5vdGlmaWVzIHRoZSBm
cm9udGVuZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAg
bGV0IGNhbnZhc2VzID0gV0kuY2FudmFzTWFuYWdlci5jYW52YXNlcy5maWx0ZXIoKGNhbnZhcykg
PT4gY2FudmFzLmNvbnRleHRUeXBlID09PSBXSS5DYW52YXMuQ29udGV4dFR5cGUuV2ViR0wpOwor
ICAgICAgICAgICAgaWYgKCFjYW52YXNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZWpl
Y3QoIk1pc3NpbmcgV2ViR0wgY2FudmFzLiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2FudmFzZXMu
bGVuZ3RoID09PSAxLCAiVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIFdlYkdMIGNhbnZhcy4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNhbnZhc2VzWzBdLmV4dGVuc2lvbnMu
c2l6ZSA9PT0gMCwgIlRoZSBjYW52YXMgc2hvdWxkIGhhdmUgbm8gZXh0ZW5zaW9ucyBlbmFibGVk
IGFmdGVyIGJlaW5nIGNyZWF0ZWQiKTsKKworICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uTmFt
ZSA9ICJXRUJHTF9sb3NlX2NvbnRleHQiOworICAgICAgICAgICAgY2FudmFzZXNbMF0uYXdhaXRF
dmVudChXSS5DYW52YXMuRXZlbnQuRXh0ZW5zaW9uRW5hYmxlZCkudGhlbigoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGV2ZW50LmRhdGEuZXh0
ZW5zaW9uLCBleHRlbnNpb25OYW1lLCBgVGhlIG5ld2x5IGVuYWJsZWQgZXh0ZW5zaW9uIHNob3Vs
ZCBiZSAiJHtleHRlbnNpb25OYW1lfSIuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoY2FudmFzZXNbMF0uZXh0ZW5zaW9ucy5zaXplID09PSAxLCAiVGhlIGNhbnZhcyBz
aG91bGQgbm93IGhhdmUgb25lIGV4dGVuc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChjYW52YXNlc1swXS5leHRlbnNpb25zLmhhcyhldmVudC5kYXRhLmV4dGVu
c2lvbiksIGBUaGUgb25lIGV4dGVuc2lvbiBzaG91bGQgYmUgIiR7ZXh0ZW5zaW9uTmFtZX0iLmAp
OworICAgICAgICAgICAgfSkudGhlbihyZXNvbHZlLCByZWplY3QpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBlbmFibGVFeHRlbnNpb24oIiR7ZXh0ZW5zaW9u
TmFtZX0iKWApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNB
bmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkKCki
PgorICAgIDxwPlRlc3QgdGhhdCBDYW52YXNNYW5hZ2VyIGlzIG5vdGlmaWVkIHdoZW5ldmVyIGEg
V2ViR0wgZXh0ZW5zaW9uIGlzIGVuYWJsZWQgZm9yIGEgZ2l2ZW4gY2FudmFzIGNvbnRleHQuPC9w
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>