<?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>222239</bug_id>
          
          <creation_ts>2021-02-20 15:05:22 -0800</creation_ts>
          <short_desc>Regressions from ANGLE Metal enablement</short_desc>
          <delta_ts>2021-03-16 19:15:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220076</blocked>
    
    <blocked>223260</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>ap</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>geofflang</cc>
    
    <cc>graouts</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>jonahr</cc>
    
    <cc>jonlee</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731873</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-02-20 15:05:22 -0800</bug_when>
    <thetext>Here is the list of new regressions from using the ANGLE Metal backend bug220076.

There are some new failures, some crashes and some timeouts.

  fast/canvas/webgl/context-creation-attributes.html [ Pass Failure ]
  fast/canvas/webgl/copyBufferSubData.html [ Pass Failure ]
  fast/canvas/webgl/getBufferSubData-webgl1.html [ Pass Failure ]
  fast/canvas/webgl/webgl2-buffers.html [ Pass Failure ]
  fast/canvas/webgl/webgl2-texture-upload-enums.html [ Pass Failure ]
  webgl/2.0.0/conformance/glsl/bugs/compound-assignment-type-combination.html [ Pass Failure ]
  webgl/2.0.0/conformance2/buffers/buffer-copying-contents.html [ Pass Failure ]
  webgl/2.0.0/conformance2/buffers/get-buffer-sub-data.html [ Pass Failure ]
  webgl/2.0.0/conformance2/buffers/one-large-uniform-buffer.html [ Pass Failure ]
  webgl/2.0.0/conformance2/buffers/uniform-buffers.html [ Pass Failure ]
  webgl/2.0.0/conformance2/extensions/promoted-extensions-in-shaders.html [ Pass Failure ]
  webgl/2.0.0/conformance2/glsl3/array-equality.html [ Pass Failure ]
  webgl/2.0.0/conformance2/glsl3/compound-assignment-type-combination.html [ Pass Failure ]
  webgl/2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate.html [ Pass Failure ]
  webgl/2.0.0/conformance2/glsl3/uniform-block-layout-match.html [ Pass Failure ]
  webgl/2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug.html [ Pass Failure ]
  webgl/2.0.0/conformance2/reading/read-pixels-pack-parameters.html [ Pass Failure ]
  webgl/2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html [ Pass Failure ]
  webgl/2.0.0/conformance2/rendering/uniform-block-buffer-size.html [ Pass Failure ]
  webgl/2.0.0/conformance2/state/gl-enum-tests.html [ Pass Failure ]
  webgl/2.0.0/conformance2/transform_feedback/two-unreferenced-varyings.html [ Pass Failure ]
  webgl/2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero.html [ Pass Failure ]

  fast/canvas/webgl/index-validation-with-subsequent-draws.html [ Skip ]
  webgl/2.0.0/conformance/extensions/webgl-draw-buffers.html [ Skip ]
  webgl/2.0.0/conformance/glsl/bugs/qualcomm-loop-with-continue-Skip.html [ Skip ]
  webgl/2.0.0/conformance/glsl/misc/sequence-operator-returns-constant.html [ Skip ]
  webgl/2.0.0/conformance2/glsl3/array-element-increment.html [ Skip ]
  webgl/2.0.0/conformance2/glsl3/tricky-loop-conditions.html [ Skip ]
  webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug.html [ Skip ]
  webgl/2.0.0/conformance2/rendering/blitframebuffer-stencil-only.html [ Skip ]
  webgl/2.0.0/conformance2/sync/sync-webgl-specific.html [ Skip ]
  webgl/2.0.0/conformance2/textures/misc/texel-fetch-undefined.html [ Skip ]
  webgl/2.0.0/conformance2/transform_feedback/transform_feedback.html [ Skip ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731874</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-20 15:05:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/74559652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731878</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-02-20 15:31:16 -0800</bug_when>
    <thetext>Updated list for Mac

webkit.org/b/222239 fast/canvas/webgl/context-creation-attributes.html [ Pass Failure ]
webkit.org/b/222239 fast/canvas/webgl/copyBufferSubData.html [ Pass Failure ]
webkit.org/b/222239 fast/canvas/webgl/getBufferSubData-webgl1.html [ Pass Failure ]
webkit.org/b/222239 fast/canvas/webgl/webgl2-buffers.html [ Pass Failure ]
webkit.org/b/222239 fast/canvas/webgl/webgl2-texture-upload-enums.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance/glsl/bugs/compound-assignment-type-combination.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/buffers/buffer-copying-contents.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/buffers/get-buffer-sub-data.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/buffers/one-large-uniform-buffer.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/buffers/uniform-buffers.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/extensions/promoted-extensions-in-shaders.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/glsl3/array-equality.html [ Pass Failure ]
# Note: Even when fixed, this bug needs to be marked as Slow in debug builds.
webkit.org/b/222239 webgl/2.0.0/conformance2/glsl3/compound-assignment-type-combination.html [ Pass Failure Slow ]
webkit.org/b/222239 webgl/2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/glsl3/uniform-block-layout-match.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug.html [ Pass Failure ]
# Note: the following test is marked as failing on ARM64 earlier in the file. When fixing this, that bug may remain.
webkit.org/b/222239 webgl/2.0.0/conformance2/reading/read-pixels-pack-parameters.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/rendering/uniform-block-buffer-size.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/state/gl-enum-tests.html [ Pass Failure ]
# Note: Even when fixed, this bug needs to be marked as Slow in debug builds.
webkit.org/b/222239 webgl/2.0.0/conformance2/state/gl-object-get-calls.html [ Pass Failure Slow ]
webkit.org/b/222239 webgl/2.0.0/conformance2/transform_feedback/two-unreferenced-varyings.html [ Pass Failure ]
webkit.org/b/222239 webgl/2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero.html [ Pass Failure ]
webkit.org/b/222239 fast/canvas/webgl/index-validation-with-subsequent-draws.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance/extensions/webgl-draw-buffers.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance/glsl/bugs/qualcomm-loop-with-continue-crash.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance/glsl/misc/sequence-operator-returns-constant.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance2/glsl3/array-element-increment.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance2/glsl3/tricky-loop-conditions.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance2/rendering/blitframebuffer-stencil-only.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance2/sync/sync-webgl-specific.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance2/textures/misc/texel-fetch-undefined.html [ Skip ]
webkit.org/b/222239 webgl/2.0.0/conformance2/transform_feedback/transform_feedback.html [ Skip ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737873</commentid>
    <comment_count>3</comment_count>
      <attachid>422784</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-03-09 17:29:11 -0800</bug_when>
    <thetext>Created attachment 422784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737874</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-09 17:30:29 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737877</commentid>
    <comment_count>5</comment_count>
      <attachid>422784</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-03-09 17:49:30 -0800</bug_when>
    <thetext>Comment on attachment 422784
Patch

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

&gt; Source/ThirdParty/ANGLE/ChangeLog:6
&gt; +	This patch addressed several large bits of funcitonality that was missing from the original patch.

Is it right that this patch doesn&apos;t add Apple copyright to any files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739025</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-03-12 14:11:40 -0800</bug_when>
    <thetext>Fantastic work Kyle and team getting transform feedback and UBOs working in the Metal backend, and passing more tests!

CC&apos;ing some others who will be interested in this patch. Looking forward to helping you reconcile all of your great work with upstream ANGLE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739032</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-12 14:22:36 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 422784 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740066</commentid>
    <comment_count>8</comment_count>
      <attachid>423368</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2021-03-16 11:34:16 -0700</bug_when>
    <thetext>Created attachment 423368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740224</commentid>
    <comment_count>9</comment_count>
      <attachid>423368</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-03-16 14:52:49 -0700</bug_when>
    <thetext>Comment on attachment 423368
Patch

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

&gt; Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect.h:103
&gt; +        ASSERT(0);

We probably should put a message in here.

&gt; Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect.h:113
&gt;          ASSERT(0);

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740350</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-16 19:15:17 -0700</bug_when>
    <thetext>Committed r274547: &lt;https://commits.webkit.org/r274547&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423368.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422784</attachid>
            <date>2021-03-09 17:29:11 -0800</date>
            <delta_ts>2021-03-16 11:34:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222239-20210309172910.patch</filename>
            <type>text/plain</type>
            <size>210235</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggMzgwYWYyMjgwNDczNTI1NzJkMTNkZjNmMGU0OTQ1OTAwYjBkZmU1Yi4uZWQxZWM1MGE1MzRl
ODcxYWVjNzA0ZGZjMTI5Nzk3Y2Q1ZTJhYTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5MSBAQAorMjAyMS0wMy0wOSAgS3lsZSBQaWRkaW5ndG9uICA8a3BpZGRp
bmd0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb25zIGZyb20gQU5HTEUgTWV0YWwg
ZW5hYmxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIyMjM5CisJCisJVGhpcyBwYXRjaCBhZGRyZXNzZWQgc2V2ZXJhbCBsYXJnZSBiaXRzIG9m
IGZ1bmNpdG9uYWxpdHkgdGhhdCB3YXMgbWlzc2luZyBmcm9tIHRoZSBvcmlnaW5hbCBwYXRjaC4K
KwkxKSBJbnRyb2R1Y2Ugc3VwcG9ydCBmb3IgVUJPJ3MuIFRoaXMgcGF0Y2ggYWRkcyBhIERFUVAt
Y29uZm9ybWFudCBpbXBsZW1lbnRhdGlvbiBmb3IgVUJPIHN0cnVjdHMuIFRoaXMgaW5jbHVkZXMg
Y2hhbmdlcyB0byB0aGUgdHJhbnNsYXRvciwKK2FuZCB0aGUgZnJvbnRlbmQuCisJMikgSW50cm9k
dWNlIHN1cHBvcnQgZm9yIFRyYW5zZm9ybSBmZWVkYmFjayB0byB0aGUgdHJhbnNsYXRvci4gV2Ug
dXNlIGEgc2VyaWVzIG9mIHN1YnN0aXR1dGlvbiBtYWNyb3MgYXQgcHJvZ3JhbSBsaW5rIHRpbWUg
dG8gcHJvZHVjZSBhIHRyYW5zZm9ybS1mZWVkYmFjayB2YXJpZW50IHNoYWRlciwgYW5kIHVzZSBh
IHZlcnRleCBwcmUtcGFzcyB0byBlbXVsYXRlIHRyYW5zZm9ybSBmZWVkYmFjay4KKwkzKSBWYXJp
b3VzIGZpeGVzIHRvIGhhbmRsZSBhIGZldyB3ZWJnbDIgYXNzZXJ0cywgc3VjaCBhcyBsYXJnZSB1
bmlmb3JtIGJ1ZmZlcnMuIFRoaXMgY2hhbmdlICAoaW4gUHJvZ3JhbU10bC5tbSkgd2lsbCByZXNl
cnZlIGEgdW5pZm9ybSBidWZmZXIgb2YgdHdpY2UgdGhlIG5vcm1hbCBzaXplICg0a2IpIGlmIHRo
ZSBwcm9ncmFtIHVuaWZvcm1zIGV4Y2VlZCB0aGF0IGxpbWl0LiAoRml4ZXMgd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvZ2xzbC9idWdzL2NvbXBsZXgtZ2xzbC1kb2VzLW5vdC1jcmFzaC5odG1sIHdl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItd2l0aC10b28tbWFueS11bmlm
b3Jtcy5odG1sIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1zL2dsLXVuaWZvcm0tYXJy
YXlzLmh0bWwpCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluY2x1ZGUv
cGxhdGZvcm0vRmVhdHVyZXNNdGwuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIuZ25pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oOgorICAgICAgICAoc2g6
OmdldFF1YWxpZmllclN0cmluZyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0LmNwcDoKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yTWV0YWxE
aXJlY3Q6Omluc2VydFNhbXBsZU1hc2tXcml0aW5nTG9naWMpOgorICAgICAgICAoc2g6Om1ldGFs
U2hhZGVyVHlwZUZyb21HTFNMKToKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6
OnRyYW5zbGF0ZUltcGwpOgorICAgICAgICAoc2g6OlRyYW5zbGF0b3JNZXRhbERpcmVjdDo6dHJh
bnNsYXRlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0
YWxEaXJlY3QuaDoKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uOjpUcmFu
c2xhdG9yTWV0YWxSZWZsZWN0aW9uKToKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZs
ZWN0aW9uOjphZGRVc2VyVW5pZm9ybUJ1ZmZlckJpbmRpbmcpOgorICAgICAgICAoc2g6OlRyYW5z
bGF0b3JNZXRhbFJlZmxlY3Rpb246OmFkZFVuaWZvcm1CdWZmZXJCaW5kaW5nKToKKyAgICAgICAg
KHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uOjpnZXRVc2VyVW5pZm9ybUJ1ZmZlckJpbmRp
bmdzIGNvbnN0KToKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uOjpnZXRV
c2VyVW5pZm9ybUJ1ZmZlckJpbmRpbmcgY29uc3QpOgorICAgICAgICAoc2g6OlRyYW5zbGF0b3JN
ZXRhbFJlZmxlY3Rpb246OmdldFVuaWZvcm1CdWZmZXJCaW5kaW5nIGNvbnN0KToKKyAgICAgICAg
KHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uOjpyZXNldCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0VtaXRNZXRhbC5jcHA6Cisg
ICAgICAgIChHZW5NZXRhbFRyYXZlcnNlcjo6fkdlbk1ldGFsVHJhdmVyc2VyKToKKyAgICAgICAg
KEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0T3BlbmluZ1BvaW50ZXJQYXJlbik6CisgICAgICAgIChH
ZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdENsb3NpbmdQb2ludGVyUGFyZW4pOgorICAgICAgICAoR2V0
T3BlcmF0b3JTdHJpbmcpOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRQb3N0UXVh
bGlmaWVyKToKKyAgICAgICAgKEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0VHlwZSk6CisgICAgICAg
IChHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEZpZWxkRGVjbGFyYXRpb24pOgorICAgICAgICAoR2Vu
TWV0YWxUcmF2ZXJzZXI6OmVtaXRBdHRyaWJ1dGVEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5N
ZXRhbFRyYXZlcnNlcjo6ZW1pdFVuaWZvcm1CdWZmZXJEZWNsYXJhdGlvbik6CisgICAgICAgIChH
ZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdFN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKEdlbk1l
dGFsVHJhdmVyc2VyOjplbWl0T3JkaW5hcnlWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAg
KEdlbk1ldGFsVHJhdmVyc2VyOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChHZW5NZXRhbFRyYXZl
cnNlcjo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRGdW5j
dGlvblNpZ25hdHVyZSk6CisgICAgICAgIChHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEZ1bmN0aW9u
UmV0dXJuKToKKyAgICAgICAgKEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0RnVuY3Rpb25QYXJhbWV0
ZXIpOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OnZpc2l0RnVuY3Rpb25EZWZpbml0aW9u
KToKKyAgICAgICAgKEdlbk1ldGFsVHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAg
IChSZXF1aXJlc1NlbWljb2xvblRlcm1pbmF0b3IpOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJz
ZXI6OnZpc2l0QmxvY2spOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OnZpc2l0QnJhbmNo
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvRml4VHlwZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZlcnRleEluZGV4SUQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHNoOjpSZXdyaXRlcjo6UmV3cml0ZXIpOgorICAgICAgICAoc2g6Oklu
dHJvZHVjZVZlcnRleEFuZEluc3RhbmNlSW5kZXgpOgorICAgICAgICAqIHNyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9JbnRyb2R1Y2VWZXJ0ZXhJbmRleElELmg6
IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9MYXlvdXQuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9MYXlvdXQuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTW9kaWZ5U3RydWN0LmNwcDoKKyAgICAgICAg
KHNoOjpUcnlDcmVhdGVNb2RpZmllZFN0cnVjdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVjdC5oOgorICAgICAgICAq
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9QaXBlbGluZS5j
cHA6CisgICAgICAgIChQaXBlbGluZTo6dXNlcyBjb25zdCk6CisgICAgICAgIChQaXBlbGluZTo6
Z2V0U3RydWN0VHlwZU5hbWUgY29uc3QpOgorICAgICAgICAoUGlwZWxpbmU6OmdldFN0cnVjdElu
c3RhbmNlTmFtZSBjb25zdCk6CisgICAgICAgIChBbGxvd1BhY2tpbmcpOgorICAgICAgICAoQWxs
b3dQYWRkaW5nKToKKyAgICAgICAgKFNhdHVyYXRlVmVjdG9yT2YpOgorICAgICAgICAoUGlwZWxp
bmU6OmV4dGVybmFsU3RydWN0TW9kaWZ5Q29uZmlnIGNvbnN0KToKKyAgICAgICAgKFBpcGVsaW5l
OjphbHdheXNSZXF1aXJlc0xvY2FsVmFyaWFibGVEZWNsYXJhdGlvbkluTWFpbiBjb25zdCk6Cisg
ICAgICAgIChQaXBlbGluZTo6aXNQaXBlbGluZU91dCBjb25zdCk6CisgICAgICAgIChQaXBlbGlu
ZTo6ZXh0ZXJuYWxBZGRyZXNzU3BhY2UgY29uc3QpOgorICAgICAgICAoUGlwZWxpbmVTdHJ1Y3Rz
OjptYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yTWV0YWxEaXJlY3QvUGlwZWxpbmUuaDoKKyAgICAgICAgKHNoOjpQaXBlbGluZVNjb3Bl
ZDo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvck1ldGFsRGlyZWN0L1Byb2dyYW1QcmVsdWRlLmNwcDoKKyAgICAgICAgKHNoOjpQcm9n
cmFtUHJlbHVkZTo6UHJvZ3JhbVByZWx1ZGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFtUHJlbHVkZS5oOgorICAgICAgICAo
c2g6OlByb2dyYW1QcmVsdWRlQ29uZmlnOjpQcm9ncmFtUHJlbHVkZUNvbmZpZyk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1JlZHVjZUlu
dGVyZmFjZUJsb2Nrcy5jcHA6CisgICAgICAgIChzaDo6UmVkdWNlcjo6UmVkdWNlcik6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Jld3Jp
dGVQaXBlbGluZXMuY3BwOgorICAgICAgICAoc2g6OkdlbmVyYXRlUGlwZWxpbmVTdHJ1Y3Q6OmV4
ZWMpOgorICAgICAgICAoc2g6OkdlbmVyYXRlUGlwZWxpbmVTdHJ1Y3Q6OmNyZWF0ZUludGVybmFs
UGlwZWxpbmVTdHJ1Y3QpOgorICAgICAgICAoc2g6OlBpcGVsaW5lRnVuY3Rpb25FbnY6OmdldFVw
ZGF0ZWRGdW5jdGlvbik6CisgICAgICAgIChzaDo6UmV3cml0ZVBpcGVsaW5lcyk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1N5bWJvbEVu
di5jcHA6CisgICAgICAgIChTeW1ib2xFbnY6OnJlbW92ZVNwYWNlKToKKyAgICAgICAgKFN5bWJv
bEVudjo6cmVtb3ZlUG9pbnRlcik6CisgICAgICAgIChTeW1ib2xFbnY6Om1hcmtBc1VCTyk6Cisg
ICAgICAgIChTeW1ib2xFbnY6OmlzVUJPIGNvbnN0KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvU3ltYm9sRW52Lmg6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZl
cnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKHNoOjpOYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycyk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvTmFtZU5hbWVsZXNz
VW5pZm9ybUJ1ZmZlcnMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvdXRpbC5jcHA6CisgICAgICAgIChzaDo6SXNCdWlsdGluT3V0cHV0VmFyaWFibGUpOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvQ29udGV4dENHTC5jcHA6CisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0J1ZmZlck10bC5oOgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9CdWZmZXJNdGwubW06CisgICAgICAgIChyeDo6
SW5kZXhDb252ZXJzaW9uQnVmZmVyTXRsOjpJbmRleENvbnZlcnNpb25CdWZmZXJNdGwpOgorICAg
ICAgICAocng6OkluZGV4Q29udmVyc2lvbkJ1ZmZlck10bDo6Z2V0UmFuZ2VGb3JDb252ZXJ0ZWRC
dWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRs
Lmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwubW06
CisgICAgICAgIChyeDo6Q29udGV4dE10bDo6aGFuZGxlRGlydHlEcml2ZXJVbmlmb3Jtcyk6Cisg
ICAgICAgIChyeDo6Q29udGV4dE10bDo6aGFuZGxlRGlydHlHcmFwaGljc1RyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyc0VtdWxhdGlvbik6CisgICAgICAgIChyeDo6Q29udGV4dE10bDo6aGFuZGxlRGly
dHlEZXB0aEJpYXMpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNw
bGF5TXRsLm1tOgorICAgICAgICAocng6OkRpc3BsYXlNdGw6OmdldE1heFN1cHBvcnRlZEVTVmVy
c2lvbiBjb25zdCk6CisgICAgICAgIChyeDo6RGlzcGxheU10bDo6Z2VuZXJhdGVDb25maWdzKToK
KyAgICAgICAgKHJ4OjpEaXNwbGF5TXRsOjplbnN1cmVDYXBzSW5pdGlhbGl6ZWQgY29uc3QpOgor
ICAgICAgICAocng6OkRpc3BsYXlNdGw6OmluaXRpYWxpemVGZWF0dXJlcyk6CisgICAgICAgIChy
eDo6RGlzcGxheU10bDo6aW5pdGlhbGl6ZVNoYWRlckxpYnJhcnkpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9GcmFtZUJ1ZmZlck10bC5oOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLmg6CisgICAgICAgIChyeDo6UHJvZ3Jh
bU10bDo6Y3JlYXRlTXNsU2hhZGVyTGliKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpnZXRY
ZmJCaW5kaW5ncyBjb25zdCk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6Z2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZSBjb25zdCk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6Z2V0WGZiTXNs
U291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvUHJvZ3JhbU10bC5tbToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpQcm9ncmFtTXRs
KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpkZXN0cm95KToKKyAgICAgICAgKHJ4OjpQcm9n
cmFtTXRsOjpyZXNldCk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6c2F2ZVRyYW5zbGF0ZWRT
aGFkZXJzKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpsb2FkVHJhbnNsYXRlZFNoYWRlcnMp
OgorICAgICAgICAocng6OlByb2dyYW1NdGw6OmxpbmtJbXBsU3BpcnYpOgorICAgICAgICAocng6
OlByb2dyYW1NdGw6OmxpbmtJbXBsRGlyZWN0KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjps
aW5rSW1wbCk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6bGlua1RyYW5zbGF0ZWRTaGFkZXJz
KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpnZXRCdWZmZXJQb29sKToKKyAgICAgICAgKHJ4
OjpQcm9ncmFtTXRsOjpyZXNpemVEZWZhdWx0VW5pZm9ybUJsb2Nrc01lbW9yeSk6CisgICAgICAg
IChyeDo6UHJvZ3JhbU10bDo6Z2V0U3BlY2lhbGl6ZWRTaGFkZXIpOgorICAgICAgICAocng6OlBy
b2dyYW1NdGw6OmNyZWF0ZU1zbFNoYWRlckxpYik6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6
Y29tbWl0VW5pZm9ybXMpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9R
dWVyeU10bC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9SZW5kZXJC
dWZmZXJNdGwubW06CisgICAgICAgIChyeDo6UmVuZGVyYnVmZmVyTXRsOjpzZXRTdG9yYWdlSW1w
bCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1JlbmRlclRhcmdldE10
bC5tbToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXRNdGw6OnNldFdpdGhJbXBsaWNpdE1TVGV4
dHVyZSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0TXRsOjpyZXNldCk6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1NoYWRlck10bC5tbToKKyAgICAgICAgKHJ4OjpT
aGFkZXJNdGw6OmNvbXBpbGUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9TdXJmYWNlTXRsLm1tOgorICAgICAgICAocng6OldpbmRvd1N1cmZhY2VNdGw6OmluaXRpYWxp
emUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRsLm1t
OgorICAgICAgICAocng6OlRleHR1cmVNdGw6OmVuc3VyZVNhbXBsZXJTdGF0ZUNyZWF0ZWQpOgor
ICAgICAgICAocng6OlRleHR1cmVNdGw6OnNldFBlclNsaWNlU3ViSW1hZ2UpOgorICAgICAgICAo
cng6OlRleHR1cmVNdGw6OmluaXRpYWxpemVDb250ZW50cyk6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL1RyYW5zZm9ybUZlZWRiYWNrTXRsLm1tOgorICAgICAgICAqIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0ZXhBcnJheU10bC5tbToKKyAgICAgICAgKHJ4
OjpWZXJ0ZXhBcnJheU10bDo6Z2V0SW5kZXhCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL210bF9jb25zdGFudHMuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF9tYXAuanNvbjoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLm1tOgorICAgICAgICAocng6
Om10bDo6Rm9ybWF0Ojppbml0KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvbXRsX2Zvcm1hdF91dGlscy5tbToKKyAgICAgICAgKHJ4OjptdGw6OkZvcm1hdFRhYmxlOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2ds
c2xhbmdfbXRsX3V0aWxzLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L210bF9nbHNsYW5nX210bF91dGlscy5tbToKKyAgICAgICAgKHJ4OjptdGw6OnVwZGF0ZVNoYWRl
ckF0dHJpYnV0ZXMpOgorICAgICAgICAocng6Om10bDo6U3Vic3RpdHV0ZVRyYW5zZm9ybUZlZWRi
YWNrTWFya2Vycyk6CisgICAgICAgIChyeDo6bXRsOjpHZW5lcmF0ZVRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ091dHB1dCk6CisgICAgICAgIChyeDo6bXRsOjpHZW5lcmF0ZVRyYW5zZm9ybUZlZWRi
YWNrRW11bGF0aW9uT3V0cHV0cyk6CisgICAgICAgIChyeDo6bXRsOjpnZXRSZWZsZWN0aW9uRnJv
bUNvbXBpbGVyKToKKyAgICAgICAgKHJ4OjptdGw6Okdsc2xhbmdHZXRNU0wpOgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfcmVuZGVyX3V0aWxzLm1tOgorICAgICAg
ICAocng6Om10bDo6VHJhbnNmb3JtRmVlZGJhY2tVdGlsczo6Y3JlYXRlTXNsWGZiTGlicmFyeSk6
CisgICAgICAgIChyeDo6bXRsOjpUcmFuc2Zvcm1GZWVkYmFja1V0aWxzOjpnZXRUcmFuc2Zvcm1G
ZWVkYmFja1JlbmRlclBpcGVsaW5lKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvbXRsX3Jlc291cmNlcy5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9tdGxfcmVzb3VyY2VzLm1tOgorICAgICAgICAocng6Om10bDo6VGV4dHVyZTo6VGV4dHVy
ZSk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9zdGF0ZV9jYWNo
ZS5tbToKKyAgICAgICAgKHJ4OjptdGw6OlNhbXBsZXJEZXNjOjpTYW1wbGVyRGVzYyk6CisgICAg
ICAgIChyeDo6bXRsOjpTYW1wbGVyRGVzYzo6cmVzZXQpOgorICAgICAgICAocng6Om10bDo6UmVu
ZGVyUGlwZWxpbmVDYWNoZTo6UmVuZGVyUGlwZWxpbmVDYWNoZSk6CisgICAgICAgIChyeDo6bXRs
OjpSZW5kZXJQaXBlbGluZUNhY2hlOjpjcmVhdGVSZW5kZXJQaXBlbGluZVN0YXRlKToKKyAgICAg
ICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3V0aWxzLmg6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF91dGlscy5tbToKKyAgICAgICAgKHJ4Ojpt
dGw6OkdldFVzZXJTZXRPckhpZ2hlc3RNU0xWZXJzaW9uKToKKyAgICAgICAgKHJ4OjptdGw6OkNy
ZWF0ZVNoYWRlckxpYnJhcnkpOgorICAgICAgICAocng6Om10bDo6R2V0SGlnaGVzdFN1cHBvcnRl
ZE1TTFZlcnNpb24pOiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9zaGFkZXJzL2JsaXQubWV0YWw6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL3NoYWRlcnMvZm9ybWF0X2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvc2hhZGVycy9tdGxfZGVmYXVsdF9zaGFkZXJzX3NyY19hdXRvZ2VuLmlu
YzoKKwogMjAyMS0wMy0wMyAgS3lsZSBQaWRkaW5ndG9uICA8a3BpZGRpbmd0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFN1cHBvcnQgRGVwdGgyNF9TdGVuY2lsOCBzaW11bGF0aW9uIGluIHRoZSBN
VExTaW11bGF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlZTg2Mjc3OGFlMmM0MjgzMmVkYjI4YzQz
NDIyMjM5ZjQ2YmNhOTEuLjZjODExNWU2YzA3NzVmMzQwMWI2YzdmMThhYTFlZjA2NGY4N2M1OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTE4Myw2ICsxMTgzLDEwIEBACiAJCUZGMkQyRjU0MjVDOEIx
NEEwMDJGQjY5OSAvKiBGaXhUeXBlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjJEMkY1MjI1QzhCMTRBMDAyRkI2OTkgLyogRml4
VHlwZUNvbnN0cnVjdG9ycy5oICovOyB9OwogCQlGRjJEMkY1NTI1QzhCMTRBMDAyRkI2OTkgLyog
Rml4VHlwZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkYyRDJGNTIyNUM4QjE0QTAwMkZCNjk5IC8qIEZpeFR5cGVDb25zdHJ1Y3Rv
cnMuaCAqLzsgfTsKIAkJRkYyRDJGNTYyNUM4QjE0QTAwMkZCNjk5IC8qIEZpeFR5cGVDb25zdHJ1
Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkYyRDJGNTMyNUM4QjE0QTAwMkZCNjk5IC8qIEZpeFR5cGVDb25zdHJ1Y3RvcnMuY3BwICovOyB9
OworCQlGRjMzMjg0NTI1RjZDQTlFMDA1RkRGQzQgLyogTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMzMy
ODQzMjVGNkNBOUQwMDVGREZDNCAvKiBOYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5oICovOyB9
OworCQlGRjMzMjg0NjI1RjZDQTlFMDA1RkRGQzQgLyogTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYz
MzI4NDQyNUY2Q0E5RDAwNUZERkM0IC8qIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmNwcCAq
LzsgfTsKKwkJRkYzMzI4NDkyNUY2Q0FCOTAwNUZERkM0IC8qIEludHJvZHVjZVZlcnRleEluZGV4
SUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYz
MzI4NDcyNUY2Q0FCOTAwNUZERkM0IC8qIEludHJvZHVjZVZlcnRleEluZGV4SUQuY3BwICovOyB9
OworCQlGRjMzMjg0QTI1RjZDQUI5MDA1RkRGQzQgLyogSW50cm9kdWNlVmVydGV4SW5kZXhJRC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYzMzI4NDgy
NUY2Q0FCOTAwNUZERkM0IC8qIEludHJvZHVjZVZlcnRleEluZGV4SUQuaCAqLzsgfTsKIAkJRkY4
MUZFRDAyNTgxOEQ2ODAwODk0RTI0IC8qIG10bF9nbHNsYW5nX3V0aWxzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjgxRkU4MDI1ODE4RDY4MDA4OTRF
MjQgLyogbXRsX2dsc2xhbmdfdXRpbHMuaCAqLzsgfTsKIAkJRkY4MUZFRDEyNTgxOEQ2ODAwODk0
RTI0IC8qIFByb2dyYW1NdGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZGODFGRTgxMjU4MThENjgwMDg5NEUyNCAvKiBQcm9ncmFtTXRsLmggKi87IH07
CiAJCUZGODFGRUQyMjU4MThENjgwMDg5NEUyNCAvKiBEaXNwbGF5TXRsX2FwaS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY4MUZFODIyNTgxOEQ2ODAw
ODk0RTI0IC8qIERpc3BsYXlNdGxfYXBpLmggKi87IH07CkBAIC0yMTcyLDYgKzIxNzYsMTAgQEAK
IAkJRkIzOUQyQkYxMjAwRjNFNjAwMDg4RTY5IC8qIFNoYWRlckxhbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IFNoYWRlckxhbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkYyRDJGNTIyNUM4QjE0QTAwMkZCNjk5IC8qIEZpeFR5cGVDb25zdHJ1Y3RvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRml4VHlwZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRjJEMkY1MzI1QzhCMTRBMDAyRkI2OTkgLyogRml4VHlwZUNvbnN0cnVj
dG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaXhUeXBlQ29uc3RydWN0b3JzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkYzMzI4NDMyNUY2Q0E5RDAwNUZERkM0IC8qIE5h
bWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZGMzMyODQ0MjVGNkNBOUQwMDVGREZDNCAvKiBOYW1lTmFtZWxlc3NVbmlmb3JtQnVm
ZmVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYW1lTmFtZWxl
c3NVbmlmb3JtQnVmZmVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGMzMy
ODQ3MjVGNkNBQjkwMDVGREZDNCAvKiBJbnRyb2R1Y2VWZXJ0ZXhJbmRleElELmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludHJvZHVjZVZlcnRleEluZGV4SUQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjMzMjg0ODI1RjZDQUI5MDA1RkRGQzQg
LyogSW50cm9kdWNlVmVydGV4SW5kZXhJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRyb2R1Y2VWZXJ0ZXhJbmRleElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZGODFGRTgwMjU4MThENjgwMDg5NEUyNCAvKiBtdGxfZ2xzbGFuZ191dGlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBtdGxfZ2xzbGFuZ191dGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRjgxRkU4MTI1ODE4RDY4MDA4OTRFMjQgLyogUHJvZ3Jh
bU10bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9ncmFtTXRsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGODFGRTgyMjU4MThENjgwMDg5NEUyNCAvKiBE
aXNwbGF5TXRsX2FwaS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
TXRsX2FwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI0Myw3ICsyMjUxLDYg
QEAKIAkJRkY4MUZGMTUyNTgxOTBDQTAwODk0RTI0IC8qIFRyYW5zbGF0b3JNZXRhbERpcmVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2xhdG9yTWV0YWxEaXJlY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY4MUZGMTYyNTgxOTBDQTAwODk0RTI0
IC8qIFRyYW5zbGF0b3JNZXRhbERpcmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUcmFuc2xhdG9yTWV0YWxEaXJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRjgxRkYxNzI1ODE5MENBMDA4OTRFMjQgLyogU3RhdGljVHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUZGODFGRjE4MjU4MTkwQ0EwMDg5NEUyNCAvKiBUcmFuc2xhdG9yTWV0
YWxEaXJlY3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhbnNsYXRvck1ldGFsRGlyZWN0OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjgxRkYxOTI1ODE5MENBMDA4OTRFMjQgLyog
VHJhbnNsYXRvck1ldGFsVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVHJhbnNsYXRvck1ldGFsVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRjgxRkYxQTI1ODE5MENBMDA4OTRFMjQgLyogVHJhbnNsYXRvck1ldGFsVXRpbHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNsYXRvck1ldGFsVXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY4MUZGMjEyNTgxOTE5NzAwODk0RTI0IC8q
IE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFtZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzM4LDcgKzIzNDUsNiBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGRjgxRkYyMDI1ODE5MTk3MDA4OTRF
MjQgLyogVHJhbnNsYXRvck1ldGFsRGlyZWN0ICovLAotCQkJCUZGODFGRjE4MjU4MTkwQ0EwMDg5
NEUyNCAvKiBUcmFuc2xhdG9yTWV0YWxEaXJlY3QgKi8sCiAJCQkJNUNCRDU5NjkyMjgyNkEwMDAw
MkIyMkFBIC8qIHRyZWVvcHMgKi8sCiAJCQkJNUM1NUQ2RUEyMjgyNkM5ODAwQjVCQTJDIC8qIHRy
ZWV1dGlsICovLAogCQkJCTVDMURCQkZCMUIwNDM3NUYwMDIzNTU1MiAvKiBBU1RNZXRhZGF0YUhM
U0wuY3BwICovLApAQCAtMzA4Myw2ICszMDg5LDggQEAKIAkJCQk1QzU1RDYxRjIyODI2Qjk0MDBC
NUJBMkMgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5oICovLAogCQkJCTVDNTVENjNEMjI4MjZCOUIw
MEI1QkEyQyAvKiBOYW1lRW1iZWRkZWRVbmlmb3JtU3RydWN0cy5jcHAgKi8sCiAJCQkJNUM1NUQ2
MEQyMjgyNkI5MTAwQjVCQTJDIC8qIE5hbWVFbWJlZGRlZFVuaWZvcm1TdHJ1Y3RzLmggKi8sCisJ
CQkJRkYzMzI4NDQyNUY2Q0E5RDAwNUZERkM0IC8qIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJz
LmNwcCAqLywKKwkJCQlGRjMzMjg0MzI1RjZDQTlEMDA1RkRGQzQgLyogTmFtZU5hbWVsZXNzVW5p
Zm9ybUJ1ZmZlcnMuaCAqLywKIAkJCQk1QzU1RDY0QTIyODI2QjlFMDBCNUJBMkMgLyogUHJ1bmVF
bXB0eUNhc2VzLmNwcCAqLywKIAkJCQk1QzU1RDYxQjIyODI2QjkzMDBCNUJBMkMgLyogUHJ1bmVF
bXB0eUNhc2VzLmggKi8sCiAJCQkJNUM1NUQ2MTIyMjgyNkI5MTAwQjVCQTJDIC8qIFBydW5lTm9P
cHMuY3BwICovLApAQCAtMzU4OCw2ICszNTk2LDggQEAKIAkJCQlGRjgxRkY0QzI1ODE5MTk3MDA4
OTRFMjQgLyogSG9pc3RDb25zdGFudHMuaCAqLywKIAkJCQlGRjgxRkY1MTI1ODE5MTk3MDA4OTRF
MjQgLyogSWRHZW4uY3BwICovLAogCQkJCUZGODFGRjM4MjU4MTkxOTcwMDg5NEUyNCAvKiBJZEdl
bi5oICovLAorCQkJCUZGMzMyODQ3MjVGNkNBQjkwMDVGREZDNCAvKiBJbnRyb2R1Y2VWZXJ0ZXhJ
bmRleElELmNwcCAqLywKKwkJCQlGRjMzMjg0ODI1RjZDQUI5MDA1RkRGQzQgLyogSW50cm9kdWNl
VmVydGV4SW5kZXhJRC5oICovLAogCQkJCUZGODFGRjMyMjU4MTkxOTcwMDg5NEUyNCAvKiBMYXlv
dXQuY3BwICovLAogCQkJCUZGODFGRjQwMjU4MTkxOTcwMDg5NEUyNCAvKiBMYXlvdXQuaCAqLywK
IAkJCQlGRjgxRkY1QTI1ODE5MTk3MDA4OTRFMjQgLyogTWFwRnVuY3Rpb25zVG9EZWZpbml0aW9u
cy5jcHAgKi8sCkBAIC00MjUyLDYgKzQyNjIsNyBAQAogCQkJCTVDNTVENzA4MjI4MjZDQjMwMEI1
QkEyQyAvKiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZG
ODFGRjlFMjU4MUEzQzIwMDg5NEUyNCAvKiBJbnRlcm1SZWJ1aWxkLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzU1RDcwMTIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtVHJhdmVyc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZGMzMyODRBMjVGNkNBQjkwMDVGREZDNCAvKiBJbnRyb2R1Y2VWZXJ0ZXhJ
bmRleElELmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0NENTk3NzIyODRGQTgzMDAxOEYyRDggLyog
SU9TdXJmYWNlU3VyZmFjZUNHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzQkNFNTUyMzYxMTMz
QTAwRkMzOUU1IC8qIElPU3VyZmFjZVN1cmZhY2VFQUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RjgxRkVGNDI1ODE4RDY5MDA4OTRFMjQgLyogSU9TdXJmYWNlU3VyZmFjZU10bC5oIGluIEhlYWRl
cnMgKi8sCkBAIC00MjkwLDYgKzQzMDEsNyBAQAogCQkJCUZGODFGRjVFMjU4MTkxOTcwMDg5NEUy
NCAvKiBOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDY2OTIyODI2QjlGMDBCNUJBMkMg
LyogTmFtZUVtYmVkZGVkVW5pZm9ybVN0cnVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGQTBD
MkM4MjVDQjZBNzcwMDEwNTMwNiAvKiBOYW1lRW1iZWRkZWRVbmlmb3JtU3RydWN0c01ldGFsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRjMzMjg0NTI1RjZDQTlFMDA1RkRGQzQgLyogTmFtZU5hbWVs
ZXNzVW5pZm9ybUJ1ZmZlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzMDMwNzBCMjMwNUY2QjUw
MDJEQTk3MiAvKiBub19kZXN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzU1RDcwNzIy
ODI2Q0IzMDBCNUJBMkMgLyogTm9kZVNlYXJjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkY4MUZG
OUIyNTgxQTNDMjAwODk0RTI0IC8qIE5vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4MTEs
NiArNDgyMyw3IEBACiAJCQkJNUM1NUQ3MDQyMjgyNkNCMzAwQjVCQTJDIC8qIEludGVybU5vZGVQ
YXR0ZXJuTWF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRjgxRkY5RDI1ODFBM0MyMDA4
OTRFMjQgLyogSW50ZXJtUmVidWlsZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1RDcwMjIy
ODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtVHJhdmVyc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RkYzMzI4NDkyNUY2Q0FCOTAwNUZERkM0IC8qIEludHJvZHVjZVZlcnRleEluZGV4SUQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNDRDU5NzkyMjg0RkE4MzAwMThGMkQ4IC8qIElPU3VyZmFjZVN1
cmZhY2VDR0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzQkNFNUMyMzYxMTMzQTAwRkMzOUU1
IC8qIElPU3VyZmFjZVN1cmZhY2VFQUdMLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkY4MUZFRUQy
NTgxOEQ2OTAwODk0RTI0IC8qIElPU3VyZmFjZVN1cmZhY2VNdGwubW0gaW4gU291cmNlcyAqLywK
QEAgLTQ4NDYsNiArNDg1OSw3IEBACiAJCQkJRkY4MUZGNUIyNTgxOTE5NzAwODk0RTI0IC8qIE5h
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ2QjYyMjgyNkJDODAwQjVCQTJDIC8qIE5h
bWVFbWJlZGRlZFVuaWZvcm1TdHJ1Y3RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGQTBDMkM3
MjVDQjZBNzcwMDEwNTMwNiAvKiBOYW1lRW1iZWRkZWRVbmlmb3JtU3RydWN0c01ldGFsLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZGMzMyODQ2MjVGNkNBOUUwMDVGREZDNCAvKiBOYW1lTmFtZWxl
c3NVbmlmb3JtQnVmZmVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTVFQkRCRjFGQ0U0NEJG
MDBBQzdBODkgLyogbnVsbF9mdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDRDU5
NjkyMjg0Rjc5NjAwMThGMkQ4IC8qIE9ic2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
MURCQzMzMUIwNDM3NUYwMDIzNTU1MiAvKiBPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVy
ZXNNdGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVy
ZXNNdGwuaAppbmRleCA5YTBiZWUwMzdhODlmMzFjOGQ4NTcxYTVjMDEzMmNmN2YwOWZiMWE5Li5i
YWY3N2VhMDgzYzJhNDhiYmZkNDUzNzcxYTE5ZGRkZTFmYzVlZTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzTXRsLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc010bC5oCkBA
IC0xMTUsNiArMTE1LDExIEBAIHN0cnVjdCBGZWF0dXJlc010bCA6IEZlYXR1cmVTZXRCYXNlCiAg
ICAgRmVhdHVyZSBlbXVsYXRlVHJhbnNmb3JtRmVlZGJhY2sgPSB7CiAgICAgICAgICJlbXVsYXRl
X3RyYW5zZm9ybV9mZWVkYmFjayIsIEZlYXR1cmVDYXRlZ29yeTo6TWV0YWxGZWF0dXJlcywKICAg
ICAgICAgIlR1cm4gdGhpcyBvbiB0byBhbGxvdyB0cmFuc2Zvcm0gZmVlZGJhY2sgaW4gTWV0YWwg
dXNpbmcgYSAyLXBhc3MgVlMgZm9yIEdMRVMzLiIsICZtZW1iZXJzfTsKKyAgICAKKyAgICBGZWF0
dXJlIHJld3JpdGVSb3dNYWpvck1hdHJpY2VzID0geworICAgICAgICAgICAgInJld3JpdGVfcm93
X21ham9yX21hdHJpY2VzIiwgRmVhdHVyZUNhdGVnb3J5OjpNZXRhbEZlYXR1cmVzLAorICAgICAg
ICAgICAgIlJld3JpdGUgcm93IG1ham9yIG1hdHJpY2VzIGluIHNoYWRlcnMgYXMgY29sdW1uIG1h
am9yLiIsCisgICAgICAgICAgICAmbWVtYmVyc307CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgYW5n
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci5nbmkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ25pCmluZGV4IGYyYmFjOTcw
YzdkNDEzYTI2OGU1ZGI4NzE5YTU1ZDNmZTQ5YjcxNzUuLmQ5NzJkOWJkYjE2ZGQ3NmIyN2MyYzY4
ODFjN2JjMmM4MmQwYTY4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci5nbmkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
LmduaQpAQCAtNjMsNiArNjMsOCBAQCBhbmdsZV90cmFuc2xhdG9yX3NvdXJjZXMgPSBbCiAgICJz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiLAogICAic3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvSXNBU1REZXB0aEJlbG93TGltaXQuY3BwIiwKICAgInNyYy9jb21waWxlci90cmFu
c2xhdG9yL0lzQVNURGVwdGhCZWxvd0xpbWl0LmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvdHJlZV9vcHMvTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMuaCIsCisgICJzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci90cmVlX29wcy9OYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5jcHAiLAog
ICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwIiwKICAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL09wZXJhdG9yLmgiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0
cHV0VHJlZS5jcHAiLApAQCAtMjA3LDYgKzIwOSw3IEBAIGFuZ2xlX3RyYW5zbGF0b3Jfc291cmNl
cyA9IFsKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1VzZUludGVyZmFjZUJs
b2NrRmllbGRzLmgiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvVmVjdG9y
aXplVmVjdG9yU2NhbGFyQXJpdGhtZXRpYy5jcHAiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvdHJlZV9vcHMvVmVjdG9yaXplVmVjdG9yU2NhbGFyQXJpdGhtZXRpYy5oIiwKKyAgInNyYy9j
b21waWxlci90cmFuc2xhdG9yL3RyZWVfdXRpbC9Bc1R5cGVkLmgiLAogICAic3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvdHJlZV91dGlsL0J1aWx0SW4uaCIsCiAgICJzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX3V0aWwvQnVpbHRJbl9FU1NMX2F1dG9nZW4uaCIsCiAgICJzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci90cmVlX3V0aWwvQnVpbHRJbl9jb21wbGV0ZV9hdXRvZ2VuLmgiLApAQCAtMjIw
LDYgKzIyMyw4IEBAIGFuZ2xlX3RyYW5zbGF0b3Jfc291cmNlcyA9IFsKICAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL3RyZWVfdXRpbC9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCIsCiAgICJz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvSW50ZXJtTm9kZV91dGlsLmNwcCIsCiAg
ICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvSW50ZXJtTm9kZV91dGlsLmgiLAor
ICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0ludGVybVJlYnVpbGQuY3BwIiwK
KyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfdXRpbC9JbnRlcm1SZWJ1aWxkLmgiLAog
ICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0ludGVybVRyYXZlcnNlLmNwcCIs
CiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvSW50ZXJtVHJhdmVyc2UuaCIs
CiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvTm9kZVNlYXJjaC5oIiwKQEAg
LTMzMCw2ICszMzUsNzMgQEAgYW5nbGVfdHJhbnNsYXRvcl9saWJfbWV0YWxfc291cmNlcyA9IFsK
ICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0xGb3JNZXRhbC5tbSIs
CiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWwuY3BwIiwKICAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbC5oIiwKKyAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5jcHAiLAorICAic3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmgiLAorICAic3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0FkZEV4cGxpY2l0VHlwZUNhc3RzLmNwcCIs
CisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvQWRkRXhw
bGljaXRUeXBlQ2FzdHMuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvQXN0SGVscGVycy5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0L0FzdEhlbHBlcnMuaCIsCisgICJzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvQ29uc3RhbnROYW1lcy5oIiwKKyAgInNyYy9j
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9EZWJ1Zy5oIiwKKyAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9EZWJ1Z1NpbmsuaCIs
CisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRGlzY292
ZXJEZXBlbmRlbnRGdW5jdGlvbnMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9EaXNjb3ZlckRlcGVuZGVudEZ1bmN0aW9ucy5oIiwKKyAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9EaXNjb3ZlckVuY2xv
c2luZ0Z1bmN0aW9uVHJhdmVyc2VyLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvRGlzY292ZXJFbmNsb3NpbmdGdW5jdGlvblRyYXZlcnNlci5o
IiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9FbWl0
TWV0YWwuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERp
cmVjdC9FbWl0TWV0YWwuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvRW52aXJvbm1lbnRWYXJpYWJsZS5oIiwKKyAgInNyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Ib2lzdENvbnN0YW50cy5jcHAiLAorICAic3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0hvaXN0Q29uc3RhbnRz
LmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0lk
R2VuLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvSWRHZW4uaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxE
aXJlY3QvTGF5b3V0LmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvTGF5b3V0LmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvck1ldGFsRGlyZWN0L01hcEZ1bmN0aW9uc1RvRGVmaW5pdGlvbnMuY3BwIiwKKyAgInNyYy9j
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9NYXBGdW5jdGlvbnNUb0Rl
ZmluaXRpb25zLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFs
RGlyZWN0L01hcFN5bWJvbHMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9NYXBTeW1ib2xzLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVjdC5jcHAiLAorICAic3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVjdC5oIiwKKyAg
InNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9OYW1lLmNwcCIs
CisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTmFtZS5o
IiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Ob2Rl
VHlwZS5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9QaXBlbGluZS5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1l
dGFsRGlyZWN0L1BpcGVsaW5lLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvck1ldGFsRGlyZWN0L1Byb2dyYW1QcmVsdWRlLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUHJvZ3JhbVByZWx1ZGUuaCIsCisgICJzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmVkdWNlSW50ZXJmYWNl
QmxvY2tzLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxE
aXJlY3QvUmVkdWNlSW50ZXJmYWNlQmxvY2tzLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1JlZmVyZW5jZS5oIiwKKyAgInNyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlQ2FzZURlY2xhcmF0aW9ucy5j
cHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Jl
d3JpdGVDYXNlRGVjbGFyYXRpb25zLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvck1ldGFsRGlyZWN0L1Jld3JpdGVHbG9iYWxRdWFsaWZpZXJEZWNscy5jcHAiLAorICAi
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Jld3JpdGVHbG9i
YWxRdWFsaWZpZXJEZWNscy5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JNZXRhbERpcmVjdC9SZXdyaXRlS2V5d29yZHMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlS2V5d29yZHMuaCIsCisgICJzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZU91dEFyZ3Mu
Y3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9S
ZXdyaXRlT3V0QXJncy5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JN
ZXRhbERpcmVjdC9SZXdyaXRlUGlwZWxpbmVzLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZVBpcGVsaW5lcy5oIiwKKyAgInNyYy9j
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlVW5hZGRyZXNz
YWJsZVJlZmVyZW5jZXMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JNZXRhbERpcmVjdC9SZXdyaXRlVW5hZGRyZXNzYWJsZVJlZmVyZW5jZXMuaCIsCisgICJzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvU2VwYXJhdGVDb21wb3Vu
ZEV4cHJlc3Npb25zLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvU2VwYXJhdGVDb21wb3VuZEV4cHJlc3Npb25zLmgiLAorICAic3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1NlcGFyYXRlQ29tcG91bmRTdHJ1
Y3REZWNsYXJhdGlvbnMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JNZXRhbERpcmVjdC9TZXBhcmF0ZUNvbXBvdW5kU3RydWN0RGVjbGFyYXRpb25zLmgiLAorICAi
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1NraXBwaW5nVHJh
dmVyc2VyLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGly
ZWN0L1N5bWJvbEVudi5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ck1ldGFsRGlyZWN0L1N5bWJvbEVudi5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9Ub3Bvc29ydFN0cnVjdHMuY3BwIiwKKyAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Ub3Bvc29ydFN0cnVjdHMuaCIsCisg
ICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvV3JhcE1haW4u
Y3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9X
cmFwTWFpbi5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERp
cmVjdC9UcmFuc3Bvc2VSb3dNYWpvck1hdHJpY2VzLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvVHJhbnNwb3NlUm93TWFqb3JNYXRyaWNlcy5o
IiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9JbnRy
b2R1Y2VWZXJ0ZXhJbmRleElELmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yTWV0YWxEaXJlY3QvSW50cm9kdWNlVmVydGV4SW5kZXhJRC5oIiwKKyAgInNyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbFV0aWxzLmNwcCIsCisgICJzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxVdGlscy5oIiwKIF0KIAogYW5nbGVfcHJlcHJv
Y2Vzc29yX3NvdXJjZXMgPSBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9CYXNlVHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oCmluZGV4IDUwNzVhYjNlZjUz
ZTU4NjU3NjIyMTJmMTViZmZmMTk2ZmU2ZjgxMDMuLmJiMDZkZmVhN2VmYzI4NDc1NmNkN2ZmZGEw
MWU4OTYzOTE5NmViY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oCkBAIC05NTUsNiArOTU1LDcg
QEAgZW51bSBUUXVhbGlmaWVyCiAgICAgLy8gYnVpbHQtaW5zIHdyaXR0ZW4gYnkgZnJhZ21lbnQg
c2hhZGVyCiAgICAgRXZxRnJhZ0NvbG9yLAogICAgIEV2cUZyYWdEYXRhLAorICAgIEV2cVNhbXBs
ZU1hc2ssCiAKICAgICBFdnFGcmFnRGVwdGgsICAgICAvLyBnbF9GcmFnRGVwdGggZm9yIEVTU0wz
MDAuCiAgICAgRXZxRnJhZ0RlcHRoRVhULCAgLy8gZ2xfRnJhZ0RlcHRoRVhUIGZvciBFU1NMMTAw
LCBFWFRfZnJhZ19kZXB0aC4KQEAgLTEzMDUsNiArMTMwNiw3IEBAIGlubGluZSBjb25zdCBjaGFy
ICpnZXRRdWFsaWZpZXJTdHJpbmcoVFF1YWxpZmllciBxKQogICAgIGNhc2UgRXZxRnJhZ0RlcHRo
OiAgICAgICAgICAgICAgcmV0dXJuICJGcmFnRGVwdGgiOwogICAgIGNhc2UgRXZxU2Vjb25kYXJ5
RnJhZ0NvbG9yRVhUOiAgcmV0dXJuICJTZWNvbmRhcnlGcmFnQ29sb3JFWFQiOwogICAgIGNhc2Ug
RXZxU2Vjb25kYXJ5RnJhZ0RhdGFFWFQ6ICAgcmV0dXJuICJTZWNvbmRhcnlGcmFnRGF0YUVYVCI7
CisgICAgY2FzZSBFdnFTYW1wbGVNYXNrOiAgICAgICAgICAgICByZXR1cm4gIlNhbXBsZU1hc2si
OwogICAgIGNhc2UgRXZxVmlld0lET1ZSOiAgICAgICAgICAgICAgcmV0dXJuICJWaWV3SURPVlIi
OwogICAgIGNhc2UgRXZxVmlld3BvcnRJbmRleDogICAgICAgICAgcmV0dXJuICJWaWV3cG9ydElu
ZGV4IjsKICAgICBjYXNlIEV2cUxheWVyOiAgICAgICAgICAgICAgICAgIHJldHVybiAiTGF5ZXIi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5jcHAKaW5kZXgg
YjlkZDQzMTMwZGI3ZTEzMDBiMzdhYjAwNjhhZjNhOTU2MjU4MWEyNS4uODk2MzQ0NGQ5NmRhODMz
MjFjZmZiOGE5MjU1MGMxMDliNTVmOGY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yTWV0YWxEaXJlY3QuY3BwCkBAIC0zMSw5ICszMSwxMSBAQAogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1N5bWJvbEVudi5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1RvcG9zb3J0U3Ry
dWN0cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGly
ZWN0L1dyYXBNYWluLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvSW50cm9kdWNlVmVydGV4SW5kZXhJRC5oIgogI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsVXRpbHMuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL3RyZWVfb3BzL0luaXRpYWxpemVWYXJpYWJsZXMuaCIKICNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9OYW1lRW1iZWRkZWRVbmlmb3Jt
U3RydWN0c01ldGFsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9O
YW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvdHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVJbmFjdGl2ZUludGVyZmFjZVZhcmlhYmxl
cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmV3cml0ZUF0b21p
Y0NvdW50ZXJzLmgiCkBAIC00OCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX3V0aWwvUmVwbGFjZUNsaXBEaXN0YW5jZVZhcmlhYmxlLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvUmVwbGFjZVZhcmlhYmxlLmgiCiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvUnVuQXRUaGVFbmRPZlNoYWRlci5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmV3cml0ZVJvd01ham9yTWF0
cmljZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3V0aWwuaCIKIAogbmFtZXNw
YWNlIHNoCkBAIC01OCwzNiArNjEsMjQgQEAgbmFtZXNwYWNlCiAKIGNvbnN0ZXhwciBOYW1lIGtD
b3ZlcmFnZU1hc2tGaWVsZCgiY292ZXJhZ2VNYXNrIiwgU3ltYm9sVHlwZTo6VXNlckRlZmluZWQp
OwogY29uc3RleHByIE5hbWUga0VtdUluc3RhbmNlSURGaWVsZCgiZW11bGF0ZWRJbnN0YW5jZUlE
IiwgU3ltYm9sVHlwZTo6VXNlckRlZmluZWQpOworY29uc3RleHByIE5hbWUga1NhbXBsZU1hc2tX
cml0ZUZ1bmNOYW1lKCJ3cml0ZVNhbXBsZU1hc2siLCBTeW1ib2xUeXBlOjpBbmdsZUludGVybmFs
KTsKICNpZiAwCi1jb25zdGV4cHIgTmFtZSBrU2FtcGxlTWFza1dyaXRlRnVuY05hbWUoIldyaXRl
U2FtcGxlTWFzayIpOwogY29uc3RleHByIE5hbWUga0Rpc2NhcmRXcmFwcGVyRnVuY05hbWUoIkRp
c2NhcmRXcmFwcGVyIik7CiAjZW5kaWYKIGNvbnN0ZXhwciBOYW1lIGtFbXVsYXRlZERlcHRoUmFu
Z2VQYXJhbXMoIkRlcHRoUmFuZ2VQYXJhbXMiKTsKIGNvbnN0ZXhwciBOYW1lIGtVbmlmb3Jtc0Js
b2NrTmFtZSgiQW5nbGVVbmlmb3JtcyIpOwotY29uc3RleHByIE5hbWUga1VuaWZvcm1zVmFyTmFt
ZSgiYW5nbGVVbmlmb3JtcyIpOworY29uc3RleHByIE5hbWUga1VuaWZvcm1zVmFyTmFtZShrVW5p
Zm9ybXNWYXIpOwogY29uc3RleHByIE5hbWUga0ZsaXBwZWRQb2ludENvb3JkTmFtZSgiZmxpcHBl
ZFBvaW50Q29vcmQiLCBTeW1ib2xUeXBlOjpVc2VyRGVmaW5lZCk7CiBjb25zdGV4cHIgTmFtZSBr
RmxpcHBlZEZyYWdDb29yZE5hbWUoImZsaXBwZWRGcmFnQ29vcmQiLCBTeW1ib2xUeXBlOjpVc2Vy
RGVmaW5lZCk7CiAKLWNvbnN0ZXhwciBjb25zdCBjaGFyIGtWaWV3cG9ydFtdICAgICAgICAgICAg
ID0gInZpZXdwb3J0IjsKLWNvbnN0ZXhwciBjb25zdCBjaGFyIGtIYWxmUmVuZGVyQXJlYVtdICAg
ICAgID0gImhhbGZSZW5kZXJBcmVhIjsKLWNvbnN0ZXhwciBjb25zdCBjaGFyIGtGbGlwWFlbXSAg
ICAgICAgICAgICAgID0gImZsaXBYWSI7Ci1jb25zdGV4cHIgY29uc3QgY2hhciBrTmVnRmxpcFhZ
W10gICAgICAgICAgICA9ICJuZWdGbGlwWFkiOwotY29uc3RleHByIGNvbnN0IGNoYXIga0NsaXBE
aXN0YW5jZXNFbmFibGVkW10gPSAiY2xpcERpc3RhbmNlc0VuYWJsZWQiOwotY29uc3RleHByIGNv
bnN0IGNoYXIga1hmYkFjdGl2ZVVucGF1c2VkW10gICAgPSAieGZiQWN0aXZlVW5wYXVzZWQiOwot
Y29uc3RleHByIGNvbnN0IGNoYXIga1hmYlZlcnRpY2VzUGVyRHJhd1tdICAgPSAieGZiVmVydGlj
ZXNQZXJEcmF3IjsKLWNvbnN0ZXhwciBjb25zdCBjaGFyIGtYZmJCdWZmZXJPZmZzZXRzW10gICAg
ID0gInhmYkJ1ZmZlck9mZnNldHMiOwotY29uc3RleHByIGNvbnN0IGNoYXIga0FjYkJ1ZmZlck9m
ZnNldHNbXSAgICAgPSAiYWNiQnVmZmVyT2Zmc2V0cyI7Ci1jb25zdGV4cHIgY29uc3QgY2hhciBr
RGVwdGhSYW5nZVtdICAgICAgICAgICA9ICJkZXB0aFJhbmdlIjsKLWNvbnN0ZXhwciBjb25zdCBj
aGFyIGtQcmVSb3RhdGlvbltdICAgICAgICAgID0gInByZVJvdGF0aW9uIjsKLWNvbnN0ZXhwciBj
b25zdCBjaGFyIGtGcmFnUm90YXRpb25bXSAgICAgICAgID0gImZyYWdSb3RhdGlvbiI7Ci0KLWNv
bnN0ZXhwciBjb25zdCBUVmFyaWFibGUga2dsX1ZlcnRleEluZGV4TWV0YWwoCi0gICAgQnVpbHRJ
bklkOjpnbF9WZXJ0ZXhJbmRleCwKLSAgICBJbW11dGFibGVTdHJpbmcoImdsX1ZlcnRleEluZGV4
IiksCitjb25zdGV4cHIgY29uc3QgVFZhcmlhYmxlIGtnbF9WZXJ0ZXhJRE1ldGFsKAorICAgIEJ1
aWx0SW5JZDo6Z2xfVmVydGV4SUQsCisgICAgSW1tdXRhYmxlU3RyaW5nKCJnbF9WZXJ0ZXhJRCIp
LAogICAgIFN5bWJvbFR5cGU6OkJ1aWx0SW4sCiAgICAgVEV4dGVuc2lvbjo6VU5ERUZJTkVELAog
ICAgIFN0YXRpY1R5cGU6OkdldDxFYnRVSW50LCBFYnBIaWdoLCBFdnFWZXJ0ZXhJRCwgMSwgMT4o
KSk7CiAKKwogY29uc3RleHByIHNpemVfdCBrTnVtR3JhcGhpY3NEcml2ZXJVbmlmb3JtcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTI7CiBjb25zdGV4
cHIgc3RkOjphcnJheTxjb25zdCBjaGFyICosIGtOdW1HcmFwaGljc0RyaXZlclVuaWZvcm1zPiBr
R3JhcGhpY3NEcml2ZXJVbmlmb3JtTmFtZXMgPSB7CiAgICAge2tWaWV3cG9ydCwga0hhbGZSZW5k
ZXJBcmVhLCBrRmxpcFhZLCBrTmVnRmxpcFhZLCBrQ2xpcERpc3RhbmNlc0VuYWJsZWQsIGtYZmJB
Y3RpdmVVbnBhdXNlZCwKQEAgLTQxNywxNCArNDA4LDEzIEBAIFRJbnRlcm1TZXF1ZW5jZSAqR2V0
TWFpblNlcXVlbmNlKFRJbnRlcm1CbG9jayAmcm9vdCkKIH0KIAogQU5HTEVfTk9fRElTQ0FSRCBi
b29sIEFwcGVuZFZlcnRleFNoYWRlclRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0VG9NYWluKFRDb21w
aWxlciAmY29tcGlsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sRW52ICZtU3ltYm9sRW52LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1CbG9jayAmcm9vdCkKIHsKICAgICBUU3ltYm9sVGFibGUgJnN5bWJv
bFRhYmxlID0gY29tcGlsZXIuZ2V0U3ltYm9sVGFibGUoKTsKLSAgICBUVmFyaWFibGUgKnhmYlBs
YWNlaG9sZGVyID0gbmV3IFRWYXJpYWJsZSgmc3ltYm9sVGFibGUsIEltbXV0YWJsZVN0cmluZygi
QEAgWEZCLU9VVCBAQCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ldyBUVHlwZSgpLCBTeW1ib2xUeXBlOjpBbmdsZUludGVybmFsKTsKIAogICAgIC8v
IEFwcGVuZCB0aGUgYXNzaWdubWVudCBhcyBhIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBz
aGFkZXIuCi0gICAgcmV0dXJuIFJ1bkF0VGhlRW5kT2ZTaGFkZXIoJmNvbXBpbGVyLCAmcm9vdCwg
bmV3IFRJbnRlcm1TeW1ib2woeGZiUGxhY2Vob2xkZXIpLCAmc3ltYm9sVGFibGUpOworICAgIHJl
dHVybiBSdW5BdFRoZUVuZE9mU2hhZGVyKCZjb21waWxlciwgJnJvb3QsICYobVN5bWJvbEVudi5j
YWxsRnVuY3Rpb25PdmVybG9hZChOYW1lKCJAQFhGQi1PVVRAQCIpLCAqbmV3IFRUeXBlKCksICpu
ZXcgVEludGVybVNlcXVlbmNlKCkpKSwgJnN5bWJvbFRhYmxlKTsKIH0KIAogLy8gVGhpcyBvcGVy
YXRpb24gcGVyZm9ybXMgdGhlIHZpZXdwb3J0IGRlcHRoIHRyYW5zbGF0aW9uIG5lZWRlZCBieSBW
dWxrYW4uIEluIEdMIHRoZSB2aWV3cG9ydApAQCAtNjA0LDEwICs1OTQsOSBAQCB2b2lkIEFkZEZy
YWdEZXB0aERlY2xhcmF0aW9uKFRJbnRlcm1CbG9jayAmcm9vdCwgVFN5bWJvbFRhYmxlICZzeW1i
b2xUYWJsZSkKIH0KIAogdm9pZCBBZGRGcmFnRGVwdGhFWFREZWNsYXJhdGlvbihUQ29tcGlsZXIg
JmNvbXBpbGVyLCBUSW50ZXJtQmxvY2sgJnJvb3QsIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUp
Ci17ICAgCit7CiAgICAgY29uc3QgVEludGVybVN5bWJvbCAqZ2xGcmFnRGVwdGhFeHQgPSBGaW5k
U3ltYm9sTm9kZSgmcm9vdCwgSW1tdXRhYmxlU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSk7CiAg
ICAgQVNTRVJUKGdsRnJhZ0RlcHRoRXh0KTsKLQogICAgIC8vIFJlcGxhY2UgZ2xfRnJhZ0RhdGEg
d2l0aCBvdXIgZ2xvYmFsbHkgZGVmaW5lZCBmcmFnZGF0YS4KICAgICBpZiAoIVJlcGxhY2VWYXJp
YWJsZSgmY29tcGlsZXIsICZyb290LCAmKGdsRnJhZ0RlcHRoRXh0LT52YXJpYWJsZSgpKSwgQnVp
bHRJblZhcmlhYmxlOjpnbF9GcmFnRGVwdGgoKSkpCiAgICAgewpAQCAtNjE1LDYgKzYwNCwxNCBA
QCB2b2lkIEFkZEZyYWdEZXB0aEVYVERlY2xhcmF0aW9uKFRDb21waWxlciAmY29tcGlsZXIsIFRJ
bnRlcm1CbG9jayAmcm9vdCwgVFN5bWJvbAogICAgIH0KICAgICBBZGRGcmFnRGVwdGhEZWNsYXJh
dGlvbihyb290LCBzeW1ib2xUYWJsZSk7CiB9Cit2b2lkIEFkZFNhbXBsZU1hc2tEZWNsYXJhdGlv
bihUSW50ZXJtQmxvY2sgJnJvb3QsIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCit7CisgICAg
VFR5cGUgKmdsX1NhbXBsZU1hc2tUeXBlICAgID0gbmV3IFRUeXBlKEVidFVJbnQsIEVicEhpZ2gs
IEV2cVNhbXBsZU1hc2ssIDEsIDEpOworICAgIGNvbnN0IFRWYXJpYWJsZSAqZ2xfU2FtcGxlTWFz
ayA9CisgICAgICAgIG5ldyBUVmFyaWFibGUoJnN5bWJvbFRhYmxlLCBJbW11dGFibGVTdHJpbmco
ImdsX1NhbXBsZU1hc2siKSwgZ2xfU2FtcGxlTWFza1R5cGUsIFN5bWJvbFR5cGU6OkJ1aWx0SW4s
CisgICAgICAgICAgICAgICAgICAgICAgVEV4dGVuc2lvbjo6VU5ERUZJTkVEKTsKKyAgICByb290
Lmluc2VydENoaWxkTm9kZXMoRmluZE1haW5JbmRleCgmcm9vdCksIFRJbnRlcm1TZXF1ZW5jZXtu
ZXcgVEludGVybURlY2xhcmF0aW9ue2dsX1NhbXBsZU1hc2t9fSk7Cit9CiAKIEFOR0xFX05PX0RJ
U0NBUkQgYm9vbCBBZGRGcmFnRGF0YURlY2xhcmF0aW9uKFRDb21waWxlciAmY29tcGlsZXIsIFRJ
bnRlcm1CbG9jayAmcm9vdCkKIHsKQEAgLTcwNSw3ICs3MDIsNiBAQCBBTkdMRV9OT19ESVNDQVJE
IGJvb2wgQXBwZW5kVmVydGV4U2hhZGVyUG9zaXRpb25ZQ29ycmVjdGlvblRvTWFpbihUQ29tcGls
ZXIgJmNvbQogICAgIC8vIEFwcGVuZCB0aGUgYXNzaWdubWVudCBhcyBhIHN0YXRlbWVudCBhdCB0
aGUgZW5kIG9mIHRoZSBzaGFkZXIuCiAgICAgcmV0dXJuIFJ1bkF0VGhlRW5kT2ZTaGFkZXIoJmNv
bXBpbGVyLCAmcm9vdCwgYXNzaWdubWVudCwgJnN5bWJvbFRhYmxlKTsKIH0KLQogfSAgLy8gbmFt
ZXNwYWNlCiAKIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6VHJhbnNsYXRvck1ldGFsRGlyZWN0KHNo
OjpHTGVudW0gdHlwZSwKQEAgLTcyNiw2ICs3MjIsNTUgQEAgY29uc3QgY2hhciAqVHJhbnNsYXRv
ck1ldGFsRGlyZWN0OjpHZXRSYXN0ZXJpemF0aW9uRGlzY2FyZEVuYWJsZWRDb25zdE5hbWUoKQog
ICAgIHJldHVybiBjb25zdGFudF9uYW1lczo6a1Jhc3Rlcml6YXRpb25EaXNjYXJkRW5hYmxlZC5y
YXdOYW1lKCkuZGF0YSgpOwogfQogCisvLyBBZGQgc2FtcGxlX21hc2sgd3JpdGluZyB0byBtYWlu
LCBndWFyZGVkIGJ5IHRoZSBmdW5jdGlvbiBjb25zdGFudAorLy8ga0NvdmVyYWdlTWFza0VuYWJs
ZWROYW1lCitBTkdMRV9OT19ESVNDQVJEIGJvb2wgVHJhbnNsYXRvck1ldGFsRGlyZWN0OjppbnNl
cnRTYW1wbGVNYXNrV3JpdGluZ0xvZ2ljKFRJbnRlcm1CbG9jayAmcm9vdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFZhcmlhYmxlICZkcml2ZXJVbmlmb3JtcykKK3sKKyAgICBUU3ltYm9sVGFi
bGUgKnN5bWJvbFRhYmxlID0gJmdldFN5bWJvbFRhYmxlKCk7CisKKyAgICAvLyBDcmVhdGUga0Nv
dmVyYWdlTWFza0VuYWJsZWQgYW5kIGtTYW1wbGVNYXNrV3JpdGVGdW5jTmFtZSB2YXJpYWJsZSBy
ZWZlcmVuY2VzLgorICAgIFRUeXBlICpib29sVHlwZSA9IG5ldyBUVHlwZShFYnRCb29sKTsKKyAg
ICBib29sVHlwZS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKyAgICBUVmFyaWFibGUgKmNvdmVy
YWdlTWFza0VuYWJsZWRWYXIgPQorICAgICAgICBuZXcgVFZhcmlhYmxlKHN5bWJvbFRhYmxlLCBj
b25zdGFudF9uYW1lczo6a0NvdmVyYWdlTWFza0VuYWJsZWQucmF3TmFtZSgpLCBib29sVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xUeXBlOjpBbmdsZUludGVybmFsKTsKKworICAg
IFRGdW5jdGlvbiAqc2FtcGxlTWFza1dyaXRlRnVuYyA9CisgICAgICAgIG5ldyBURnVuY3Rpb24o
c3ltYm9sVGFibGUsIGtTYW1wbGVNYXNrV3JpdGVGdW5jTmFtZS5yYXdOYW1lKCksIGtTYW1wbGVN
YXNrV3JpdGVGdW5jTmFtZS5zeW1ib2xUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgU3Rh
dGljVHlwZTo6R2V0QmFzaWM8RWJ0Vm9pZD4oKSwgZmFsc2UpOworCisgICAgVFR5cGUgKnVpbnRU
eXBlID0gbmV3IFRUeXBlKEVidFVJbnQpOworICAgIFRWYXJpYWJsZSAqbWFza0FyZyA9CisgICAg
ICAgIG5ldyBUVmFyaWFibGUoc3ltYm9sVGFibGUsIEltbXV0YWJsZVN0cmluZygibWFzayIpLCB1
aW50VHlwZSwgU3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCk7CisgICAgc2FtcGxlTWFza1dyaXRl
RnVuYy0+YWRkUGFyYW1ldGVyKG1hc2tBcmcpOworCisgICAgVFZhcmlhYmxlICpnbF9TYW1wbGVN
YXNrQXJnID0KKyAgICAgICAgbmV3IFRWYXJpYWJsZShzeW1ib2xUYWJsZSwgSW1tdXRhYmxlU3Ry
aW5nKCJnbF9TYW1wbGVNYXNrIiksIHVpbnRUeXBlLCBTeW1ib2xUeXBlOjpBbmdsZUludGVybmFs
KTsKKyAgICBzYW1wbGVNYXNrV3JpdGVGdW5jLT5hZGRQYXJhbWV0ZXIoZ2xfU2FtcGxlTWFza0Fy
Zyk7CisKKyAgICAvLyBJbnNlcnQgdGhpcyBjb2RlIHRvIHRoZSBlbmQgb2YgbWFpbigpCisgICAg
Ly8gaWYgKEFOR0xFX0NvdmVyYWdlTWFza0VuYWJsZWQpCisgICAgLy8geworICAgIC8vICAgICAg
QU5HTEVfd3JpdGVTYW1wbGVNYXNrKEFOR0xFX2FuZ2xlVW5pZm9ybXMuY292ZXJhZ2VNYXNrLCBB
TkdMRV9mcmFnbWVudE91dC5nbF9TYW1wbGVNYXNrKTsKKyAgICAvLyB9CisgICAgVEludGVybVNl
cXVlbmNlICphcmdzID0gbmV3IFRJbnRlcm1TZXF1ZW5jZTsKKyAgICBUSW50ZXJtQmluYXJ5ICpj
b3ZlcmFnZU1hc2sgPSBDcmVhdGVEcml2ZXJVbmlmb3JtUmVmKGRyaXZlclVuaWZvcm1zLCBrQ292
ZXJhZ2VNYXNrRmllbGQucmF3TmFtZSgpLmRhdGEoKSk7CisgICAgYXJncy0+cHVzaF9iYWNrKGNv
dmVyYWdlTWFzayk7CisgICAgY29uc3QgVEludGVybVN5bWJvbCAqZ2xfU2FtcGxlTWFzayA9IEZp
bmRTeW1ib2xOb2RlKCZyb290LCBJbW11dGFibGVTdHJpbmcoImdsX1NhbXBsZU1hc2siKSk7Cisg
ICAgYXJncy0+cHVzaF9iYWNrKGdsX1NhbXBsZU1hc2stPmRlZXBDb3B5KCkpOworCisgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqY2FsbFNhbXBsZU1hc2tXcml0ZUZ1bmMgPQorICAgICAgICBUSW50ZXJt
QWdncmVnYXRlOjpDcmVhdGVGdW5jdGlvbkNhbGwoKnNhbXBsZU1hc2tXcml0ZUZ1bmMsIGFyZ3Mp
OworICAgIFRJbnRlcm1CbG9jayAqY2FsbEJsb2NrID0gbmV3IFRJbnRlcm1CbG9jazsKKyAgICBj
YWxsQmxvY2stPmFwcGVuZFN0YXRlbWVudChjYWxsU2FtcGxlTWFza1dyaXRlRnVuYyk7CisKKyAg
ICBUSW50ZXJtU3ltYm9sICpjb3ZlcmFnZU1hc2tFbmFibGVkID0gbmV3IFRJbnRlcm1TeW1ib2wo
Y292ZXJhZ2VNYXNrRW5hYmxlZFZhcik7CisgICAgVEludGVybUlmRWxzZSAqaWZDYWxsICAgICAg
ICAgICAgICA9IG5ldyBUSW50ZXJtSWZFbHNlKGNvdmVyYWdlTWFza0VuYWJsZWQsIGNhbGxCbG9j
aywgbnVsbHB0cik7CisKKyAgICByZXR1cm4gUnVuQXRUaGVFbmRPZlNoYWRlcih0aGlzLCAmcm9v
dCwgaWZDYWxsLCBzeW1ib2xUYWJsZSk7Cit9CisKIEFOR0xFX05PX0RJU0NBUkQgYm9vbCBUcmFu
c2xhdG9yTWV0YWxEaXJlY3Q6Omluc2VydFJhc3Rlcml6YXRpb25EaXNjYXJkTG9naWMoVEludGVy
bUJsb2NrICZyb290KQogewogICAgIFRTeW1ib2xUYWJsZSAqc3ltYm9sVGFibGUgPSAmZ2V0U3lt
Ym9sVGFibGUoKTsKQEAgLTg5OSwxMSArOTQ0LDI4IEBAIHN0YXRpYyBzdGQ6OnNldDxJbW11dGFi
bGVTdHJpbmc+IEdldE1zbEtleXdvcmRzKCkKICAgICByZXR1cm4ga2V5d29yZHM7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgTWV0YWxTaGFkZXJUeXBlIG1ldGFsU2hhZGVyVHlwZUZyb21HTFNMKHNoOjpH
TGVudW0gc2hhZGVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNoYWRlclR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICByZXR1cm4gTWV0YWxTaGFk
ZXJUeXBlOjpWZXJ0ZXg7CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgorICAgICAg
ICAgICAgcmV0dXJuIE1ldGFsU2hhZGVyVHlwZTo6RnJhZ21lbnQ7CisgICAgICAgIGNhc2UgR0xf
Q09NUFVURV9TSEFERVI6CisgICAgICAgICAgICBBU1NFUlQoMCAmJiAiY29tcHV0ZSBzaGFkZXJz
IG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIik7CisgICAgICAgICAgICByZXR1cm4gTWV0YWxTaGFk
ZXJUeXBlOjpDb21wdXRlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUKDAg
JiYgIkludmFsaWQgc2hhZGVyIHR5cGUuIik7CisgICAgICAgICAgICByZXR1cm4gTWV0YWxTaGFk
ZXJUeXBlOjpOb25lOworICAgIH0KK30KKwogYm9vbCBUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRy
YW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVP
cHRpb25zKQogewogICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUgPSBnZXRTeW1ib2xUYWJs
ZSgpOwogICAgIElkR2VuIGlkR2VuOwotICAgIFByb2dyYW1QcmVsdWRlQ29uZmlnIHBwYzsKKyAg
ICBQcm9ncmFtUHJlbHVkZUNvbmZpZyBwcGMobWV0YWxTaGFkZXJUeXBlRnJvbUdMU0woZ2V0U2hh
ZGVyVHlwZSgpKSk7CiAKICAgICBpZiAoIVdyYXBNYWluKCp0aGlzLCBpZEdlbiwgcm9vdCkpCiAg
ICAgewpAQCAtMTA3MSw2ICsxMTMzLDcgQEAgYm9vbCBUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRy
YW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRpb25zIGMKIAogICAg
IHsKICAgICAgICAgYm9vbCB1c2VzSW5zdGFuY2VJZCA9IGZhbHNlOworICAgICAgICBib29sIHVz
ZXNWZXJ0ZXhJZCA9IGZhbHNlOwogICAgICAgICBmb3IgKGNvbnN0IFNoYWRlclZhcmlhYmxlICZ2
YXIgOiBtQXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHZhci5pc0J1aWx0
SW4oKSkKQEAgLTEwNzksNiArMTE0MiwxMCBAQCBib29sIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6
dHJhbnNsYXRlSW1wbChUSW50ZXJtQmxvY2sgJnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgYwogICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgdXNlc0luc3RhbmNlSWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodmFyLm5hbWUgPT0gImds
X1ZlcnRleElEIikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVzZXNW
ZXJ0ZXhJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKQEAgLTEwODgsOCArMTE1NSwxNyBAQCBib29sIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6
dHJhbnNsYXRlSW1wbChUSW50ZXJtQmxvY2sgJnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgYwogICAg
ICAgICAgICAgICAgIEZpbmRNYWluSW5kZXgoJnJvb3QpLAogICAgICAgICAgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZXtuZXcgVEludGVybURlY2xhcmF0aW9ue0J1aWx0SW5WYXJpYWJsZTo6Z2xfSW5z
dGFuY2VJRCgpfX0pOwogICAgICAgICB9CisgICAgICAgIGlmICh1c2VzVmVydGV4SWQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghUmVwbGFjZVZhcmlhYmxlKHRoaXMsICZyb290LCBCdWls
dEluVmFyaWFibGU6OmdsX1ZlcnRleElEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAma2dsX1ZlcnRleElETWV0YWwpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERlY2xhcmVSaWdodEJl
Zm9yZU1haW4ocm9vdCwga2dsX1ZlcnRleElETWV0YWwpOworICAgICAgICB9CiAgICAgfQotCisg
ICAgU3ltYm9sRW52IHN5bWJvbEVudigqdGhpcywgcm9vdCk7CiAgICAgLy8gRGVjbGFyZSBnbF9G
cmFnQ29sb3IgYW5kIGdsRnJhZ0RhdGEgYXMgd2ViZ2xfRnJhZ0NvbG9yIGFuZCB3ZWJnbF9GcmFn
RGF0YQogICAgIC8vIGlmIGl0J3MgY29yZSBwcm9maWxlIHNoYWRlcnMgYW5kIHRoZXkgYXJlIHVz
ZWQuCiAgICAgaWYgKGdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCkBAIC0x
MTE2LDkgKzExOTIsOSBAQCBib29sIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6dHJhbnNsYXRlSW1w
bChUSW50ZXJtQmxvY2sgJnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgYwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKLSAgICAgICAgYm9vbCB1c2VzRnJhZ0NvbG9yID0gZmFsc2U7Ci0gICAgICAg
IGJvb2wgdXNlc0ZyYWdEYXRhICA9IGZhbHNlOwotICAgICAgICBib29sIHVzZXNGcmFnRGVwdGgg
PSBmYWxzZTsKKyAgICAgICAgYm9vbCB1c2VzRnJhZ0NvbG9yICA9IGZhbHNlOworICAgICAgICBi
b29sIHVzZXNGcmFnRGF0YSAgID0gZmFsc2U7CisgICAgICAgIGJvb2wgdXNlc0ZyYWdEZXB0aCAg
PSBmYWxzZTsKICAgICAgICAgYm9vbCB1c2VzRnJhZ0RlcHRoRVhUID0gZmFsc2U7CiAgICAgICAg
IGZvciAoY29uc3QgU2hhZGVyVmFyaWFibGUgJm91dHB1dFZhcnlpbmcgOiBtT3V0cHV0VmFyaWFi
bGVzKQogICAgICAgICB7CkBAIC0xMTYwLDEzICsxMjM2LDIwIEBAIGJvb2wgVHJhbnNsYXRvck1l
dGFsRGlyZWN0Ojp0cmFuc2xhdGVJbXBsKFRJbnRlcm1CbG9jayAmcm9vdCwgU2hDb21waWxlT3B0
aW9ucyBjCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGlmKHVzZXNGcmFnRGVwdGhFWFQpCisgICAgICAgIGlmICh1c2VzRnJh
Z0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBBZGRGcmFnRGVwdGhEZWNsYXJhdGlvbihy
b290LCBzeW1ib2xUYWJsZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZih1c2VzRnJhZ0Rl
cHRoRVhUKQogICAgICAgICB7CiAgICAgICAgICAgICBBZGRGcmFnRGVwdGhFWFREZWNsYXJhdGlv
bigqdGhpcywgcm9vdCwgc3ltYm9sVGFibGUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KHVzZXNGcmFnRGVwdGgpCisgICAgICAgIAorICAgICAgICAvLyBBbHdheXMgYWRkIHNhbXBsZV9t
YXNrLiBJdCB3aWxsIGJlIGd1YXJkZWQgYnkgYSBmdW5jdGlvbiBjb25zdGFudCBkZWNpZGVkIGF0
IHJ1bnRpbWUuCisgICAgICAgIGJvb2wgdXNlc1NhbXBsZU1hc2sgPSB0cnVlOworICAgICAgICBp
ZiAodXNlc1NhbXBsZU1hc2spCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFkZEZyYWdEZXB0aERl
Y2xhcmF0aW9uKHJvb3QsIHN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgIEFkZFNhbXBsZU1hc2tE
ZWNsYXJhdGlvbihyb290LCBzeW1ib2xUYWJsZSk7CiAgICAgICAgIH0KIAogI2lmIDAKQEAgLTEy
MzYsMjIgKzEzMTksMTIgQEAgYm9vbCBUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRyYW5zbGF0ZUlt
cGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRpb25zIGMKICAgICAgICAgaWYgKEZp
bmRTeW1ib2xOb2RlKCZyb290LCBCdWlsdEluVmFyaWFibGU6OmdsX1ZlcnRleEluZGV4KCktPm5h
bWUoKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghUmVwbGFjZVZhcmlhYmxlKHRoaXMs
ICZyb290LCBCdWlsdEluVmFyaWFibGU6OmdsX1ZlcnRleEluZGV4KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAma2dsX1ZlcnRleEluZGV4TWV0YWwpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIERlY2xhcmVSaWdodEJlZm9yZU1haW4ocm9vdCwga2dsX1ZlcnRleEluZGV4TWV0YWwpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKEZpbmRTeW1ib2xOb2RlKCZyb290LCBCdWlsdElu
VmFyaWFibGU6OmdsX1ZlcnRleElEKCktPm5hbWUoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghUmVwbGFjZVZhcmlhYmxlKHRoaXMsICZyb290LCBCdWlsdEluVmFyaWFibGU6OmdsX1Zl
cnRleElEKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2dsX1ZlcnRleElu
ZGV4TWV0YWwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtnbF9WZXJ0ZXhJ
RE1ldGFsKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBEZWNsYXJlUmlnaHRCZWZvcmVNYWluKHJvb3QsIGtn
bF9WZXJ0ZXhJbmRleE1ldGFsKTsKKyAgICAgICAgICAgIERlY2xhcmVSaWdodEJlZm9yZU1haW4o
cm9vdCwga2dsX1ZlcnRleElETWV0YWwpOwogICAgICAgICB9Ci0KICNpZiAwCiAgICAgICAgIGlm
IChjb21waWxlT3B0aW9ucyAmIFNIX0FERF9CUkVTRU5IQU1fTElORV9SQVNURVJfRU1VTEFUSU9O
KQogICAgICAgICB7CkBAIC0xMjYwLDEzICsxMzMzLDkgQEAgYm9vbCBUcmFuc2xhdG9yTWV0YWxE
aXJlY3Q6OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRpb25z
IGMKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQotICAgICAgICAvLyBBZGQgYSBtYWNybyB0byBkZWNsYXJlIHRyYW5zZm9ybSBmZWVkYmFj
ayBidWZmZXJzLgotICAgICAgICBzaW5rIDw8ICJAQCBYRkItREVDTCBAQFxuXG4iOwogI2VuZGlm
Ci0KICAgICAgICAgLy8gQXBwZW5kIGEgbWFjcm8gZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBzdWJz
dGl0dXRpb24gcHJpb3IgdG8gbW9kaWZ5aW5nIGRlcHRoLgotICAgICAgICBpZiAoIUFwcGVuZFZl
cnRleFNoYWRlclRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0VG9NYWluKCp0aGlzLCByb290KSkKKyAg
ICAgICAgaWYgKCFBcHBlbmRWZXJ0ZXhTaGFkZXJUcmFuc2Zvcm1GZWVkYmFja091dHB1dFRvTWFp
bigqdGhpcywgc3ltYm9sRW52LCByb290KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC0xMjk5LDYgKzEzNjgsOCBAQCBib29sIFRyYW5zbGF0b3JN
ZXRhbERpcmVjdDo6dHJhbnNsYXRlSW1wbChUSW50ZXJtQmxvY2sgJnJvb3QsIFNoQ29tcGlsZU9w
dGlvbnMgYwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKKworCiAgICAg
ICAgIGlmICgoY29tcGlsZU9wdGlvbnMgJiBTSF9BRERfUFJFX1JPVEFUSU9OKSAhPSAwICYmCiAg
ICAgICAgICAgICAhQXBwZW5kUHJlUm90YXRpb24oKnRoaXMsIHJvb3QsIGRyaXZlclVuaWZvcm1z
KSkKICAgICAgICAgewpAQCAtMTMzOSw2ICsxNDEwLDE1IEBAIGJvb2wgVHJhbnNsYXRvck1ldGFs
RGlyZWN0Ojp0cmFuc2xhdGVJbXBsKFRJbnRlcm1CbG9jayAmcm9vdCwgU2hDb21waWxlT3B0aW9u
cyBjCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxz
ZSBpZiAoZ2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICB7CisgICAg
ICAgIGlmICghaW5zZXJ0U2FtcGxlTWFza1dyaXRpbmdMb2dpYyhyb290LCBkcml2ZXJVbmlmb3Jt
cykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKworCiAKICAgICBpZiAoIXZhbGlkYXRlQVNUKCZyb290KSkKICAgICB7CkBAIC0xMzU5LDcg
KzE0MzksNiBAQCBib29sIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6dHJhbnNsYXRlSW1wbChUSW50
ZXJtQmxvY2sgJnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgYwogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLQogICAgIC8vIFRoaXMgaXMgdGhlIGxhcmdlc3Qgc2l6ZSByZXF1aXJl
ZCB0byBwYXNzIGFsbCB0aGUgdGVzdHMgaW4KICAgICAvLyAoZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMubGFyZ2VfY29uc3RhbnRfYXJyYXlzKQogICAgIC8vIFRoaXMgdmFsdWUgY291bGQg
aW4gcHJpbmNpcGxlIGJlIHNtYWxsZXIuCkBAIC0xMzc1LDggKzE0NTQsNiBAQCBib29sIFRyYW5z
bGF0b3JNZXRhbERpcmVjdDo6dHJhbnNsYXRlSW1wbChUSW50ZXJtQmxvY2sgJnJvb3QsIFNoQ29t
cGlsZU9wdGlvbnMgYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgU3ltYm9s
RW52IHN5bWJvbEVudigqdGhpcywgcm9vdCk7Ci0KICAgICBpZiAoIUFkZEV4cGxpY2l0VHlwZUNh
c3RzKCp0aGlzLCByb290LCBzeW1ib2xFbnYpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTM4OCw3ICsxNDY1LDEzIEBAIGJvb2wgVHJhbnNsYXRvck1ldGFsRGlyZWN0Ojp0cmFu
c2xhdGVJbXBsKFRJbnRlcm1CbG9jayAmcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjCiAgICAgewog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCisgICAgaWYgKGdldFNoYWRlclR5cGUoKSA9
PSBHTF9WRVJURVhfU0hBREVSKQorICAgIHsKKyAgICAgICAgaWYgKCFJbnRyb2R1Y2VWZXJ0ZXhB
bmRJbnN0YW5jZUluZGV4KCp0aGlzLCByb290KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQogICAgIGlmICghU2VwYXJhdGVDb21wb3VuZEV4
cHJlc3Npb25zKCp0aGlzLCBzeW1ib2xFbnYsIGlkR2VuLCByb290KSkKICAgICB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE0MTIsMTIgKzE0OTUsMTAgQEAgYm9vbCBUcmFuc2xhdG9yTWV0
YWxEaXJlY3Q6OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRp
b25zIGMKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KICAgICBpZiAoIVRv
cG9zb3J0U3RydWN0cygqdGhpcywgc3ltYm9sRW52LCByb290LCBwcGMpKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAKICAgICBpZiAoIUVtaXRNZXRhbCgqdGhpcywgcm9v
dCwgaWRHZW4sIHBpcGVsaW5lU3RydWN0cywgaW52YXJpYW50cywgc3ltYm9sRW52LCBwcGMpKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQzOSw2ICsxNTIwLDIxIEBAIGJvb2wg
VHJhbnNsYXRvck1ldGFsRGlyZWN0Ojp0cmFuc2xhdGUoVEludGVybUJsb2NrICpyb290LAogCiAg
ICAgVEluZm9TaW5rQmFzZSAmc2luayA9IGdldEluZm9TaW5rKCkub2JqOwogCisgICAgaWYgKChj
b21waWxlT3B0aW9ucyAmIFNIX1JFV1JJVEVfUk9XX01BSk9SX01BVFJJQ0VTKSAhPSAwICYmIGdl
dFNoYWRlclZlcnNpb24oKSA+PSAzMDApCisgICAgeworICAgICAgICAvLyAiTWFrZSBzdXJlIGV2
ZXJ5IHVuaWZvcm0gYnVmZmVyIHZhcmlhYmxlIGhhcyBhIG5hbWUuICBUaGUgZm9sbG93aW5nIHRy
YW5zZm9ybWF0aW9uIHJlbGllcyBvbiB0aGlzLiIKKyAgICAgICAgLy8gVGhpcyBwYXNzIHdhcyBy
ZW1vdmVkIGluIGUxOTZiYzg1YWMyZGRhMGU5ZjY2NjRjZmMyZWNhMDAyOWUzM2QyZDEsIGJ1dCBj
dXJyZW50bHkgZmluZGluZyBpdCBzdGlsbCBuZWNlc3NhcnkgZm9yIE1TTC4KKyAgICAgICAgLy8g
VE9ETyhqY3VubmluZ2hhbSk6IExvb2sgaW50byByZW1vdmluZyB0aGUgTmFtZU5hbWVsZXNzVW5p
Zm9ybUJ1ZmZlcnMgYW5kIGZpeGluZyB0aGUgcm9vdCBjYXVzZSBpbiBSZXdyaXRlUm93TWFqb3JN
YXRyaWNlcworICAgICAgICBpZiAoIU5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzKHRoaXMsIHJv
b3QsICZnZXRTeW1ib2xUYWJsZSgpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIGlmICghUmV3cml0ZVJvd01ham9yTWF0cmljZXModGhp
cywgcm9vdCwgJmdldFN5bWJvbFRhYmxlKCkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIHByZWNpc2lvbkVtdWxhdGlv
biA9IGZhbHNlOwogICAgIGlmICghZW11bGF0ZVByZWNpc2lvbklmTmVlZGVkKHJvb3QsIHNpbmss
ICZwcmVjaXNpb25FbXVsYXRpb24sIFNIX0dMU0xfVlVMS0FOX09VVFBVVCkpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QuaAppbmRleCBlZmNiMzA2NzE5
NzdiZjU4MWI2YWMyNTczMjFjN2QxNmY2NmZjNTZlLi4zMGE4ODY3ZGY1NzNmZWZmNGZmZjI0M2Q1
ZDZjMjFjNjZiNDQzOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxE
aXJlY3QuaApAQCAtMTEsMTcgKzExLDQxIEBACiAKIG5hbWVzcGFjZSBzaAogeworCitjb25zdGV4
cHIgY29uc3QgY2hhciBrVW5pZm9ybXNWYXJbXSAgICAgICAgICAgICAgID0gImFuZ2xlVW5pZm9y
bXMiOworY29uc3RleHByIGNvbnN0IGNoYXIga1ZpZXdwb3J0W10gICAgICAgICAgICAgICAgICA9
ICJ2aWV3cG9ydCI7Citjb25zdGV4cHIgY29uc3QgY2hhciBrSGFsZlJlbmRlckFyZWFbXSAgICAg
ICAgICAgID0gImhhbGZSZW5kZXJBcmVhIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtGbGlwWFlb
XSAgICAgICAgICAgICAgICAgICAgPSAiZmxpcFhZIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtO
ZWdGbGlwWFlbXSAgICAgICAgICAgICAgICAgPSAibmVnRmxpcFhZIjsKK2NvbnN0ZXhwciBjb25z
dCBjaGFyIGtDbGlwRGlzdGFuY2VzRW5hYmxlZFtdICAgICAgPSAiY2xpcERpc3RhbmNlc0VuYWJs
ZWQiOworY29uc3RleHByIGNvbnN0IGNoYXIga1hmYkFjdGl2ZVVucGF1c2VkW10gICAgICAgICA9
ICJ4ZmJBY3RpdmVVbnBhdXNlZCI7Citjb25zdGV4cHIgY29uc3QgY2hhciBrWGZiVmVydGljZXNQ
ZXJEcmF3W10gICAgICAgID0gInhmYlZlcnRpY2VzUGVyRHJhdyI7Citjb25zdGV4cHIgY29uc3Qg
Y2hhciBrWGZiQnVmZmVyT2Zmc2V0c1tdICAgICAgICAgID0gInhmYkJ1ZmZlck9mZnNldHMiOwor
Y29uc3RleHByIGNvbnN0IGNoYXIga0FjYkJ1ZmZlck9mZnNldHNbXSAgICAgICAgICA9ICJhY2JC
dWZmZXJPZmZzZXRzIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtEZXB0aFJhbmdlW10gICAgICAg
ICAgICAgICAgPSAiZGVwdGhSYW5nZSI7Citjb25zdGV4cHIgY29uc3QgY2hhciBrUHJlUm90YXRp
b25bXSAgICAgICAgICAgICAgID0gInByZVJvdGF0aW9uIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFy
IGtGcmFnUm90YXRpb25bXSAgICAgICAgICAgICAgPSAiZnJhZ1JvdGF0aW9uIjsKK2NvbnN0ZXhw
ciBjb25zdCBjaGFyIGtVbmFzc2lnbmVkQXR0cmlidXRlU3RyaW5nW10gPSAiIF9fdW5hc3NpZ25l
ZF9hdHRyaWJ1dGVfXyI7CisKIGNsYXNzIFRPdXRwdXRNU0w7CiAKIHR5cGVkZWYgc3RkOjp1bm9y
ZGVyZWRfbWFwPHNpemVfdCwgc3RkOjpzdHJpbmc+IG9yaWdpbmFsTmFtZXNNYXA7CiB0eXBlZGVm
IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBzYW1wbGVyQmluZGluZ01h
cDsKIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzaXplX3Q+IHRleHR1
cmVCaW5kaW5nTWFwOwotdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHNp
emVfdD4gdW5pZm9ybUJ1ZmZlckJpbmRpbmdNYXA7Cit0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgc2l6ZV90PiB1c2VyVW5pZm9ybUJ1ZmZlckJpbmRpbmdNYXA7Cit0eXBl
ZGVmIHN0ZDo6cGFpcjxzaXplX3QsIHNpemVfdD4gdWJvQmluZGluZ0luZm87CitzdHJ1Y3QgVUJP
QmluZGluZ0luZm8KK3sKKyAgICBzaXplX3QgYmluZEluZGV4ID0gMDsKKyAgICBzaXplX3QgYXJy
YXlTaXplID0gMDsKK307Cit0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywg
VUJPQmluZGluZ0luZm8+IHVuaWZvcm1CdWZmZXJCaW5kaW5nTWFwOwogCiBjbGFzcyBUcmFuc2xh
dG9yTWV0YWxSZWZsZWN0aW9uCiB7CiAgIHB1YmxpYzoKLSAgICBUcmFuc2xhdG9yTWV0YWxSZWZs
ZWN0aW9uKCkge30KKyAgICBUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uKCk6CisgICAgICAgIGhh
c1VCT3MoZmFsc2UpLCBoYXNGbGF0SW5wdXQoZmFsc2UpICB7fQogICAgIH5UcmFuc2xhdG9yTWV0
YWxSZWZsZWN0aW9uKCkge30KIAogICAgIHZvaWQgYWRkT3JpZ2luYWxOYW1lKGNvbnN0IHNpemVf
dCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpCkBAIC0zNiwxMyArNjAsMTggQEAgY2xhc3Mg
VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbgogICAgIHsKICAgICAgICAgdGV4dHVyZUJpbmRpbmdz
Lmluc2VydCh7bmFtZSwgdGV4dHVyZUJpbmRpbmd9KTsKICAgICB9Ci0gICAgdm9pZCBhZGRVbmlm
b3JtQnVmZmVyQmluZGluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgc2l6ZV90IHVuaWZvcm1C
dWZmZXJCaW5kaW5nKQorICAgIHZvaWQgYWRkVXNlclVuaWZvcm1CdWZmZXJCaW5kaW5nKGNvbnN0
IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXplX3QgdXNlclVuaWZvcm1CdWZmZXJCaW5kaW5nKQogICAg
IHsKLSAgICAgICAgdW5pZm9ybUJ1ZmZlckJpbmRpbmdzLmluc2VydCh7bmFtZSwgdW5pZm9ybUJ1
ZmZlckJpbmRpbmd9KTsKKyAgICAgICAgdXNlclVuaWZvcm1CdWZmZXJCaW5kaW5ncy5pbnNlcnQo
e25hbWUsIHVzZXJVbmlmb3JtQnVmZmVyQmluZGluZ30pOworICAgIH0KKyAgICB2b2lkIGFkZFVu
aWZvcm1CdWZmZXJCaW5kaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBVQk9CaW5kaW5nSW5m
byBiaW5kaW5nSW5mbykKKyAgICB7CisgICAgICAgIHVuaWZvcm1CdWZmZXJCaW5kaW5ncy5pbnNl
cnQoe25hbWUsIGJpbmRpbmdJbmZvfSk7CiAgICAgfQogICAgIHN0ZDo6c3RyaW5nIGdldE9yaWdp
bmFsTmFtZShjb25zdCBzaXplX3QgaWQpIHsgcmV0dXJuIG9yaWdpbmFsTmFtZXMuYXQoaWQpOyB9
CiAgICAgc2FtcGxlckJpbmRpbmdNYXAgZ2V0U2FtcGxlckJpbmRpbmdzKCkgY29uc3QgeyByZXR1
cm4gc2FtcGxlckJpbmRpbmdzOyB9CiAgICAgdGV4dHVyZUJpbmRpbmdNYXAgZ2V0VGV4dHVyZUJp
bmRpbmdzKCkgY29uc3QgeyByZXR1cm4gdGV4dHVyZUJpbmRpbmdzOyB9CisgICAgdXNlclVuaWZv
cm1CdWZmZXJCaW5kaW5nTWFwIGdldFVzZXJVbmlmb3JtQnVmZmVyQmluZGluZ3MoKSBjb25zdCB7
IHJldHVybiB1c2VyVW5pZm9ybUJ1ZmZlckJpbmRpbmdzOyB9CiAgICAgdW5pZm9ybUJ1ZmZlckJp
bmRpbmdNYXAgZ2V0VW5pZm9ybUJ1ZmZlckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gdW5pZm9y
bUJ1ZmZlckJpbmRpbmdzOyB9CiAgICAgc2l6ZV90IGdldFNhbXBsZXJCaW5kaW5nKGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogICAgIHsKQEAgLTY0LDcgKzkzLDE3IEBAIGNsYXNzIFRy
YW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24KICAgICAgICAgQVNTRVJUKDApOwogICAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKICAgICB9Ci0gICAgc2l6ZV90
IGdldFVuaWZvcm1CdWZmZXJCaW5kaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAor
ICAgIHNpemVfdCBnZXRVc2VyVW5pZm9ybUJ1ZmZlckJpbmRpbmcoY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIGl0ID0gdXNlclVuaWZvcm1CdWZmZXJC
aW5kaW5ncy5maW5kKG5hbWUpOworICAgICAgICBpZiAoaXQgIT0gdXNlclVuaWZvcm1CdWZmZXJC
aW5kaW5ncy5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKKyAgICB9CisgICAgVUJPQmluZGluZ0luZm8gZ2V0
VW5pZm9ybUJ1ZmZlckJpbmRpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiAgICAg
ewogICAgICAgICBhdXRvIGl0ID0gdW5pZm9ybUJ1ZmZlckJpbmRpbmdzLmZpbmQobmFtZSk7CiAg
ICAgICAgIGlmIChpdCAhPSB1bmlmb3JtQnVmZmVyQmluZGluZ3MuZW5kKCkpCkBAIC03MiwyMCAr
MTExLDI4IEBAIGNsYXNzIFRyYW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24KICAgICAgICAgICAgIHJl
dHVybiBpdC0+c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCgwKTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAgICAgIHJldHVy
biB7LmJpbmRJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksCisgICAg
ICAgICAgICAgICAgLmFycmF5U2l6ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCl9OwogICAgIH0KICAgICB2b2lkIHJlc2V0KCkKICAgICB7CisgICAgICAgIGhhc1VCT3MgPSBm
YWxzZTsKKyAgICAgICAgaGFzRmxhdElucHV0ID0gZmFsc2U7CiAgICAgICAgIG9yaWdpbmFsTmFt
ZXMuY2xlYXIoKTsKICAgICAgICAgc2FtcGxlckJpbmRpbmdzLmNsZWFyKCk7CiAgICAgICAgIHRl
eHR1cmVCaW5kaW5ncy5jbGVhcigpOworICAgICAgICB1c2VyVW5pZm9ybUJ1ZmZlckJpbmRpbmdz
LmNsZWFyKCk7CiAgICAgICAgIHVuaWZvcm1CdWZmZXJCaW5kaW5ncy5jbGVhcigpOwogICAgIH0K
IAorICAgIGJvb2wgaGFzVUJPcyA9IGZhbHNlOworICAgIGJvb2wgaGFzRmxhdElucHV0ID0gZmFs
c2U7CisKICAgcHJpdmF0ZToKICAgICBvcmlnaW5hbE5hbWVzTWFwIG9yaWdpbmFsTmFtZXM7CiAg
ICAgc2FtcGxlckJpbmRpbmdNYXAgc2FtcGxlckJpbmRpbmdzOwogICAgIHRleHR1cmVCaW5kaW5n
TWFwIHRleHR1cmVCaW5kaW5nczsKKyAgICB1c2VyVW5pZm9ybUJ1ZmZlckJpbmRpbmdNYXAgdXNl
clVuaWZvcm1CdWZmZXJCaW5kaW5nczsKICAgICB1bmlmb3JtQnVmZmVyQmluZGluZ01hcCB1bmlm
b3JtQnVmZmVyQmluZGluZ3M7CiB9OwogCkBAIC0xMTUsNiArMTYyLDggQEAgY2xhc3MgVHJhbnNs
YXRvck1ldGFsRGlyZWN0IDogcHVibGljIFRDb21waWxlcgogCiAgICAgQU5HTEVfTk9fRElTQ0FS
RCBib29sIHRyYW5zZm9ybURlcHRoQmVmb3JlQ29ycmVjdGlvbihUSW50ZXJtQmxvY2sgJnJvb3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVmFyaWFibGUgJmRyaXZlclVuaWZvcm1zKTsKKyAgICBBTkdMRV9OT19ESVNDQVJE
IGJvb2wgaW5zZXJ0U2FtcGxlTWFza1dyaXRpbmdMb2dpYyhUSW50ZXJtQmxvY2sgJnJvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFZhcmlhYmxlICZkcml2ZXJVbmlmb3Jtcyk7CiAgICAgQU5HTEVfTk9fRElTQ0FSRCBib29s
IGluc2VydFJhc3Rlcml6YXRpb25EaXNjYXJkTG9naWMoVEludGVybUJsb2NrICZyb290KTsKIAog
ICAgIHZvaWQgY3JlYXRlQWRkaXRpb25hbEdyYXBoaWNzRHJpdmVyVW5pZm9ybUZpZWxkcyhzdGQ6
OnZlY3RvcjxURmllbGQgKj4gJmZpZWxkc091dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
RW1pdE1ldGFsLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9FbWl0TWV0YWwuY3BwCmluZGV4IDFhM2Y2MzNi
Njg2NTBjMWQzYmI4MzI4MmU3Mjk4MzRmMDQ4YTkyMzkuLjljYTU5YTdlNDZlODE4YjA0MGJlNGU4
NzMyYjQ1ODQzMjI5YTBjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9FbWl0TWV0YWwuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9FbWl0TWV0YWwuY3BwCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvQXN0SGVscGVycy5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0NvbnN0YW50TmFt
ZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9EZWJ1Zy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFs
RGlyZWN0L0RlYnVnU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvck1ldGFsRGlyZWN0L0VtaXRNZXRhbC5oIgpAQCAtMTE4LDYgKzExOSw3IEBAIGNsYXNzIEdl
bk1ldGFsVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgYm9vbCBl
bWl0UG9zdFF1YWxpZmllciAgICAgICAgICA9IGZhbHNlOwogICAgICAgICBib29sIGlzUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gZmFsc2U7CiAgICAgICAgIGJvb2wgZGlzYWJsZVN0cnVjdFNw
ZWNpZmllciAgICAgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1VCTyAgICAgICAgICAgICAgICAg
ICAgICA9IGZhbHNlOwogICAgICAgICBjb25zdCBBZGRyZXNzU3BhY2UgKmlzUG9pbnRlciAgID0g
bnVsbHB0cjsKICAgICAgICAgY29uc3QgQWRkcmVzc1NwYWNlICppc1JlZmVyZW5jZSA9IG51bGxw
dHI7CiAgICAgfTsKQEAgLTEyOCw2ICsxMzAsOCBAQCBjbGFzcyBHZW5NZXRhbFRyYXZlcnNlciA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgfTsKIAogICAgIHZvaWQgZW1pdEluZGVudGF0
aW9uKCk7CisgICAgdm9pZCBlbWl0T3BlbmluZ1BvaW50ZXJQYXJlbigpOworICAgIHZvaWQgZW1p
dENsb3NpbmdQb2ludGVyUGFyZW4oKTsKICAgICB2b2lkIGVtaXRGdW5jdGlvblNpZ25hdHVyZShj
b25zdCBURnVuY3Rpb24gJmZ1bmMpOwogICAgIHZvaWQgZW1pdEZ1bmN0aW9uUmV0dXJuKGNvbnN0
IFRGdW5jdGlvbiAmZnVuYyk7CiAgICAgdm9pZCBlbWl0RnVuY3Rpb25QYXJhbWV0ZXIoY29uc3Qg
VEZ1bmN0aW9uICZmdW5jLCBjb25zdCBUVmFyaWFibGUgJnBhcmFtKTsKQEAgLTE1Miw2ICsxNTYs
NyBAQCBjbGFzcyBHZW5NZXRhbFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlICZwYXJlbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZEFubm90YXRpb25JbmRpY2VzICZhbm5v
dGF0aW9uSW5kaWNlcyk7CiAgICAgdm9pZCBlbWl0QXR0cmlidXRlRGVjbGFyYXRpb24oY29uc3Qg
VEZpZWxkICZmaWVsZCwgRmllbGRBbm5vdGF0aW9uSW5kaWNlcyAmYW5ub3RhdGlvbkluZGljZXMp
OworICAgIHZvaWQgZW1pdFVuaWZvcm1CdWZmZXJEZWNsYXJhdGlvbihjb25zdCBURmllbGQgJmZp
ZWxkLCBGaWVsZEFubm90YXRpb25JbmRpY2VzICZhbm5vdGF0aW9uSW5kaWNlcyk7CiAgICAgdm9p
ZCBlbWl0U3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFR5cGUgJnR5cGUpOwogICAgIHZvaWQgZW1p
dE9yZGluYXJ5VmFyaWFibGVEZWNsYXJhdGlvbihjb25zdCBWYXJEZWNsICZkZWNsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFbWl0VmFyaWFibGVEZWNs
YXJhdGlvbkNvbmZpZyAmZXZkQ29uZmlnKTsKQEAgLTE4MSw5ICsxODYsMTIgQEAgY2xhc3MgR2Vu
TWV0YWxUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIGNvbnN0IEludmFy
aWFudHMgJm1JbnZhcmlhbnRzOwogICAgIFN5bWJvbEVudiAmbVN5bWJvbEVudjsKICAgICBJZEdl
biAmbUlkR2VuOwotICAgIGludCBtSW5kZW50TGV2ZWwgICAgICAgID0gLTE7Ci0gICAgaW50IG1M
YXN0SW5kZW50YXRpb25Qb3MgPSAtMTsKKyAgICBpbnQgbUluZGVudExldmVsICAgICAgICAgICA9
IC0xOworICAgIGludCBtTGFzdEluZGVudGF0aW9uUG9zICAgID0gLTE7CisgICAgaW50IG1PcGVu
UG9pbnRlclBhcmVuQ291bnQgPSAwOwogICAgIGJvb2wgbVBhcmVudElzU3dpdGNoICAgID0gZmFs
c2U7CisgICAgYm9vbCBpc1RyYXZlcnNpbmdWZXJ0ZXhNYWluICA9IGZhbHNlOworICAgIGJvb2wg
bVRlbXBvcmFyaWx5RGlzYWJsZVNlbWljb2xvbiA9IGZhbHNlOwogICAgIHN0ZDo6dW5vcmRlcmVk
X21hcDxjb25zdCBUU3ltYm9sICosIE5hbWU+IG1SZW5hbWVkU3ltYm9sczsKICAgICBjb25zdCBG
dW5jVG9OYW1lIG1GdW5jVG9OYW1lICAgPSBCdWlsZEZ1bmNUb05hbWUoKTsKICAgICBzaXplX3Qg
bU1haW5UZXh0dXJlSW5kZXggICAgICAgPSAwOwpAQCAtMTk3LDYgKzIwNSw3IEBAIEdlbk1ldGFs
VHJhdmVyc2VyOjp+R2VuTWV0YWxUcmF2ZXJzZXIoKQogewogICAgIEFTU0VSVChtSW5kZW50TGV2
ZWwgPT0gLTEpOwogICAgIEFTU0VSVCghbVBhcmVudElzU3dpdGNoKTsKKyAgICBBU1NFUlQobU9w
ZW5Qb2ludGVyUGFyZW5Db3VudCA9PSAwKTsKIH0KIAogR2VuTWV0YWxUcmF2ZXJzZXI6Okdlbk1l
dGFsVHJhdmVyc2VyKGNvbnN0IFRDb21waWxlciAmY29tcGlsZXIsCkBAIC0yMzEsNiArMjQwLDIx
IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRJbmRlbnRhdGlvbigpCiAgICAgbUxhc3RJ
bmRlbnRhdGlvblBvcyA9IG1PdXQuc2l6ZSgpOwogfQogCit2b2lkIEdlbk1ldGFsVHJhdmVyc2Vy
OjplbWl0T3BlbmluZ1BvaW50ZXJQYXJlbigpCit7CisgICAgbU91dCA8PCAiKCoiOworICAgIG1P
cGVuUG9pbnRlclBhcmVuQ291bnQrKzsKK30KKwordm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1p
dENsb3NpbmdQb2ludGVyUGFyZW4oKQoreworICAgIGlmIChtT3BlblBvaW50ZXJQYXJlbkNvdW50
ID4gMCkKKyAgICB7CisgICAgICAgIG1PdXQgPDwgIikiOworICAgICAgICBtT3BlblBvaW50ZXJQ
YXJlbkNvdW50LS07CisgICAgfQorfQorCiBzdGF0aWMgY29uc3QgY2hhciAqR2V0T3BlcmF0b3JT
dHJpbmcoVE9wZXJhdG9yIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRUeXBlICZyZXN1bHRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICphcmdUeXBlMCwKQEAgLTM2Niw3ICszOTAsNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciAqR2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9yIG9wLAogCiAgICAgICAgIGNh
c2UgVE9wZXJhdG9yOjpFT3BOb3RFcXVhbDoKICAgICAgICAgICAgIGlmICgoYXJnVHlwZTAtPmlz
VmVjdG9yKCkgJiYgYXJnVHlwZTEtPmlzVmVjdG9yKCkpIHx8Ci0gICAgICAgICAgICAgICAgKGFy
Z1R5cGUwLT5pc0FycmF5KCkgJiYgYXJnVHlwZTEtPmlzQXJyYXkoKSl8fAorICAgICAgICAgICAg
ICAgIChhcmdUeXBlMC0+aXNBcnJheSgpICYmIGFyZ1R5cGUxLT5pc0FycmF5KCkpIHx8CiAgICAg
ICAgICAgICAgICAgKGFyZ1R5cGUwLT5pc01hdHJpeCgpICYmIGFyZ1R5cGUxLT5pc01hdHJpeCgp
KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gIkFOR0xFX25vdEVxdWFs
IjsKQEAgLTkzNSw3ICs5NTksNyBAQCB2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0UG9zdFF1
YWxpZmllcihjb25zdCBFbWl0VmFyaWFibGVEZWNsYXJhdGlvbkNvbmZpZyAmZQogICAgIH0KIAog
ICAgIGNvbnN0IGJvb2wgaXNJbnZhcmlhbnQgPQotICAgICAgICAoZGVjbC5pc0ZpZWxkKCkgPyBt
SW52YXJpYW50cy5jb250YWlucyhkZWNsLmZpZWxkKCkpIDogbUludmFyaWFudHMuY29udGFpbnMo
ZGVjbC52YXJpYWJsZSgpKSkgJiYgKHF1YWxpZmllciA9PSBUUXVhbGlmaWVyOjpFdnFQb3NpdGlv
biB8fCBxdWFsaWZpZXIgPT0gVFF1YWxpZmllcjo6RXZxRnJhZ0Nvb3JkKTsKKyAgICAoZGVjbC5p
c0ZpZWxkKCkgPyBtSW52YXJpYW50cy5jb250YWlucyhkZWNsLmZpZWxkKCkpIDogbUludmFyaWFu
dHMuY29udGFpbnMoZGVjbC52YXJpYWJsZSgpKSkgJiYgKHF1YWxpZmllciA9PSBUUXVhbGlmaWVy
OjpFdnFQb3NpdGlvbiB8fCBxdWFsaWZpZXIgPT0gVFF1YWxpZmllcjo6RXZxRnJhZ0Nvb3JkKTsK
IAogICAgIGlmIChpc0ludmFyaWFudCkKICAgICB7CkBAIC0xMDM3LDkgKzEwNjEsMTcgQEAgdm9p
ZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEJhcmVUeXBlTmFtZShjb25zdCBUVHlwZSAmdHlwZSwg
Y29uc3QgRW1pdFR5cGVDb25maWcKIAogdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdFR5cGUo
Y29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IEVtaXRUeXBlQ29uZmlnICZldENvbmZpZykKIHsKKyAg
ICBjb25zdCBib29sIGlzVUJPID0gZXRDb25maWcuZXZkQ29uZmlnID8gZXRDb25maWcuZXZkQ29u
ZmlnLT5pc1VCTyA6IGZhbHNlOwogICAgIGlmIChldENvbmZpZy5ldmRDb25maWcpCiAgICAgewog
ICAgICAgICBjb25zdCBhdXRvICZldmRDb25maWcgPSAqZXRDb25maWcuZXZkQ29uZmlnOworICAg
ICAgICBpZiAoaXNVQk8pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0eXBlLmlzQXJyYXko
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtT3V0IDw8ICJBTkdMRV90ZW5zb3I8
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAoZXZkQ29uZmlnLmlzUG9p
bnRlcikKICAgICAgICAgewogICAgICAgICAgICAgbU91dCA8PCB0b1N0cmluZygqZXZkQ29uZmln
LmlzUG9pbnRlcik7CkBAIC0xMDUyLDkgKzEwODQsMTIgQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNl
cjo6ZW1pdFR5cGUoY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IEVtaXRUeXBlQ29uZmlnICZldENv
bmYKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKKyAgICBpZiAo
IWlzVUJPKQogICAgIHsKLSAgICAgICAgbU91dCA8PCAiQU5HTEVfdGVuc29yPCI7CisgICAgICAg
IGlmICh0eXBlLmlzQXJyYXkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbU91dCA8PCAiQU5H
TEVfdGVuc29yPCI7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZS5pc1ZlY3Rvcigp
IHx8IHR5cGUuaXNNYXRyaXgoKSkKQEAgLTEwNzgsMTMgKzExMTMsMTYgQEAgdm9pZCBHZW5NZXRh
bFRyYXZlcnNlcjo6ZW1pdFR5cGUoY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IEVtaXRUeXBlQ29u
ZmlnICZldENvbmYKICAgICAgICAgbU91dCA8PCB0eXBlLmdldENvbHMoKSA8PCAieCIgPDwgdHlw
ZS5nZXRSb3dzKCk7CiAgICAgfQogCi0gICAgaWYgKHR5cGUuaXNBcnJheSgpKQorICAgIGlmICgh
aXNVQk8pCiAgICAgewotICAgICAgICBmb3IgKGF1dG8gc2l6ZSA6IHR5cGUuZ2V0QXJyYXlTaXpl
cygpKQorICAgICAgICBpZiAodHlwZS5pc0FycmF5KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1PdXQgPDwgIiwgIiA8PCBzaXplOworICAgICAgICAgICAgZm9yIChhdXRvIHNpemUgOiB0eXBl
LmdldEFycmF5U2l6ZXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtT3V0IDw8
ICIsICIgPDwgc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1PdXQgPDwgIj4iOwog
ICAgICAgICB9Ci0gICAgICAgIG1PdXQgPDwgIj4iOwogICAgIH0KIAogICAgIGlmIChldENvbmZp
Zy5ldmRDb25maWcpCkBAIC0xMDk4LDYgKzExMzYsMTcgQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNl
cjo6ZW1pdFR5cGUoY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IEVtaXRUeXBlQ29uZmlnICZldENv
bmYKICAgICAgICAgewogICAgICAgICAgICAgbU91dCA8PCAiICYiOwogICAgICAgICB9CisgICAg
ICAgIGlmIChpc1VCTykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byBzaXplIDogdHlwZS5n
ZXRBcnJheVNpemVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBt
T3V0IDw8ICIsICIgPDwgc2l6ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
bU91dCA8PCAiPiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTEx
MTIsNiArMTE2MSw3IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRGaWVsZERlY2xhcmF0
aW9uKGNvbnN0IFRGaWVsZCAmZmllbGQsCiAgICAgZXZkQ29uZmlnLmVtaXRQb3N0UXVhbGlmaWVy
ICAgICAgPSB0cnVlOwogICAgIGV2ZENvbmZpZy5kaXNhYmxlU3RydWN0U3BlY2lmaWVyID0gdHJ1
ZTsKICAgICBldmRDb25maWcuaXNQYWNrZWQgICAgICAgICAgICAgICA9IG1TeW1ib2xFbnYuaXNQ
YWNrZWQoZmllbGQpOworICAgIGV2ZENvbmZpZy5pc1VCTyAgICAgICAgICAgICAgICAgID0gbVN5
bWJvbEVudi5pc1VCTyhmaWVsZCk7CiAgICAgZXZkQ29uZmlnLmlzUG9pbnRlciAgICAgICAgICAg
ICAgPSBtU3ltYm9sRW52LmlzUG9pbnRlcihmaWVsZCk7CiAgICAgZXZkQ29uZmlnLmlzUmVmZXJl
bmNlICAgICAgICAgICAgPSBtU3ltYm9sRW52LmlzUmVmZXJlbmNlKGZpZWxkKTsKICAgICBlbWl0
VmFyaWFibGVEZWNsYXJhdGlvbihWYXJEZWNsKGZpZWxkKSwgZXZkQ29uZmlnKTsKQEAgLTExMjMs
NiArMTE3Myw5IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRGaWVsZERlY2xhcmF0aW9u
KGNvbnN0IFRGaWVsZCAmZmllbGQsCiAgICAgICAgICAgICBpZiAobVBpcGVsaW5lU3RydWN0cy5m
cmFnbWVudEluLmV4dGVybmFsID09ICZwYXJlbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgbU91dCA8PCAiIFtbZmxhdF1dIjsKKyAgICAgICAgICAgICAgICBUcmFuc2xhdG9yTWV0
YWxSZWZsZWN0aW9uICpyZWZsZWN0aW9uID0KKyAgICAgICAgICAgICAgICAgICAgKChzaDo6VHJh
bnNsYXRvck1ldGFsRGlyZWN0ICopJm1Db21waWxlciktPmdldFRyYW5zbGF0b3JNZXRhbFJlZmxl
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5oYXNGbGF0SW5wdXQgPSB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTExNTAsNiArMTIwMywx
MCBAQCB2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0RmllbGREZWNsYXJhdGlvbihjb25zdCBU
RmllbGQgJmZpZWxkLAogICAgICAgICAgICAgbU91dCA8PCAiIFtbZGVwdGgoYW55KV1dIjsKICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgVFF1YWxpZmllcjo6RXZxU2FtcGxlTWFz
azoKKyAgICAgICAgICAgIG1PdXQgPDwgIiBbW3NhbXBsZV9tYXNrLCBmdW5jdGlvbl9jb25zdGFu
dCgiIDw8IHNoOjpUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OkdldENvdmVyYWdlTWFza0VuYWJsZWRD
b25zdE5hbWUoKSA8PCAiKV1dIjsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjI4LDcgKzEyODUsMzEgQEAgdm9p
ZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEF0dHJpYnV0ZURlY2xhcmF0aW9uKGNvbnN0IFRGaWVs
ZCAmZmllbGQsCiAgICAgRW1pdFZhcmlhYmxlRGVjbGFyYXRpb25Db25maWcgZXZkQ29uZmlnOwog
ICAgIGV2ZENvbmZpZy5kaXNhYmxlU3RydWN0U3BlY2lmaWVyID0gdHJ1ZTsKICAgICBlbWl0VmFy
aWFibGVEZWNsYXJhdGlvbihWYXJEZWNsKGZpZWxkKSwgZXZkQ29uZmlnKTsKLSAgICBtT3V0IDw8
IHJ4OjptdGw6OmtVbmFzc2lnbmVkQXR0cmlidXRlU3RyaW5nOworICAgIG1PdXQgPDwgc2g6OmtV
bmFzc2lnbmVkQXR0cmlidXRlU3RyaW5nOworfQorCit2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjpl
bWl0VW5pZm9ybUJ1ZmZlckRlY2xhcmF0aW9uKGNvbnN0IFRGaWVsZCAmZmllbGQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRBbm5vdGF0aW9u
SW5kaWNlcyAmYW5ub3RhdGlvbkluZGljZXMpCit7CisgICAgRW1pdFZhcmlhYmxlRGVjbGFyYXRp
b25Db25maWcgZXZkQ29uZmlnOworICAgIGV2ZENvbmZpZy5kaXNhYmxlU3RydWN0U3BlY2lmaWVy
ID0gdHJ1ZTsKKyAgICBldmRDb25maWcuaXNVQk8gICAgICAgICAgICAgICAgICA9IG1TeW1ib2xF
bnYuaXNVQk8oZmllbGQpOworICAgIGV2ZENvbmZpZy5pc1BvaW50ZXIgICAgICAgICAgICAgID0g
bVN5bWJvbEVudi5pc1BvaW50ZXIoZmllbGQpOworICAgIGVtaXRWYXJpYWJsZURlY2xhcmF0aW9u
KFZhckRlY2woZmllbGQpLCBldmRDb25maWcpOworICAgIG1PdXQgPDwgIltbaWQoIiA8PCBhbm5v
dGF0aW9uSW5kaWNlcy5hdHRyaWJ1dGUgPDwgIildXSI7CisKKyAgICBjb25zdCBUVHlwZSAmdHlw
ZSA9ICpmaWVsZC50eXBlKCk7CisgICAgY29uc3QgaW50IGFycmF5U2l6ZSA9IHR5cGUuaXNBcnJh
eSgpID8gdHlwZS5nZXRBcnJheVNpemVQcm9kdWN0KCkgOiAxOworCisgICAgVHJhbnNsYXRvck1l
dGFsUmVmbGVjdGlvbiAqcmVmbGVjdGlvbiA9CisgICAgICAgICgoc2g6OlRyYW5zbGF0b3JNZXRh
bERpcmVjdCAqKSZtQ29tcGlsZXIpLT5nZXRUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uKCk7Cisg
ICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gVEJhc2ljVHlwZTo6RWJ0U3RydWN0KTsK
KyAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIG9yaWdpbmFsTmFtZSA9CisgICAgICAgIHJlZmxlY3Rpb24tPmdl
dE9yaWdpbmFsTmFtZShzdHJ1Y3R1cmUtPnVuaXF1ZUlkKCkuZ2V0KCkpOworICAgIHJlZmxlY3Rp
b24tPmFkZFVuaWZvcm1CdWZmZXJCaW5kaW5nKG9yaWdpbmFsTmFtZSwgey5iaW5kSW5kZXggPSBh
bm5vdGF0aW9uSW5kaWNlcy5hdHRyaWJ1dGUsIC5hcnJheVNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGFycmF5U2l6ZSl9KTsKKworICAgIGFubm90YXRpb25JbmRpY2VzLmF0dHJpYnV0ZSArPSBh
cnJheVNpemU7CiB9CiAKIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRTdHJ1Y3REZWNsYXJh
dGlvbihjb25zdCBUVHlwZSAmdHlwZSkKQEAgLTEyNDUsNiArMTMyNiw3IEBAIHZvaWQgR2VuTWV0
YWxUcmF2ZXJzZXI6OmVtaXRTdHJ1Y3REZWNsYXJhdGlvbihjb25zdCBUVHlwZSAmdHlwZSkKICAg
ICBjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUgPSAqdHlwZS5nZXRTdHJ1Y3QoKTsKICAgICBz
dGQ6Om1hcDxOYW1lLCBzaXplX3Q+IGZpZWxkVG9BdHRyaWJ1dGVJbmRleDsKICAgICBjb25zdCBi
b29sIGhhc0F0dHJpYnV0ZUluZGljZXMgICAgICAgICAgID0gbVBpcGVsaW5lU3RydWN0cy52ZXJ0
ZXhJbi5leHRlcm5hbCA9PSAmc3RydWN0dXJlOworICAgIGNvbnN0IGJvb2wgaGFzVW5pZm9ybUJ1
ZmZlckluZGljaWVzICAgICAgPSBtUGlwZWxpbmVTdHJ1Y3RzLnVuaWZvcm1CdWZmZXJzLmV4dGVy
bmFsID09ICZzdHJ1Y3R1cmU7CiAgICAgY29uc3QgYm9vbCByZWNsYWltVW51c2VkQXR0cmlidXRl
SW5kaWNlcyA9IG1Db21waWxlci5nZXRTaGFkZXJWZXJzaW9uKCkgPCAzMDA7CiAKICAgICBpZiAo
aGFzQXR0cmlidXRlSW5kaWNlcykKQEAgLTEyODAsNiArMTM2MiwxMCBAQCB2b2lkIEdlbk1ldGFs
VHJhdmVyc2VyOjplbWl0U3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFR5cGUgJnR5cGUpCiAgICAg
ICAgICAgICAgICAgZW1pdEF0dHJpYnV0ZURlY2xhcmF0aW9uKCpmaWVsZCwgYW5ub3RhdGlvbklu
ZGljZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoaGFzVW5p
Zm9ybUJ1ZmZlckluZGljaWVzKQorICAgICAgICB7CisgICAgICAgICAgICBlbWl0VW5pZm9ybUJ1
ZmZlckRlY2xhcmF0aW9uKCpmaWVsZCwgYW5ub3RhdGlvbkluZGljZXMpOworICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEZpZWxkRGVjbGFyYXRpb24o
KmZpZWxkLCBzdHJ1Y3R1cmUsIGFubm90YXRpb25JbmRpY2VzKTsKQEAgLTEyODcsMTIgKzEzNzMs
MTIgQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdFN0cnVjdERlY2xhcmF0aW9uKGNvbnN0
IFRUeXBlICZ0eXBlKQogICAgICAgICBtT3V0IDw8ICI7XG4iOwogICAgIH0KIAotICAgIGlmICgh
bVBpcGVsaW5lU3RydWN0cy5tYXRjaGVzKCZzdHJ1Y3R1cmUsIHRydWUsIHRydWUpKQorICAgIGlm
ICghbVBpcGVsaW5lU3RydWN0cy5tYXRjaGVzKHN0cnVjdHVyZSwgdHJ1ZSwgdHJ1ZSkpCiAgICAg
ewogICAgICAgICBNZXRhbExheW91dE9mQ29uZmlnIGxheW91dENvbmZpZzsKICAgICAgICAgbGF5
b3V0Q29uZmlnLnRyZWF0U2FtcGxlcnNBc1RleHR1cmVFbnYgPSB0cnVlOwogICAgICAgICBMYXlv
dXQgbGF5b3V0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IE1ldGFsTGF5b3V0T2YodHlwZSwg
bGF5b3V0Q29uZmlnKTsKLSAgICAgICAgc2l6ZV90IHBhZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBsYXlvdXQuc2l6ZU9mICUgMTY7CisgICAgICAgIHNpemVfdCBwYWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGtEZWZhdWx0U3RydWN0QWxpZ25tZW50U2l6ZSAtIGxheW91
dC5zaXplT2YpICUga0RlZmF1bHRTdHJ1Y3RBbGlnbm1lbnRTaXplOwogICAgICAgICBpZiAocGFk
ICE9IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbmRlbnRhdGlvbigpOwpAQCAtMTMx
NCw3ICsxNDAwLDYgQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdE9yZGluYXJ5VmFyaWFi
bGVEZWNsYXJhdGlvbigKIAogICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gZGVjbC50eXBlKCk7CiAg
ICAgZW1pdFR5cGUodHlwZSwgZXRDb25maWcpOwotCiAgICAgaWYgKGRlY2wuc3ltYm9sVHlwZSgp
ICE9IFN5bWJvbFR5cGU6OkVtcHR5KQogICAgIHsKICAgICAgICAgbU91dCA8PCAiICI7CkBAIC0x
MzY3LDcgKzE0NTIsNiBAQCB2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjp2aXNpdFN5bWJvbChUSW50
ZXJtU3ltYm9sICpzeW1ib2xOb2RlKQogewogICAgIGNvbnN0IFRWYXJpYWJsZSAmdmFyID0gc3lt
Ym9sTm9kZS0+dmFyaWFibGUoKTsKICAgICBjb25zdCBUVHlwZSAmdHlwZSAgICA9IHZhci5nZXRU
eXBlKCk7Ci0KICAgICBBU1NFUlQodmFyLnN5bWJvbFR5cGUoKSAhPSBTeW1ib2xUeXBlOjpFbXB0
eSk7CiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBUQmFzaWNUeXBlOjpFYnRWb2lk
KQpAQCAtMTU0MCw5ICsxNjI0LDE3IEBAIGJvb2wgR2VuTWV0YWxUcmF2ZXJzZXI6OnZpc2l0Qmlu
YXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5ICpiaW5hcnlOb2RlKQogICAgICAgICBjYXNlIFRPcGVy
YXRvcjo6RU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgIGNhc2UgVE9wZXJhdG9yOjpFT3BJ
bmRleERpcmVjdEludGVyZmFjZUJsb2NrOgogICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBU
RmllbGQgJmZpZWxkID0gZ2V0RGlyZWN0RmllbGQobGVmdE5vZGUsIHJpZ2h0Tm9kZSk7CisgICAg
ICAgICAgICBpZiAobVN5bWJvbEVudi5pc1BvaW50ZXIoZmllbGQpICYmIG1TeW1ib2xFbnYuaXNV
Qk8oZmllbGQpKSB7CisgICAgICAgICAgICAgICAgZW1pdE9wZW5pbmdQb2ludGVyUGFyZW4oKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwZWRUcmF2ZXJzZShsZWZ0Tm9kZSk7Cisg
ICAgICAgICAgICBpZiAoIW1TeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBlbWl0Q2xvc2luZ1BvaW50ZXJQYXJlbigpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbU91dCA8PCAiLiI7Ci0gICAgICAgICAgICBlbWl0TmFtZU9mKGdl
dERpcmVjdEZpZWxkKGxlZnROb2RlLCByaWdodE5vZGUpKTsKKyAgICAgICAgICAgIGVtaXROYW1l
T2YoZmllbGQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC0xNTc1LDcgKzE2Njcs
NiBAQCBib29sIEdlbk1ldGFsVHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJp
bmFyeSAqYmluYXJ5Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgbU91dCA8PCBtYXhTaXplOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtT3V0IDw8ICIpIjsKLQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbU91dCA8PCAiXSI7CiAgICAgICAgIH0KQEAgLTE1OTQsMTEg
KzE2ODUsMTYgQEAgYm9vbCBHZW5NZXRhbFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQsIFRJ
bnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBtT3V0IDw8ICIgIjsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENsb3NpbmdQ
b2ludGVyUGFyZW4oKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbU91dCA8
PCBHZXRPcGVyYXRvclN0cmluZyhvcCwgcmVzdWx0VHlwZSwgJmxlZnRUeXBlLCAmcmlnaHRUeXBl
KSA8PCAiICI7CiAgICAgICAgICAgICAgICAgZ3JvdXBlZFRyYXZlcnNlKHJpZ2h0Tm9kZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZW1pdENsb3NpbmdQb2ludGVyUGFyZW4oKTsKICAgICAgICAgICAgICAgICBtT3V0IDw8
IEdldE9wZXJhdG9yU3RyaW5nKG9wLCByZXN1bHRUeXBlLCAmbGVmdFR5cGUsICZyaWdodFR5cGUp
IDw8ICIoIjsKICAgICAgICAgICAgICAgICBsZWZ0Tm9kZS50cmF2ZXJzZSh0aGlzKTsKICAgICAg
ICAgICAgICAgICBtT3V0IDw8ICIsICI7CkBAIC0xNzY2LDYgKzE4NjIsMTAgQEAgdm9pZCBHZW5N
ZXRhbFRyYXZlcnNlcjo6ZW1pdEZ1bmN0aW9uU2lnbmF0dXJlKGNvbnN0IFRGdW5jdGlvbiAmZnVu
YykKICAgICAgICAgY29uc3QgVFZhcmlhYmxlICZwYXJhbSA9ICpmdW5jLmdldFBhcmFtKGkpOwog
ICAgICAgICBlbWl0RnVuY3Rpb25QYXJhbWV0ZXIoZnVuYywgcGFyYW0pOwogICAgIH0KKyAgICBp
Zihpc1RyYXZlcnNpbmdWZXJ0ZXhNYWluKQorICAgIHsKKyAgICAgICAgbU91dCA8PCAiIEBAWEZC
LUJpbmRpbmdzQEAgIjsKKyAgICB9CiAKICAgICBtT3V0IDw8ICIpIjsKIH0KQEAgLTE3NzMsMTgg
KzE4NzMsMjAgQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEZ1bmN0aW9uU2lnbmF0dXJl
KGNvbnN0IFRGdW5jdGlvbiAmZnVuYykKIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRGdW5j
dGlvblJldHVybihjb25zdCBURnVuY3Rpb24gJmZ1bmMpCiB7CiAgICAgY29uc3QgYm9vbCBpc01h
aW4gPSBmdW5jLmlzTWFpbigpOwotCisgICAgYm9vbCBpc1ZlcnRleE1haW4gPSBmYWxzZTsKICAg
ICBjb25zdCBUVHlwZSAmcmV0dXJuVHlwZSA9IGZ1bmMuZ2V0UmV0dXJuVHlwZSgpOwogICAgIGlm
IChpc01haW4pCiAgICAgewogICAgICAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBy
ZXR1cm5UeXBlLmdldFN0cnVjdCgpOwotICAgICAgICBpZiAobVBpcGVsaW5lU3RydWN0cy5mcmFn
bWVudE91dC5tYXRjaGVzKHN0cnVjdHVyZSkpCisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0g
bnVsbHB0cik7CisgICAgICAgIGlmIChtUGlwZWxpbmVTdHJ1Y3RzLmZyYWdtZW50T3V0Lm1hdGNo
ZXMoKnN0cnVjdHVyZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1PdXQgPDwgImZyYWdtZW50
ICI7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobVBpcGVsaW5lU3RydWN0cy52ZXJ0ZXhP
dXQubWF0Y2hlcyhzdHJ1Y3R1cmUpKQorICAgICAgICBlbHNlIGlmIChtUGlwZWxpbmVTdHJ1Y3Rz
LnZlcnRleE91dC5tYXRjaGVzKCpzdHJ1Y3R1cmUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
T3V0IDw8ICJ2ZXJ0ZXggIjsKKyAgICAgICAgICAgIG1PdXQgPDwgInZlcnRleCBfX1ZFUlRFWF9P
VVQoIjsKKyAgICAgICAgICAgIGlzVmVydGV4TWFpbiA9IHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7CkBAIC0xNzkyLDYgKzE4OTQsOCBAQCB2b2lkIEdlbk1ldGFsVHJh
dmVyc2VyOjplbWl0RnVuY3Rpb25SZXR1cm4oY29uc3QgVEZ1bmN0aW9uICZmdW5jKQogICAgICAg
ICB9CiAgICAgfQogICAgIGVtaXRUeXBlKHJldHVyblR5cGUsIEVtaXRUeXBlQ29uZmlnKCkpOwor
ICAgIGlmKGlzVmVydGV4TWFpbikKKyAgICAgICAgbU91dCA8PCAiKSAiOwogfQogCiB2b2lkIEdl
bk1ldGFsVHJhdmVyc2VyOjplbWl0RnVuY3Rpb25QYXJhbWV0ZXIoY29uc3QgVEZ1bmN0aW9uICZm
dW5jLCBjb25zdCBUVmFyaWFibGUgJnBhcmFtKQpAQCAtMTgwNSw2ICsxOTA5LDcgQEAgdm9pZCBH
ZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEZ1bmN0aW9uUGFyYW1ldGVyKGNvbnN0IFRGdW5jdGlvbiAm
ZnVuYywgY29uc3QgVFZhcmkKICAgICBldmRDb25maWcuaXNQYXJhbWV0ZXIgICAgICAgPSB0cnVl
OwogICAgIGV2ZENvbmZpZy5pc01haW5QYXJhbWV0ZXIgICA9IGlzTWFpbjsKICAgICBldmRDb25m
aWcuZW1pdFBvc3RRdWFsaWZpZXIgPSBpc01haW47CisgICAgZXZkQ29uZmlnLmlzVUJPICAgICAg
ICAgICAgID0gbVN5bWJvbEVudi5pc1VCTyhwYXJhbSk7CiAgICAgZXZkQ29uZmlnLmlzUG9pbnRl
ciAgICAgICAgID0gbVN5bWJvbEVudi5pc1BvaW50ZXIocGFyYW0pOwogICAgIGV2ZENvbmZpZy5p
c1JlZmVyZW5jZSAgICAgICA9IG1TeW1ib2xFbnYuaXNSZWZlcmVuY2UocGFyYW0pOwogICAgIGVt
aXRWYXJpYWJsZURlY2xhcmF0aW9uKFZhckRlY2wocGFyYW0pLCBldmRDb25maWcpOwpAQCAtMTgx
NSwxOSArMTkyMCwyNCBAQCB2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0RnVuY3Rpb25QYXJh
bWV0ZXIoY29uc3QgVEZ1bmN0aW9uICZmdW5jLCBjb25zdCBUVmFyaQogICAgICAgICAgICAgKChz
aDo6VHJhbnNsYXRvck1ldGFsRGlyZWN0ICopJm1Db21waWxlciktPmdldFRyYW5zbGF0b3JNZXRh
bFJlZmxlY3Rpb24oKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1QaXBlbGluZVN0cnVjdHMuZnJhZ21lbnRJbi5tYXRjaGVzKHN0cnVjdHVyZSkg
fHwKLSAgICAgICAgICAgICAgICBtUGlwZWxpbmVTdHJ1Y3RzLnZlcnRleEluLm1hdGNoZXMoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgIGlmIChtUGlwZWxpbmVTdHJ1Y3RzLmZyYWdtZW50SW4ubWF0
Y2hlcygqc3RydWN0dXJlKSB8fAorICAgICAgICAgICAgICAgIG1QaXBlbGluZVN0cnVjdHMudmVy
dGV4SW4ubWF0Y2hlcygqc3RydWN0dXJlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBtT3V0IDw8ICIgW1tzdGFnZV9pbl1dIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgaWYgKG1QaXBlbGluZVN0cnVjdHMuYW5nbGVVbmlmb3Jtcy5tYXRjaGVzKHN0cnVjdHVyZSkp
CisgICAgICAgICAgICBlbHNlIGlmIChtUGlwZWxpbmVTdHJ1Y3RzLmFuZ2xlVW5pZm9ybXMubWF0
Y2hlcygqc3RydWN0dXJlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtT3V0IDw8
ICIgW1tidWZmZXIoIiA8PCByeDo6bXRsOjprRHJpdmVyVW5pZm9ybXNCaW5kaW5nSW5kZXggPDwg
IildXSI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtUGlwZWxpbmVTdHJ1
Y3RzLnVzZXJVbmlmb3Jtcy5tYXRjaGVzKHN0cnVjdHVyZSkpCisgICAgICAgICAgICBlbHNlIGlm
IChtUGlwZWxpbmVTdHJ1Y3RzLnVuaWZvcm1CdWZmZXJzLm1hdGNoZXMoKnN0cnVjdHVyZSkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbU91dCA8PCAiIFtbYnVmZmVyKCIgPDwgcng6
Om10bDo6a1VCT0FyZ3VtZW50QnVmZmVyQmluZGluZ0luZGV4IDw8ICIpXV0iOworICAgICAgICAg
ICAgICAgIHJlZmxlY3Rpb24tPmhhc1VCT3MgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAobVBpcGVsaW5lU3RydWN0cy51c2VyVW5pZm9ybXMubWF0Y2hlcygqc3Ry
dWN0dXJlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtT3V0IDw8ICIgW1tidWZm
ZXIoIiA8PCBtTWFpblVuaWZvcm1CdWZmZXJJbmRleCA8PCAiKV1dIjsKLSAgICAgICAgICAgICAg
ICByZWZsZWN0aW9uLT5hZGRVbmlmb3JtQnVmZmVyQmluZGluZyhwYXJhbS5uYW1lKCkuZGF0YSgp
LCBtTWFpblVuaWZvcm1CdWZmZXJJbmRleCk7CisgICAgICAgICAgICAgICAgcmVmbGVjdGlvbi0+
YWRkVXNlclVuaWZvcm1CdWZmZXJCaW5kaW5nKHBhcmFtLm5hbWUoKS5kYXRhKCksIG1NYWluVW5p
Zm9ybUJ1ZmZlckluZGV4KTsKICAgICAgICAgICAgICAgICBtTWFpblVuaWZvcm1CdWZmZXJJbmRl
eCArPSB0eXBlLmdldEFycmF5U2l6ZVByb2R1Y3QoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+bmFtZSgpID09ICJtZXRhbDo6c2FtcGxlciIpCkBAIC0x
ODY2LDEyICsxOTc2LDIwIEBAIGJvb2wgR2VuTWV0YWxUcmF2ZXJzZXI6OnZpc2l0RnVuY3Rpb25E
ZWZpbml0aW9uKFZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uCiB7CiAgICAgY29uc3Qg
VEZ1bmN0aW9uICZmdW5jID0gKmZ1bmNEZWZOb2RlLT5nZXRGdW5jdGlvbigpOwogICAgIFRJbnRl
cm1CbG9jayAmYm9keSAgICA9ICpmdW5jRGVmTm9kZS0+Z2V0Qm9keSgpOwotCisgICAgaWYoZnVu
Yy5pc01haW4oKSkKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICZyZXR1cm5UeXBlID0gZnVu
Yy5nZXRSZXR1cm5UeXBlKCk7CisgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9
IHJldHVyblR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGlzVHJhdmVyc2luZ1ZlcnRleE1haW4g
PSAobVBpcGVsaW5lU3RydWN0cy52ZXJ0ZXhPdXQubWF0Y2hlcygqc3RydWN0dXJlKSk7CisgICAg
fQogICAgIGVtaXRJbmRlbnRhdGlvbigpOwogICAgIGVtaXRGdW5jdGlvblNpZ25hdHVyZShmdW5j
KTsKICAgICBtT3V0IDw8ICJcbiI7CiAgICAgYm9keS50cmF2ZXJzZSh0aGlzKTsKLQorICAgIGlm
KGlzVHJhdmVyc2luZ1ZlcnRleE1haW4pCisgICAgeworICAgICAgICBpc1RyYXZlcnNpbmdWZXJ0
ZXhNYWluID0gZmFsc2U7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTkzMSw2
ICsyMDQ5LDcgQEAgYm9vbCBHZW5NZXRhbFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQs
IFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZU5vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChlbWl0Q29tbWEpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdENsb3Np
bmdQb2ludGVyUGFyZW4oKTsKICAgICAgICAgICAgICAgICBtT3V0IDw8ICIsICI7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbWl0Q29tbWEgPSB0cnVlOwpAQCAtMTk5MCw3ICsyMTA5LDE1
IEBAIGJvb2wgR2VuTWV0YWxUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJt
QWdncmVnYXRlICphZ2dyZWdhdGVOb2RlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IGNvbnN0IFRGdW5jdGlvbiAmZnVuYyA9ICphZ2dyZWdhdGVOb2RlLT5nZXRGdW5jdGlvbigpOwog
ICAgICAgICAgICAgICAgIGVtaXROYW1lT2YoZnVuYyk7Ci0gICAgICAgICAgICAgICAgZW1pdEFy
Z0xpc3QoIigiLCAiKSIpOworICAgICAgICAgICAgICAgIC8vJ0AnIHN5bWJvbCBpbiBuYW1lIHNw
ZWNpZmljZXMgYSBtYWNybyBzdWJzdGl0dXRpb24gbWFya2VyLgorICAgICAgICAgICAgICAgIGlm
KCFmdW5jLm5hbWUoKS5jb250YWlucygiQCIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEFyZ0xpc3QoIigiLCAiKSIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtVGVtcG9yYXJpbHlEaXNhYmxlU2VtaWNvbG9uID0gdHJ1ZTsgLy9EaXNhYmxlIHNlbWljb2xv
biBmb3IgbWFjcm8gc3Vic3RpdHV0aW9uLgorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKQEAgLTIxMTYsNiArMjI0Myw3IEBA
IHN0YXRpYyBib29sIFJlcXVpcmVzU2VtaWNvbG9uVGVybWluYXRvcihUSW50ZXJtTm9kZSAmbm9k
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMjE3NSwxMCArMjMwMywxMSBAQCBib29sIEdlbk1ldGFsVHJhdmVyc2VyOjp2
aXNpdEJsb2NrKFZpc2l0LCBUSW50ZXJtQmxvY2sgKmJsb2NrTm9kZSkKICAgICAgICAgZW1pdElu
ZGVudGF0aW9uKCk7CiAgICAgICAgIG1JbmRlbnRMZXZlbCArPSBpc0Nhc2U7CiAgICAgICAgIHN0
bXROb2RlLnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBpZiAoUmVxdWlyZXNTZW1pY29sb25UZXJt
aW5hdG9yKHN0bXROb2RlKSkKKyAgICAgICAgaWYgKFJlcXVpcmVzU2VtaWNvbG9uVGVybWluYXRv
cihzdG10Tm9kZSkgJiYgIW1UZW1wb3JhcmlseURpc2FibGVTZW1pY29sb24pCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1PdXQgPDwgIjsiOwogICAgICAgICB9CisgICAgICAgIG1UZW1wb3Jhcmls
eURpc2FibGVTZW1pY29sb24gPSBmYWxzZTsKICAgICAgICAgbU91dCA8PCAiXG4iOwogCiAgICAg
ICAgIHByZXZTdG10Tm9kZSA9ICZzdG10Tm9kZTsKQEAgLTIzNzYsMTEgKzI1MDUsMjggQEAgYm9v
bCBHZW5NZXRhbFRyYXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFuY2ggKmJy
YW5jaE5vZGUpCiAKICAgICAgICAgY2FzZSBUT3BlcmF0b3I6OkVPcFJldHVybjoKICAgICAgICAg
eworICAgICAgICAgICAgaWYoaXNUcmF2ZXJzaW5nVmVydGV4TWFpbikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBtT3V0IDw8ICIjaWYgVFJBTlNGT1JNX0ZFRURCQUNLX0VOQUJMRURc
biI7CisgICAgICAgICAgICAgICAgZW1pdEluZGVudGF0aW9uKCk7CisgICAgICAgICAgICAgICAg
bU91dCA8PCAicmV0dXJuO1xuIjsKKyAgICAgICAgICAgICAgICBlbWl0SW5kZW50YXRpb24oKTsK
KyAgICAgICAgICAgICAgICBtT3V0IDw8ICIjZWxzZVxuIjsKKyAgICAgICAgICAgICAgICBlbWl0
SW5kZW50YXRpb24oKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1PdXQgPDwgInJldHVy
biI7CiAgICAgICAgICAgICBpZiAoZXhwck5vZGUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgbU91dCA8PCAiICI7CiAgICAgICAgICAgICAgICAgZXhwck5vZGUtPnRyYXZlcnNlKHRo
aXMpOworICAgICAgICAgICAgICAgIG1PdXQgPDwgIjsiOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYoaXNUcmF2ZXJzaW5nVmVydGV4TWFpbikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBtT3V0IDw8ICJcbiI7CisgICAgICAgICAgICAgICAgZW1pdEluZGVudGF0aW9uKCk7
CisgICAgICAgICAgICAgICAgbU91dCA8PCAiI2VuZGlmXG4iOworICAgICAgICAgICAgICAgIG1U
ZW1wb3JhcmlseURpc2FibGVTZW1pY29sb24gPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ZpeFR5cGVDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ZpeFR5cGVDb25zdHJ1Y3RvcnMuY3BwCmluZGV4
IDUwOTgzMzRjOWY3N2Q0NzUwYjYyZjZjZTBhNjZjY2VmMDdhM2EzOGUuLmIyNjAyYjM3OWM0NDYw
NjcwZGQ3MmI0OWYyOTY0MzFhNTA1NDIxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9GaXhU
eXBlQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRml4VHlwZUNvbnN0cnVjdG9y
cy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZWxzZSBpZiAocmV0VHlwZS5pc1ZlY3RvcigpKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHNpemVfdCBwcmltYXJ5U2l6ZSA9IHJldFR5cGUuZ2V0Tm9taW5hbFNpemUoKTsKKyAg
ICAgICAgICAgICAgICBzaXplX3QgcHJpbWFyeVNpemUgPSByZXRUeXBlLmdldE5vbWluYWxTaXpl
KCkgKiByZXRUeXBlLmdldEFycmF5U2l6ZVByb2R1Y3QoKTsKICAgICAgICAgICAgICAgICBUSW50
ZXJtU2VxdWVuY2UgKmFyZ3MgPSBhZ2dyZWdhdGVOb2RlLT5nZXRTZXF1ZW5jZSgpOwogICAgICAg
ICAgICAgICAgIHNpemVfdCBhcmdzU2l6ZSA9IDA7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGJl
Zm9yZVNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZlcnRleElu
ZGV4SUQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZlcnRleEluZGV4SUQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFkNDkxOWJhN2RmZTlkMzAyMDM3M2VkMjRlMDNlOTVkNWZlODE1ZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvSW50cm9kdWNlVmVydGV4SW5kZXhJRC5jcHAKQEAgLTAs
MCArMSw5MiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZlcnRleEluZGV4SUQuaCIKKyNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Bc3RIZWxwZXJzLmgiCisj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvSW50ZXJtUmVidWlsZC5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3RhdGljVHlwZS5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0J1aWx0SW4uaCIKK3VzaW5nIG5hbWVzcGFjZSBz
aDsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworbmFtZXNwYWNlCit7CisKK2NvbnN0ZXhw
ciBjb25zdCBUVmFyaWFibGUga2dsX1ZlcnRleElETWV0YWwoCisgICAgQnVpbHRJbklkOjpnbF9W
ZXJ0ZXhJRCwKKyAgICBJbW11dGFibGVTdHJpbmcoImdsX1ZlcnRleElEIiksCisgICAgU3ltYm9s
VHlwZTo6QnVpbHRJbiwKKyAgICBURXh0ZW5zaW9uOjpVTkRFRklORUQsCisgICAgU3RhdGljVHlw
ZTo6R2V0PEVidFVJbnQsIEVicEhpZ2gsIEV2cVZlcnRleElELCAxLCAxPigpKTsKKworY29uc3Rl
eHByIGNvbnN0IFRWYXJpYWJsZSBrZ2xfaW5zdGFuY2VJZE1ldGFsKAorICAgIEJ1aWx0SW5JZDo6
Z2xfVmVydGV4SUQsCisgICAgSW1tdXRhYmxlU3RyaW5nKCJpbnN0YW5jZUlkTW9kIiksCisgICAg
U3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCwKKyAgICBURXh0ZW5zaW9uOjpVTkRFRklORUQsCisg
ICAgU3RhdGljVHlwZTo6R2V0PEVidFVJbnQsIEVicEhpZ2gsIEV2cUluc3RhbmNlSUQsIDEsIDE+
KCkpOworCisKK2NsYXNzIFJld3JpdGVyIDogcHVibGljIFRJbnRlcm1SZWJ1aWxkCit7CisgIHB1
YmxpYzoKKyAgICBSZXdyaXRlcihUQ29tcGlsZXIgJmNvbXBpbGVyKSA6IFRJbnRlcm1SZWJ1aWxk
KGNvbXBpbGVyLCB0cnVlLCB0cnVlKQorICAgIHt9CisKKworICBwcml2YXRlOgorCisgICAgUHJl
UmVzdWx0IHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uUHJlKFRJbnRlcm1GdW5jdGlvbkRlZmluaXRp
b24gJm5vZGUpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZihub2RlLmdldEZ1bmN0aW9uKCkt
PmlzTWFpbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24gKiBtYWlu
RnVuY3Rpb24gPSBub2RlLmdldEZ1bmN0aW9uKCk7CisgICAgICAgICAgICBib29sIG5lZWRzVmVy
dGV4SWQgPSB0cnVlOworICAgICAgICAgICAgYm9vbCBuZWVkc0luc3RhbmNlSWQgPSB0cnVlOwor
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgVFZhcmlhYmxlICo+IG1WYXJpYWJsZXNUb0lu
dHJvZHVjZTsKKyAgICAgICAgICAgIGZvcihzaXplX3QgaSA9IDA7IGkgPCBtYWluRnVuY3Rpb24t
PmdldFBhcmFtQ291bnQoKTsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnN0IFRWYXJpYWJsZSAqIHBhcmFtID0gbWFpbkZ1bmN0aW9uLT5nZXRQYXJhbShpKTsKKyAgICAg
ICAgICAgICAgICBOYW1lIGluc3RhbmNlSUROYW1lID0gUGlwZWxpbmV7UGlwZWxpbmU6OlR5cGU6
Okluc3RhbmNlSWQsIG51bGxwdHJ9LmdldFN0cnVjdEluc3RhbmNlTmFtZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBpcGVsaW5lOjpWYXJpYW50OjpNb2RpZmllZCk7Cisg
ICAgICAgICAgICAgICAgaWYoTmFtZSgqcGFyYW0pID09IGluc3RhbmNlSUROYW1lKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbmVlZHNJbnN0YW5jZUlkID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gVFF1YWxpZmllcjo6RXZxVmVydGV4SUQpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBuZWVkc1ZlcnRleElkID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYobmVlZHNJbnN0
YW5jZUlkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1WYXJpYWJsZXNUb0ludHJv
ZHVjZS5wdXNoX2JhY2soJmtnbF9pbnN0YW5jZUlkTWV0YWwpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYobmVlZHNWZXJ0ZXhJZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtVmFyaWFibGVzVG9JbnRyb2R1Y2UucHVzaF9iYWNrKCZrZ2xfVmVydGV4SURNZXRhbCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24gJiBuZXdGdW5jdGlvbiA9
IENsb25lRnVuY3Rpb25BbmRBcHBlbmRQYXJhbXMobVN5bWJvbFRhYmxlLCBudWxscHRyLCAqbm9k
ZS5nZXRGdW5jdGlvbigpLCBtVmFyaWFibGVzVG9JbnRyb2R1Y2UpOworICAgICAgICAgICAgVElu
dGVybUZ1bmN0aW9uUHJvdG90eXBlICogbmV3UHJvdG8gPSBuZXcgVEludGVybUZ1bmN0aW9uUHJv
dG90eXBlKCZuZXdGdW5jdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRJbnRlcm1GdW5j
dGlvbkRlZmluaXRpb24obmV3UHJvdG8sIG5vZGUuZ2V0Qm9keSgpKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbm9kZTsKKyAgICB9Cit9OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2Jvb2wgc2g6OkludHJvZHVjZVZlcnRleEFu
ZEluc3RhbmNlSW5kZXgoVENvbXBpbGVyICZjb21waWxlciwgVEludGVybUJsb2NrICZyb290KQor
eworICAgIGlmICghUmV3cml0ZXIoY29tcGlsZXIpLnJlYnVpbGRSb290KHJvb3QpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9JbnRyb2R1Y2VWZXJ0ZXhJbmRleElELmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvSW50cm9kdWNlVmVydGV4SW5kZXhJRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZTBmNjFmOTQ5ZGVlYjkw
ZGY4YWYzNGRiNjI1ODdmOTMyN2IxZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
SW50cm9kdWNlVmVydGV4SW5kZXhJRC5oCkBAIC0wLDAgKzEsMjAgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNp
Zm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9UUkFOU0xBVE9STUVUQUxESVJFQ1RfSU5UUk9EVUNF
VkVSVEVYSU5ERVhfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9UUkFOU0xBVE9STUVU
QUxESVJFQ1RfSU5UUk9EVUNFVkVSVEVYSU5ERVhfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1BpcGVsaW5l
LmgiCituYW1lc3BhY2Ugc2gKK3sKKworQU5HTEVfTk9fRElTQ0FSRCBib29sIEludHJvZHVjZVZl
cnRleEFuZEluc3RhbmNlSW5kZXgoVENvbXBpbGVyICZjb21waWxlciwgVEludGVybUJsb2NrICZy
b290KTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9UUkFOU0xBVE9STUVUQUxESVJFQ1RfSU5UUk9EVUNFVkVSVEVYSU5ERVhfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9MYXlvdXQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0xheW91dC5jcHAK
aW5kZXggNTM0NmY2ZjgxNDI4MmMxMmFmNjc5MTRkMmEzMDQyMzQxNjBmYTJlYi4uNTdiNDg4OTAw
MTRmZjc5NTUwN2NkNTNmYmZmMDdhMTljZjRiNmNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L0xheW91dC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0xheW91dC5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCBMYXlvdXQgc2g6Ok1ldGFsTGF5b3V0T2YoY29uc3QgVFR5cGUgJnR5cGUsIE1ldGFsTGF5
b3V0T2ZDb25maWcgY29uZmlnKQogICAgICAgICB9CiAgICAgICAgIGlmIChjb25maWcuYXNzdW1l
U3RydWN0c0FyZVRhaWxQYWRkZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBwYWQg
PSBsYXlvdXQuc2l6ZU9mICUgMTY7CisgICAgICAgICAgICBzaXplX3QgcGFkID0gKGtEZWZhdWx0
U3RydWN0QWxpZ25tZW50U2l6ZSAtIGxheW91dC5zaXplT2YpICUga0RlZmF1bHRTdHJ1Y3RBbGln
bm1lbnRTaXplOwogICAgICAgICAgICAgbGF5b3V0LnNpemVPZiArPSBwYWQ7CiAgICAgICAgIH0K
ICAgICAgICAgbGF5b3V0LnNpemVPZiA9IFJvdW5kVXBUb011bHRpcGxlT2YobGF5b3V0LnNpemVP
ZiwgbGF5b3V0LmFsaWduT2YpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0xheW91dC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ck1ldGFsRGlyZWN0L0xheW91dC5oCmluZGV4IDE0MTNlZGY0OWZlZjI3YzAwYWQ2MTY2YWVhY2Zl
NTI2YWE5NGYxZDQuLjQ1Mjg3Y2QyMjQ2Y2MwZTY4NjY0NDlkZDM2NDU4N2MwZTk0MWI1ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JNZXRhbERpcmVjdC9MYXlvdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTGF5b3V0
LmgKQEAgLTE1LDYgKzE1LDcgQEAgbmFtZXNwYWNlIHNoCiAKIGNvbnN0ZXhwciBjb25zdCBhdXRv
IGtEZWZhdWx0TGF5b3V0QmxvY2tTdG9yYWdlICA9IFRMYXlvdXRCbG9ja1N0b3JhZ2U6OkVic1No
YXJlZDsKIGNvbnN0ZXhwciBjb25zdCBhdXRvIGtEZWZhdWx0TGF5b3V0TWF0cml4UGFja2luZyA9
IFRMYXlvdXRNYXRyaXhQYWNraW5nOjpFbXBDb2x1bW5NYWpvcjsKK2NvbnN0ZXhwciBjb25zdCBh
dXRvIGtEZWZhdWx0U3RydWN0QWxpZ25tZW50U2l6ZSA9IDE2OwogCiAvLyBSZXR1cm5zIGBvbGRT
dG9yYWdlYCBpZiBgdHlwZWAgaGFzIHVuc3BlY2lmaWVkIGJsb2NrIHN0b3JhZ2UuCiAvLyBPdGhl
cndpc2UgcmV0dXJucyBibG9jayBzdG9yYWdlIG9mIGB0eXBlYC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9Nb2RpZnlTdHJ1Y3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVjdC5jcHAK
aW5kZXggOTc3OGQzNGNjMzFjNTA5YjA5NjM5ZTA2ZWIzODY1MGY4MGYxMmIwYy4uZTQzYThlZTE5
YTRkYTEzN2MyMDJlNWZkYzRlNDI4ODFiYjhlOGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L01vZGlmeVN0cnVjdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVjdC5jcHAKQEAg
LTEwLDYgKzEwLDggQEAKICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogI2luY2x1ZGUgPHVub3Jk
ZXJlZF9zZXQ+CiAKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgiCisj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Bc3RIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvTW9kaWZ5U3RydWN0LmgiCiAKQEAgLTE0OCwxNiArMTUwLDIwIEBAIGNsYXNzIENvbnZlcnRT
dHJ1Y3RTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIH07CiAKICAgcHVibGljOgotICAg
IENvbnZlcnRTdHJ1Y3RTdGF0ZShTeW1ib2xFbnYgJnN5bWJvbEVudiwKKyAgICBDb252ZXJ0U3Ry
dWN0U3RhdGUoVENvbXBpbGVyICZjb21waWxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgU3lt
Ym9sRW52ICZzeW1ib2xFbnYsCiAgICAgICAgICAgICAgICAgICAgICAgIElkR2VuICZpZEdlbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTW9kaWZ5U3RydWN0Q29uZmlnICZjb25maWcs
Ci0gICAgICAgICAgICAgICAgICAgICAgIE1vZGlmaWVkU3RydWN0TWFjaGluZXJpZXMgJm91dE1h
Y2hpbmVyaWVzKQotICAgICAgICA6IGNvbmZpZyhjb25maWcpLAorICAgICAgICAgICAgICAgICAg
ICAgICBNb2RpZmllZFN0cnVjdE1hY2hpbmVyaWVzICZvdXRNYWNoaW5lcmllcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgYm9vbCBpc1VCTykKKyAgICAgICAgOiBtQ29tcGlsZXIoY29t
cGlsZXIpLAorICAgICAgICAgIGNvbmZpZyhjb25maWcpLAogICAgICAgICAgIHN5bWJvbEVudihz
eW1ib2xFbnYpLAogICAgICAgICAgIG1vZGlmaWVkRmllbGRzKCpuZXcgVEZpZWxkTGlzdCgpKSwK
ICAgICAgICAgICBzeW1ib2xUYWJsZShzeW1ib2xFbnYuc3ltYm9sVGFibGUoKSksCiAgICAgICAg
ICAgaWRHZW4oaWRHZW4pLAotICAgICAgICAgIG91dE1hY2hpbmVyaWVzKG91dE1hY2hpbmVyaWVz
KQorICAgICAgICAgIG91dE1hY2hpbmVyaWVzKG91dE1hY2hpbmVyaWVzKSwKKyAgICAgICAgICBp
c1VCTyhpc1VCTykKICAgICB7fQogCiAgICAgfkNvbnZlcnRTdHJ1Y3RTdGF0ZSgpCkBAIC0xODMs
NiArMTg5LDcgQEAgY2xhc3MgQ29udmVydFN0cnVjdFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiAgICAgICAgICAgICBDcmVhdGVJbnN0YW5jZVZhcmlhYmxlKHN5bWJvbFRhYmxlLCBvcmlnaW5h
bFN0cnVjdCwgTmFtZSgib3JpZ2luYWwiKSk7CiAgICAgICAgIE1vZGlmaWVkUGFyYW0gbW9kaWZp
ZWRQYXJhbSA9CiAgICAgICAgICAgICBDcmVhdGVJbnN0YW5jZVZhcmlhYmxlKHN5bWJvbFRhYmxl
LCBtb2RpZmllZFN0cnVjdCwgTmFtZSgibW9kaWZpZWQiKSk7CisKICAgICAgICAgc3ltYm9sRW52
Lm1hcmtBc1JlZmVyZW5jZShvcmlnaW5hbFBhcmFtLCBBZGRyZXNzU3BhY2U6OlRocmVhZCk7CiAg
ICAgICAgIHN5bWJvbEVudi5tYXJrQXNSZWZlcmVuY2UobW9kaWZpZWRQYXJhbSwgY29uZmlnLmV4
dGVybmFsQWRkcmVzc1NwYWNlKTsKICAgICAgICAgaWYgKGlzT3JpZ2luYWxUb01vZGlmaWVkKQpA
QCAtMjI4LDcgKzIzNSw3IEBAIGNsYXNzIENvbnZlcnRTdHJ1Y3RTdGF0ZSA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgICAgICAgICAgY29uc3QgVFR5cGUgbXQgPSBtb2RpZmllZC0+Z2V0VHlwZSgp
OwogICAgICAgICAgICAgQVNTRVJUKG90LmlzQXJyYXkoKSA9PSBtdC5pc0FycmF5KCkpOwogCi0g
ICAgICAgICAgICBpZiAob3QuaXNBcnJheSgpICYmIG90ICE9IG10KQorICAgICAgICAgICAgaWYg
KG90LmlzQXJyYXkoKSAmJiAob3QuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubWF0cml4UGFja2luZyA9
PSBFbXBSb3dNYWpvciAgfHwgb3QgIT0gbXQpKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChvdC5nZXRBcnJheVNpemVzKCkgPT0gbXQuZ2V0QXJyYXlTaXplcygpKTsKICAg
ICAgICAgICAgICAgICBpZiAob3QuaXNBcnJheU9mQXJyYXlzKCkpCkBAIC0yOTYsMTkgKzMwMywy
MiBAQCBjbGFzcyBDb252ZXJ0U3RydWN0U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAg
ICAgcGF0aEl0ZW1zLnBvcF9iYWNrKCk7CiAgICAgfQogCi0gICAgdm9pZCBmaW5hbGl6ZSgpCisg
ICAgdm9pZCBmaW5hbGl6ZShjb25zdCBib29sIGFsbG93UGFkZGluZykKICAgICB7CiAgICAgICAg
IEFTU0VSVCghZmluYWxpemVkKTsKICAgICAgICAgZmluYWxpemVkID0gdHJ1ZTsKICAgICAgICAg
aW50cm9kdWNlUGFja2luZygpOwogICAgICAgICBBU1NFUlQobWV0YWxMYXlvdXRUb3RhbCA9PSBM
YXlvdXQ6OklkZW50aXR5KCkpOwotICAgICAgICBpbnRyb2R1Y2VQYWRkaW5nKCk7CisgICAgICAg
IC8vIE9ubHkgcGFkIHN1YnN0cnVjdHMuIFdlIGRvbid0IHdhbnQgdG8gcGFkIHRoZSBzdHJ1Y3R1
cmUgdGhhdCBjb250YWlucyBhbGwgdGhlIFVCT3MsIG9ubHkgaW5kaXZpZHVhbCBVQk9zLgorICAg
ICAgICBpZiAoYWxsb3dQYWRkaW5nKQorICAgICAgICAgICAgaW50cm9kdWNlUGFkZGluZygpOwog
ICAgIH0KIAogICAgIHZvaWQgYWRkTW9kaWZpZWRGaWVsZChjb25zdCBURmllbGQgJmZpZWxkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZSAmbmV3VHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVExheW91dEJsb2NrU3RvcmFnZSBzdG9yYWdlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBUTGF5b3V0TWF0cml4UGFja2luZyBwYWNraW5nKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICBUTGF5b3V0TWF0cml4UGFja2luZyBwYWNraW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBBZGRyZXNzU3BhY2UgKiBhZGRyZXNzU3BhY2UpCiAgICAgewogICAg
ICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllciA9IG5ld1R5cGUuZ2V0TGF5b3V0
UXVhbGlmaWVyKCk7CiAgICAgICAgIGxheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgICAgID0g
c3RvcmFnZTsKQEAgLTMxNiw3ICszMjYsMTcgQEAgY2xhc3MgQ29udmVydFN0cnVjdFN0YXRlIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIG5ld1R5cGUuc2V0TGF5b3V0UXVhbGlmaWVyKGxh
eW91dFF1YWxpZmllcik7CiAKICAgICAgICAgY29uc3QgSW1tdXRhYmxlU3RyaW5nIHBhdGhOYW1l
KG5hbWVQYXRoKTsKLSAgICAgICAgbW9kaWZpZWRGaWVsZHMucHVzaF9iYWNrKG5ldyBURmllbGQo
Jm5ld1R5cGUsIHBhdGhOYW1lLCBmaWVsZC5saW5lKCksIGZpZWxkLnN5bWJvbFR5cGUoKSkpOwor
ICAgICAgICBURmllbGQgKiBtb2RpZmllZEZpZWxkID0gbmV3IFRGaWVsZCgmbmV3VHlwZSwgcGF0
aE5hbWUsIGZpZWxkLmxpbmUoKSwgZmllbGQuc3ltYm9sVHlwZSgpKTsKKyAgICAgICAgaWYoYWRk
cmVzc1NwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBzeW1ib2xFbnYubWFya0FzUG9pbnRl
cigqbW9kaWZpZWRGaWVsZCwgKmFkZHJlc3NTcGFjZSk7CisKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc3ltYm9sRW52LmlzVUJPKGZpZWxkKSkKKyAgICAgICAgeworICAgICAgICAgICAgc3ltYm9s
RW52Lm1hcmtBc1VCTygqbW9kaWZpZWRGaWVsZCk7CisgICAgICAgIH0KKyAgICAgICAgbW9kaWZp
ZWRGaWVsZHMucHVzaF9iYWNrKG1vZGlmaWVkRmllbGQpOwogICAgIH0KIAogICAgIHZvaWQgYWRk
Q29udmVyc2lvbihjb25zdCBDb252ZXJzaW9uRnVuYyAmZnVuYykKQEAgLTMzNSwxMyArMzU1LDE2
IEBAIGNsYXNzIENvbnZlcnRTdHJ1Y3RTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAg
Ym9vbCBoYXNQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gcGFkRmllbGRDb3VudCA+IDA7IH0KIAot
ICAgIGJvb2wgcmVjdXJzZShjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUsIE1vZGlmaWVkU3Ry
dWN0TWFjaGluZXJ5ICZvdXRNYWNoaW5lcnkpCisgICAgYm9vbCByZWN1cnNlKGNvbnN0IFRTdHJ1
Y3R1cmUgJnN0cnVjdHVyZSwgTW9kaWZpZWRTdHJ1Y3RNYWNoaW5lcnkgJm91dE1hY2hpbmVyeSwg
Y29uc3QgYm9vbCBpc1VCTykKICAgICB7CiAgICAgICAgIGNvbnN0IE1vZGlmaWVkU3RydWN0TWFj
aGluZXJ5ICptID0gb3V0TWFjaGluZXJpZXMuZmluZChzdHJ1Y3R1cmUpOwogICAgICAgICBpZiAo
bSA9PSBudWxscHRyKQogICAgICAgICB7CisgICAgICAgICAgICBUcmFuc2xhdG9yTWV0YWxSZWZs
ZWN0aW9uICpyZWZsZWN0aW9uID0KKyAgICAgICAgICAgICAgICAoKHNoOjpUcmFuc2xhdG9yTWV0
YWxEaXJlY3QgKikmbUNvbXBpbGVyKS0+Z2V0VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbigpOwor
ICAgICAgICAgICAgcmVmbGVjdGlvbi0+YWRkT3JpZ2luYWxOYW1lKHN0cnVjdHVyZS51bmlxdWVJ
ZCgpLmdldCgpLCBzdHJ1Y3R1cmUubmFtZSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjb25zdCBO
YW1lIG5hbWUgPSBpZEdlbi5jcmVhdGVOZXdOYW1lKHN0cnVjdHVyZS5uYW1lKCkuZGF0YSgpKTsK
LSAgICAgICAgICAgIGlmICghVHJ5Q3JlYXRlTW9kaWZpZWRTdHJ1Y3Qoc3ltYm9sRW52LCBpZEdl
biwgY29uZmlnLCBzdHJ1Y3R1cmUsIG5hbWUsIG91dE1hY2hpbmVyaWVzKSkKKyAgICAgICAgICAg
IGlmICghVHJ5Q3JlYXRlTW9kaWZpZWRTdHJ1Y3QobUNvbXBpbGVyLCBzeW1ib2xFbnYsIGlkR2Vu
LCBjb25maWcsIHN0cnVjdHVyZSwgbmFtZSwgb3V0TWFjaGluZXJpZXMsIGlzVUJPLCB0cnVlKSkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CkBAIC0zNTIsNiArMzc1LDExIEBAIGNsYXNzIENvbnZlcnRTdHJ1Y3RTdGF0ZSA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBib29sIGdl
dElzVUJPKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc1VCTzsKKyAgICB9CisKICAg
cHJpdmF0ZToKICAgICB2b2lkIGFkZFBhZGRpbmcoc2l6ZV90IHBhZEFtb3VudCwgYm9vbCB1cGRh
dGVMYXlvdXQpCiAgICAgewpAQCAtNTc0LDYgKzYwMiw3IEBAIGNsYXNzIENvbnZlcnRTdHJ1Y3RT
dGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIH0KIAogICBwdWJsaWM6CisgICAgVENvbXBp
bGVyICZtQ29tcGlsZXI7CiAgICAgY29uc3QgTW9kaWZ5U3RydWN0Q29uZmlnICZjb25maWc7CiAg
ICAgU3ltYm9sRW52ICZzeW1ib2xFbnY7CiAKQEAgLTU5Myw2ICs2MjIsNyBAQCBjbGFzcyBDb252
ZXJ0U3RydWN0U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBUU3ltYm9sVGFibGUgJnN5
bWJvbFRhYmxlOwogICAgIElkR2VuICZpZEdlbjsKICAgICBNb2RpZmllZFN0cnVjdE1hY2hpbmVy
aWVzICZvdXRNYWNoaW5lcmllczsKKyAgICBjb25zdCBib29sIGlzVUJPOwogfTsKIAogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KQEAgLTYxMyw3ICs2NDMsNyBAQCBib29sIElkZW50aXR5TW9kaWZ5
KENvbnZlcnRTdHJ1Y3RTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRM
YXlvdXRNYXRyaXhQYWNraW5nIHBhY2tpbmcpCiB7CiAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSAq
ZmllbGQudHlwZSgpOwotICAgIHN0YXRlLmFkZE1vZGlmaWVkRmllbGQoZmllbGQsIENsb25lVHlw
ZSh0eXBlKSwgc3RvcmFnZSwgcGFja2luZyk7CisgICAgc3RhdGUuYWRkTW9kaWZpZWRGaWVsZChm
aWVsZCwgQ2xvbmVUeXBlKHR5cGUpLCBzdG9yYWdlLCBwYWNraW5nLCBudWxscHRyKTsKICAgICBz
dGF0ZS5hZGRDb252ZXJzaW9uKFs9XShBY2Nlc3M6OkVudiAmLCBPcmlnaW5hbEFjY2VzcyAmbywg
TW9kaWZpZWRBY2Nlc3MgJm0pIHsKICAgICAgICAgcmV0dXJuIEFjY2Vzc3tvLCBtfTsKICAgICB9
KTsKQEAgLTY2OSw3ICs2OTksNyBAQCBib29sIFJlY3Vyc2VTdHJ1Y3QoQ29udmVydFN0cnVjdFN0
YXRlICZzdGF0ZSwKICAgICB9CiAKICAgICBNb2RpZmllZFN0cnVjdE1hY2hpbmVyeSBtYWNoaW5l
cnk7Ci0gICAgaWYgKCFzdGF0ZS5yZWN1cnNlKCpzdWJzdHJ1Y3R1cmUsIG1hY2hpbmVyeSkpCisg
ICAgaWYgKCFzdGF0ZS5yZWN1cnNlKCpzdWJzdHJ1Y3R1cmUsIG1hY2hpbmVyeSwgc3RhdGUuZ2V0
SXNVQk8oKSkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNjgzLDcg
KzcxMywxMSBAQCBib29sIFJlY3Vyc2VTdHJ1Y3QoQ29udmVydFN0cnVjdFN0YXRlICZzdGF0ZSwK
ICAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpjb252ZXJ0ZXIgPSBtYWNoaW5lcnkuZ2V0
Q29udmVydGVyKHN0YXRlLmNvbmZpZy5jb252ZXJ0VHlwZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRl
cik7CiAKLSAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCBuZXdUeXBlLCBzdG9yYWdl
LCBwYWNraW5nKTsKKyAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCBuZXdUeXBlLCBz
dG9yYWdlLCBwYWNraW5nLCBzdGF0ZS5zeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKSk7CisgICAg
aWYoc3RhdGUuc3ltYm9sRW52LmlzUG9pbnRlcihmaWVsZCkpCisgICAgeworICAgICAgICBzdGF0
ZS5zeW1ib2xFbnYucmVtb3ZlUG9pbnRlcihmaWVsZCk7CisgICAgfQogICAgIHN0YXRlLmFkZENv
bnZlcnNpb24oKmNvbnZlcnRlci0+Z2V0RnVuY3Rpb24oKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTY5OSw2ICs3MzMsNyBAQCBib29sIFNwbGl0TWF0cml4Q29sdW1ucyhDb252ZXJ0U3RydWN0
U3RhdGUgJnN0YXRlLAogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKwogICAg
IGlmICghc3RhdGUuY29uZmlnLnNwbGl0TWF0cml4Q29sdW1ucyhmaWVsZCkpCiAgICAgewogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTEsNyArNzQ2LDExIEBAIGJvb2wgU3BsaXRNYXRyaXhD
b2x1bW5zKENvbnZlcnRTdHJ1Y3RTdGF0ZSAmc3RhdGUsCiAgICAgewogICAgICAgICBzdGF0ZS5w
dXNoUGF0aChjKTsKIAotICAgICAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCByb3dU
eXBlLCBzdG9yYWdlLCBwYWNraW5nKTsKKyAgICAgICAgc3RhdGUuYWRkTW9kaWZpZWRGaWVsZChm
aWVsZCwgcm93VHlwZSwgc3RvcmFnZSwgcGFja2luZywgc3RhdGUuc3ltYm9sRW52LmlzUG9pbnRl
cihmaWVsZCkpOworICAgICAgICBpZihzdGF0ZS5zeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKSkK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGUuc3ltYm9sRW52LnJlbW92ZVBvaW50ZXIoZmll
bGQpOworICAgICAgICB9CiAgICAgICAgIHN0YXRlLmFkZENvbnZlcnNpb24oWz1dKEFjY2Vzczo6
RW52ICYsIE9yaWdpbmFsQWNjZXNzICZvLCBNb2RpZmllZEFjY2VzcyAmbSkgewogICAgICAgICAg
ICAgcmV0dXJuIEFjY2Vzc3tvLCBtfTsKICAgICAgICAgfSk7CkBAIC03MzIsMjQgKzc3MSwzMSBA
QCBib29sIFNhdHVyYXRlTWF0cml4Um93cyhDb252ZXJ0U3RydWN0U3RhdGUgJnN0YXRlLAogICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBjb25zdCBpbnQgcm93cyAgICAg
ICA9IHR5cGUuZ2V0Um93cygpOwotICAgIGNvbnN0IGludCBzYXR1cmF0aW9uID0gc3RhdGUuY29u
ZmlnLnNhdHVyYXRlTWF0cml4Um93cyhmaWVsZCk7Ci0gICAgaWYgKHNhdHVyYXRpb24gPD0gcm93
cykKKyAgICBjb25zdCBib29sIGlzUm93TWFqb3IgPSB0eXBlLmdldExheW91dFF1YWxpZmllcigp
Lm1hdHJpeFBhY2tpbmcgPT0gRW1wUm93TWFqb3I7CisgICAgY29uc3QgaW50IHJvd3MgICAgICAg
ID0gdHlwZS5nZXRSb3dzKCk7CisgICAgY29uc3QgaW50IHNhdHVyYXRpb24gID0gc3RhdGUuY29u
ZmlnLnNhdHVyYXRlTWF0cml4Um93cyhmaWVsZCk7CisgICAgaWYgKHNhdHVyYXRpb24gPD0gcm93
cyAmJiAhaXNSb3dNYWpvcikKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBjb25zdCBpbnQgY29scyA9IHR5cGUuZ2V0Q29scygpOwogICAgIFRUeXBlICZzYXRUeXBl
ID0gU2V0TWF0cml4Um93RGltKHR5cGUsIHNhdHVyYXRpb24pOwotICAgIHN0YXRlLmFkZE1vZGlm
aWVkRmllbGQoZmllbGQsIHNhdFR5cGUsIHN0b3JhZ2UsIHBhY2tpbmcpOworICAgIHN0YXRlLmFk
ZE1vZGlmaWVkRmllbGQoZmllbGQsIHNhdFR5cGUsIHN0b3JhZ2UsIHBhY2tpbmcsIHN0YXRlLnN5
bWJvbEVudi5pc1BvaW50ZXIoZmllbGQpKTsKKyAgICBpZihzdGF0ZS5zeW1ib2xFbnYuaXNQb2lu
dGVyKGZpZWxkKSkKKyAgICB7CisgICAgICAgIHN0YXRlLnN5bWJvbEVudi5yZW1vdmVQb2ludGVy
KGZpZWxkKTsKKyAgICB9CiAKICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNvbHM7ICsrYykKICAg
ICB7CiAgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgcm93czsgKytyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBzdGF0ZS5hZGRDb252ZXJzaW9uKFs9XShBY2Nlc3M6OkVudiAmLCBPcmlnaW5h
bEFjY2VzcyAmbywgTW9kaWZpZWRBY2Nlc3MgJm0pIHsKKyAgICAgICAgICAgICAgICBpbnQgZmly
c3RNb2RpZmllZEluZGV4ICA9IGlzUm93TWFqb3IgPyByIDogYzsKKyAgICAgICAgICAgICAgICBp
bnQgc2Vjb25kTW9kaWZpZWRJbmRleCA9IGlzUm93TWFqb3IgPyBjIDogcjsKICAgICAgICAgICAg
ICAgICBhdXRvICZvXyA9IEFjY2Vzc0luZGV4KEFjY2Vzc0luZGV4KG8sIGMpLCByKTsKLSAgICAg
ICAgICAgICAgICBhdXRvICZtXyA9IEFjY2Vzc0luZGV4KEFjY2Vzc0luZGV4KG0sIGMpLCByKTsK
KyAgICAgICAgICAgICAgICBhdXRvICZtXyA9IEFjY2Vzc0luZGV4KEFjY2Vzc0luZGV4KG0sIGZp
cnN0TW9kaWZpZWRJbmRleCksIHNlY29uZE1vZGlmaWVkSW5kZXgpOwogICAgICAgICAgICAgICAg
IHJldHVybiBBY2Nlc3N7b18sIG1ffTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC04
MTUsNyArODYxLDExIEBAIGJvb2wgU2F0dXJhdGVTY2FsYXJPclZlY3RvckNvbW1vbihDb252ZXJ0
U3RydWN0U3RhdGUgJnN0YXRlLAogICAgIHsKICAgICAgICAgc2F0VHlwZS5zZXRCYXNpY1R5cGUo
VEJhc2ljVHlwZTo6RWJ0VUludCk7CiAgICAgfQotICAgIHN0YXRlLmFkZE1vZGlmaWVkRmllbGQo
ZmllbGQsIHNhdFR5cGUsIHN0b3JhZ2UsIHBhY2tpbmcpOworICAgIHN0YXRlLmFkZE1vZGlmaWVk
RmllbGQoZmllbGQsIHNhdFR5cGUsIHN0b3JhZ2UsIHBhY2tpbmcsIHN0YXRlLnN5bWJvbEVudi5p
c1BvaW50ZXIoZmllbGQpKTsKKyAgICBpZihzdGF0ZS5zeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxk
KSkKKyAgICB7CisgICAgICAgIHN0YXRlLnN5bWJvbEVudi5yZW1vdmVQb2ludGVyKGZpZWxkKTsK
KyAgICB9CiAKICAgICBmb3IgKGludCBkID0gMDsgZCA8IGRpbTsgKytkKQogICAgIHsKQEAgLTg2
NCw3ICs5MTQsMTEgQEAgYm9vbCBQcm9tb3RlQm9vbFRvVWludChDb252ZXJ0U3RydWN0U3RhdGUg
JnN0YXRlLAogCiAgICAgYXV0byAmcHJvbW90ZWRUeXBlID0gQ2xvbmVUeXBlKCpmaWVsZC50eXBl
KCkpOwogICAgIHByb21vdGVkVHlwZS5zZXRCYXNpY1R5cGUoVEJhc2ljVHlwZTo6RWJ0VUludCk7
Ci0gICAgc3RhdGUuYWRkTW9kaWZpZWRGaWVsZChmaWVsZCwgcHJvbW90ZWRUeXBlLCBzdG9yYWdl
LCBwYWNraW5nKTsKKyAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCBwcm9tb3RlZFR5
cGUsIHN0b3JhZ2UsIHBhY2tpbmcsIHN0YXRlLnN5bWJvbEVudi5pc1BvaW50ZXIoZmllbGQpKTsK
KyAgICBpZihzdGF0ZS5zeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKSkKKyAgICB7CisgICAgICAg
IHN0YXRlLnN5bWJvbEVudi5yZW1vdmVQb2ludGVyKGZpZWxkKTsKKyAgICB9CiAKICAgICBzdGF0
ZS5hZGRDb252ZXJzaW9uKFs9XShBY2Nlc3M6OkVudiAmZW52LCBPcmlnaW5hbEFjY2VzcyAmbywg
TW9kaWZpZWRBY2Nlc3MgJm0pIHsKICAgICAgICAgcmV0dXJuIENvbnZlcnRCb29sVG9VaW50KGVu
di50eXBlLCBvLCBtKTsKQEAgLTk2NiwxNCArMTAyMCwxNyBAQCBib29sIE1vZGlmeVJlY3Vyc2l2
ZShDb252ZXJ0U3RydWN0U3RhdGUgJnN0YXRlLAogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
Ci1ib29sIHNoOjpUcnlDcmVhdGVNb2RpZmllZFN0cnVjdChTeW1ib2xFbnYgJnN5bWJvbEVudiwK
K2Jvb2wgc2g6OlRyeUNyZWF0ZU1vZGlmaWVkU3RydWN0KFRDb21waWxlciAmY29tcGlsZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xFbnYgJnN5bWJvbEVudiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkR2VuICZpZEdlbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1vZGlmeVN0cnVjdENvbmZpZyAmY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSAmb3JpZ2lu
YWxTdHJ1Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lICZt
b2RpZmllZFN0cnVjdE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2Rp
ZmllZFN0cnVjdE1hY2hpbmVyaWVzICZvdXRNYWNoaW5lcmllcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1vZGlmaWVkU3RydWN0TWFjaGluZXJpZXMgJm91dE1hY2hpbmVyaWVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBpc1VCTywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgYWxsb3dQYWRkaW5nKQog
ewotICAgIENvbnZlcnRTdHJ1Y3RTdGF0ZSBzdGF0ZShzeW1ib2xFbnYsIGlkR2VuLCBjb25maWcs
IG91dE1hY2hpbmVyaWVzKTsKKyAgICBDb252ZXJ0U3RydWN0U3RhdGUgc3RhdGUoY29tcGlsZXIs
IHN5bWJvbEVudiwgaWRHZW4sIGNvbmZpZywgb3V0TWFjaGluZXJpZXMsIGlzVUJPKTsKICAgICBz
aXplX3QgaWRlbnRpY2FsRmllbGRDb3VudCA9IDA7CiAKICAgICBjb25zdCBURmllbGRMaXN0ICZv
cmlnaW5hbEZpZWxkcyA9IG9yaWdpbmFsU3RydWN0LmZpZWxkcygpOwpAQCAtOTg4LDkgKzEwNDUs
OSBAQCBib29sIHNoOjpUcnlDcmVhdGVNb2RpZmllZFN0cnVjdChTeW1ib2xFbnYgJnN5bWJvbEVu
diwKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRlLmZpbmFsaXplKCk7CisgICAgc3RhdGUu
ZmluYWxpemUoYWxsb3dQYWRkaW5nKTsKIAotICAgIGlmIChpZGVudGljYWxGaWVsZENvdW50ID09
IG9yaWdpbmFsRmllbGRzLnNpemUoKSAmJiAhc3RhdGUuaGFzUGFja2luZygpICYmICFzdGF0ZS5o
YXNQYWRkaW5nKCkpCisgICAgaWYgKGlkZW50aWNhbEZpZWxkQ291bnQgPT0gb3JpZ2luYWxGaWVs
ZHMuc2l6ZSgpICYmICFzdGF0ZS5oYXNQYWNraW5nKCkgJiYgIXN0YXRlLmhhc1BhZGRpbmcoKSAm
JiAhaXNVQk8pCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVjdC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVj
dC5oCmluZGV4IDRiOGNmYzU1MDQ2ODI0MzhkMmFiN2IxMjMwYTk0OWM2OThmZGFlOTAuLjhlMTRi
ZmNjMWYwMjgwNWU4ZTI0ODc5ODc3MjM3MjQ5NDc3OWIwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERp
cmVjdC9Nb2RpZnlTdHJ1Y3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTW9kaWZ5U3RydWN0LmgKQEAg
LTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogI2luY2x1ZGUgPHVub3Jk
ZXJlZF9zZXQ+CiAKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvSWRHZW4u
aCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9M
YXlvdXQuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERp
cmVjdC9OYW1lLmgiCkBAIC0xMjMsMTIgKzEyNCwxNSBAQCBjbGFzcyBNb2RpZmllZFN0cnVjdE1h
Y2hpbmVyaWVzCiAKIC8vIFJldHVybnMgdHJ1ZSBhbmQgYG91dE1hY2hpbmVyeWAgcG9wdWxhdGVk
IGlmIG1vZGlmaWNhdGlvbnMgd2VyZSBwZXJmb3JtZWQuCiAvLyBSZXR1cm5zIGZhbHNlIG90aGVy
d2lzZS4KLWJvb2wgVHJ5Q3JlYXRlTW9kaWZpZWRTdHJ1Y3QoU3ltYm9sRW52ICZzeW1ib2xFbnYs
Citib29sIFRyeUNyZWF0ZU1vZGlmaWVkU3RydWN0KFRDb21waWxlciAmY29tcGlsZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbEVudiAmc3ltYm9sRW52LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJZEdlbiAmaWRHZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE1vZGlmeVN0cnVjdENvbmZpZyAmY29uZmlnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlICZvcmlnaW5hbFN0cnVjdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmFtZSAmbW9kaWZpZWRTdHJ1Y3ROYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RpZmllZFN0cnVjdE1hY2hpbmVyaWVzICZvdXRN
YWNoaW5lcmllcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmaWVkU3RydWN0
TWFjaGluZXJpZXMgJm91dE1hY2hpbmVyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBib29sIGlzVUJPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBi
b29sIGFsbG93UGFkZGluZyk7CiAKIH0gIC8vIG5hbWVzcGFjZSBzaAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvUGlwZWxpbmUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1BpcGVsaW5lLmNwcAppbmRl
eCAyZDMwMzE2OGRiOGNhYmI4MTNhYTAwMDcwYTdlNjM2ZTdmMWRlODU0Li4yMDdkZjg0Y2VhNjY1
NGNmZGNkNWVjMDNiYTFkYTNlMmRhM2Y3ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUGlw
ZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9QaXBlbGluZS5jcHAKQEAgLTc4LDYgKzc4LDcg
QEAgYm9vbCBQaXBlbGluZTo6dXNlcyhjb25zdCBUVmFyaWFibGUgJnZhcikgY29uc3QKICAgICAg
ICAgICAgICAgICBjYXNlIFRRdWFsaWZpZXI6OkV2cUZyYWdDb2xvcjoKICAgICAgICAgICAgICAg
ICBjYXNlIFRRdWFsaWZpZXI6OkV2cUZyYWdEYXRhOgogICAgICAgICAgICAgICAgIGNhc2UgVFF1
YWxpZmllcjo6RXZxRnJhZ0RlcHRoOgorICAgICAgICAgICAgICAgIGNhc2UgVFF1YWxpZmllcjo6
RXZxU2FtcGxlTWFzazoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTIxLDYgKzEyMiwxNCBAQCBib29sIFBpcGVsaW5lOjp1c2VzKGNvbnN0IFRWYXJpYWJsZSAmdmFy
KSBjb25zdAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBUeXBlOjpVbmlmb3JtQnVmZmVyOgorICAgICAgICAgICAgc3dpdGNo
KHF1YWxpZmllcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIFRRdWFsaWZp
ZXI6OkV2cUJ1ZmZlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQogICAgICAgICBjYXNlIFR5cGU6OkFuZ2xlVW5pZm9ybXM6CiAgICAgICAgICAg
ICBMT0dJQ19FUlJPUigpOyAgLy8gZ2xvYmFsSW5zdGFuY2VWYXIgc2hvdWxkIGJlIG5vbi1udWxs
IGFuZCB0aHVzIG5ldmVyIHJlYWNoIGhlcmUuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xNzEsNiArMTgwLDggQEAgTmFtZSBQaXBlbGluZTo6Z2V0U3RydWN0VHlwZU5hbWUoVmFyaWFu
dCB2YXJpYW50KSBjb25zdAogICAgICAgICBjYXNlIFR5cGU6Okluc3RhbmNlSWQ6CiAgICAgICAg
ICAgICBuYW1lID0gVkFSSUFOVF9OQU1FKHZhcmlhbnQsICJJbnN0YW5jZUlkIik7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlOjpVbmlmb3JtQnVmZmVyOgorICAgICAgICAg
ICAgbmFtZSA9IFZBUklBTlRfTkFNRSh2YXJpYW50LCAiVW5pZm9ybUJ1ZmZlciIpOwogICAgIH0K
ICAgICByZXR1cm4gTmFtZShuYW1lKTsKIH0KQEAgLTIxMyw2ICsyMjQsOCBAQCBOYW1lIFBpcGVs
aW5lOjpnZXRTdHJ1Y3RJbnN0YW5jZU5hbWUoVmFyaWFudCB2YXJpYW50KSBjb25zdAogICAgICAg
ICBjYXNlIFR5cGU6Okluc3RhbmNlSWQ6CiAgICAgICAgICAgICBuYW1lID0gVkFSSUFOVF9OQU1F
KHZhcmlhbnQsICJpbnN0YW5jZUlkIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBUeXBlOjpVbmlmb3JtQnVmZmVyOgorICAgICAgICAgICAgbmFtZSA9IFZBUklBTlRfTkFNRSh2
YXJpYW50LCAidW5pZm9ybUJ1ZmZlciIpOwogICAgIH0KICAgICByZXR1cm4gTmFtZShuYW1lKTsK
IH0KQEAgLTIyMyw2ICsyMzYsNyBAQCBzdGF0aWMgYm9vbCBBbGxvd1BhY2tpbmcoUGlwZWxpbmU6
OlR5cGUgdHlwZSkKIAogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CisgICAgICAgIGNhc2UgVHlw
ZTo6VW5pZm9ybUJ1ZmZlcjoKICAgICAgICAgY2FzZSBUeXBlOjpVc2VyVW5pZm9ybXM6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMjU1LDYgKzI2OSw3IEBAIHN0YXRpYyBib29sIEFs
bG93UGFkZGluZyhQaXBlbGluZTo6VHlwZSB0eXBlKQogICAgICAgICBjYXNlIFR5cGU6Ok5vbkNv
bnN0YW50R2xvYmFsczoKICAgICAgICAgY2FzZSBUeXBlOjpJbnZvY2F0aW9uVmVydGV4R2xvYmFs
czoKICAgICAgICAgY2FzZSBUeXBlOjpJbnZvY2F0aW9uRnJhZ21lbnRHbG9iYWxzOgorICAgICAg
ICBjYXNlIFR5cGU6OlVuaWZvcm1CdWZmZXI6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICBjYXNlIFR5cGU6OlRleHR1cmU6CkBAIC0zMDAsNyArMzE1LDYgQEAgc3RhdGljIGlu
dCBTYXR1cmF0ZVZlY3Rvck9mKGNvbnN0IFRGaWVsZCAmZmllbGQpCiAgICAgY29uc3QgYm9vbCBj
b25kID0gdHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBCVCAmJiAhdHlwZS5pc0FycmF5KCkgJiYKICAg
ICAgICAgICAgICAgICAgICAgICBDb21wYXJlQnkoQ21wLCB0eXBlLmdldE5vbWluYWxTaXplKCks
IE1hdGNoRGltKSAmJiB0eXBlLmdldFF1YWxpZmllcigpICE9IFRRdWFsaWZpZXI6OkV2cUZyYWdE
ZXB0aDsKIAotCiAgICAgaWYgKGNvbmQpCiAgICAgewogICAgICAgICByZXR1cm4gTmV3RGltOwpA
QCAtMzQ0LDYgKzM1OCwxMCBAQCBNb2RpZnlTdHJ1Y3RDb25maWcgUGlwZWxpbmU6OmV4dGVybmFs
U3RydWN0TW9kaWZ5Q29uZmlnKCkgY29uc3QKICAgICAgICAgICAgIGNvbmZpZy5zcGxpdE1hdHJp
eENvbHVtbnMgICAgID0gUHJlZDo6VHJ1ZTsKICAgICAgICAgICAgIGNvbmZpZy5pbmxpbmVTdHJ1
Y3QgICAgICAgICAgID0gUHJlZDo6VHJ1ZTsKICAgICAgICAgICAgIGNvbmZpZy5zYXR1cmF0ZVNj
YWxhck9yVmVjdG9yID0gW10oY29uc3QgVEZpZWxkICZmaWVsZCkgeworICAgICAgICAgICAgICAg
IGlmIChmaWVsZC50eXBlKCktPmdldFF1YWxpZmllcigpID09IFRRdWFsaWZpZXI6OkV2cVNhbXBs
ZU1hc2spCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGludCBzID0gU2F0dXJhdGVW
ZWN0b3JPZjxUQmFzaWNUeXBlOjpFYnRJbnQsIExULCA0LCA0PihmaWVsZCkpCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKQEAgLTM1OSw3ICszNzcsNiBA
QCBNb2RpZnlTdHJ1Y3RDb25maWcgUGlwZWxpbmU6OmV4dGVybmFsU3RydWN0TW9kaWZ5Q29uZmln
KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIFR5cGU6OlVzZXJVbmlmb3JtczoKICAgICAg
ICAgICAgIGNvbmZpZy5wcm9tb3RlQm9vbFRvVWludCAgICAgICAgICAgID0gUHJlZDo6VHJ1ZTsK
ICAgICAgICAgICAgIGNvbmZpZy5zYXR1cmF0ZU1hdHJpeFJvd3MgICAgICAgICAgID0gU2F0VmVj
OjpGdWxseVNhdHVyYXRlOwpAQCAtMzczLDcgKzM5MCwxMiBAQCBNb2RpZnlTdHJ1Y3RDb25maWcg
UGlwZWxpbmU6OmV4dGVybmFsU3RydWN0TW9kaWZ5Q29uZmlnKCkgY29uc3QKIAogICAgICAgICBj
YXNlIFR5cGU6Ok5vbkNvbnN0YW50R2xvYmFsczoKICAgICAgICAgICAgIGJyZWFrOwotCisgICAg
ICAgIGNhc2UgVHlwZTo6VW5pZm9ybUJ1ZmZlcjoKKyAgICAgICAgICAgIGNvbmZpZy5wcm9tb3Rl
Qm9vbFRvVWludCAgICAgICAgICAgID0gUHJlZDo6VHJ1ZTsKKyAgICAgICAgICAgIGNvbmZpZy5z
YXR1cmF0ZU1hdHJpeFJvd3MgICAgICAgICAgID0gU2F0VmVjOjpGdWxseVNhdHVyYXRlOworICAg
ICAgICAgICAgY29uZmlnLnNhdHVyYXRlU2NhbGFyT3JWZWN0b3JBcnJheXMgPSBTYXRWZWM6OkZ1
bGx5U2F0dXJhdGU7CisgICAgICAgICAgICBjb25maWcucmVjdXJzZVN0cnVjdCAgICAgICAgICAg
ICAgICA9IFByZWQ6OlRydWU7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBl
OjpJbnZvY2F0aW9uVmVydGV4R2xvYmFsczoKICAgICAgICAgY2FzZSBUeXBlOjpJbnZvY2F0aW9u
RnJhZ21lbnRHbG9iYWxzOgogICAgICAgICBjYXNlIFR5cGU6OlRleHR1cmU6CkBAIC0zOTIsNiAr
NDE0LDcgQEAgYm9vbCBQaXBlbGluZTo6YWx3YXlzUmVxdWlyZXNMb2NhbFZhcmlhYmxlRGVjbGFy
YXRpb25Jbk1haW4oKSBjb25zdAogICAgICAgICBjYXNlIFR5cGU6OkZyYWdtZW50SW46CiAgICAg
ICAgIGNhc2UgVHlwZTo6VXNlclVuaWZvcm1zOgogICAgICAgICBjYXNlIFR5cGU6OkFuZ2xlVW5p
Zm9ybXM6CisgICAgICAgIGNhc2UgVHlwZTo6VW5pZm9ybUJ1ZmZlcjoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICBjYXNlIFR5cGU6OlZlcnRleE91dDoKQEAgLTQxOCw2ICs0
NDEsNyBAQCBib29sIFBpcGVsaW5lOjppc1BpcGVsaW5lT3V0KCkgY29uc3QKICAgICAgICAgY2Fz
ZSBUeXBlOjpJbnZvY2F0aW9uRnJhZ21lbnRHbG9iYWxzOgogICAgICAgICBjYXNlIFR5cGU6OlRl
eHR1cmU6CiAgICAgICAgIGNhc2UgVHlwZTo6SW5zdGFuY2VJZDoKKyAgICAgICAgY2FzZSBUeXBl
OjpVbmlmb3JtQnVmZmVyOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGNh
c2UgVHlwZTo6VmVydGV4T3V0OgpAQCAtNDQzLDExICs0NjcsMTIgQEAgQWRkcmVzc1NwYWNlIFBp
cGVsaW5lOjpleHRlcm5hbEFkZHJlc3NTcGFjZSgpIGNvbnN0CiAKICAgICAgICAgY2FzZSBUeXBl
OjpVc2VyVW5pZm9ybXM6CiAgICAgICAgIGNhc2UgVHlwZTo6QW5nbGVVbmlmb3JtczoKKyAgICAg
ICAgY2FzZSBUeXBlOjpVbmlmb3JtQnVmZmVyOgogICAgICAgICAgICAgcmV0dXJuIEFkZHJlc3NT
cGFjZTo6Q29uc3RhbnQ7CiAgICAgfQogfQogCi1ib29sIFBpcGVsaW5lU3RydWN0czo6bWF0Y2hl
cyhjb25zdCBUU3RydWN0dXJlICpzLCBib29sIGludGVybmFsLCBib29sIGV4dGVybmFsKSBjb25z
dAorYm9vbCBQaXBlbGluZVN0cnVjdHM6Om1hdGNoZXMoY29uc3QgVFN0cnVjdHVyZSAmcywgYm9v
bCBpbnRlcm5hbCwgYm9vbCBleHRlcm5hbCkgY29uc3QKIHsKICAgICBQaXBlbGluZVNjb3BlZDxU
U3RydWN0dXJlPiBwc1tdID0gewogICAgICAgICBmcmFnbWVudEluLApAQCAtNDU1LDIwICs0ODAs
MjEgQEAgYm9vbCBQaXBlbGluZVN0cnVjdHM6Om1hdGNoZXMoY29uc3QgVFN0cnVjdHVyZSAqcywg
Ym9vbCBpbnRlcm5hbCwgYm9vbCBleHRlcm5hbCkKICAgICAgICAgdmVydGV4SW4sCiAgICAgICAg
IHZlcnRleE91dCwKICAgICAgICAgdXNlclVuaWZvcm1zLAotICAgICAgICBhbmdsZVVuaWZvcm1z
LAorICAgICAgICAvKiBhbmdsZVVuaWZvcm1zLCAqLwogICAgICAgICBub25Db25zdGFudEdsb2Jh
bHMsCiAgICAgICAgIGludm9jYXRpb25WZXJ0ZXhHbG9iYWxzLAogICAgICAgICBpbnZvY2F0aW9u
RnJhZ21lbnRHbG9iYWxzLAorICAgICAgICB1bmlmb3JtQnVmZmVycywKICAgICAgICAgdGV4dHVy
ZSwKICAgICAgICAgaW5zdGFuY2VJZCwKICAgICB9OwogICAgIGZvciAoY29uc3QgYXV0byAmcCA6
IHBzKQogICAgIHsKLSAgICAgICAgaWYgKGludGVybmFsICYmIHAuaW50ZXJuYWwgPT0gcykKKyAg
ICAgICAgaWYgKGludGVybmFsICYmIHAuaW50ZXJuYWwgPT0gJnMpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChleHRlcm5hbCAmJiBw
LmV4dGVybmFsID09IHMpCisgICAgICAgIGlmIChleHRlcm5hbCAmJiBwLmV4dGVybmFsID09ICZz
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvck1ldGFsRGlyZWN0L1BpcGVsaW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUGlwZWxpbmUuaApp
bmRleCAxYTYxYWE3YzEyZGNlMGViM2U3ZTM5ZTM1NDAxNDU2ZTcyNzExMWYxLi5kMTkyYWRjNWIz
YjhiOTk2NTM4NjllOWY1ZThjNzFjOWE2YmRjODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
UGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUGlwZWxpbmUuaApAQCAtMjgsNyArMjgsNyBA
QCBzdHJ1Y3QgUGlwZWxpbmVTY29wZWQKICAgICBjb25zdCBUICppbnRlcm5hbCA9IG51bGxwdHI7
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBpbnB1dCBjb2luY2lkZXMgd2l0aCBlaXRo
ZXIgYGV4dGVybmFsYCBvciBgaW50ZXJuYWxgIGRhdGEuCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0
IFQgKm9iamVjdCkgY29uc3QgeyByZXR1cm4gZXh0ZXJuYWwgPT0gb2JqZWN0IHx8IGludGVybmFs
ID09IG9iamVjdDsgfQorICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBUICZvYmplY3QpIGNvbnN0IHsg
cmV0dXJuIGV4dGVybmFsID09ICZvYmplY3QgfHwgaW50ZXJuYWwgPT0gJm9iamVjdDsgfQogCiAg
ICAgLy8gQm90aCBgZXh0ZXJuYWxgIGFuZCBgaW50ZXJuYWxgIHJlcHJlc2VudGF0aW9ucyBhcmUg
bm9uLW51bGwuCiAgICAgYm9vbCBpc1RvdGFsbHlGdWxsKCkgY29uc3QgeyByZXR1cm4gZXh0ZXJu
YWwgJiYgaW50ZXJuYWw7IH0KQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgUGlwZWxpbmUKICAgICAg
ICAgTm9uQ29uc3RhbnRHbG9iYWxzLAogICAgICAgICBJbnZvY2F0aW9uVmVydGV4R2xvYmFscywK
ICAgICAgICAgSW52b2NhdGlvbkZyYWdtZW50R2xvYmFscywKKyAgICAgICAgVW5pZm9ybUJ1ZmZl
ciwKICAgICAgICAgVGV4dHVyZSwKICAgICAgICAgSW5zdGFuY2VJZCwKICAgICB9OwpAQCAtMTEy
LDEwICsxMTMsMTEgQEAgc3RydWN0IFBpcGVsaW5lU3RydWN0cyA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgIFBpcGVsaW5lU2NvcGVkPFRTdHJ1Y3R1cmU+IG5vbkNvbnN0YW50R2xvYmFsczsKICAg
ICBQaXBlbGluZVNjb3BlZDxUU3RydWN0dXJlPiBpbnZvY2F0aW9uVmVydGV4R2xvYmFsczsKICAg
ICBQaXBlbGluZVNjb3BlZDxUU3RydWN0dXJlPiBpbnZvY2F0aW9uRnJhZ21lbnRHbG9iYWxzOwor
ICAgIFBpcGVsaW5lU2NvcGVkPFRTdHJ1Y3R1cmU+IHVuaWZvcm1CdWZmZXJzOwogICAgIFBpcGVs
aW5lU2NvcGVkPFRTdHJ1Y3R1cmU+IHRleHR1cmU7CiAgICAgUGlwZWxpbmVTY29wZWQ8VFN0cnVj
dHVyZT4gaW5zdGFuY2VJZDsKIAotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBUU3RydWN0dXJlICpz
LCBib29sIGludGVybmFsLCBib29sIGV4dGVybmFsKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXMo
Y29uc3QgVFN0cnVjdHVyZSAmcywgYm9vbCBpbnRlcm5hbCwgYm9vbCBleHRlcm5hbCkgY29uc3Q7
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9n
cmFtUHJlbHVkZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUHJvZ3JhbVByZWx1ZGUuY3BwCmluZGV4IGYx
ODQyYWU5NWU2MzcwNWZlNjdjZTdhZDk4MTgwMzI1MjNkNjUyMWEuLjhjMjllNjQ3OGEzY2JlYTE5
NWM4YjA1Y2M1MTdjYmU1ZmU5M2M1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFt
UHJlbHVkZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Byb2dyYW1QcmVsdWRlLmNwcApAQCAtNDAs
OCArNDAsMjcgQEAgY2xhc3MgUHJvZ3JhbVByZWx1ZGUgOiBwdWJsaWMgVEludGVybVRyYXZlcnNl
cgogICAgICAgICAgICAgZXF1YWxNYXRyaXgoKTsKICAgICAgICAgfQogCisgICAgICAgIHN3aXRj
aCAocHBjLnNoYWRlclR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgTWV0YWxTaGFk
ZXJUeXBlOjpOb25lOgorICAgICAgICAgICAgICAgIEFTU0VSVCgwICYmICJwcGMuc2hhZGVyVHlw
ZSBzaG91bGQgbm90IGJlIFNoYWRlclR5cGVOb25lIik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIE1ldGFsU2hhZGVyVHlwZTo6VmVydGV4OgorICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybV9mZWVkYmFja19ndWFyZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBNZXRhbFNoYWRlclR5cGU6OkZyYWdtZW50OgorICAgICAgICAgICAg
ICAgIHdyaXRlU2FtcGxlTWFzaygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBNZXRhbFNoYWRlclR5cGU6OkNvbXB1dGU6CisgICAgICAgICAgICAgICAgQVNTRVJU
KDAgJiYgImNvbXB1dGUgc2hhZGVycyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCIpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCiAjaWYgMQogICAgICAgICBtT3V0IDw8ICIjZGVmaW5lIEFOR0xF
X3RlbnNvciBtZXRhbDo6YXJyYXlcbiI7CisgICAgICAgIG1PdXQgPDwgIiNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bnVzZWQtdmFsdWVcIlxuIjsKICNlbHNlCiAgICAgICAg
IHRlbnNvcigpOwogI2VuZGlmCkBAIC04Niw2ICsxMDUsOCBAQCBjbGFzcyBQcm9ncmFtUHJlbHVk
ZSA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgdm9pZCBpbmNsdWRlX21ldGFsX3BhY2so
KTsKICAgICB2b2lkIGluY2x1ZGVfbWV0YWxfcmVsYXRpb25hbCgpOwogCisgICAgdm9pZCB0cmFu
c2Zvcm1fZmVlZGJhY2tfZ3VhcmQoKTsKKwogICAgIHZvaWQgZW5hYmxlX2lmKCk7CiAgICAgdm9p
ZCBzY2FsYXJfb2YoKTsKICAgICB2b2lkIGlzX3NjYWxhcigpOwpAQCAtMTQ1LDYgKzE2Niw3IEBA
IGNsYXNzIFByb2dyYW1QcmVsdWRlIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICB2b2lk
IGNhc3RNYXRyaXgoKTsKICAgICB2b2lkIGZ1bmN0aW9uQ29uc3RhbnRzKCk7CiAgICAgdm9pZCBn
cmFkaWVudCgpOworICAgIHZvaWQgd3JpdGVTYW1wbGVNYXNrKCk7CiAgICAgdm9pZCB0ZXh0dXJl
RW52KCk7CiAgICAgdm9pZCB0ZXhlbEZldGNoKCk7CiAgICAgdm9pZCB0ZXhlbEZldGNoT2Zmc2V0
KCk7CkBAIC0yNjUsNyArMjg3LDE0IEBAIFBST0dSQU1fUFJFTFVERV9JTkNMVURFKG1ldGFsX21h
dHJpeCkKIFBST0dSQU1fUFJFTFVERV9JTkNMVURFKG1ldGFsX3BhY2spCiBQUk9HUkFNX1BSRUxV
REVfSU5DTFVERShtZXRhbF9yZWxhdGlvbmFsKQogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
UFJPR1JBTV9QUkVMVURFX0RFQ0xBUkUodHJhbnNmb3JtX2ZlZWRiYWNrX2d1YXJkLCBSIigKKyNp
ZiBUUkFOU0ZPUk1fRkVFREJBQ0tfRU5BQkxFRAorICAgICNkZWZpbmUgX19WRVJURVhfT1VUKGFy
Z3MpIHZvaWQKKyNlbHNlCisgICAgI2RlZmluZSBfX1ZFUlRFWF9PVVQoYXJncykgYXJncworI2Vu
ZGlmCispIikKKwogCiBQUk9HUkFNX1BSRUxVREVfREVDTEFSRShBTFdBWVNfSU5MSU5FLCBSIigK
ICNkZWZpbmUgQU5HTEVfQUxXQVlTX0lOTElORSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5l
KSkKQEAgLTEwNjYsMjcgKzEwOTUsMjUgQEAgQU5HTEVfQUxXQVlTX0lOTElORSBib29sIEFOR0xF
X2VxdWFsKG1ldGFsOjptYXRyaXg8VCwgQywgUj4gYSwgbWV0YWw6Om1hdHJpeDxULAogKSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBlcXVhbFZlY3RvcigpKQogCi0KLVBST0dSQU1fUFJFTFVE
RV9ERUNMQVJFKG5vdEVxdWFsVmVjdG9yLAorUFJPR1JBTV9QUkVMVURFX0RFQ0xBUkUobm90RXF1
YWxNYXRyaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICBSIigKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBpbnQgTj4KLUFOR0xFX0FMV0FZU19JTkxJTkUgYm9vbCBBTkdMRV9ub3RFcXVhbChtZXRh
bDo6dmVjPFQsIE4+IHUsIG1ldGFsOjp2ZWM8VCwgTj4gdikKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBpbnQgQywgaW50IFI+CitBTkdMRV9BTFdBWVNfSU5MSU5FIGJvb2wgQU5HTEVfbm90RXF1YWwo
bWV0YWw6Om1hdHJpeDxULCBDLCBSPiB1LCBtZXRhbDo6bWF0cml4PFQsIEMsIFI+IHYpCiB7CiAg
ICAgcmV0dXJuICFBTkdMRV9lcXVhbCh1LCB2KTsKIH0KICkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZXF1YWxWZWN0b3IoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVxdWFsTWF0cml4
KCkpCiAKLVBST0dSQU1fUFJFTFVERV9ERUNMQVJFKG5vdEVxdWFsTWF0cml4LAorUFJPR1JBTV9Q
UkVMVURFX0RFQ0xBUkUobm90RXF1YWxWZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBS
IigKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgQywgaW50IFI+Ci1BTkdMRV9BTFdBWVNfSU5M
SU5FIGJvb2wgQU5HTEVfbm90RXF1YWwobWV0YWw6Om1hdHJpeDxULCBDLCBSPiB1LCBtZXRhbDo6
bWF0cml4PFQsIEMsIFI+IHYpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IE4+CitBTkdMRV9B
TFdBWVNfSU5MSU5FIGJvb2wgQU5HTEVfbm90RXF1YWwobWV0YWw6OnZlYzxULCBOPiB1LCBtZXRh
bDo6dmVjPFQsIE4+IHYpCiB7CiAgICAgcmV0dXJuICFBTkdMRV9lcXVhbCh1LCB2KTsKIH0KICki
LAotICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxNYXRyaXgoKSkKLQorICAgICAgICAgICAg
ICAgICAgICAgICAgZXF1YWxWZWN0b3IoKSkKIAogUFJPR1JBTV9QUkVMVURFX0RFQ0xBUkUobm90
RXF1YWxTdHJ1Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBSIigKQEAgLTExMzUsNyArMTE2
Miw3IEBAIHN0cnVjdCBBTkdMRV9Td2l6emxlUmVmCiAgICAgICAgICAgICBtVmVjW2pdID0gbVJl
ZltpXTsKICAgICAgICAgfQogICAgIH0KLSAgICBBTkdMRV9Td2l6emxlUmVmKHRocmVhZCBtZXRh
bDo6dmVjPFQsIE4+ICZ2ZWMsIHRocmVhZCBjb25zdCBpbnQgKmluZGljZXMpCisgICAgQU5HTEVf
U3dpenpsZVJlZih0aHJlYWQgbWV0YWw6OnZlYzxULCBWTj4gJnZlYywgdGhyZWFkIGNvbnN0IGlu
dCAqaW5kaWNlcykKICAgICAgICAgOiBtVmVjKHZlYykKICAgICB7CiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgU047ICsraSkKQEAgLTExNTAsNyArMTE3Nyw4IEBAIHN0cnVjdCBBTkdMRV9T
d2l6emxlUmVmCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IE4+CiBBTkdMRV9BTFdBWVNfSU5M
SU5FIEFOR0xFX1ZlY3RvckVsZW1SZWY8VCwgTj4gQU5HTEVfc3dpenpsZV9yZWYodGhyZWFkIG1l
dGFsOjp2ZWM8VCwgTj4gJnZlYywgaW50IGkwKQogewotICAgIHJldHVybiBBTkdMRV9WZWN0b3JF
bGVtUmVmPFQsIE4+KHZlYywgaW5kZXgpOworICAgIGNvbnN0IGludCBpc1tdID0geyBpMCB9Owor
ICAgIHJldHVybiBBTkdMRV9WZWN0b3JFbGVtUmVmPFQsIE4+KHZlYywgaXMpOwogfQogdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIGludCBOPgogQU5HTEVfQUxXQVlTX0lOTElORSBBTkdMRV9Td2l6emxl
UmVmPFQsIE4sIDI+IEFOR0xFX3N3aXp6bGVfcmVmKHRocmVhZCBtZXRhbDo6dmVjPFQsIE4+ICZ2
ZWMsIGludCBpMCwgaW50IGkxKQpAQCAtMTM3OSw2ICsxNDA3LDE5IEBAIHRlbXBsYXRlIDxpbnQg
Tj4KIHVzaW5nIEFOR0xFX2dyYWRpZW50ID0gdHlwZW5hbWUgQU5HTEVfZ3JhZGllbnRfdHJhaXRz
PE4+Ojp0eXBlOwogKSIpCiAKK1BST0dSQU1fUFJFTFVERV9ERUNMQVJFKHdyaXRlU2FtcGxlTWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgIFIiKAorQU5HTEVfQUxXQVlTX0lOTElORSB2b2lk
IEFOR0xFX3dyaXRlU2FtcGxlTWFzayhjb25zdCB1aW50IG1hc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB1aW50JiBnbF9TYW1wbGVNYXNr
KQoreworICAgIGlmIChBTkdMRV9Db3ZlcmFnZU1hc2tFbmFibGVkKQorICAgIHsKKyAgICAgICAg
Z2xfU2FtcGxlTWFzayA9IGFzX3R5cGU8aW50PihtYXNrKTsKKyAgICB9Cit9CispIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQ29uc3RhbnRzKCkpCisKIFBST0dSQU1fUFJFTFVE
RV9ERUNMQVJFKHRleHR1cmVFbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICBSIigKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgpAQCAtMTM5NCwxMCArMTQzNSwxMiBAQCBQUk9HUkFNX1BSRUxVREVf
REVDTEFSRShmdW5jdGlvbkNvbnN0YW50cywKICNkZWZpbmUgQU5HTEVfU0FNUExFX0NPTVBBUkVf
R1JBRElFTlRfSU5ERVggMAogI2RlZmluZSBBTkdMRV9TQU1QTEVfQ09NUEFSRV9MT0RfSU5ERVgg
ICAgICAxCiAjZGVmaW5lIEFOR0xFX1JBU1RFUklaQVRJT05fRElTQ0FSRF9JTkRFWCAgIDIKKyNk
ZWZpbmUgQU5HTEVfQ09WRVJBR0VfTUFTS19FTkFCTEVEX0lOREVYICAgMwogCiBjb25zdGFudCBi
b29sIEFOR0xFX1VzZVNhbXBsZUNvbXBhcmVHcmFkaWVudCBbW2Z1bmN0aW9uX2NvbnN0YW50KEFO
R0xFX1NBTVBMRV9DT01QQVJFX0dSQURJRU5UX0lOREVYKV1dOwogY29uc3RhbnQgYm9vbCBBTkdM
RV9Vc2VTYW1wbGVDb21wYXJlTG9kICAgICAgW1tmdW5jdGlvbl9jb25zdGFudChBTkdMRV9TQU1Q
TEVfQ09NUEFSRV9MT0RfSU5ERVgpXV07CiBjb25zdGFudCBib29sIEFOR0xFX1Jhc3Rlcml6YXRp
b25EaXNjYXJkICAgICBbW2Z1bmN0aW9uX2NvbnN0YW50KEFOR0xFX1JBU1RFUklaQVRJT05fRElT
Q0FSRF9JTkRFWCldXTsKK2NvbnN0YW50IGJvb2wgQU5HTEVfQ292ZXJhZ2VNYXNrRW5hYmxlZCAg
ICAgIFtbZnVuY3Rpb25fY29uc3RhbnQoQU5HTEVfQ09WRVJBR0VfTUFTS19FTkFCTEVEX0lOREVY
KV1dOwogKSIpCiAKIFBST0dSQU1fUFJFTFVERV9ERUNMQVJFKHRleGVsRmV0Y2gsCkBAIC0xNTM3
LDcgKzE1ODAsNyBAQCBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVyZV9pbXBs
KAogICAgIHRocmVhZCBtZXRhbDo6c2FtcGxlciBjb25zdCAmc2FtcGxlciwKICAgICB0aHJlYWQg
bWV0YWw6OmZsb2F0MyBjb25zdCAmY29vcmQpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUuc2FtcGxl
KHNhbXBsZXIsIGNvb3JkLnh5KTsKKyAgICByZXR1cm4gdGV4dHVyZS5zYW1wbGVfY29tcGFyZShz
YW1wbGVyLCBjb29yZC54eSwgY29vcmQueik7CiB9CiApIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHR1cmUoKSkKQEAgLTE1NTEsNyArMTU5NCw3IEBAIEFOR0xFX0FMV0FZU19JTkxJTkUg
YXV0byBBTkdMRV90ZXh0dXJlX2ltcGwoCiAgICAgdGhyZWFkIG1ldGFsOjpmbG9hdDMgY29uc3Qg
JmNvb3JkLAogICAgIGZsb2F0IGJpYXMpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUuc2FtcGxlKHNh
bXBsZXIsIGNvb3JkLnh5LCBtZXRhbDo6YmlhcyhiaWFzKSk7CisgICAgcmV0dXJuIHRleHR1cmUu
c2FtcGxlX2NvbXBhcmUoc2FtcGxlciwgY29vcmQueHksIGNvb3JkLnosIG1ldGFsOjpiaWFzKGJp
YXMpKTsKIH0KICkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSgpKQpAQCAtMTU5
MSw3ICsxNjM0LDcgQEAgQU5HTEVfQUxXQVlTX0lOTElORSBhdXRvIEFOR0xFX3RleHR1cmVfaW1w
bCgKICAgICB0aHJlYWQgbWV0YWw6OnNhbXBsZXIgY29uc3QgJnNhbXBsZXIsCiAgICAgdGhyZWFk
IG1ldGFsOjpmbG9hdDQgY29uc3QgJmNvb3JkKQogewotICAgIHJldHVybiB0ZXh0dXJlLnNhbXBs
ZShzYW1wbGVyLCBjb29yZC54eXopOworICAgIHJldHVybiB0ZXh0dXJlLnNhbXBsZV9jb21wYXJl
KHNhbXBsZXIsIGNvb3JkLnh5eiwgY29vcmQudyk7CiB9CiApIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmUoKSkKQEAgLTE2MDUsNyArMTY0OCw3IEBAIEFOR0xFX0FMV0FZU19JTkxJ
TkUgYXV0byBBTkdMRV90ZXh0dXJlX2ltcGwoCiAgICAgdGhyZWFkIG1ldGFsOjpmbG9hdDQgY29u
c3QgJmNvb3JkLAogICAgIGZsb2F0IGJpYXMpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUuc2FtcGxl
KHNhbXBsZXIsIGNvb3JkLnh5eiwgbWV0YWw6OmJpYXMoYmlhcykpOworICAgIHJldHVybiB0ZXh0
dXJlLnNhbXBsZV9jb21wYXJlKHNhbXBsZXIsIGNvb3JkLnh5eiwgY29vcmQudywgbWV0YWw6OmJp
YXMoYmlhcykpOwogfQogKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlKCkpCkBA
IC0xNzc5LDcgKzE4MjIsNiBAQCBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVy
ZTJEX2ltcGwoCiBQUk9HUkFNX1BSRUxVREVfREVDTEFSRSh0ZXh0dXJlMkRSZWN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgUiIoCiAjZGVmaW5lIEFOR0xFX3RleHR1cmUyRFJlY3QoZW52LCAu
Li4pIEFOR0xFX3RleHR1cmUyRFJlY3RfaW1wbCgqZW52LnRleHR1cmUsICplbnYuc2FtcGxlciwg
X19WQV9BUkdTX18pCi0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUZXh0dXJlPgogQU5HTEVfQUxXQVlT
X0lOTElORSBhdXRvIEFOR0xFX3RleHR1cmUyRFJlY3RfaW1wbCgKICAgICB0aHJlYWQgVGV4dHVy
ZSAmdGV4dHVyZSwKQEAgLTE4NDYsNyArMTg4OCw2IEBAIEFOR0xFX0FMV0FZU19JTkxJTkUgYXV0
byBBTkdMRV90ZXh0dXJlMkRSZWN0UHJval9pbXBsKAogewogICAgIHJldHVybiB0ZXh0dXJlLnNh
bXBsZShzYW1wbGVyLCBjb29yZC54eS9jb29yZC56KTsKIH0KLQogdGVtcGxhdGUgPHR5cGVuYW1l
IFRleHR1cmU+CiBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVyZTJEUmVjdFBy
b2pfaW1wbCgKICAgICB0aHJlYWQgVGV4dHVyZSAmdGV4dHVyZSwKQEAgLTE4ODQsNyArMTkyNSw2
IEBAIEFOR0xFX0FMV0FZU19JTkxJTkUgYXV0byBBTkdMRV90ZXh0dXJlMkRQcm9qTG9kX2ltcGwo
CiApIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVFbnYoKSkKIAotCiBQUk9HUkFN
X1BSRUxVREVfREVDTEFSRSh0ZXh0dXJlM0RMb2QsCiAgICAgICAgICAgICAgICAgICAgICAgICBS
IigKICNkZWZpbmUgQU5HTEVfdGV4dHVyZTNETG9kKGVudiwgLi4uKSBBTkdMRV90ZXh0dXJlM0RM
b2RfaW1wbCgqZW52LnRleHR1cmUsICplbnYuc2FtcGxlciwgX19WQV9BUkdTX18pCkBAIC0yMjU2
LDcgKzIyOTYsNyBAQCBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVyZUdyYWRP
ZmZzZXRfaW1wbCgKICAgICB0aHJlYWQgbWV0YWw6OmZsb2F0MyBjb25zdCAmZFBkeSwKICAgICB0
aHJlYWQgbWV0YWw6OmludDMgY29uc3QgJm9mZnNldCkKIHsKLSAgICByZXR1cm4gdGV4dHVyZS5z
YW1wbGUoc2FtcGxlciwgY29vcmQueHl6LCBtZXRhbDo6Z3JhZGllbnRjdWJlKGRQZHgsIGRQZHkp
LCBvZmZzZXQpOworICAgIHJldHVybiB0ZXh0dXJlLnNhbXBsZV9jb21wYXJlKHNhbXBsZXIsIGNv
b3JkLnh5eiwgY29vcmQudywgbWV0YWw6OmdyYWRpZW50Y3ViZShkUGR4LCBkUGR5KSwgb2Zmc2V0
KTsKIH0KICkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUdyYWRPZmZzZXQoKSkK
QEAgLTI1MDQsNyArMjU0NCw3IEBAIEFOR0xFX0FMV0FZU19JTkxJTkUgYXV0byBBTkdMRV90ZXh0
dXJlT2Zmc2V0X2ltcGwoCiAgICAgdGhyZWFkIGZsb2F0MyBjb25zdCAmY29vcmQsCiAgICAgdGhy
ZWFkIGludDIgY29uc3QgJm9mZnNldCkKIHsKLSAgICByZXR1cm4gdGV4dHVyZS5zYW1wbGUoc2Ft
cGxlciwgY29vcmQueHksIG9mZnNldCk7CisgICAgcmV0dXJuIHRleHR1cmUuc2FtcGxlX2NvbXBh
cmUoc2FtcGxlciwgY29vcmQueHksIGNvb3JkLnosIG9mZnNldCk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgpAQCAtMjUxNSw3ICsyNTU1LDcgQEAgQU5HTEVfQUxXQVlTX0lOTElORSBhdXRv
IEFOR0xFX3RleHR1cmVPZmZzZXRfaW1wbCgKICAgICB0aHJlYWQgaW50MiBjb25zdCAmb2Zmc2V0
LAogICAgIGZsb2F0IGJpYXMpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUuc2FtcGxlKHNhbXBsZXIs
IGNvb3JkLnh5LCBtZXRhbDo6YmlhcyhiaWFzKSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gdGV4dHVy
ZS5zYW1wbGVfY29tcGFyZShzYW1wbGVyLCBjb29yZC54eSwgY29vcmQueiwgbWV0YWw6OmJpYXMo
YmlhcyksIG9mZnNldCk7CiB9CiApIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVF
bnYoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFtUHJlbHVkZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFs
RGlyZWN0L1Byb2dyYW1QcmVsdWRlLmgKaW5kZXggZTAwNDEzZjU3NjkyYTA1MzRkYTRkN2RjOTYz
YTA5OGJiODhjZGRjNi4uOGQ0NTY4NGYwY2FhZTNkNWY5Njc1OWI1ZTExYmIxZjdlODI4MDdlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Byb2dyYW1QcmVsdWRlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGly
ZWN0L1Byb2dyYW1QcmVsdWRlLmgKQEAgLTE3LDkgKzE3LDI0IEBAIG5hbWVzcGFjZSBzaAogY2xh
c3MgVEluZm9TaW5rQmFzZTsKIGNsYXNzIFRJbnRlcm1CbG9jazsKIAorZW51bSBjbGFzcyBNZXRh
bFNoYWRlclR5cGUKK3sKKyAgICBOb25lLAorICAgIFZlcnRleCwKKyAgICBGcmFnbWVudCwKKyAg
ICBDb21wdXRlLCAvLyBVbnVzZWQgY3VycmVudGx5CisgICAgQ291bnQsCit9OworCiBzdHJ1Y3Qg
UHJvZ3JhbVByZWx1ZGVDb25maWcKIHsKK3B1YmxpYzoKKyAgICBQcm9ncmFtUHJlbHVkZUNvbmZp
ZygpIHt9CisgICAgZXhwbGljaXQgUHJvZ3JhbVByZWx1ZGVDb25maWcoTWV0YWxTaGFkZXJUeXBl
IHNoYWRlclR5cGUpCisgICAgOiBzaGFkZXJUeXBlKHNoYWRlclR5cGUpCisgICAge30KICAgICBi
b29sIGhhc1N0cnVjdEVxID0gZmFsc2U7CisgICAgTWV0YWxTaGFkZXJUeXBlIHNoYWRlclR5cGUg
PSBNZXRhbFNoYWRlclR5cGU6Ok5vbmU7CiB9OwogCiAvLyBUaGlzIGVtaXRzIGZpeGVkIGhlbHBl
ciBNZXRhbCBjb2RlIGRpcmVjdGx5IHdpdGhvdXQgYWRkaW5nIGNvZGUgdG8gdGhlIEFTVC4gVGhp
cyB3YWxrcyB0aGUgQVNUIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmVkdWNlSW50ZXJm
YWNlQmxvY2tzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZWR1Y2VJbnRlcmZhY2VCbG9ja3MuY3BwCmlu
ZGV4IDhlOTZjZmQ4MmJlMWQxMDAwZDEyZTJlNGYxMGI3MTNmYTM4ZmMwNjUuLmU0NzcyYmIzOWUy
NGRlMTliNmZiMmZmNTk4Y2U3ZTQ3ZTYyYmEwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9S
ZWR1Y2VJbnRlcmZhY2VCbG9ja3MuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZWR1Y2VJbnRlcmZh
Y2VCbG9ja3MuY3BwCkBAIC0yNiwxMiArMjYsMTAgQEAgY2xhc3MgUmVkdWNlciA6IHB1YmxpYyBU
SW50ZXJtUmVidWlsZAogICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxjb25zdCBUSW50ZXJmYWNlQmxv
Y2sgKiwgIGNvbnN0IFRWYXJpYWJsZSAqPgogICAgICAgICBtTGlmdGVkTWFwOwogICAgIHN0ZDo6
dW5vcmRlcmVkX21hcDxjb25zdCBUVmFyaWFibGUgKiwgY29uc3QgVFZhcmlhYmxlICo+IG1JbnN0
YW5jZU1hcDsKLSAgICBJZEdlbiAmbUlkR2VuOwotCi1wdWJsaWM6Ci0gICAgUmVkdWNlcihUQ29t
cGlsZXIgJmNvbXBpbGVyLCBJZEdlbiAmaWRHZW4pCi0gICAgICAgIDogVEludGVybVJlYnVpbGQo
Y29tcGlsZXIsIHRydWUsIGZhbHNlKSwKLSAgICAgICAgICBtSWRHZW4oaWRHZW4pCisgICAgSWRH
ZW4gJiBtSWRHZW47CisgIHB1YmxpYzoKKyAgICBSZWR1Y2VyKFRDb21waWxlciAmY29tcGlsZXIs
IElkR2VuICYgaWRHZW4pIDogVEludGVybVJlYnVpbGQoY29tcGlsZXIsIHRydWUsIGZhbHNlKSwK
KyAgICAgICAgbUlkR2VuKGlkR2VuKQogICAgIHsKIAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9SZXdyaXRlUGlwZWxpbmVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlUGlwZWxp
bmVzLmNwcAppbmRleCAzNjM3ZTIzMzAwYWI5OWUxMGZiODBhYzhmNWZmMGM2ZTE4MDY2MWNmLi4z
MjdiNjgxMTNmMTNkNmM0NWY4MTI4ZDRiMzhlYzRmODUzNTM4YWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0
YWxEaXJlY3QvUmV3cml0ZVBpcGVsaW5lcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Jld3JpdGVQ
aXBlbGluZXMuY3BwCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX3V0aWwvRmluZE1haW4uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L3RyZWVfdXRpbC9JbnRlcm1SZWJ1aWxkLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci90cmVlX3V0aWwvSW50ZXJtVHJhdmVyc2UuaCIKLQorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1N5bWJvbEVudi5oIgogdXNpbmcgbmFtZXNwYWNl
IHNoOwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTIyLDE0ICsxMjIsMTYgQEAgY2xh
c3MgR2VuZXJhdGVQaXBlbGluZVN0cnVjdCA6IHByaXZhdGUgVEludGVybVJlYnVpbGQKICAgICAg
ICAgfSgpOwogCiAgICAgICAgIE1vZGlmaWVkU3RydWN0TWFjaGluZXJpZXMgbW9kaWZpZWRNYWNo
aW5lcmllczsKLSAgICAgICAgY29uc3QgYm9vbCBtb2RpZmllZCA9IFRyeUNyZWF0ZU1vZGlmaWVk
U3RydWN0KAorICAgICAgICBjb25zdCBib29sIGlzVUJPID0gbVBpcGVsaW5lLnR5cGUgPT0gUGlw
ZWxpbmU6OlR5cGU6OlVuaWZvcm1CdWZmZXI7CisgICAgICAgIGNvbnN0IGJvb2wgbW9kaWZpZWQg
PSBUcnlDcmVhdGVNb2RpZmllZFN0cnVjdChtQ29tcGlsZXIsCiAgICAgICAgICAgICBtU3ltYm9s
RW52LCBtSWRHZW4sIG1QaXBlbGluZS5leHRlcm5hbFN0cnVjdE1vZGlmeUNvbmZpZygpLCBwaXBl
bGluZVN0cnVjdCwKLSAgICAgICAgICAgIG1QaXBlbGluZS5nZXRTdHJ1Y3RUeXBlTmFtZShQaXBl
bGluZTo6VmFyaWFudDo6TW9kaWZpZWQpLCBtb2RpZmllZE1hY2hpbmVyaWVzKTsKKyAgICAgICAg
ICAgIG1QaXBlbGluZS5nZXRTdHJ1Y3RUeXBlTmFtZShQaXBlbGluZTo6VmFyaWFudDo6TW9kaWZp
ZWQpLAorICAgICAgICAgICAgbW9kaWZpZWRNYWNoaW5lcmllcywgaXNVQk8sICFpc1VCTyk7CiAK
ICAgICAgICAgaWYgKG1vZGlmaWVkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobVBp
cGVsaW5lLnR5cGUgIT0gUGlwZWxpbmU6OlR5cGU6OlRleHR1cmUpOwotICAgICAgICAgICAgQVNT
RVJUKCFtUGlwZWxpbmUuZ2xvYmFsSW5zdGFuY2VWYXIpOyAgLy8gVGhpcyBzaG91bGRuJ3QgaGFw
cGVuIGJ5IGNvbnN0cnVjdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVChtUGlwZWxpbmUudHlwZSA9
PSBQaXBlbGluZTo6VHlwZTo6QW5nbGVVbmlmb3JtcyB8fCAhbVBpcGVsaW5lLmdsb2JhbEluc3Rh
bmNlVmFyKTsgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBieSBjb25zdHJ1Y3Rpb24uCiAKICAg
ICAgICAgICAgIGF1dG8gZ2V0RnVuY3Rpb24gPSBbXShzaDo6VEludGVybUZ1bmN0aW9uRGVmaW5p
dGlvbiAqZnVuY0RlY2wpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY0RlY2wgPyBmdW5j
RGVjbC0+Z2V0RnVuY3Rpb24oKSA6IG51bGxwdHI7CkBAIC0xODUsMTIgKzE4NywxMCBAQCBjbGFz
cyBHZW5lcmF0ZVBpcGVsaW5lU3RydWN0IDogcHJpdmF0ZSBUSW50ZXJtUmVidWlsZAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHtub2RlLCBWaXNpdEJpdHM6Ok5laXRoZXJ9OwogICAgIH0KLQogICAg
IFBvc3RSZXN1bHQgdmlzaXREZWNsYXJhdGlvblBvc3QoVEludGVybURlY2xhcmF0aW9uICZkZWNs
Tm9kZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIERlY2xhcmF0aW9uIGRlY2wgICAgID0gVmll
d0RlY2xhcmF0aW9uKGRlY2xOb2RlKTsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlICZ2YXIgPSBk
ZWNsLnN5bWJvbC52YXJpYWJsZSgpOwotCiAgICAgICAgIGlmIChtUGlwZWxpbmUudXNlcyh2YXIp
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobUluZm8ucGlwZWxpbmVWYXJpYWJsZXMu
ZmluZCgmdmFyKSA9PSBtSW5mby5waXBlbGluZVZhcmlhYmxlcy5lbmQoKSk7CkBAIC0yMjksNiAr
MjI5LDE5IEBAIGNsYXNzIEdlbmVyYXRlUGlwZWxpbmVTdHJ1Y3QgOiBwcml2YXRlIFRJbnRlcm1S
ZWJ1aWxkCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAg
Y2FzZSBQaXBlbGluZTo6VHlwZTo6VW5pZm9ybUJ1ZmZlcjoKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IFRWYXJpYWJsZSAqdmFyIDogbVBpcGVsaW5lVmFyaWFibGVM
aXN0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byAmdHlwZSAg
PSBDbG9uZVR5cGUodmFyLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvICpm
aWVsZCA9IG5ldyBURmllbGQoJnR5cGUsIHZhci0+bmFtZSgpLCBrTm9Tb3VyY2VMb2MsIHZhci0+
c3ltYm9sVHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbVN5bWJvbEVudi5tYXJrQXNQb2lu
dGVyKCpmaWVsZCwgQWRkcmVzc1NwYWNlOjpDb25zdGFudCk7CisgICAgICAgICAgICAgICAgICAg
IG1TeW1ib2xFbnYubWFya0FzVUJPKCpmaWVsZCk7CisgICAgICAgICAgICAgICAgICAgIG1TeW1i
b2xFbnYubWFya0FzUG9pbnRlcigqdmFyLCBBZGRyZXNzU3BhY2U6OkNvbnN0YW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgZmllbGRzLnB1c2hfYmFjayhmaWVsZCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgVFZhcmlhYmxlICp2
YXIgOiBtUGlwZWxpbmVWYXJpYWJsZUxpc3QpCkBAIC00MTEsNyArNDI0LDYgQEAgY2xhc3MgUGlw
ZWxpbmVGdW5jdGlvbkVudgogICAgICAgICAgICAgICAgIGF1dG8gKnZhciA9IG5ldyBUVmFyaWFi
bGUoJm1TeW1ib2xUYWJsZSwgbmFtZS5yYXdOYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgVFR5cGUoVEJhc2ljVHlwZTo6RWJ0VUludCksIG5hbWUu
c3ltYm9sVHlwZSgpKTsKICAgICAgICAgICAgICAgICBuZXdGdW5jICAgPSAmQ2xvbmVGdW5jdGlv
bkFuZFByZXBlbmRQYXJhbShtU3ltYm9sVGFibGUsIG51bGxwdHIsIGZ1bmMsICp2YXIpOwotICAg
ICAgICAgICAgICAgIG1TeW1ib2xFbnYubWFya0FzUmVmZXJlbmNlKCp2YXIsIG1QaXBlbGluZS5l
eHRlcm5hbEFkZHJlc3NTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBtUGlwZWxpbmVNYWluTG9j
YWxWYXIuZXh0ZXJuYWwgPSB2YXI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlm
IChpc01haW4gJiYgbVBpcGVsaW5lLmFsd2F5c1JlcXVpcmVzTG9jYWxWYXJpYWJsZURlY2xhcmF0
aW9uSW5NYWluKCkpCkBAIC00MzMsNiArNDQ1LDI5IEBAIGNsYXNzIFBpcGVsaW5lRnVuY3Rpb25F
bnYKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1QaXBlbGluZS50eXBlID09IFBpcGVsaW5l
OjpUeXBlOjpVbmlmb3JtQnVmZmVyKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uICpyZWZsZWN0aW9uID0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNoOjpUcmFuc2xhdG9yTWV0YWxEaXJlY3QgKikm
bUNvbXBpbGVyKS0+Z2V0VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gVE9ETzogbmVlZCBtb3JlIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhleSBs
aW5lIHVwPyBDb3VsZCBiZSByZW9yZGVyZWQ/CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobVBpcGVsaW5lU3RydWN0LmV4dGVybmFsLT5maWVsZHMoKS5zaXplKCkgPT0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtUGlwZWxpbmVTdHJ1Y3QuaW50ZXJuYWwtPmZpZWxkcygp
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1QaXBlbGluZVN0cnVjdC5leHRlcm5hbC0+ZmllbGRzKCkuc2l6ZSgpOyBpKyspCisgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEZp
ZWxkICpleHRlcm5hbEZpZWxkID0gbVBpcGVsaW5lU3RydWN0LmV4dGVybmFsLT5maWVsZHMoKVtp
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURmllbGQgKmludGVybmFsRmll
bGQgPSBtUGlwZWxpbmVTdHJ1Y3QuaW50ZXJuYWwtPmZpZWxkcygpW2ldOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZleHRlcm5hbFR5cGUgPSAqZXh0ZXJuYWxGaWVs
ZC0+dHlwZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZpbnRl
cm5hbFR5cGUgPSAqaW50ZXJuYWxGaWVsZC0+dHlwZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChleHRlcm5hbFR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gaW50ZXJuYWxUeXBl
LmdldEJhc2ljVHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZXJu
YWxUeXBlLmdldEJhc2ljVHlwZSgpID09IFRCYXNpY1R5cGU6OkVidFN0cnVjdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJ1Y3R1cmUgKmV4dGVybmFsRW52ID0gZXh0ZXJuYWxUeXBlLmdldFN0cnVjdCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlICppbnRlcm5h
bEVudiA9IGludGVybmFsVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxOYW1lID0gcmVmbGVjdGlvbi0+Z2V0
T3JpZ2luYWxOYW1lKGludGVybmFsRW52LT51bmlxdWVJZCgpLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVmbGVjdGlvbi0+YWRkT3JpZ2luYWxOYW1lKGV4dGVybmFs
RW52LT51bmlxdWVJZCgpLmdldCgpLCBpbnRlcm5hbE5hbWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB2YXIgPSAmQ3JlYXRlSW5zdGFuY2VWYXJpYWJsZSgK
ICAgICAgICAgICAgICAgICAgICAgICAgIG1TeW1ib2xUYWJsZSwgKm1QaXBlbGluZVN0cnVjdC5p
bnRlcm5hbCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1QaXBlbGluZS5nZXRTdHJ1Y3RJbnN0
YW5jZU5hbWUoUGlwZWxpbmU6OlZhcmlhbnQ6Ok9yaWdpbmFsKSk7CkBAIC05MjIsNiArOTU3LDcg
QEAgYm9vbCBzaDo6UmV3cml0ZVBpcGVsaW5lcyhUQ29tcGlsZXIgJmNvbXBpbGVyLAogICAgICAg
ICB7UGlwZWxpbmU6OlR5cGU6OkZyYWdtZW50T3V0LCBvdXRTdHJ1Y3RzLmZyYWdtZW50T3V0LCBu
dWxscHRyfSwKICAgICAgICAge1BpcGVsaW5lOjpUeXBlOjpJbnZvY2F0aW9uVmVydGV4R2xvYmFs
cywgb3V0U3RydWN0cy5pbnZvY2F0aW9uVmVydGV4R2xvYmFscywgbnVsbHB0cn0sCiAgICAgICAg
IHtQaXBlbGluZTo6VHlwZTo6SW52b2NhdGlvbkZyYWdtZW50R2xvYmFscywgb3V0U3RydWN0cy5p
bnZvY2F0aW9uRnJhZ21lbnRHbG9iYWxzLCBudWxscHRyfSwKKyAgICAgICAge1BpcGVsaW5lOjpU
eXBlOjpVbmlmb3JtQnVmZmVyLCBvdXRTdHJ1Y3RzLnVuaWZvcm1CdWZmZXJzLCBudWxscHRyfSwK
ICAgICB9OwogCiAgICAgZm9yIChJbmZvICZpbmZvIDogaW5mb3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0
YWxEaXJlY3QvU3ltYm9sRW52LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9TeW1ib2xFbnYuY3BwCmluZGV4
IDQ3NTNkYWNmMmQ2ODhjYmU2MDE1ODgwMDZhZTI5N2ZhYzQxMzA1Y2MuLjJmZDA5MTE2NTAyNDRk
OTQ4ZDFkMDQ4NDBiMWIzNWY4MDdiOGU3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9TeW1i
b2xFbnYuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9TeW1ib2xFbnYuY3BwCkBAIC00MzIsNiArNDMy
LDE1IEBAIHZvaWQgU3ltYm9sRW52OjptYXJrU3BhY2UoVmFyRmllbGQgeCwKICAgICBtYXBbeF0g
PSBzcGFjZTsKIH0KIAordm9pZCBTeW1ib2xFbnY6OnJlbW92ZVNwYWNlKFZhckZpZWxkIHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxWYXJGaWVsZCwgQWRk
cmVzc1NwYWNlPiAmbWFwKQoreworICAgIC8vIEl0IGlzIGluIHByaW5jaXBsZSBwZXJtaXNzaWJs
ZSB0byBoYXZlIHJlZmVyZW5jZXMgdG8gcG9pbnRlcnMgb3IgbXVsdGlwbGUgcG9pbnRlcnMsIGJ1
dCB0aGlzCisgICAgLy8gaXMgbm90IHJlcXVpcmVkIGZvciBub3cgYW5kIHdvdWxkIHJlcXVpcmUg
Y29kZSBjaGFuZ2VzIHRvIGdldCByaWdodC4KKyAgICBtYXAuZXJhc2UoeCk7Cit9CisKKwogY29u
c3QgQWRkcmVzc1NwYWNlICpTeW1ib2xFbnY6OmlzU3BhY2UoVmFyRmllbGQgeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxW
YXJGaWVsZCwgQWRkcmVzc1NwYWNlPiAmbWFwKSBjb25zdAogewpAQCAtNDUwLDYgKzQ1OSwxMSBA
QCB2b2lkIFN5bWJvbEVudjo6bWFya0FzUG9pbnRlcihWYXJGaWVsZCB4LCBBZGRyZXNzU3BhY2Ug
c3BhY2UpCiAgICAgcmV0dXJuIG1hcmtTcGFjZSh4LCBzcGFjZSwgbVBvaW50ZXJzKTsKIH0KIAor
dm9pZCBTeW1ib2xFbnY6OnJlbW92ZVBvaW50ZXIoVmFyRmllbGQgeCkKK3sKKyAgICByZXR1cm4g
cmVtb3ZlU3BhY2UoeCwgbVBvaW50ZXJzKTsKK30KKwogdm9pZCBTeW1ib2xFbnY6Om1hcmtBc1Jl
ZmVyZW5jZShWYXJGaWVsZCB4LCBBZGRyZXNzU3BhY2Ugc3BhY2UpCiB7CiAgICAgcmV0dXJuIG1h
cmtTcGFjZSh4LCBzcGFjZSwgbVJlZmVyZW5jZXMpOwpAQCAtNDc1LDYgKzQ4OSwxNiBAQCBib29s
IFN5bWJvbEVudjo6aXNQYWNrZWQoY29uc3QgVEZpZWxkICZmaWVsZCkgY29uc3QKICAgICByZXR1
cm4gbVBhY2tlZEZpZWxkcy5maW5kKCZmaWVsZCkgIT0gbVBhY2tlZEZpZWxkcy5lbmQoKTsKIH0K
IAordm9pZCBTeW1ib2xFbnY6Om1hcmtBc1VCTyhWYXJGaWVsZCB4KQoreworICAgIG1VYm9GaWVs
ZHMuaW5zZXJ0KHgpOworfQorCitib29sIFN5bWJvbEVudjo6aXNVQk8oVmFyRmllbGQgeCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVVib0ZpZWxkcy5maW5kKHgpICE9IG1VYm9GaWVsZHMuZW5kKCk7
Cit9CisKIHN0YXRpYyBUQmFzaWNUeXBlIEdldFRleHR1cmVCYXNpY1R5cGUoVEJhc2ljVHlwZSBi
YXNpY1R5cGUpCiB7CiAgICAgQVNTRVJUKElzU2FtcGxlcihiYXNpY1R5cGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9TeW1ib2xFbnYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9TeW1ib2xFbnYuaApp
bmRleCA0Yzk2NDVlMDUxOTg4NjdmMjVkYzAzMGMwMmVlYzA3NTY1ZmJkMmUxLi5jZDRjOTI2MDc4
NTEyYWVhZmMxOGYzNGM0ZTRlNmIyZTBhN2UzM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
U3ltYm9sRW52LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1N5bWJvbEVudi5oCkBAIC0xNzgsMTggKzE3
OCwyNCBAQCBjbGFzcyBTeW1ib2xFbnYKICAgICBjb25zdCBUU3RydWN0dXJlICZnZXRTYW1wbGVy
U3RydWN0KCk7CiAKICAgICB2b2lkIG1hcmtBc1BvaW50ZXIoVmFyRmllbGQgeCwgQWRkcmVzc1Nw
YWNlIHNwYWNlKTsKKyAgICB2b2lkIHJlbW92ZVBvaW50ZXIoVmFyRmllbGQgeCk7CiAgICAgY29u
c3QgQWRkcmVzc1NwYWNlICppc1BvaW50ZXIoVmFyRmllbGQgeCkgY29uc3Q7CiAKICAgICB2b2lk
IG1hcmtBc1JlZmVyZW5jZShWYXJGaWVsZCB4LCBBZGRyZXNzU3BhY2Ugc3BhY2UpOworICAgIHZv
aWQgcmVtb3ZlQXNSZWZlcmVuY2UoVmFyRmllbGQgeCk7CiAgICAgY29uc3QgQWRkcmVzc1NwYWNl
ICppc1JlZmVyZW5jZShWYXJGaWVsZCB4KSBjb25zdDsKIAogICAgIHZvaWQgbWFya0FzUGFja2Vk
KGNvbnN0IFRGaWVsZCAmZmllbGQpOwogICAgIGJvb2wgaXNQYWNrZWQoY29uc3QgVEZpZWxkICZm
aWVsZCkgY29uc3Q7CiAKKyAgICB2b2lkIG1hcmtBc1VCTyhWYXJGaWVsZCB4KTsKKyAgICBib29s
IGlzVUJPKFZhckZpZWxkIHgpIGNvbnN0OworCiAgIHByaXZhdGU6CiAgICAgY29uc3QgVEZ1bmN0
aW9uICZnZXRGdW5jdGlvbk92ZXJsb2FkSW1wbCgpOwogCiAgICAgdm9pZCBtYXJrU3BhY2UoVmFy
RmllbGQgeCwgQWRkcmVzc1NwYWNlIHNwYWNlLCBzdGQ6OnVub3JkZXJlZF9tYXA8VmFyRmllbGQs
IEFkZHJlc3NTcGFjZT4gJm1hcCk7CisgICAgdm9pZCByZW1vdmVTcGFjZShWYXJGaWVsZCB4LCBz
dGQ6OnVub3JkZXJlZF9tYXA8VmFyRmllbGQsIEFkZHJlc3NTcGFjZT4gJm1hcCk7CiAgICAgY29u
c3QgQWRkcmVzc1NwYWNlICppc1NwYWNlKFZhckZpZWxkIHgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxWYXJGaWVsZCwgQWRkcmVzc1Nw
YWNlPiAmbWFwKSBjb25zdDsKIApAQCAtMjA5LDYgKzIxNSw3IEBAIGNsYXNzIFN5bWJvbEVudgog
ICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxWYXJGaWVsZCwgQWRkcmVzc1NwYWNlPiBtUG9pbnRlcnM7
CiAgICAgc3RkOjp1bm9yZGVyZWRfbWFwPFZhckZpZWxkLCBBZGRyZXNzU3BhY2U+IG1SZWZlcmVu
Y2VzOwogICAgIHN0ZDo6dW5vcmRlcmVkX3NldDxjb25zdCBURmllbGQgKj4gbVBhY2tlZEZpZWxk
czsKKyAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8VmFyRmllbGQ+IG1VYm9GaWVsZHM7CiB9OwogCiBO
YW1lIEdldFRleHR1cmVUeXBlTmFtZShUQmFzaWNUeXBlIHNhbXBsZXJUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVf
b3BzL05hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL05hbWVOYW1lbGVzc1VuaWZvcm1C
dWZmZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDgzOGYyNDI2NWMxNGE2YThkODJjMTcwZjViOTIzNDFk
OTZiMzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMuY3Bw
CkBAIC0wLDAgKzEsMTI3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZl
cnM6IEdpdmVzIG5hbWVsZXNzIHVuaWZvcm0gYnVmZmVyIHZhcmlhYmxlcyBpbnRlcm5hbCBuYW1l
cy4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL05hbWVOYW1l
bGVzc1VuaWZvcm1CdWZmZXJzLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5
bWJvbFRhYmxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvSW50
ZXJtTm9kZV91dGlsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwv
SW50ZXJtVHJhdmVyc2UuaCIKKworbmFtZXNwYWNlIHNoCit7CituYW1lc3BhY2UKK3sKKy8vIFRy
YXZlcnNlIHVuaWZvcm0gYnVmZmVyIGRlY2xhcmF0aW9ucyBhbmQgZ2l2ZSBuYW1lIHRvIG5hbWVs
ZXNzIGRlY2xhcmF0aW9ucy4gIEtlZXBzIHRyYWNrIG9mCisvLyB0aGUgaW50ZXJmYWNlIGZpZWxk
cyB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHNvdXJjZSB3aXRob3V0IHRoZSBpbnRlcmZhY2Ug
YmxvY2sgdmFyaWFibGUgbmFtZQorLy8gYW5kIHJlcGxhY2VzIHRoZW0gd2l0aCBuYW1lLmZpZWxk
LgorY2xhc3MgTmFtZVVuaWZvcm1CdWZmZXJWYXJpYWJsZXNUcmF2ZXJzZXIgOiBwdWJsaWMgVElu
dGVybVRyYXZlcnNlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgTmFtZVVuaWZvcm1CdWZm
ZXJWYXJpYWJsZXNUcmF2ZXJzZXIoVFN5bWJvbFRhYmxlICpzeW1ib2xUYWJsZSkKKyAgICAgICAg
OiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSwgc3ltYm9sVGFibGUpCisgICAg
e30KKworICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVybURlY2xh
cmF0aW9uICpkZWNsKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZpc2l0ID09IFBy
ZVZpc2l0KTsKKworICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gKihk
ZWNsLT5nZXRTZXF1ZW5jZSgpKTsKKworICAgICAgICBUSW50ZXJtVHlwZWQgKnZhcmlhYmxlTm9k
ZSA9IHNlcXVlbmNlLmZyb250KCktPmdldEFzVHlwZWQoKTsKKyAgICAgICAgY29uc3QgVFR5cGUg
JnR5cGUgICAgICAgICAgPSB2YXJpYWJsZU5vZGUtPmdldFR5cGUoKTsKKworICAgICAgICAvLyBJ
ZiBpdCdzIGFuIGludGVyZmFjZSBibG9jaywgaXQgbWF5IGhhdmUgdG8gYmUgY29udmVydGVkIGlm
IGl0IGNvbnRhaW5zIGFueSByb3ctbWFqb3IKKyAgICAgICAgLy8gZmllbGRzLgorICAgICAgICBp
ZiAoIXR5cGUuaXNJbnRlcmZhY2VCbG9jaygpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE11bHRpIGRlY2xhcmF0aW9uIHN0YXRl
bWVudHMgYXJlIGFscmVhZHkgc2VwYXJhdGVkLCBzbyB0aGVyZSBjYW4gb25seSBiZSBvbmUgdmFy
aWFibGUKKyAgICAgICAgLy8gaGVyZS4KKyAgICAgICAgQVNTRVJUKHNlcXVlbmNlLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgY29uc3QgVFZhcmlhYmxlICp2YXJpYWJsZSA9ICZ2YXJpYWJsZU5vZGUt
PmdldEFzU3ltYm9sTm9kZSgpLT52YXJpYWJsZSgpOworICAgICAgICBpZiAodmFyaWFibGUtPnN5
bWJvbFR5cGUoKSAhPSBTeW1ib2xUeXBlOjpFbXB0eSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgVEludGVybURlY2xhcmF0aW9uICpu
ZXdEZWNsYXJhdGlvbiA9IG5ldyBUSW50ZXJtRGVjbGFyYXRpb247CisgICAgICAgIFRWYXJpYWJs
ZSAqbmV3VmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKG1TeW1ib2xUYWJsZSwga0VtcHR5SW1tdXRh
YmxlU3RyaW5nLCAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCwgdmFyaWFibGUtPmV4dGVuc2lvbigp
KTsKKyAgICAgICAgbmV3RGVjbGFyYXRpb24tPmFwcGVuZERlY2xhcmF0b3IobmV3IFRJbnRlcm1T
eW1ib2wobmV3VmFyaWFibGUpKTsKKworICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5ld0RlY2xh
cmF0aW9uLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworCisgICAgICAgIC8vIEl0J3Mgc2Fm
ZSB0byBrZXkgdGhlIG1hcCB3aXRoIHRoZSBpbnRlcmZhY2UgYmxvY2ssIGFzIHRoZXJlIGNvdWxk
bid0IGhhdmUgYmVlbiBtdWx0aXBsZQorICAgICAgICAvLyBkZWNsYXJhdGlvbnMgd2l0aCB0aGlz
IGludGVyZmFjZSBibG9jayAoYXMgdGhlIHZhcmlhYmxlIGlzIG5hbWVsZXNzKSwgc28gZm9yIG5h
bWVsZXNzCisgICAgICAgIC8vIHVuaWZvcm0gYnVmZmVycywgdGhlIGludGVyZmFjZSBibG9jayBp
cyB1bmlxdWUuCisgICAgICAgIG1OYW1lbGVzc1VuaWZvcm1CdWZmZXJzTWFwW3R5cGUuZ2V0SW50
ZXJmYWNlQmxvY2soKV0gPSBuZXdWYXJpYWJsZTsKKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpzeW1ib2wpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHN5bWJvbC0+Z2V0VHlwZSgp
OworCisgICAgICAgIC8vIFRoZSBzeW1ib2xzIHdlIGFyZSBsb29raW5nIGZvciBoYXZlIHRoZSBp
bnRlcmZhY2UgYmxvY2sgcG9pbnRlciBzZXQsIGJ1dCBhcmUgbm90CisgICAgICAgIC8vIGludGVy
ZmFjZSBibG9ja3MuICBUaGVzZSBhcmUgcmVmZXJlbmNlcyB0byBmaWVsZHMgb2YgbmFtZWxlc3Mg
dW5pZm9ybSBidWZmZXJzLgorICAgICAgICBpZiAodHlwZS5pc0ludGVyZmFjZUJsb2NrKCkgfHwg
dHlwZS5nZXRJbnRlcmZhY2VCbG9jaygpID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFRJbnRlcmZhY2VCbG9jayAq
YmxvY2sgPSB0eXBlLmdldEludGVyZmFjZUJsb2NrKCk7CisKKyAgICAgICAgLy8gSWYgYmxvY2sg
dmFyaWFibGUgaXMgbm90IG5hbWVsZXNzLCB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCisgICAgICAg
IGlmIChtTmFtZWxlc3NVbmlmb3JtQnVmZmVyc01hcC5jb3VudChibG9jaykgPT0gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgSW1t
dXRhYmxlU3RyaW5nIHN5bWJvbE5hbWUgPSBzeW1ib2wtPmdldE5hbWUoKTsKKworICAgICAgICAv
LyBGaW5kIHdoaWNoIGZpZWxkIGl0IGlzCisgICAgICAgIGNvbnN0IFRWZWN0b3I8VEZpZWxkICo+
IGZpZWxkcyA9IGJsb2NrLT5maWVsZHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgZmllbGRJbmRl
eCA9IDA7IGZpZWxkSW5kZXggPCBmaWVsZHMuc2l6ZSgpOyArK2ZpZWxkSW5kZXgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbZmllbGRJbmRleF07
CisgICAgICAgICAgICBpZiAoZmllbGQtPm5hbWUoKSAhPSBzeW1ib2xOYW1lKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBSZXBsYWNlIHRoaXMgbm9kZSB3aXRoIGEgYmluYXJ5IG5vZGUgdGhhdCBpbmRleGVz
IHRoZSBuYW1lZCB1bmlmb3JtIGJ1ZmZlci4KKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKm5h
bWVkVW5pZm9ybUJ1ZmZlciA9CisgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1TeW1ib2wobU5h
bWVsZXNzVW5pZm9ybUJ1ZmZlcnNNYXBbYmxvY2tdKTsKKyAgICAgICAgICAgIFRJbnRlcm1CaW5h
cnkgKnJlcGxhY2VtZW50ID0KKyAgICAgICAgICAgICAgICBuZXcgVEludGVybUJpbmFyeShFT3BJ
bmRleERpcmVjdEludGVyZmFjZUJsb2NrLCBuYW1lZFVuaWZvcm1CdWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlSW5kZXhOb2RlKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihmaWVsZEluZGV4KSkpOworCisgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KHJlcGxh
Y2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICBwcml2YXRl
OgorICAgIC8vIEEgbWFwIGZyb20gbmFtZWxlc3MgdW5pZm9ybSBidWZmZXJzIHRvIHRoZWlyIG5h
bWVkIHJlcGxhY2VtZW50cy4KKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8Y29uc3QgVEludGVyZmFj
ZUJsb2NrICosIGNvbnN0IFRWYXJpYWJsZSAqPiBtTmFtZWxlc3NVbmlmb3JtQnVmZmVyc01hcDsK
K307Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2Jvb2wgTmFtZU5hbWVsZXNzVW5pZm9y
bUJ1ZmZlcnMoVENvbXBpbGVyICpjb21waWxlciwgVEludGVybUJsb2NrICpyb290LCBUU3ltYm9s
VGFibGUgKnN5bWJvbFRhYmxlKQoreworICAgIE5hbWVVbmlmb3JtQnVmZmVyVmFyaWFibGVzVHJh
dmVyc2VyIG5hbWVVbmlmb3JtQnVmZmVyVmFyaWFibGVzKHN5bWJvbFRhYmxlKTsKKyAgICByb290
LT50cmF2ZXJzZSgmbmFtZVVuaWZvcm1CdWZmZXJWYXJpYWJsZXMpOworICAgIHJldHVybiBuYW1l
VW5pZm9ybUJ1ZmZlclZhcmlhYmxlcy51cGRhdGVUcmVlKGNvbXBpbGVyLCByb290KTsKK30KK30g
IC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVf
b3BzL05hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdkNmY2ZDg4YjU0
MWE1YzdmMjU1MjFkMjA5ZGE3OTRhYWE2ZjA4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL05hbWVOYW1l
bGVzc1VuaWZvcm1CdWZmZXJzLmgKQEAgLTAsMCArMSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIE5hbWVO
YW1lbGVzc1VuaWZvcm1CdWZmZXJzOiBHaXZlcyBuYW1lbGVzcyB1bmlmb3JtIGJ1ZmZlciB2YXJp
YWJsZXMgaW50ZXJuYWwgbmFtZXMuCisvLworLy8gRm9yIGV4YW1wbGU6CisvLyAgIHVuaWZvcm0g
VW5pZm9ybUJ1ZmZlciB7IGludCBhOyB9OworLy8gICB4ID0gYTsKKy8vIGJlY29tZXM6CisvLyAg
IHVuaWZvcm0gVW5pZm9ybUJ1ZmZlciB7IGludCBhOyB9IHMxMjM7CisvLyAgIHggPSBzMTIzLmE7
CisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVFJFRU9QU19OQU1FTkFNRUxFU1NV
TklGT1JNQlVGRkVSU19IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1RSRUVPUFNfTkFN
RU5BTUVMRVNTVU5JRk9STUJVRkZFUlNfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCisKK25hbWVzcGFjZSBzaAoreworY2xhc3MgVENvbXBpbGVyOworY2xhc3MgVEludGVybUJs
b2NrOworY2xhc3MgVFN5bWJvbFRhYmxlOworCitBTkdMRV9OT19ESVNDQVJEIGJvb2wgTmFtZU5h
bWVsZXNzVW5pZm9ybUJ1ZmZlcnMoVENvbXBpbGVyICpjb21waWxlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnJvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFN5bWJvbFRh
YmxlICpzeW1ib2xUYWJsZSk7Cit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SX1RSRUVPUFNfTkFNRU5BTUVMRVNTVU5JRk9STUJVRkZFUlNfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L3V0aWwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvdXRpbC5jcHAKaW5kZXggNTgyZGRjNzBjOTZjMGFkYTAwMTY1YzIxY2ExZTk2NmY3OTU4NGFh
Ny4uNGVlMDg5YWFiY2YxZTdlNGYzNGZlMTcxMzc1ZThmYzdmZjc1NzI4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdXRp
bC5jcHAKQEAgLTczMCw2ICs3MzAsNyBAQCBib29sIElzQnVpbHRpbk91dHB1dFZhcmlhYmxlKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKQogICAgICAgICBjYXNlIEV2cUZyYWdEYXRhOgogICAgICAgICBj
YXNlIEV2cVNlY29uZGFyeUZyYWdEYXRhRVhUOgogICAgICAgICBjYXNlIEV2cUNsaXBEaXN0YW5j
ZToKKyAgICAgICAgY2FzZSBFdnFTYW1wbGVNYXNrOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvQ29udGV4dENH
TC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL0NvbnRleHRDR0wuY3BwCmluZGV4IGJlOTliODUwODkzMjQ1NGRjYzFlZGVhMDRmMDdlZDJk
NWY2MjA5YjkuLmY1ZjNkNjBmYjY5NDAxMjdiY2E4ZDkzYTQyOTA4ZjcyZDk3MWNhODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvQ29udGV4dENHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9Db250ZXh0Q0dMLmNwcApAQCAtNjYsNCArNjYsNCBAQCB2b2lk
IENvbnRleHRDR0w6Om9uRGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIAogfSAg
Ly8gbmFtZXNwYWNlIHJ4CiAKLSNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNP
UykgfHwgZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNDQVRBTFlTVCkKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDT1MpIHx8
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDQ0FUQUxZU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQnVmZmVyTXRsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQnVm
ZmVyTXRsLmgKaW5kZXggOWY5ZWM2Y2JkOWM4MzE1N2UzMTQ3NGU2NjhkMzUyMmYyZWQ0ZjI4MS4u
YTE2MjBlY2ZiZmM2YzRiZTNmZGM0YTRkNmIxZTJkMWJiMTU4MTkzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0J1ZmZlck10
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9CdWZmZXJNdGwuaApAQCAtMjQsNyArMjQsMTEgQEAKIAogbmFtZXNwYWNlIHJ4CiB7Ci0K
K3N0cnVjdCBJbmRleFJhbmdlCit7CisgICAgc2l6ZV90IHJlc3RhcnRCZWdpbjsKKyAgICBzaXpl
X3QgcmVzdGFydEVuZDsKK307CiAvLyBDb252ZXJzaW9uIGJ1ZmZlcnMgaG9sZCB0cmFuc2xhdGVk
IGluZGV4IGFuZCB2ZXJ0ZXggZGF0YS4KIHN0cnVjdCBDb252ZXJzaW9uQnVmZmVyTXRsCiB7CkBA
IC0zNiw3ICs0MCw2IEBAIHN0cnVjdCBDb252ZXJzaW9uQnVmZmVyTXRsCiAKICAgICAvLyBUaGUg
Y29udmVyc2lvbiBpcyBzdG9yZWQgaW4gYSBkeW5hbWljIGJ1ZmZlci4KICAgICBtdGw6OkJ1ZmZl
clBvb2wgZGF0YTsKLQogICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIHRvIGJlIGZpbGxlZCBi
eSB1c2VyIG9mIHRoaXMgYnVmZmVyIGNvbnZlcnNpb24KICAgICBtdGw6OkJ1ZmZlclJlZiBjb252
ZXJ0ZWRCdWZmZXI7CiAgICAgc2l6ZV90IGNvbnZlcnRlZE9mZnNldDsKQEAgLTYwLDExICs2Mywx
NCBAQCBzdHJ1Y3QgSW5kZXhDb252ZXJzaW9uQnVmZmVyTXRsIDogcHVibGljIENvbnZlcnNpb25C
dWZmZXJNdGwKICAgICBJbmRleENvbnZlcnNpb25CdWZmZXJNdGwoQ29udGV4dE10bCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkRyYXdFbGVtZW50c1R5cGUgZWxl
bVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFy
dEVuYWJsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJbik7
Ci0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldEluLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxJbmRleFJhbmdlPiByZXN0YXJ0UmFu
Z2VzSW4gPSBzdGQ6OnZlY3RvcjxJbmRleFJhbmdlPigpKTsKICAgICBjb25zdCBnbDo6RHJhd0Vs
ZW1lbnRzVHlwZSBlbGVtVHlwZTsKICAgICBjb25zdCBzaXplX3Qgb2Zmc2V0OwogICAgIGJvb2wg
cHJpbWl0aXZlUmVzdGFydEVuYWJsZWQ7CisgICAgc3RkOjp2ZWN0b3I8SW5kZXhSYW5nZT4gcmVz
dGFydFJhbmdlczsKKyAgICBJbmRleFJhbmdlIGdldFJhbmdlRm9yQ29udmVydGVkQnVmZmVyKHNp
emVfdCBjb3VudCk7CisKIH07CiAKIHN0cnVjdCBVbmlmb3JtQ29udmVyc2lvbkJ1ZmZlck10bCA6
IHB1YmxpYyBDb252ZXJzaW9uQnVmZmVyTXRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQnVmZmVyTXRsLm1tIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0J1ZmZlck10bC5t
bQppbmRleCBmNTRlMTY1NzM2YzJkOGI4ZTg4YjA2ZTMyZmY3NTQ0NjMzOGM4YzExLi4zZWIzMmQ5
NTEzZTViZWUyODRmY2EzNjY0MDdkNjQ5ZjVlMTcwNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQnVmZmVyTXRsLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9C
dWZmZXJNdGwubW0KQEAgLTYwLDE1ICs2MCwyMyBAQCBDb252ZXJzaW9uQnVmZmVyTXRsOjp+Q29u
dmVyc2lvbkJ1ZmZlck10bCgpID0gZGVmYXVsdDsKIEluZGV4Q29udmVyc2lvbkJ1ZmZlck10bDo6
SW5kZXhDb252ZXJzaW9uQnVmZmVyTXRsKENvbnRleHRNdGwgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RHJhd0VsZW1lbnRz
VHlwZSBlbGVtVHlwZUluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZEluLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldEluKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG9mZnNldEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8SW5kZXhSYW5nZT4gcmVzdGFydFJhbmdlc0luKQogICAgIDogQ29u
dmVyc2lvbkJ1ZmZlck10bChjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29u
dmVydGVkRWxlbWVudEFycmF5QnVmZmVySW5pdGlhbFNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG10bDo6a0luZGV4QnVmZmVyT2Zmc2V0QWxpZ25tZW50KSwKICAgICAgIGVsZW1UeXBl
KGVsZW1UeXBlSW4pLAogICAgICAgb2Zmc2V0KG9mZnNldEluKSwKLSAgICAgIHByaW1pdGl2ZVJl
c3RhcnRFbmFibGVkKHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkSW4pCisgICAgICBwcmltaXRpdmVS
ZXN0YXJ0RW5hYmxlZChwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZEluKSwKKyAgICAgIHJlc3RhcnRS
YW5nZXMocmVzdGFydFJhbmdlc0luKQorCiB7fQogCitJbmRleFJhbmdlIEluZGV4Q29udmVyc2lv
bkJ1ZmZlck10bDo6Z2V0UmFuZ2VGb3JDb252ZXJ0ZWRCdWZmZXIoc2l6ZV90IGNvdW50KQorewor
ICAgIHJldHVybiBJbmRleFJhbmdlezAsIGNvdW50fTsKK30KKwogLy8gVW5pZm9ybUNvbnZlcnNp
b25CdWZmZXJNdGwgaW1wbGVtZW50YXRpb24KIFVuaWZvcm1Db252ZXJzaW9uQnVmZmVyTXRsOjpV
bmlmb3JtQ29udmVyc2lvbkJ1ZmZlck10bChDb250ZXh0TXRsICpjb250ZXh0LCBzaXplX3Qgb2Zm
c2V0SW4pCiAgICAgOiBDb252ZXJzaW9uQnVmZmVyTXRsKGNvbnRleHQsIDAsIG10bDo6a1VuaWZv
cm1CdWZmZXJTZXR0aW5nT2Zmc2V0TWluQWxpZ25tZW50KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29u
dGV4dE10bC5oCmluZGV4IDgyODk0ZmViNDU5NzE0MWYxZWZhYjdlNjI2MjI3YjhkZmIzZGI2ZTAu
LmYzZjViY2FjYmFmZGI4MjUwNzliYzkwM2ZmZjVlMzAzMWM2NzBhYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0
TXRsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0NvbnRleHRNdGwuaApAQCAtNTI0LDcgKzUyNCw3IEBAIGNsYXNzIENvbnRleHRNdGwg
OiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyBtdGw6OkNvbnRleHQKICAgICAgICAgLy8gTk9U
RTogRXhwbGljaXQgcGFkZGluZy4gRmlsbCBpbiB3aXRoIHVzZWZ1bCBkYXRhIHdoZW4gbmVlZGVk
IGluIHRoZSBmdXR1cmUuCiAgICAgICAgIGludDMyX3QgcGFkZGluZ18wWzNdOwogCi0gICAgICAg
IGludDMyX3QgeGZiQnVmZmVyT2Zmc2V0c1s0XTsKKyAgICAgICAgc3RkOjphcnJheTxpbnQzMl90
LCA0PiB4ZmJCdWZmZXJPZmZzZXRzOwogICAgICAgICB1aW50MzJfdCBhY2JCdWZmZXJPZmZzZXRz
WzRdOwogCiAgICAgICAgIC8vIFdlJ2xsIHVzZSB4LCB5LCB6LCB3IGZvciBuZWFyIC8gZmFyIC8g
ZGlmZiAvIHpzY2FsZSByZXNwZWN0aXZlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRs
Lm1tCmluZGV4IGQyNTJjZWI1MmQ1ZmVhNTg4MTAyNjcxMGNmMTdjMmU1NDVkMDM2NWYuLjRiZTBl
MTZkZWU2NzQyNjQ1MDZjYzY0OWM1NzEwYzEyMGI0MjBlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9Db250ZXh0TXRsLm1tCkBAIC0yMzA5LDYgKzIzMDksMjAgQEAgYW5nbGU6OlJlc3VsdCBDb250
ZXh0TXRsOjpoYW5kbGVEaXJ0eURyaXZlclVuaWZvcm1zKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0LAogICAgIH0KICAgICBtRHJpdmVyVW5pZm9ybXMuY292ZXJhZ2VNYXNrID0gY292ZXJhZ2VN
YXNrOwogCisgICAgdWludDMyX3QgeGZiQWN0aXZlVW5wYXVzZWQgPSBtU3RhdGUuaXNUcmFuc2Zv
cm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCk7CisKKyAgICBtRHJpdmVyVW5pZm9ybXMueGZiQWN0
aXZlVW5wYXVzZWQgPSB4ZmJBY3RpdmVVbnBhdXNlZDsKKyAgICBtRHJpdmVyVW5pZm9ybXMueGZi
VmVydGljZXNQZXJEcmF3ID0gbVhmYlZlcnRleENvdW50UGVySW5zdGFuY2U7CisKKyAgICBpZiAo
eGZiQWN0aXZlVW5wYXVzZWQpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja010bCAq
dHJhbnNmb3JtRmVlZGJhY2tNdGwgPQorICAgICAgICAgICAgbXRsOjpHZXRJbXBsKG1TdGF0ZS5n
ZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSk7CisgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNr
TXRsLT5nZXRCdWZmZXJPZmZzZXRzKHRoaXMsIG1YZmJCYXNlVmVydGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRHJpdmVyVW5pZm9ybXMueGZiQnVm
ZmVyT2Zmc2V0cy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1Ecml2ZXJVbmlmb3Jtcy54ZmJCdWZmZXJPZmZzZXRzLnNpemUoKSk7CisgICAg
fQorCiAgICAgQVNTRVJUKG1SZW5kZXJFbmNvZGVyLnZhbGlkKCkpOwogICAgIG1SZW5kZXJFbmNv
ZGVyLnNldEZyYWdtZW50RGF0YShtRHJpdmVyVW5pZm9ybXMsIG10bDo6a0RyaXZlclVuaWZvcm1z
QmluZGluZ0luZGV4KTsKICAgICBtUmVuZGVyRW5jb2Rlci5zZXRWZXJ0ZXhEYXRhKG1Ecml2ZXJV
bmlmb3JtcywgbXRsOjprRHJpdmVyVW5pZm9ybXNCaW5kaW5nSW5kZXgpOwpAQCAtMjMzMSwxNSAr
MjM0NSwxNiBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OmhhbmRsZURpcnR5R3JhcGhpY3NU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFbXVsYXRpb24oCiAgICAgc2l6ZV90IGJ1ZmZlckNvdW50
ICAgICAgICAgICAgICAgICAgICAgICAgID0gZXhlY3V0YWJsZS0+Z2V0VHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJDb3VudCgpOwogICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNB
cnJheTxCdWZmZXJNdGwgKj4gJmJ1ZmZlckhhbmRsZXMgPQogICAgICAgICB0cmFuc2Zvcm1GZWVk
YmFja010bC0+Z2V0QnVmZmVySGFuZGxlcygpOwotCisgICAgY29uc3Qgc3RkOjphcnJheTx1aW50
MzJfdCwgbXRsOjprTWF4U2hhZGVyWEZCcz4gJmFjdHVhbFhmYkJpbmRpbmdzID0gbVByb2dyYW0t
PmdldFhmYkJpbmRpbmdzKCk7CiAgICAgZm9yIChzaXplX3QgYnVmZmVySW5kZXggPSAwOyBidWZm
ZXJJbmRleCA8IGJ1ZmZlckNvdW50OyArK2J1ZmZlckluZGV4KQogICAgIHsKICAgICAgICAgQnVm
ZmVyTXRsICpidWZmZXJIYW5kbGUgPSBidWZmZXJIYW5kbGVzW2J1ZmZlckluZGV4XTsKICAgICAg
ICAgQVNTRVJUKGJ1ZmZlckhhbmRsZSk7CiAgICAgICAgIEFTU0VSVChtUmVuZGVyRW5jb2Rlci52
YWxpZCgpKTsKKyAgICAgICAgdWludDMyX3QgYWN0dWFsQnVmZmVySWR4ID0gYWN0dWFsWGZiQmlu
ZGluZ3NbYnVmZmVySW5kZXhdOworICAgICAgICBhc3NlcnQoYWN0dWFsQnVmZmVySWR4IDwgbXRs
OjprTWF4U2hhZGVyQnVmZmVycyAmJiAiVHJhbnNmb3JtIEZlZWRiYWNrIEJ1ZmZlciBJbmRleCBz
aG91bGQgYmUgaW5pdGlhbGl6ZWQuIik7CiAgICAgICAgIG1SZW5kZXJFbmNvZGVyLnNldEJ1ZmZl
ckZvcldyaXRlKAotICAgICAgICAgICAgZ2w6OlNoYWRlclR5cGU6OlZlcnRleCwgYnVmZmVySGFu
ZGxlLT5nZXRDdXJyZW50QnVmZmVyKCksIDAsCi0gICAgICAgICAgICBtdGw6OmtUcmFuc2Zvcm1G
ZWVkYmFja0JpbmRpbmdJbmRleCArICh1aW50MzJfdClidWZmZXJJbmRleCk7CisgICAgICAgICAg
ICBnbDo6U2hhZGVyVHlwZTo6VmVydGV4LCBidWZmZXJIYW5kbGUtPmdldEN1cnJlbnRCdWZmZXIo
KSwgMCwgYWN0dWFsQnVmZmVySWR4KTsKICAgICB9CiAKICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7CkBAIC0yMzczLDcgKzIzODgsNyBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRN
dGw6OmhhbmRsZURpcnR5RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eAogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OmhhbmRsZURpcnR5RGVwdGhCaWFzKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0KQogewotICAgIGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUg
JnJhc2VyU3RhdGUgPSBtU3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCk7CisgICAgY29uc3QgZ2w6
OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUgPSBtU3RhdGUuZ2V0UmFzdGVyaXplclN0YXRl
KCk7CiAgICAgQVNTRVJUKG1SZW5kZXJFbmNvZGVyLnZhbGlkKCkpOwogICAgIGlmICghbVN0YXRl
LmlzUG9seWdvbk9mZnNldEZpbGxFbmFibGVkKCkpCiAgICAgewpAQCAtMjM4MSw3ICsyMzk2LDcg
QEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRsOjpoYW5kbGVEaXJ0eURlcHRoQmlhcyhjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCkKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbVJl
bmRlckVuY29kZXIuc2V0RGVwdGhCaWFzKHJhc2VyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzLCBy
YXNlclN0YXRlLnBvbHlnb25PZmZzZXRGYWN0b3IsCisgICAgICAgIG1SZW5kZXJFbmNvZGVyLnNl
dERlcHRoQmlhcyhyYXN0ZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0VW5pdHMsIHJhc3RlclN0YXRlLnBv
bHlnb25PZmZzZXRGYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwubW0KaW5kZXggYTY0MzJh
NThiZDk1OGFlMzRmZjg4MWQ0ZmVhNWI1ZTE4YjFlM2VkMi4uNGU2ODEyMTJkMjI4MDRlMzY0MzQw
NmUxMmM3Mjg2NDA3MDJkYTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwubW0KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwubW0K
QEAgLTI3LDcgKzI3LDYgQEAKICNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX01BQ09TKSB8fCBk
ZWZpbmVkKEFOR0xFX1BMQVRGT1JNX01BQ0NBVEFMWVNUKQogY29uc3RleHByIGNoYXIga0FOR0xF
UHJlZmVycmVkRGV2aWNlRW52W10gPSAiQU5HTEVfUFJFRkVSUkVEX0RFVklDRSI7CiAjZW5kaWYK
LWNvbnN0ZXhwciBjaGFyIGtBTkdMRVRyYW5zZm9ybUZlZWRiYWNrRW52W10gPSAiQU5HTEVfTUVU
QUxfWEZCX0VOQUJMRSI7CiAKIG5hbWVzcGFjZSByeAogewpAQCAtMzI2LDcgKzMyNSw4IEBAIFN0
cmVhbVByb2R1Y2VySW1wbCAqRGlzcGxheU10bDo6Y3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0
dXJlKAogZ2w6OlZlcnNpb24gRGlzcGxheU10bDo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkg
Y29uc3QKIHsKICAgICAvLyBOT1RFKGhxbGUpOiBTdXBwb3J0cyBHTEVTIDMuMCBvbiBpT1MgR1BV
IEZhbWlseSA0KyBmb3Igbm93LgotI2lmIFRBUkdFVF9PU19TSU1VTEFUT1IgLy8gU2ltdWxhdG9y
IHNob3VsZCBiZSBhYmxlIHRvIHN1cHBvcnQgRVMzLCBkZXNwaXRlIG5vdCBzdXBwb3J0aW5nIGlP
UyBHUFUgRmFtaWx5IDQgaW4gaXRzIGVudGlyZXR5LgorI2lmIFRBUkdFVF9PU19TSU1VTEFUT1Ig
IC8vIFNpbXVsYXRvciBzaG91bGQgYmUgYWJsZSB0byBzdXBwb3J0IEVTMywgZGVzcGl0ZSBub3Qg
c3VwcG9ydGluZyBpT1MgR1BVCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFtaWx5IDQg
aW4gaXRzIGVudGlyZXR5LgogICAgIHJldHVybiBnbDo6VmVyc2lvbigzLCAwKTsKICNlbHNlCiAg
ICAgaWYgKHN1cHBvcnRzRWl0aGVyR1BVRmFtaWx5KDQsIDEpKQpAQCAtNDE4LDkgKzQxOCw5IEBA
IGVnbDo6Q29uZmlnU2V0IERpc3BsYXlNdGw6OmdlbmVyYXRlQ29uZmlncygpCiAjZWxzZQogICAg
IGNvbmZpZy5iaW5kVG9UZXh0dXJlVGFyZ2V0ID0gRUdMX1RFWFRVUkVfMkQ7CiAjZW5kaWYKLSAg
ICBjb25maWcubWF4UEJ1ZmZlcldpZHRoICAgICA9IDQwOTY7Ci0gICAgY29uZmlnLm1heFBCdWZm
ZXJIZWlnaHQgICAgPSA0MDk2OwotICAgIGNvbmZpZy5tYXhQQnVmZmVyUGl4ZWxzICAgID0gNDA5
NiAqIDQwOTY7CisgICAgY29uZmlnLm1heFBCdWZmZXJXaWR0aCAgPSA0MDk2OworICAgIGNvbmZp
Zy5tYXhQQnVmZmVySGVpZ2h0ID0gNDA5NjsKKyAgICBjb25maWcubWF4UEJ1ZmZlclBpeGVscyA9
IDQwOTYgKiA0MDk2OwogCiAgICAgLy8gQ2F2ZWF0CiAgICAgY29uZmlnLmNvbmZpZ0NhdmVhdCA9
IEVHTF9OT05FOwpAQCAtNDM4LDggKzQzOCw4IEBAIGVnbDo6Q29uZmlnU2V0IERpc3BsYXlNdGw6
OmdlbmVyYXRlQ29uZmlncygpCiAgICAgY29uZmlnLm1pblN3YXBJbnRlcnZhbCA9IDA7CiAgICAg
Y29uZmlnLm1heFN3YXBJbnRlcnZhbCA9IDE7CiAjZWxzZQotICAgIGNvbmZpZy5taW5Td2FwSW50
ZXJ2YWwgPSAxOwotICAgIGNvbmZpZy5tYXhTd2FwSW50ZXJ2YWwgPSAxOworICAgIGNvbmZpZy5t
aW5Td2FwSW50ZXJ2YWwgICAgID0gMTsKKyAgICBjb25maWcubWF4U3dhcEludGVydmFsICAgICA9
IDE7CiAjZW5kaWYKIAogICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0JBODsK
QEAgLTYxMiwxMiArNjEyLDEyIEBAIHZvaWQgRGlzcGxheU10bDo6ZW5zdXJlQ2Fwc0luaXRpYWxp
emVkKCkgY29uc3QKICAgICBtTmF0aXZlQ2Fwcy5mcmFnbWVudE1lZGl1bXBJbnQuc2V0VHdvc0Nv
bXBsZW1lbnRJbnQoMzIpOwogICAgIG1OYXRpdmVDYXBzLmZyYWdtZW50TG93cEludC5zZXRUd29z
Q29tcGxlbWVudEludCgzMik7CiAKLSAgICBHTHVpbnQgbWF4RGVmYXVsdFVuaWZvcm1WZWN0b3Jz
ID0gbXRsOjprRGVmYXVsdFVuaWZvcm1zTWF4U2l6ZSAvIChzaXplb2YoR0xmbG9hdCkgKiA0KTsK
KyAgICBHTHVpbnQgbWF4RGVmYXVsdFVuaWZvcm1WZWN0b3JzID0gbXRsOjprRGVmYXVsdFVuaWZv
cm1zTWF4U2l6ZSAvIChzaXplb2YoR0xmbG9hdCkpOwogCi0gICAgY29uc3QgR0x1aW50IG1heERl
ZmF1bHRVbmlmb3JtQ29tcG9uZW50cyA9IG1heERlZmF1bHRVbmlmb3JtVmVjdG9ycyAqIDQ7Cisg
ICAgY29uc3QgR0x1aW50IG1heERlZmF1bHRVbmlmb3JtQ29tcG9uZW50cyA9IG1heERlZmF1bHRV
bmlmb3JtVmVjdG9yczsKIAogICAgIC8vIFVuaWZvcm1zIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBh
IHVuaWZvcm0gYnVmZmVyLCBzbyB0aGUgbWF4IG51bWJlciBvZiB1bmlmb3JtcyB3ZSBjYW4KLSAg
ICAvLyBzdXBwb3J0IGlzIHRoZSBtYXggYnVmZmVyIHJhbmdlIGRpdmlkZWQgYnkgdGhlIHNpemUg
b2YgYSBzaW5nbGUgdW5pZm9ybSAoNFggZmxvYXQpLgorICAgIC8vIHN1cHBvcnQgaXMgdGhlIG1h
eCBidWZmZXIgcmFuZ2UgZGl2aWRlZCBieSB0aGUgc2l6ZSBvZiBhIHNpbmdsZSB1bmlmb3JtICgx
WCBmbG9hdCkuCiAgICAgbU5hdGl2ZUNhcHMubWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG1heERlZmF1bHRVbmlmb3JtVmVjdG9yczsKICAgICBt
TmF0aXZlQ2Fwcy5tYXhTaGFkZXJVbmlmb3JtQ29tcG9uZW50c1tnbDo6U2hhZGVyVHlwZTo6VmVy
dGV4XSAgID0gbWF4RGVmYXVsdFVuaWZvcm1Db21wb25lbnRzOwogICAgIG1OYXRpdmVDYXBzLm1h
eEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtYXhE
ZWZhdWx0VW5pZm9ybVZlY3RvcnM7CkBAIC04NTMsOSArODUzLDggQEAgdm9pZCBEaXNwbGF5TXRs
Ojppbml0aWFsaXplRmVhdHVyZXMoKQogCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZt
RmVhdHVyZXMpLCBhbGxvd1NlcGFyYXRlZERlcHRoU3RlbmNpbEJ1ZmZlcnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIWlzT1NYICYmICFpc0NhdGFseXN0ICYmICFpc1NpbXVsYXRvcik7
Ci0KLSAgICBtRmVhdHVyZXMuZW11bGF0ZVRyYW5zZm9ybUZlZWRiYWNrLmVuYWJsZWQgPQotICAg
ICAgICBhbmdsZTo6R2V0RW52aXJvbm1lbnRWYXIoa0FOR0xFVHJhbnNmb3JtRmVlZGJhY2tFbnYp
WzBdID09ICcxJzsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIHJl
d3JpdGVSb3dNYWpvck1hdHJpY2VzLCB0cnVlKTsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElP
TigoJm1GZWF0dXJlcyksIGVtdWxhdGVUcmFuc2Zvcm1GZWVkYmFjaywgdHJ1ZSk7CiAKICAgICBh
bmdsZTo6UGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSA9IEFOR0xFUGxhdGZvcm1DdXJyZW50KCk7
CiAgICAgcGxhdGZvcm0tPm92ZXJyaWRlRmVhdHVyZXNNdGwocGxhdGZvcm0sICZtRmVhdHVyZXMp
OwpAQCAtODY1LDI3ICs4NjQsMjcgQEAgdm9pZCBEaXNwbGF5TXRsOjppbml0aWFsaXplRmVhdHVy
ZXMoKQogCiBhbmdsZTo6UmVzdWx0IERpc3BsYXlNdGw6OmluaXRpYWxpemVTaGFkZXJMaWJyYXJ5
KCkKIHsKLSAgICAjaWZkZWYgQU5HTEVfTUVUQUxfWENPREVfQlVJTERTX1NIQURFUlMKLSAgICAg
ICAgbURlZmF1bHRTaGFkZXJzQXN5bmNJbmZvLnJlc2V0KG5ldyBEZWZhdWx0U2hhZGVyQXN5bmNJ
bmZvTXRsKTsKLSAgICAgICAgCi0gICAgCi0gICAgICAgIE5TU3RyaW5nICpwYXRoID0gW05TQnVu
ZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdLmJ1bmRsZVBhdGg7
Ci0gICAgICAgIE5TRXJyb3IgKiBlcnJvciA9IG51bGxwdHI7Ci0gICAgICAgIG1EZWZhdWx0U2hh
ZGVyc0FzeW5jSW5mby0+ZGVmYXVsdFNoYWRlcnMgPSBbZ2V0TWV0YWxEZXZpY2UoKSBuZXdEZWZh
dWx0TGlicmFyeVdpdGhCdW5kbGU6W05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnBhdGhdIGVycm9y
OiZlcnJvcl07CisjaWZkZWYgQU5HTEVfTUVUQUxfWENPREVfQlVJTERTX1NIQURFUlMKKyAgICBt
RGVmYXVsdFNoYWRlcnNBc3luY0luZm8ucmVzZXQobmV3IERlZmF1bHRTaGFkZXJBc3luY0luZm9N
dGwpOwogCi0gICAgICAgIGlmIChlcnJvciAmJiAhbURlZmF1bHRTaGFkZXJzQXN5bmNJbmZvLT5k
ZWZhdWx0U2hhZGVycykKKyAgICBOU1N0cmluZyAqcGF0aCA9IFtOU0J1bmRsZSBidW5kbGVXaXRo
SWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQiXS5idW5kbGVQYXRoOworICAgIE5TRXJyb3Ig
KmVycm9yID0gbnVsbHB0cjsKKyAgICBtRGVmYXVsdFNoYWRlcnNBc3luY0luZm8tPmRlZmF1bHRT
aGFkZXJzID0KKyAgICAgICAgW2dldE1ldGFsRGV2aWNlKCkgbmV3RGVmYXVsdExpYnJhcnlXaXRo
QnVuZGxlOltOU0J1bmRsZSBidW5kbGVXaXRoUGF0aDpwYXRoXSBlcnJvcjomZXJyb3JdOworCisg
ICAgaWYgKGVycm9yICYmICFtRGVmYXVsdFNoYWRlcnNBc3luY0luZm8tPmRlZmF1bHRTaGFkZXJz
KQorICAgIHsKKyAgICAgICAgQU5HTEVfTVRMX09CSkNfU0NPUEUKICAgICAgICAgewotICAgICAg
ICAgICAgQU5HTEVfTVRMX09CSkNfU0NPUEUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBFUlIoKSA8PCAiSW50ZXJuYWwgZXJyb3I6IG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZSBm
YWlsZWQuICIgPDwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZzsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG1EZWZhdWx0U2hhZGVyc0FzeW5jSW5mby0+ZGVmYXVsdFNo
YWRlcnNDb21waWxlRXJyb3IgPSBzdGQ6Om1vdmUoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJu
IGFuZ2xlOjpSZXN1bHQ6OlN0b3A7Ci0gICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgRVJS
KCkgPDwgIkludGVybmFsIGVycm9yOiBuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGUgZmFpbGVk
LiAiCisgICAgICAgICAgICAgICAgICA8PCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4
U3RyaW5nOwogICAgICAgICB9Ci0gICAgICAgIG1EZWZhdWx0U2hhZGVyc0FzeW5jSW5mby0+Y29t
cGlsZWQgPSB0cnVlOwotICAgICAgICAKLSAgICAjZWxzZQorICAgICAgICBtRGVmYXVsdFNoYWRl
cnNBc3luY0luZm8tPmRlZmF1bHRTaGFkZXJzQ29tcGlsZUVycm9yID0gc3RkOjptb3ZlKGVycm9y
KTsKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7CisgICAgfQorICAgIG1EZWZh
dWx0U2hhZGVyc0FzeW5jSW5mby0+Y29tcGlsZWQgPSB0cnVlOworCisjZWxzZQogICAgIG1EZWZh
dWx0U2hhZGVyc0FzeW5jSW5mby5yZXNldChuZXcgRGVmYXVsdFNoYWRlckFzeW5jSW5mb010bCk7
CiAKICAgICAvLyBDcmVhdGUgcmVmZXJlbmNlcyB0byBhc3luYyBpbmZvIHN0cnVjdCBzaW5jZSBp
dCBtaWdodCBiZSByZWxlYXNlZCBpbiB0ZXJtaW5hdGUoKSwgYnV0IHRoZQpAQCAtOTE0LDcgKzkx
Myw3IEBAIGFuZ2xlOjpSZXN1bHQgRGlzcGxheU10bDo6aW5pdGlhbGl6ZVNoYWRlckxpYnJhcnko
KQogCiAgICAgICAgIFtuc1NvdXJjZSBBTkdMRV9NVExfQVVUT1JFTEVBU0VdOwogICAgIH0KLSAg
ICAjZW5kaWYKKyNlbmRpZgogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRnJhbWVCdWZmZXJNdGwuaAppbmRleCA5MTA1OTVlZDNm
YzRhZjljOTZmODEwMDZiOTNhZDc5ODc4ZDYyOGUyLi45NGUwMDFjZWRiMGJhMmQ0ZmNiODI2ZTI4
MDc5NTJlYmQyZTE1NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRnJhbWVCdWZmZXJNdGwuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRnJhbWVCdWZmZXJNdGwu
aApAQCAtMjMsNyArMjMsNyBAQCBuYW1lc3BhY2UgbXRsCiBjbGFzcyBSZW5kZXJDb21tYW5kRW5j
b2RlcjsKIH0gIC8vIG5hbWVzcGFjZSBtdGwKIGNsYXNzIENvbnRleHRNdGw7Ci1jbGFzcyBXaW5k
b3dTdXJmYWNlTXRsOworY2xhc3MgU3VyZmFjZU10bDsKIAogY2xhc3MgRnJhbWVidWZmZXJNdGwg
OiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwu
aAppbmRleCBlYjliYjAxNTVjMmY5MTM1M2I4YjViYzk2Y2MyMTM2OWQ2Njc4YmQ4Li4wMTk3OWJh
NWI2NTI5MDUxNDg3OGM1NzgyNjhhNWJhMzBjNjM0OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Q
cm9ncmFtTXRsLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfYnVmZmVyX3Bvb2wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9tdGxfY29tbWFuZF9idWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfY29tbW9uLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
bXRsX3Jlc291cmNlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9z
dGF0ZV9jYWNoZS5oIgogCkBAIC0xMzgsNyArMTM5LDggQEAgY2xhc3MgUHJvZ3JhbU10bCA6IHB1
YmxpYyBQcm9ncmFtSW1wbCwgcHVibGljIG10bDo6UmVuZGVyUGlwZWxpbmVDYWNoZVNwZWNpYWxp
emUKICAgICBhbmdsZTo6UmVzdWx0IGNyZWF0ZU1zbFNoYWRlckxpYihtdGw6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlclR5
cGUgc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
SW5mb0xvZyAmaW5mb0xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
dGw6OlRyYW5zbGF0ZWRTaGFkZXJJbmZvICp0cmFuc2xhdGVkTXNsSW5mbyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRsOjpUcmFuc2xhdGVkU2hhZGVySW5mbyAqdHJh
bnNsYXRlZE1zbEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nKiwgTlNPYmplY3QqPiAqIHN1YnRpdHV0aW9uRGljdGlvbmFyeSA9
IEB7fSk7CiAgICAgLy8gQ2FsbHMgdGhpcyBiZWZvcmUgZHJhd2luZywgY2hhbmdlZFBpcGVsaW5l
RGVzYyBpcyBwYXNzZWQgd2hlbiB2ZXJ0ZXggYXR0cmlidXRlcyBkZXNjIGFuZC9vcgogICAgIC8v
IHNoYWRlciBwcm9ncmFtIGNoYW5nZWQuCiAgICAgYW5nbGU6OlJlc3VsdCBzZXR1cERyYXcoY29u
c3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKQEAgLTE0OSw3ICsxNTEsOCBAQCBjbGFzcyBQcm9n
cmFtTXRsIDogcHVibGljIFByb2dyYW1JbXBsLCBwdWJsaWMgbXRsOjpSZW5kZXJQaXBlbGluZUNh
Y2hlU3BlY2lhbGl6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5pZm9ybUJ1
ZmZlcnNEaXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRyYW5zZm9ybUZl
ZWRiYWNrRHJhdyk7CiAKLSAgICBzdGQ6OnN0cmluZyBnZXRYZmJNc2xTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtWGZiTXNsU291cmNlOyB9CisgICAgc3RkOjphcnJheTx1aW50MzJfdCwgbXRsOjpr
TWF4U2hhZGVyWEZCcz4gZ2V0WGZiQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtWGZiQmluZGlu
Z3M7IH0KKyAgICBzdGQ6OnN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKGNvbnN0IGds
OjpTaGFkZXJUeXBlIHNoYWRlclR5cGUpIGNvbnN0IHsgcmV0dXJuIG1Nc2xTaGFkZXJUcmFuc2xh
dGVJbmZvW3NoYWRlclR5cGVdLm1ldGFsU2hhZGVyU291cmNlOyB9CiAKICAgICBtdGw6OlJlbmRl
clBpcGVsaW5lQ2FjaGUgKm1NZXRhbFhmYlJlbmRlclBpcGVsaW5lQ2FjaGU7CiAKQEAgLTE5MSw3
ICsxOTQsNyBAQCBjbGFzcyBQcm9ncmFtTXRsIDogcHVibGljIFByb2dyYW1JbXBsLCBwdWJsaWMg
bXRsOjpSZW5kZXJQaXBlbGluZUNhY2hlU3BlY2lhbGl6ZQogICAgICAgICBtdGw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyICpjbWRFbmNvZGVyLAogICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6
SW50ZXJmYWNlQmxvY2s+ICZibG9ja3MsCiAgICAgICAgIGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5
cGUpOwotCisgICAgCiAgICAgdm9pZCByZXNldChDb250ZXh0TXRsICpjb250ZXh0KTsKIAogICAg
IHZvaWQgc2F2ZVRyYW5zbGF0ZWRTaGFkZXJzKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVh
bSk7CkBAIC0yMTksNyArMjIyLDkgQEAgY2xhc3MgUHJvZ3JhbU10bCA6IHB1YmxpYyBQcm9ncmFt
SW1wbCwgcHVibGljIG10bDo6UmVuZGVyUGlwZWxpbmVDYWNoZVNwZWNpYWxpemUKICAgICBhbmds
ZTo6UmVzdWx0IGxpbmtUcmFuc2xhdGVkU2hhZGVycyhjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpCaW5hcnlJ
bnB1dFN0cmVhbSAqc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nKTsKLQorICAgIAorICAgIG10bDo6QnVmZmVyUG9vbCAq
IGdldEJ1ZmZlclBvb2woQ29udGV4dE10bCAqIGNvbnRleHQpOworICAgIAogICAgIC8vIFN0YXRl
IGZvciB0aGUgZGVmYXVsdCB1bmlmb3JtIGJsb2Nrcy4KICAgICBzdHJ1Y3QgRGVmYXVsdFVuaWZv
cm1CbG9jayBmaW5hbCA6IHByaXZhdGUgYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgewpAQCAtMjY5
LDcgKzI3NCw5IEBAIGNsYXNzIFByb2dyYW1NdGwgOiBwdWJsaWMgUHJvZ3JhbUltcGwsIHB1Ymxp
YyBtdGw6OlJlbmRlclBpcGVsaW5lQ2FjaGVTcGVjaWFsaXplCiAgICAgdWludDMyX3QgbVNoYWRv
d0NvbXBhcmVNb2Rlc1ttdGw6OmtNYXhTaGFkZXJTYW1wbGVyc10gPSB7MH07CiAKICAgICBtdGw6
OlJlbmRlclBpcGVsaW5lQ2FjaGUgbU1ldGFsUmVuZGVyUGlwZWxpbmVDYWNoZTsKLSAgICBzdGQ6
OnN0cmluZyBtWGZiTXNsU291cmNlOworICAgIHN0ZDo6YXJyYXk8dWludDMyX3QsIG10bDo6a01h
eFNoYWRlclhGQnM+IG1YZmJCaW5kaW5nczsKKyAgICBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
TlNPYmplY3QgKj4gKiBtRGVmYXVsdFN1YnN0aXR1dGlvbkRpY3Rpb25hcnk7CisgICAgbXRsOjpC
dWZmZXJQb29sICogbUF1eEJ1ZmZlclBvb2w7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9Qcm9ncmFtTXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW0KaW5kZXggNmRhODY2NDFjYWE4NTM1NjhjMDg1
YTZhMDhiYzRjZjY1ZjUwMDI3OC4uOGVlMDkwMzNhZjBiZDhiMzNjOTBhNGRjNjY0YThiZDUwZTg3
MzE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW0KQEAgLTIzNiw5ICsyMzYs
MjAgQEAgUHJvZ3JhbU10bDo6RGVmYXVsdFVuaWZvcm1CbG9jazo6RGVmYXVsdFVuaWZvcm1CbG9j
aygpIHt9CiBQcm9ncmFtTXRsOjpEZWZhdWx0VW5pZm9ybUJsb2NrOjp+RGVmYXVsdFVuaWZvcm1C
bG9jaygpID0gZGVmYXVsdDsKIAogUHJvZ3JhbU10bDo6UHJvZ3JhbU10bChjb25zdCBnbDo6UHJv
Z3JhbVN0YXRlICZzdGF0ZSkgOiBQcm9ncmFtSW1wbChzdGF0ZSksCi0gICAgbU1ldGFsUmVuZGVy
UGlwZWxpbmVDYWNoZSh0aGlzKQorICAgIG1NZXRhbFJlbmRlclBpcGVsaW5lQ2FjaGUodGhpcyks
CisgICAgbUF1eEJ1ZmZlclBvb2wobnVsbHB0cikKIHsKLSAgICBtTWV0YWxYZmJSZW5kZXJQaXBl
bGluZUNhY2hlID0gbmV3IG10bDo6UmVuZGVyUGlwZWxpbmVDYWNoZSgpOworICAgIG1NZXRhbFhm
YlJlbmRlclBpcGVsaW5lQ2FjaGUgPSBuZXcgbXRsOjpSZW5kZXJQaXBlbGluZUNhY2hlKHRoaXMp
OworI2lmIEFOR0xFX0VOQUJMRV9NRVRBTF9TUElSVgorICAgIGlmIChzaDo6cmVhZEJvb2xFbnZW
YXIoIkFOR0xFX0dFTl9NVExfV0lUSF9TUElSViIpKQorICAgIHsKKyAgICAgICAgbURlZmF1bHRT
dWJzdGl0dXRpb25EaWN0aW9uYXJ5ID0gQHt9OworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAg
ICB7CisgICAgICAgIG1EZWZhdWx0U3Vic3RpdHV0aW9uRGljdGlvbmFyeSA9IEB7QCJUUkFOU0ZP
Uk1fRkVFREJBQ0tfRU5BQkxFRCI6IEAiMCJ9OworICAgIH0KIH0KIAogUHJvZ3JhbU10bDo6flBy
b2dyYW1NdGwoKQpAQCAtMjQ5LDcgKzI2MCwxMiBAQCBQcm9ncmFtTXRsOjp+UHJvZ3JhbU10bCgp
CiB2b2lkIFByb2dyYW1NdGw6OmRlc3Ryb3koY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgYXV0byBjb250ZXh0TXRsID0gbXRsOjpHZXRJbXBsKGNvbnRleHQpOwotCisgICAgaWYo
bUF1eEJ1ZmZlclBvb2wpCisgICAgeworICAgICAgICBtQXV4QnVmZmVyUG9vbC0+ZGVzdHJveShj
b250ZXh0TXRsKTsKKyAgICAgICAgZGVsZXRlIG1BdXhCdWZmZXJQb29sOworICAgICAgICBtQXV4
QnVmZmVyUG9vbCA9IG51bGxwdHI7CisgICAgfQogICAgIHJlc2V0KGNvbnRleHRNdGwpOwogfQog
CkBAIC0yNzQsNiArMjkwLDE1IEBAIHZvaWQgUHJvZ3JhbU10bDo6cmVzZXQoQ29udGV4dE10bCAq
Y29udGV4dCkKICAgICB7CiAgICAgICAgIHZhci5yZXNldChjb250ZXh0KTsKICAgICB9CisgICAg
aWYobUF1eEJ1ZmZlclBvb2wpCisgICAgeworICAgICAgICBpZihtQXV4QnVmZmVyUG9vbC0+cmVz
ZXQoY29udGV4dCwgbXRsOjprRGVmYXVsdFVuaWZvcm1zTWF4U2l6ZSoyLCBtdGw6OmtVbmlmb3Jt
QnVmZmVyU2V0dGluZ09mZnNldE1pbkFsaWdubWVudCwzKSAhPSBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbUF1eEJ1ZmZlclBvb2wtPmRlc3Ryb3koY29u
dGV4dCk7CisgICAgICAgICAgICBkZWxldGUgbUF1eEJ1ZmZlclBvb2w7CisgICAgICAgICAgICBt
QXV4QnVmZmVyUG9vbCA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CiAgICAgbU1ldGFsUmVu
ZGVyUGlwZWxpbmVDYWNoZS5jbGVhcigpOwogICAgIG1NZXRhbFhmYlJlbmRlclBpcGVsaW5lQ2Fj
aGUtPmNsZWFyKCk7CiB9CkBAIC0yODUsNyArMzEwLDEwIEBAIHZvaWQgUHJvZ3JhbU10bDo6c2F2
ZVRyYW5zbGF0ZWRTaGFkZXJzKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkKICAgICB7
CiAgICAgICAgIHN0cmVhbS0+d3JpdGVTdHJpbmcobU1zbFNoYWRlclRyYW5zbGF0ZUluZm9bc2hh
ZGVyVHlwZV0ubWV0YWxTaGFkZXJTb3VyY2UpOwogICAgIH0KLSAgICBzdHJlYW0tPndyaXRlU3Ry
aW5nKG1YZmJNc2xTb3VyY2UpOworICAgIGZvciAoc2l6ZV90IHhmYkJpbmRJbmRleCA9IDA7IHhm
YkJpbmRJbmRleCA8IG10bDo6a01heFNoYWRlclhGQnM7IHhmYkJpbmRJbmRleCsrKQorICAgIHsK
KyAgICAgICAgc3RyZWFtLT53cml0ZUludChtWGZiQmluZGluZ3NbeGZiQmluZEluZGV4XSk7Cisg
ICAgfQogfQogCiB2b2lkIFByb2dyYW1NdGw6OmxvYWRUcmFuc2xhdGVkU2hhZGVycyhnbDo6Qmlu
YXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKQEAgLTI5NSw3ICszMjMsMTAgQEAgdm9pZCBQcm9ncmFt
TXRsOjpsb2FkVHJhbnNsYXRlZFNoYWRlcnMoZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0p
CiAgICAgewogICAgICAgICBtTXNsU2hhZGVyVHJhbnNsYXRlSW5mb1tzaGFkZXJUeXBlXS5tZXRh
bFNoYWRlclNvdXJjZSA9IHN0cmVhbS0+cmVhZFN0cmluZygpOwogICAgIH0KLSAgICBtWGZiTXNs
U291cmNlID0gc3RyZWFtLT5yZWFkU3RyaW5nKCk7CisgICAgZm9yIChzaXplX3QgeGZiQmluZElu
ZGV4ID0gMDsgeGZiQmluZEluZGV4IDwgbXRsOjprTWF4U2hhZGVyWEZCczsgeGZiQmluZEluZGV4
KyspCisgICAgeworICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJm1YZmJCaW5kaW5nc1t4ZmJCaW5k
SW5kZXhdKTsKKyAgICB9CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxyeDo6TGlua0V2ZW50PiBQcm9n
cmFtTXRsOjpsb2FkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApAQCAtMzg0LDcgKzQxNSw3
IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6bGlua0ltcGxTcGlydihjb25zdCBnbDo6Q29u
dGV4dCAqZ2xDb250ZXh0LAogICAgIHsKICAgICAgICAgLy8gQ3JlYXRlIGFjdHVhbCBNZXRhbCBz
aGFkZXIgbGlicmFyeQogICAgICAgICBBTkdMRV9UUlkoY3JlYXRlTXNsU2hhZGVyTGliKGNvbnRl
eHRNdGwsIHNoYWRlclR5cGUsIGluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1Nc2xTaGFkZXJUcmFuc2xhdGVJbmZvW3NoYWRlclR5cGVdKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Nc2xTaGFkZXJUcmFuc2xhdGVJbmZvW3No
YWRlclR5cGVdLCBtRGVmYXVsdFN1YnN0aXR1dGlvbkRpY3Rpb25hcnkpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CkBAIC00MTAsMTMgKzQ0MSwxNSBAQCBh
bmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6OmxpbmtJbXBsRGlyZWN0KGNvbnN0IGdsOjpDb250ZXh0
ICpnbENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNsYXRl
ZE1zbFNoYWRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0
RXhlY3V0YWJsZSgpLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKSkpOwogCi0KICAg
ICBmb3IgKGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsR0xFUzJTaGFkZXJUeXBl
cygpKQogICAgIHsKICAgICAgICAgLy8gQ3JlYXRlIGFjdHVhbCBNZXRhbCBzaGFkZXIKICAgICAg
ICAgQU5HTEVfVFJZKAotICAgICAgICAgICAgY3JlYXRlTXNsU2hhZGVyTGliKGNvbnRleHRNdGws
IHNoYWRlclR5cGUsIGluZm9Mb2csICZtTXNsU2hhZGVyVHJhbnNsYXRlSW5mb1tzaGFkZXJUeXBl
XSkpOworICAgICAgICAgICAgICAgICAgY3JlYXRlTXNsU2hhZGVyTGliKGNvbnRleHRNdGwsIHNo
YWRlclR5cGUsIGluZm9Mb2csICZtTXNsU2hhZGVyVHJhbnNsYXRlSW5mb1tzaGFkZXJUeXBlXSwg
bURlZmF1bHRTdWJzdGl0dXRpb25EaWN0aW9uYXJ5KSk7CiAgICAgfQorICAgIC8vIFNhdmUgdGhp
cywgY291bGQgYmUgcmVzZXQgb24gc2hhZGVyIGRlc3RydWN0aW9uLiBUaGVzZSB2YWx1ZXMgd2ls
bCBldmVudHVhbGx5IGJlIHdyaXR0ZW4gb3V0IGFuZCByZXN0b3JlZCBpbgorICAgIC8vIHNhdmVU
cmFuc2xhdGVkU2hhZGVycy9sb2FkVHJhbnNsYXRlZFNoYWRlcnMKKyAgICBtWGZiQmluZGluZ3Mg
PSBtTXNsU2hhZGVyVHJhbnNsYXRlSW5mb1tnbDo6U2hhZGVyVHlwZTo6VmVydGV4XS5hY3R1YWxY
RkJCaW5kaW5nczsKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKQEAg
LTQyNCw3ICs0NTcsNiBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6OmxpbmtJbXBsKGNvbnN0
IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJjZXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nKQogewotICAg
IC8vIFRPRE86IFdlIG5lZWQgc29tZSB3YXkgb2YgdG9nZ2xpbmcgdGhpcy4KICNpZiBBTkdMRV9F
TkFCTEVfTUVUQUxfU1BJUlYKICAgICBpZiAoc2g6OnJlYWRCb29sRW52VmFyKCJBTkdMRV9HRU5f
TVRMX1dJVEhfU1BJUlYiKSkKICAgICB7CkBAIC00NTIsMTMgKzQ4NCwyMyBAQCBhbmdsZTo6UmVz
dWx0IFByb2dyYW1NdGw6OmxpbmtUcmFuc2xhdGVkU2hhZGVycyhjb25zdCBnbDo6Q29udGV4dCAq
Z2xDb250ZXh0LAogICAgIEFOR0xFX1RSWShsb2FkRGVmYXVsdFVuaWZvcm1CbG9ja3NJbmZvKGds
Q29udGV4dCwgc3RyZWFtKSk7CiAKICAgICBBTkdMRV9UUlkoY3JlYXRlTXNsU2hhZGVyTGliKGNv
bnRleHRNdGwsIGdsOjpTaGFkZXJUeXBlOjpWZXJ0ZXgsIGluZm9Mb2csCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbU1zbFNoYWRlclRyYW5zbGF0ZUluZm9bZ2w6OlNoYWRlclR5cGU6
OlZlcnRleF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtTXNsU2hhZGVyVHJh
bnNsYXRlSW5mb1tnbDo6U2hhZGVyVHlwZTo6VmVydGV4XSwgbURlZmF1bHRTdWJzdGl0dXRpb25E
aWN0aW9uYXJ5KSk7CiAgICAgQU5HTEVfVFJZKGNyZWF0ZU1zbFNoYWRlckxpYihjb250ZXh0TXRs
LCBnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQsIGluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbU1zbFNoYWRlclRyYW5zbGF0ZUluZm9bZ2w6OlNoYWRlclR5cGU6OkZyYWdt
ZW50XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Nc2xTaGFkZXJUcmFuc2xh
dGVJbmZvW2dsOjpTaGFkZXJUeXBlOjpGcmFnbWVudF0sIG1EZWZhdWx0U3Vic3RpdHV0aW9uRGlj
dGlvbmFyeSkpOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCisK
K210bDo6QnVmZmVyUG9vbCAqIFByb2dyYW1NdGw6OmdldEJ1ZmZlclBvb2woQ29udGV4dE10bCAq
IGNvbnRleHQpCit7CisgICAgaWYobUF1eEJ1ZmZlclBvb2wgPT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIG1BdXhCdWZmZXJQb29sID0gbmV3IG10bDo6QnVmZmVyUG9vbCh0cnVlKTsKKyAgICAg
ICAgbUF1eEJ1ZmZlclBvb2wtPmluaXRpYWxpemUoY29udGV4dCwgbXRsOjprRGVmYXVsdFVuaWZv
cm1zTWF4U2l6ZSoyLCBtdGw6OmtVbmlmb3JtQnVmZmVyU2V0dGluZ09mZnNldE1pbkFsaWdubWVu
dCwgMyk7CisgICAgfQorICAgIHJldHVybiBtQXV4QnVmZmVyUG9vbDsKK30KIHZvaWQgUHJvZ3Jh
bU10bDo6bGlua1Jlc291cmNlcyhjb25zdCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNlcyAmcmVz
b3VyY2VzKQogewogICAgIFN0ZDE0MEJsb2NrTGF5b3V0RW5jb2RlckZhY3Rvcnkgc3RkMTQwRW5j
b2RlckZhY3Rvcnk7CkBAIC01NDAsOCArNTgyLDYgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtTXRs
OjpyZXNpemVEZWZhdWx0VW5pZm9ybUJsb2Nrc01lbW9yeSgKICAgICB7CiAgICAgICAgIGlmIChy
ZXF1aXJlZEJ1ZmZlclNpemVbc2hhZGVyVHlwZV0gPiAwKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQocmVxdWlyZWRCdWZmZXJTaXplW3NoYWRlclR5cGVdIDw9IG10bDo6a0RlZmF1bHRV
bmlmb3Jtc01heFNpemUpOwotCiAgICAgICAgICAgICBpZiAoIW1EZWZhdWx0VW5pZm9ybUJsb2Nr
c1tzaGFkZXJUeXBlXS51bmlmb3JtRGF0YS5yZXNpemUoCiAgICAgICAgICAgICAgICAgICAgIHJl
cXVpcmVkQnVmZmVyU2l6ZVtzaGFkZXJUeXBlXSkpCiAgICAgICAgICAgICB7CkBAIC01ODMsMjEg
KzYyMyw2IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6Z2V0U3BlY2lhbGl6ZWRTaGFkZXIo
bXRsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVzYy5y
YXN0ZXJpemF0aW9uVHlwZSA9PSBtdGw6OlJlbmRlclBpcGVsaW5lUmFzdGVyaXphdGlvbjo6RGlz
YWJsZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZTogWEZCIG91dHB1
dCBvbmx5IHZlcnRleCBzaGFkZXIuCi0gICAgICAgICAgICBBU1NFUlQoIW1TdGF0ZS5nZXRMaW5r
ZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKCkuZW1wdHkoKSk7Ci0gICAgICAgICAgICB0cmFu
c2xhdGVkTXNsSW5mbyA9ICZtTXNsWGZiT25seVZlcnRleFNoYWRlckluZm87Ci0gICAgICAgICAg
ICBpZiAoIXRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRhbExpYnJhcnkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgLy8gTGF6aWx5IGNvbXBpbGUgWEZCIG9ubHkgc2hhZGVyCi0gICAgICAg
ICAgICAgICAgZ2w6OkluZm9Mb2cgaW5mb0xvZzsKLSAgICAgICAgICAgICAgICBBTkdMRV9UUlko
Ci0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZU1zbFNoYWRlckxpYihjb250ZXh0LCBzaGFkZXJU
eXBlLCBpbmZvTG9nLCAmbU1zbFhmYk9ubHlWZXJ0ZXhTaGFkZXJJbmZvKSk7Ci0gICAgICAgICAg
ICAgICAgdHJhbnNsYXRlZE1zbEluZm8tPm1ldGFsTGlicmFyeS5nZXQoKS5sYWJlbCA9IEAiVHJh
bnNmb3JtRmVlZGJhY2siOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KICAgICAgICAgQU5H
TEVfTVRMX09CSkNfU0NPUEUKICAgICAgICAgewogICAgICAgICAgICAgQk9PTCBlbXVsYXRlRGlz
Y2FyZCA9IHJlbmRlclBpcGVsaW5lRGVzYy5yYXN0ZXJpemF0aW9uVHlwZSA9PQpAQCAtNjYyLDYg
KzY4Nyw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6Z2V0U3BlY2lhbGl6ZWRTaGFkZXIo
bXRsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgW2Z1bmNDb25zdGFudHMgc2V0Q29u
c3RhbnRWYWx1ZTomZW11bGF0ZUNvdmVyYWdlTWFzawogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZTpNVExEYXRhVHlwZUJvb2wKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2l0aE5hbWU6Y292ZXJhZ2VNYXNrRW5hYmxlZFN0cl07CisKICAgICAg
ICAgfQogCiAgICAgfSAgLy8gZ2w6OlNoYWRlclR5cGU6OkZyYWdtZW50CkBAIC02NzAsMTMgKzY5
NiwxOCBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6OmdldFNwZWNpYWxpemVkU2hhZGVyKG10
bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7CiAgICAgfQotCisgICAgW2Z1bmNDb25zdGFudHMgc2V0
Q29uc3RhbnRWYWx1ZTomKGNvbnRleHQtPmdldERpc3BsYXkoKS0+Z2V0RmVhdHVyZXMoKS5hbGxv
d1NhbXBsZXJDb21wYXJlR3JhZGllbnQuZW5hYmxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGU6TVRMRGF0YVR5cGVCb29sCisgICAgICAgICAgICAgICAgICAgICAgIHdpdGhOYW1l
OkAiQU5HTEVfVXNlU2FtcGxlQ29tcGFyZUdyYWRpZW50Il07CisgICAgW2Z1bmNDb25zdGFudHMg
c2V0Q29uc3RhbnRWYWx1ZTomKGNvbnRleHQtPmdldERpc3BsYXkoKS0+Z2V0RmVhdHVyZXMoKS5h
bGxvd1NhbXBsZXJDb21wYXJlTG9kLmVuYWJsZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlOk1UTERhdGFUeXBlQm9vbAorICAgICAgICAgICAgICAgICAgICAgICB3aXRoTmFtZTpA
IkFOR0xFX1VzZVNhbXBsZUNvbXBhcmVMb2QiXTsKICAgICAvLyBDcmVhdGUgTWV0YWwgc2hhZGVy
IG9iamVjdAogICAgIEFOR0xFX01UTF9PQkpDX1NDT1BFCiAgICAgewotICAgICAgICBbZnVuY0Nv
bnN0YW50cyBBTkdMRV9NVExfQVVUT1JFTEVBU0VdOwogICAgICAgICBBTkdMRV9UUlkoQ3JlYXRl
TXNsU2hhZGVyKGNvbnRleHQsIHRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRhbExpYnJhcnksIGZ1bmND
b25zdGFudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYWRlclZhcmlh
bnQtPm1ldGFsU2hhZGVyKSk7CisgICAgICAgIFtmdW5jQ29uc3RhbnRzIEFOR0xFX01UTF9BVVRP
UkVMRUFTRV07CiAgICAgfQogCiAgICAgLy8gU3RvcmUgcmVmZXJlbmNlIHRvIHRoZSB0cmFuc2xh
dGVkIHNvdXJjZSBmb3IgZWFzaWx5IHF1ZXJ5aW5nIG1hcHBlZCBiaW5kaW5ncyBsYXRlci4KQEAg
LTcwNCw3ICs3MzUsOCBAQCBib29sIFByb2dyYW1NdGw6Omhhc1NwZWNpYWxpemVkU2hhZGVyKGds
OjpTaGFkZXJUeXBlIHNoYWRlclR5cGUsCiBhbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6OmNyZWF0
ZU1zbFNoYWRlckxpYihtdGw6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmlu
Zm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGw6
OlRyYW5zbGF0ZWRTaGFkZXJJbmZvICp0cmFuc2xhdGVkTXNsSW5mbykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10bDo6VHJhbnNsYXRlZFNoYWRlckluZm8g
KnRyYW5zbGF0ZWRNc2xJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TT2JqZWN0ICo+ICogc3Vic3RpdHV0
aW9uTWFjcm9zKQogewogICAgIEFOR0xFX01UTF9PQkpDX1NDT1BFCiAgICAgewpAQCAtNzE0LDEz
ICs3NDYsMTYgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtTXRsOjpjcmVhdGVNc2xTaGFkZXJMaWIo
bXRsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAvLyBDb252ZXJ0IHRvIGFjdHVhbCBiaW5h
cnkgc2hhZGVyCiAgICAgICAgIG10bDo6QXV0b09iakNQdHI8TlNFcnJvciAqPiBlcnIgPSBuaWw7
CiAgICAgICAgIHRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRhbExpYnJhcnkgPQotICAgICAgICAgICAg
bXRsOjpDcmVhdGVTaGFkZXJMaWJyYXJ5KG10bERldmljZSwgdHJhbnNsYXRlZE1zbEluZm8tPm1l
dGFsU2hhZGVyU291cmNlLCAmZXJyKTsKKyAgICAgICAgICAgIG10bDo6Q3JlYXRlU2hhZGVyTGli
cmFyeShtdGxEZXZpY2UsIHRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRhbFNoYWRlclNvdXJjZSwgc3Vi
c3RpdHV0aW9uTWFjcm9zLCAmZXJyKTsKICAgICAgICAgaWYgKGVyciAmJiAhdHJhbnNsYXRlZE1z
bEluZm8tPm1ldGFsTGlicmFyeSkKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpvc3RyaW5n
c3RyZWFtIHNzOwotICAgICAgICAgICAgc3MgPDwgIkludGVybmFsIGVycm9yIGNvbXBpbGluZyBN
ZXRhbCBzaGFkZXI6XG4iCi0gICAgICAgICAgICAgICA8PCBlcnIuZ2V0KCkubG9jYWxpemVkRGVz
Y3JpcHRpb24uVVRGOFN0cmluZyA8PCAiXG4iOwotCisgICAgICAgICAgICBzcyA8PCAiSW50ZXJu
YWwgZXJyb3IgY29tcGlsaW5nIHNoYWRlciB3aXRoIE1ldGFsIGJhY2tlbmQuXG4iOworICAgICAg
ICAgICAgI2lmICFkZWZpbmVkKE5ERUJVRykKKyAgICAgICAgICAgIHNzIDw8IGVyci5nZXQoKS5s
b2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nIDw8ICJcbiI7CisgICAgICAgICAgICAjZWxz
ZQorICAgICAgICAgICAgc3MgPDwgIlBsZWFzZSBzdWJtaXQgdGhpcyBzaGFkZXIsIG9yIHdlYnNp
dGUgYXMgYSBidWcgdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmdcbiI7CisgICAgICAgICAgICAj
ZW5kaWYKICAgICAgICAgICAgIEVSUigpIDw8IHNzLnN0cigpOwogCiAgICAgICAgICAgICBpbmZv
TG9nIDw8IHNzLnN0cigpOwpAQCAtMTE2OCw4ICsxMjAzLDQwIEBAIGFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbU10bDo6Y29tbWl0VW5pZm9ybXMoQ29udGV4dE10bCAqY29udGV4dCwgbXRsOjpSZW5kZXJD
b21tYW5kCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAg
ICAgIGNtZEVuY29kZXItPnNldEJ5dGVzKHNoYWRlclR5cGUsIHVuaWZvcm1CbG9jay51bmlmb3Jt
RGF0YS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9jay51
bmlmb3JtRGF0YS5zaXplKCksIG10bDo6a0RlZmF1bHRVbmlmb3Jtc0JpbmRpbmdJbmRleCk7Cisg
ICAgICAgIC8vSWYgd2UgZXhjZWVkIHRoZSBkZWZhdWx0IHVuaWZvcm0gbWF4IHNpemUsIHRyeSB0
byBhbGxvY2F0ZSBhIGJ1ZmZlci4gV29yc3QgY2FzZQorICAgICAgICAvL3NjZW5hcmlvLCBmYWxs
IGJhY2sgb24gYSBsYXJnZSBzZXRCeXRlcy4KKyAgICAgICAgYm9vbCBuZWVkc0NvbW1pdFVuaWZv
cm0gPSB0cnVlOworICAgICAgICBpZih1bmlmb3JtQmxvY2sudW5pZm9ybURhdGEuc2l6ZSgpID4g
bXRsOjprRGVmYXVsdFVuaWZvcm1zTWF4U2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy9B
bGxvY2F0ZSBhIG5ldyBidWZmZXIgcG9vbCBpZiBmaXJzdCB0aW1lIHRocm91Z2guCisgICAgICAg
ICAgICBtdGw6OkJ1ZmZlclBvb2wgKiBwb29sID0gZ2V0QnVmZmVyUG9vbChjb250ZXh0KTsKKyAg
ICAgICAgICAgIGlmKCFwb29sKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VS
VCghIkNvdWxkIG5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBwb29sIHRvIGhvbGQgYSBsYXJnZSB1bmlm
b3JtIGdyb3VwLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHBvb2wtPnJlbGVhc2VJbkZsaWdodEJ1ZmZlcnMoY29udGV4
dCk7CisgICAgICAgICAgICAgICAgLy9DcmVhdGUgYSBuZXcgcmVmIGFuZCBjb3B5IHVuaWZvcm0g
ZGF0YS4KKyAgICAgICAgICAgICAgICBtdGw6OkJ1ZmZlclJlZiByZWZPdXQ7CisgICAgICAgICAg
ICAgICAgc2l6ZV90IG9mZnNldE91dDsKKyAgICAgICAgICAgICAgICB1aW50OF90ICogcHRyT3V0
OworICAgICAgICAgICAgICAgIEFOR0xFX1RSWShwb29sLT5hbGxvY2F0ZShjb250ZXh0LCB1bmlm
b3JtQmxvY2sudW5pZm9ybURhdGEuc2l6ZSgpLCAmcHRyT3V0LCAmcmVmT3V0LCAmb2Zmc2V0T3V0
KSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KHB0ck91dCwgdW5pZm9ybUJsb2NrLnVuaWZvcm1E
YXRhLmRhdGEoKSwgdW5pZm9ybUJsb2NrLnVuaWZvcm1EYXRhLnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgLy9TZW5kIGRhdGEgdG8gdGhlIHNoYWRlci4KKyAgICAgICAgICAgICAgICBjbWRFbmNv
ZGVyLT5zZXRCdWZmZXIoc2hhZGVyVHlwZSwgcmVmT3V0LCAodWludDMyX3Qpb2Zmc2V0T3V0LCBt
dGw6OmtEZWZhdWx0VW5pZm9ybXNCaW5kaW5nSW5kZXgpOworICAgICAgICAgICAgICAgIEFOR0xF
X1RSWShwb29sLT5jb21taXQoY29udGV4dCkpOworICAgICAgICAgICAgICAgIG5lZWRzQ29tbWl0
VW5pZm9ybSA9IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgICAgaWYobmVlZHNDb21taXRVbmlmb3JtKQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQodW5pZm9ybUJsb2NrLnVuaWZvcm1EYXRhLnNpemUoKSA8
PSBtdGw6OmtEZWZhdWx0VW5pZm9ybXNNYXhTaXplKTsKKyAgICAgICAgICAgIGNtZEVuY29kZXIt
PnNldEJ5dGVzKHNoYWRlclR5cGUsIHVuaWZvcm1CbG9jay51bmlmb3JtRGF0YS5kYXRhKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2sudW5pZm9ybURhdGEu
c2l6ZSgpLCBtdGw6OmtEZWZhdWx0VW5pZm9ybXNCaW5kaW5nSW5kZXgpOworICAgICAgICB9CiAK
ICAgICAgICAgbURlZmF1bHRVbmlmb3JtQmxvY2tzRGlydHkucmVzZXQoc2hhZGVyVHlwZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL1F1ZXJ5TXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvUXVlcnlNdGwuaAppbmRleCAyNzhmMWRmMTZiZWYwNDFkODZl
MTU2NWZjNDk4ZGY5ODQ2MzIxYTExLi40ZWFhODc2OGYzYzBlMGUxNDQ2NzFmMmYwOWUwYzg4Njc5
ZTg3MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvUXVlcnlNdGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUXVlcnlNdGwuaApAQCAtMTIsNiArMTIsNyBAQAog
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUXVlcnlJbXBsLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL210bF9jb25zdGFudHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfcmVzb3VyY2VzLmgiCiAKIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1JlbmRlckJ1
ZmZlck10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9SZW5kZXJCdWZmZXJNdGwubW0KaW5kZXggNmM1Yzk1MTZjNzU2NGUyYjQwODM0YWFm
MzY5OTdkOGQ1NjI2YjdlNS4uZmViOGEwMGEzYjZhY2E2YTVlM2Q2MDg4NzIyZTJjMDI4NTQ1NDIx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL1JlbmRlckJ1ZmZlck10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVyQnVmZmVyTXRsLm1tCkBAIC03OSw3
ICs3OSw3IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyYnVmZmVyTXRsOjpzZXRTdG9yYWdlSW1wbChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIEFOR0xFX1RSWShtdGw6OlRl
eHR1cmU6Ok1ha2UyRFRleHR1cmUoY29udGV4dE10bCwgbUZvcm1hdCwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHdpZHRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlaWdodCksIDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlbmRlclRhcmdldE9ubHkg
Ki8gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIGFsbG93Rm9ybWF0VmlldyAqLyBmYWxzZSwgJm1UZXh0dXJlKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFsbG93Rm9ybWF0Vmll
dyAqLyBtRm9ybWF0Lmhhc0RlcHRoQW5kU3RlbmNpbEJpdHMoKSwgJm1UZXh0dXJlKSk7CiAKICAg
ICAgICAgICAgIC8vIFVzZSBpbXBsaWNpdCByZXNvbHZlIGZvciBkZXB0aCBzdGVuY2lsIHRleHR1
cmUgd2hlbmV2ZXIgcG9zc2libGUuIFRoaXMgaXMgYmVjYXVzZQogICAgICAgICAgICAgLy8gZm9y
IGRlcHRoIHN0ZW5jaWwgdGV4dHVyZSwgaWYgc3RlbmNpbCBuZWVkcyB0byBiZSBibGl0dGVkLCBh
IGZvcm1hdHRlZCBjbG9uZSBoYXMKQEAgLTkzLDcgKzkzLDcgQEAgYW5nbGU6OlJlc3VsdCBSZW5k
ZXJidWZmZXJNdGw6OnNldFN0b3JhZ2VJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0TXRsLCBtRm9ybWF0LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4od2lkdGgpLAogICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aGVpZ2h0KSwgYWN0dWFsU2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgLyogcmVuZGVyVGFy
Z2V0T25seSAqLyB0cnVlLAotICAgICAgICAgICAgICAgICAgICAvKiBhbGxvd0Zvcm1hdFZpZXcg
Ki8gZmFsc2UsICZtSW1wbGljaXRNU1RleHR1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgLyog
YWxsb3dGb3JtYXRWaWV3ICovIG1Gb3JtYXQuaGFzRGVwdGhBbmRTdGVuY2lsQml0cygpLCAmbUlt
cGxpY2l0TVNUZXh0dXJlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxz
ZQpAQCAtMTAyLDcgKzEwMiw3IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyYnVmZmVyTXRsOjpzZXRT
dG9yYWdlSW1wbChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
d2lkdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihoZWlnaHQpLCBhY3R1YWxTYW1wbGVzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlbmRlclRh
cmdldE9ubHkgKi8gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogYWxsb3dGb3JtYXRWaWV3ICovIGZhbHNlLCAmbVRleHR1cmUpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBh
bGxvd0Zvcm1hdFZpZXcgKi8gbUZvcm1hdC5oYXNEZXB0aEFuZFN0ZW5jaWxCaXRzKCksICZtVGV4
dHVyZSkpOwogICAgICAgICB9CiAKICAgICAgICAgbVJlbmRlclRhcmdldC5zZXRXaXRoSW1wbGlj
aXRNU1RleHR1cmUobVRleHR1cmUsIG1JbXBsaWNpdE1TVGV4dHVyZSwgbXRsOjprWmVyb05hdGl2
ZU1pcExldmVsLCAwLCBtRm9ybWF0KTsKQEAgLTExMCw3ICsxMTAsNiBAQCBhbmdsZTo6UmVzdWx0
IFJlbmRlcmJ1ZmZlck10bDo6c2V0U3RvcmFnZUltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgIC8vIEZvciBlbXVsYXRlZCBjaGFubmVscyB0aGF0IEdMIHRleHR1cmUgaW50
ZW5kcyB0byBub3QgaGF2ZSwKICAgICAgICAgLy8gd2UgbmVlZCB0byBpbml0aWFsaXplIHRoZWly
IGNvbnRlbnQuCiAgICAgICAgIGJvb2wgZW11bGF0ZWRDaGFubmVscyA9IG10bDo6SXNGb3JtYXRF
bXVsYXRlZChtRm9ybWF0KTsKLSAgICAgICAgYm9vbCBpc0RlcHRoU3RlbmNpbCA9IG1Gb3JtYXQu
aGFzRGVwdGhPclN0ZW5jaWxCaXRzKCk7CiAgICAgICAgIGlmIChlbXVsYXRlZENoYW5uZWxzKQog
ICAgICAgICB7CiAgICAgICAgICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleDsKQEAgLTEzMSwxMCAr
MTMwLDEwIEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyYnVmZmVyTXRsOjpzZXRTdG9yYWdlSW1wbChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10bDo6SW1hZ2VOYXRpdmVJbmRleChnbDo6SW1h
Z2VJbmRleDo6TWFrZTJETXVsdGlzYW1wbGUoKSwgMCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSAgLy8gaWYgKGVtdWxhdGVkQ2hhbm5lbHMpCisgICAgICAgIGJvb2wgaXNEZXB0aFN0ZW5j
aWwgPSBtRm9ybWF0Lmhhc0RlcHRoT3JTdGVuY2lsQml0cygpOwogICAgICAgICBpZihpc0RlcHRo
U3RlbmNpbCkKICAgICAgICAgewogICAgICAgICAgICAgZ2w6OkltYWdlSW5kZXggaW5kZXg7Ci0K
ICAgICAgICAgICAgIGlmIChhY3R1YWxTYW1wbGVzID4gMSkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkRNdWx0aXNhbXBsZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL1JlbmRlclRhcmdldE10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9SZW5kZXJUYXJnZXRNdGwubW0KaW5kZXggZTEyNmRiYjZi
ZWUwMTE5YTE2NjlhMDFlN2UwOTZjMmQ4NGE3ZDgyMC4uY2E5Y2U1MmU3MTJiZWE3NDA5ZDk3YjA2
NGQyMzBhZGQ1MzlkYWJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1JlbmRlclRhcmdldE10bC5tbQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVyVGFyZ2V0
TXRsLm1tCkBAIC00MSw4ICs0MSw5IEBAIHZvaWQgUmVuZGVyVGFyZ2V0TXRsOjpzZXRXaXRoSW1w
bGljaXRNU1RleHR1cmUoY29uc3QgbXRsOjpUZXh0dXJlUmVmICZ0ZXh0dXJlLAogewogICAgIG1U
ZXh0dXJlUmVuZGVyVGFyZ2V0SW5mby0+dGV4dHVyZSAgICAgICAgICAgPSB0ZXh0dXJlOwogICAg
IG1UZXh0dXJlUmVuZGVyVGFyZ2V0SW5mby0+aW1wbGljaXRNU1RleHR1cmUgPSBpbXBsaWNpdE1T
VGV4dHVyZTsKLSAgICBtVGV4dHVyZVJlbmRlclRhcmdldEluZm8tPmxldmVsICAgICAgICA9IGxl
dmVsOwotICAgIG1UZXh0dXJlUmVuZGVyVGFyZ2V0SW5mby0+c2xpY2VPckRlcHRoICAgICAgICA9
IGxheWVyOworICAgIG1UZXh0dXJlUmVuZGVyVGFyZ2V0SW5mby0+bGV2ZWwgICAgICAgICAgICAg
PSBsZXZlbDsKKyAgICBtVGV4dHVyZVJlbmRlclRhcmdldEluZm8tPnNsaWNlT3JEZXB0aCAgICAg
ID0gbGF5ZXI7CisgICAgbVRleHR1cmVSZW5kZXJUYXJnZXRJbmZvLT5ibGVuZGFibGUgICAgICAg
ICA9ICBmb3JtYXQuZ2V0Q2FwcygpLmJsZW5kYWJsZTsKICAgICBtRm9ybWF0ICAgICAgICAgICAg
PSAmZm9ybWF0OwogfQogCkBAIC02OCw2ICs2OSw3IEBAIHZvaWQgUmVuZGVyVGFyZ2V0TXRsOjpy
ZXNldCgpCiAgICAgbVRleHR1cmVSZW5kZXJUYXJnZXRJbmZvLT5pbXBsaWNpdE1TVGV4dHVyZS5y
ZXNldCgpOwogICAgIG1UZXh0dXJlUmVuZGVyVGFyZ2V0SW5mby0+bGV2ZWwgICAgICAgID0gbXRs
OjprWmVyb05hdGl2ZU1pcExldmVsOwogICAgIG1UZXh0dXJlUmVuZGVyVGFyZ2V0SW5mby0+c2xp
Y2VPckRlcHRoID0gMDsKKyAgICBtVGV4dHVyZVJlbmRlclRhcmdldEluZm8tPmJsZW5kYWJsZSAg
ICA9IGZhbHNlOwogICAgIG1Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL1NoYWRlck10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TaGFkZXJNdGwubW0KaW5kZXggYWQwMWRi
ZjQ1ZmI4ZjQ3OTA0YmZkYjFkNGI4NDY4NjZmZWI5ODhhNi4uNzYyZjY3ZDYwM2U1YWQ3YTI3OWFj
Zjg5YTA4NzQ3OTE5MGJhYmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1NoYWRlck10bC5tbQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU2hhZGVyTXRsLm1tCkBA
IC0xMzIsNiArMTMyLDExIEBAIHN0ZDo6c2hhcmVkX3B0cjxXYWl0YWJsZUNvbXBpbGVFdmVudD4g
U2hhZGVyTXRsOjpjb21waWxlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250CiAgICAgY29tcGlsZU9w
dGlvbnMgfD0gU0hfQ0xBTVBfRlJBR19ERVBUSDsKICNlbmRpZgogCisgICAgaWYgKGNvbnRleHRN
dGwtPmdldERpc3BsYXkoKS0+Z2V0RmVhdHVyZXMoKS5yZXdyaXRlUm93TWFqb3JNYXRyaWNlcy5l
bmFibGVkKQorICAgIHsKKyAgICAgICAgY29tcGlsZU9wdGlvbnMgfD0gU0hfUkVXUklURV9ST1df
TUFKT1JfTUFUUklDRVM7CisgICAgfQorCiAgICAgcmV0dXJuIGNvbXBpbGVJbXBsTXRsKGNvbnRl
eHQsIGNvbXBpbGVySW5zdGFuY2UsIGdldFN0YXRlKCkuZ2V0U291cmNlKCksIGNvbXBpbGVPcHRp
b25zIHwgb3B0aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1tIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwubW0KaW5k
ZXggZDEzMTM5MDBkYWU2M2U1ZjQyMDQ1YWM4YmQ4MWFlNWFjZTQzZjdkYy4uMjdlZjUwOWZmODY1
YzY0N2FmMzFkY2U0MmVmYzQwYjcxNDMyNDJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZh
Y2VNdGwubW0KQEAgLTYwNywxNSArNjA3LDE1IEBAIGVnbDo6RXJyb3IgV2luZG93U3VyZmFjZU10
bDo6aW5pdGlhbGl6ZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICAgIG1NZXRh
bExheWVyLmdldCgpLmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtD
QUxheWVySGVpZ2h0U2l6YWJsZTsKICNlbmRpZgogCi0gICAgICAgIC8vIGVuc3VyZSBkcmF3YWJs
ZVNpemUgaXMgc2V0IHRvIGNvcnJlY3QgdmFsdWU6Ci0gICAgICAgIG1NZXRhbExheWVyLmdldCgp
LmRyYXdhYmxlU2l6ZSA9IG1DdXJyZW50S25vd25EcmF3YWJsZVNpemUgPSBjYWxjRXhwZWN0ZWRE
cmF3YWJsZVNpemUoKTsKLQogICAgICAgICBpZiAobU1ldGFsTGF5ZXIuZ2V0KCkgIT0gbUxheWVy
KQogICAgICAgICB7CiAgICAgICAgICAgICBtTWV0YWxMYXllci5nZXQoKS5jb250ZW50c1NjYWxl
ID0gbUxheWVyLmNvbnRlbnRzU2NhbGU7CiAKICAgICAgICAgICAgIFttTGF5ZXIgYWRkU3VibGF5
ZXI6bU1ldGFsTGF5ZXIuZ2V0KCldOwogICAgICAgICB9CisKKyAgICAgICAgLy8gZW5zdXJlIGRy
YXdhYmxlU2l6ZSBpcyBzZXQgdG8gY29ycmVjdCB2YWx1ZToKKyAgICAgICAgbU1ldGFsTGF5ZXIu
Z2V0KCkuZHJhd2FibGVTaXplID0gbUN1cnJlbnRLbm93bkRyYXdhYmxlU2l6ZSA9IGNhbGNFeHBl
Y3RlZERyYXdhYmxlU2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9UZXh0dXJlTXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL1RleHR1cmVNdGwubW0KaW5kZXggNGZkOWIxZmRkNDIxNjIwZjUz
MjJlZDEyYzRkODYyMTgzZTc2OTliYi4uZjI1ZDY4YWU5YjUzZmIzYjE3OTc2NzljNWQ0MGNkOTFl
ODg5OTY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL1RleHR1cmVNdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1RleHR1cmVNdGwubW0KQEAgLTY2NCw5ICs2
NjQsMTIgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlTXRsOjplbnN1cmVTYW1wbGVyU3RhdGVDcmVh
dGVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogCiAgICAgICAgIHNhbXBsZXJEZXNjLm1h
eEFuaXNvdHJvcHkgPSAxOwogICAgIH0KLSAgICBpZihtU3RhdGUuZ2V0VHlwZSgpID09IGdsOjpU
ZXh0dXJlVHlwZTo6UmVjdGFuZ2xlKQorICAgIGlmIChtU3RhdGUuZ2V0VHlwZSgpID09IGdsOjpU
ZXh0dXJlVHlwZTo6UmVjdGFuZ2xlKQogICAgIHsKICAgICAgICAgc2FtcGxlckRlc2Mubm9ybWFs
aXplZENvb3JkaW5hdGVzID0gTk87CisgICAgICAgIHNhbXBsZXJEZXNjLnJBZGRyZXNzTW9kZSAg
ICAgICAgICA9IE1UTFNhbXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlOworICAgICAgICBzYW1w
bGVyRGVzYy5zQWRkcmVzc01vZGUgICAgICAgICAgPSBNVExTYW1wbGVyQWRkcmVzc01vZGVDbGFt
cFRvRWRnZTsKKyAgICAgICAgc2FtcGxlckRlc2MudEFkZHJlc3NNb2RlICAgICAgICAgID0gTVRM
U2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0VkZ2U7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBA
IC0xNjEwLDcgKzE2MTMsNyBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVNdGw6OnNldFBlclNsaWNl
U3ViSW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXRsOjpUZXh0dXJlUmVmICZpbWFnZSkK
IHsKICAgICAvLyBJZiBzb3VyY2UgcGl4ZWxzIGFyZSBsdW1pbmFuY2Ugb3IgUkdCOCwgd2UgbmVl
ZCB0byBjb252ZXJ0IHRoZW0gdG8gUkdCQQotICAgCisKICAgICBpZiAobUZvcm1hdC5uZWVkQ29u
dmVyc2lvbihwaXhlbHNBbmdsZUZvcm1hdC5pZCkpCiAgICAgewogICAgICAgICByZXR1cm4gY29u
dmVydEFuZFNldFBlclNsaWNlU3ViSW1hZ2UoY29udGV4dCwgc2xpY2UsIG10bEFyZWEsIGludGVy
bmFsRm9ybWF0LCB0eXBlLApAQCAtMTg4MCw3ICsxODgzLDcgQEAgYW5nbGU6OlJlc3VsdCBUZXh0
dXJlTXRsOjppbml0aWFsaXplQ29udGVudHMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgY29uc3QgbXRsOjpUZXh0dXJlUmVmICZpbWFnZSA9IGltYWdlRGVmLmltYWdlOwogICAgIGNv
bnN0IG10bDo6Rm9ybWF0ICZmb3JtYXQgICAgPSBjb250ZXh0TXRsLT5nZXRQaXhlbEZvcm1hdChp
bWFnZURlZi5mb3JtYXRJRCk7CiAgICAgLy8gRm9yIFRleHR1cmUncyBpbWFnZSBkZWZpbml0aW9u
LCB3ZSBhbHdheXMgdXNlIHplcm8gbWlwIGxldmVsLgotICAgIGlmKGZvcm1hdC5tZXRhbEZvcm1h
dCA9PSBNVExQaXhlbEZvcm1hdEludmFsaWQpCisgICAgaWYgKGZvcm1hdC5tZXRhbEZvcm1hdCA9
PSBNVExQaXhlbEZvcm1hdEludmFsaWQpCiAgICAgewogICAgICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6U3RvcDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVHJhbnNmb3JtRmVlZGJhY2tNdGwubW0gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVHJhbnNmb3Jt
RmVlZGJhY2tNdGwubW0KaW5kZXggZGU3YTkwOTM1N2I2OTI0ZjlkMGViNWJjMDJkMjI3ZTJmNjM0
MjA0Mi4uYWNmOWNjYWEwZjhhNmUxZThkMDg5NmI2OGYwNDM1YTFlZjRhY2UxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Ry
YW5zZm9ybUZlZWRiYWNrTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UcmFuc2Zvcm1GZWVkYmFja010bC5tbQpAQCAtMTMsNiAr
MTMsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUXVlcnlNdGwuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tCmluZGV4IGQ2NDU4YjIx
YWJhMDYwYzViY2VmZmZkNjUwNzliNDViYTc0ZGQxZmQuLjk0NjI3YjgxMmM4MDFjZTJiNWM2Y2Y2
MWMzZGJiZmQzZTEzMmIzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0ZXhBcnJheU10bC5tbQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVmVydGV4QXJyYXlN
dGwubW0KQEAgLTcyNiw3ICs3MjYsNiBAQCBhbmdsZTo6UmVzdWx0IFZlcnRleEFycmF5TXRsOjpn
ZXRJbmRleEJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIEJ1
ZmZlck10bCAqYnVmZmVyTXRsID0gbXRsOjpHZXRJbXBsKGdsRWxlbWVudEFycmF5QnVmZmVyKTsK
ICAgICAgICAgICAgICppZHhCdWZmZXJPdXQgICAgICAgID0gYnVmZmVyTXRsLT5nZXRDdXJyZW50
QnVmZmVyKCk7CiAgICAgICAgICAgICAqaWR4QnVmZmVyT2Zmc2V0T3V0ICA9IGNvbnZlcnRlZE9m
ZnNldDsKLSAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1v
bi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L210bF9jb21tb24uaAppbmRleCAwNjUxNDY1MTFiZDUxZjQ5YWM1ODFjMjUzZDdlNzQyNmNiZGVh
ZGYwLi5jZmY1Y2RmOWE0Y2UxYWEwNzllMjMzNTRhMzQ4ZDJlMTkyNmQxODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9tdGxfY29tbW9uLmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBjb25zdGV4cHIgTVRM
QmxpdE9wdGlvbiBrQmxpdE9wdGlvblJvd0xpbmVhclBWUlRDICAgICAgICAgID0gTVRMQmxpdE9w
dGlvblJvd0xpbgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fSVBIT05FXzEzXzApIHx8IGRlZmlu
ZWQoX19NQUNfMTBfMTUpCisjICAgIGRlZmluZSBBTkdMRV9NVExfU1dJWlpMRV9BVkFJTEFCTEUg
MQogdXNpbmcgVGV4dHVyZVN3aXp6bGVDaGFubmVscyAgICAgICAgICAgICAgICAgICA9IE1UTFRl
eHR1cmVTd2l6emxlQ2hhbm5lbHM7CiB1c2luZyBSZW5kZXJTdGFnZXMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gTVRMUmVuZGVyU3RhZ2VzOwogY29uc3RleHByIE1UTFJlbmRlclN0YWdl
cyBrUmVuZGVyU3RhZ2VWZXJ0ZXggICA9IE1UTFJlbmRlclN0YWdlVmVydGV4OwpAQCAtMjk2LDgg
KzI5NywxMCBAQCB1c2luZyBBdXRvT2JqQ09iaiA9IEF1dG9PYmpDUHRyPFQgKj47CiAvLyBOT1RF
OiBTaGFyZWRFdmVudCBpcyBvbmx5IGRlY2xhcmVkIG9uIGlPUyAxMi4wKyBvciBtYWMgMTAuMTQr
CiAjaWYgZGVmaW5lZChfX0lQSE9ORV8xMl8wKSB8fCBkZWZpbmVkKF9fTUFDXzEwXzE0KQogdXNp
bmcgU2hhcmVkRXZlbnRSZWYgPSBBdXRvT2JqQ1B0cjxpZDxNVExTaGFyZWRFdmVudD4+OworI2Rl
ZmluZSBBTkdMRV9NVExfRVZFTlRfQVZBSUxBQkxFIDEKICNlbHNlCiB1c2luZyBTaGFyZWRFdmVu
dFJlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gQXV0b09iakNPYmo8
TlNPYmplY3Q+OworI2RlZmluZSBBTkdMRV9NVExfRVZFTlRfQVZBSUxBQkxFIDAKICNlbmRpZgog
CiAvLyBUaGUgbmF0aXZlIGltYWdlIGluZGV4IHVzZWQgYnkgTWV0YWwgYmFjay1lbmQsICB0aGUg
aW1hZ2UgaW5kZXggdXNlcyBuYXRpdmUgbWlwbWFwIGxldmVsIGluc3RlYWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxf
Y29uc3RhbnRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvbXRsX2NvbnN0YW50cy5oCmluZGV4IDNiNGNiMjNmZmJmYWE5YjU4OGVjN2NiODU3
ZDMwMjkyYzYzOWY2NzguLjk2MDdmZDI0Mzk4ZTM5MGFmNDc0NmJmOGM2OTgzOGRmNGQyZDYzYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfY29uc3RhbnRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb25zdGFudHMuaApAQCAtMyw5ICszLDggQEAK
IC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwotLy8g
bXRsX2NvbW1vbi5oOgotLy8gICAgICBEZWNsYXJlcyBudW1lcmljYWwgY29uc3RhbnRzIHVzZWQg
aW4gTWV0YWwuCi0vLyAgICAgIGVycm9yIGhhbmRsZXIgYmFzZSBjbGFzcy4KKy8vIG10bF9jb25z
dG5hdHMuaDoKKy8vICAgICAgRGVjbGFyZXMgbnVtZXJpY2FsIGFuZCBzdHJpbmcgY29uc3RhbnRz
IHVzZWQgaW4gTWV0YWwKIC8vCiAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTUVUQUxfTVRM
X0NPTlNUQU5UU19ICmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF9tYXAuanNvbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X21hcC5qc29u
CmluZGV4IDcxNjk2NzU1MDQ2OGYzYmI5Y2E4Y2Y5ZDQyNzkzYmYxZWNjMGM2ODkuLjgzYTcyOTE5
NWM4MDZjNDdmNDNkOTZlMGQ5MWUwMWRiNzdhODJlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X21hcC5q
c29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9tdGxfZm9ybWF0X21hcC5qc29uCkBAIC0yMTMsOCArMjEzLDggQEAKICAgICAgICAgICJv
dmVycmlkZV9zaW0iOiB7CiAgICAgICAgICAgICAiUjVHNkI1X1VOT1JNIjogIlI4RzhCOEE4X1VO
T1JNIiwKICAgICAgICAgICAgICJSNUc1QjVBMV9VTk9STSI6ICJSOEc4QjhBOF9VTk9STSIsCi0g
ICAgICAgICAgICAiUjRHNEI0QTRfVU5PUk0iOiAiUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAg
ICAgIkQyNF9VTk9STV9TOF9VSU5UIjogIkQzMl9GTE9BVF9TOFgyNF9VSU5UIgorICAgICAgICAg
ICAgIkQyNF9VTk9STV9TOF9VSU5UIjogIkQzMl9GTE9BVF9TOFgyNF9VSU5UIiwKKyAgICAgICAg
ICAgICJSNEc0QjRBNF9VTk9STSI6ICJSOEc4QjhBOF9VTk9STSIKICAgICAgICAgfSwKICAgICAg
ICAgIm92ZXJyaWRlX21hYyI6IHsKICAgICAgICAgICAgICJSNUc2QjVfVU5PUk0iOiAiUjhHOEI4
QThfVU5PUk0iLApAQCAtMjQxLDcgKzI0MSw2IEBACiAgICAgICAgICAgICAiRUFDX1IxMUcxMV9T
Tk9STV9CTE9DSyI6ICJSMTZHMTZfU05PUk0iCiAgICAgICAgIH0sCiAgICAgICAgICJmYWxsYmFj
a3NfbWFjIjogewotICAgICAgICAgICAgIkI4RzhSOEE4X1VOT1JNIjogIlI4RzhCOEE4X1VOT1JN
IiwKICAgICAgICAgICAgICJEMjRfVU5PUk1fUzhfVUlOVCI6ICJEMzJfRkxPQVRfUzhYMjRfVUlO
VCIKICAgICAgICAgfSwKICAgICAgICAgImZhbGxiYWNrc19pb3MiOiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zv
cm1hdF90YWJsZV9hdXRvZ2VuLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFibGVfYXV0b2dlbi5tbQppbmRleCA3YmFm
ODRjMWVjMWRiMTc3MDY4YjFlNDE1YmNjMTYyNGI1ZjhlOTkyLi45MWY5OWU0MWFlNzJkYWQ0Mzc2
NmVkMGM0NGFiNWZjMjNkZGU4NjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLm1t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9tdGxfZm9ybWF0X3RhYmxlX2F1dG9nZW4ubW0KQEAgLTQ1LDI3ICs0NSw2IEBAIHZvaWQgRm9y
bWF0Ojppbml0KGNvbnN0IERpc3BsYXlNdGwgKmRpc3BsYXksIGFuZ2xlOjpGb3JtYXRJRCBpbnRl
bmRlZEZvcm1hdElkXykKICAgICAgICAgICAgIHRoaXMtPnN3aXp6bGVkID0gZmFsc2U7CiAgICAg
ICAgICAgICBicmVhazsKIAotI2lmIFRBUkdFVF9PU19PU1ggfHwgVEFSR0VUX09TX01BQ0NBVEFM
WVNUCi0gICAgICAgIGNhc2UgYW5nbGU6OkZvcm1hdElEOjpCOEc4UjhBOF9VTk9STToKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKG1ldGFsRGV2aWNlLmRlcHRoMjRTdGVuY2lsOFBpeGVs
Rm9ybWF0U3VwcG9ydGVkICYmCi0gICAgICAgICAgICAgICAhZGlzcGxheS0+Z2V0RmVhdHVyZXMo
KS5mb3JjZUQyNFM4QXNVbnN1cHBvcnRlZC5lbmFibGVkKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHRoaXMtPm1ldGFsRm9ybWF0ID0gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOwot
ICAgICAgICAgICAgICAgIHRoaXMtPmFjdHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElEOjpC
OEc4UjhBOF9VTk9STTsKLSAgICAgICAgICAgICAgICB0aGlzLT5pbml0RnVuY3Rpb24gPSBudWxs
cHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHRoaXMtPm1ldGFsRm9ybWF0ID0gTVRMUGl4ZWxGb3JtYXRSR0JBOFVub3Jt
OwotICAgICAgICAgICAgICAgIHRoaXMtPmFjdHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElE
OjpSOEc4QjhBOF9VTk9STTsKLSAgICAgICAgICAgICAgICB0aGlzLT5pbml0RnVuY3Rpb24gPSBu
dWxscHRyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlzLT5zd2l6emxlZCA9IGZh
bHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSNlbHNlICAvLyBUQVJHRVRfT1NfT1NYIHx8IFRB
UkdFVF9PU19NQUNDQVRBTFlTVAogICAgICAgICBjYXNlIGFuZ2xlOjpGb3JtYXRJRDo6QjhHOFI4
QThfVU5PUk06CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHRoaXMtPm1ldGFsRm9ybWF0ID0g
TVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOwpAQCAtNzUsNyArNTQsNiBAQCB2b2lkIEZvcm1hdDo6
aW5pdChjb25zdCBEaXNwbGF5TXRsICpkaXNwbGF5LCBhbmdsZTo6Rm9ybWF0SUQgaW50ZW5kZWRG
b3JtYXRJZF8pCiAgICAgICAgICAgICB0aGlzLT5zd2l6emxlZCA9IGZhbHNlOwogICAgICAgICAg
ICAgYnJlYWs7CiAKLSNlbmRpZiAgLy8gVEFSR0VUX09TX09TWCB8fCBUQVJHRVRfT1NfTUFDQ0FU
QUxZU1QKICAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkI4RzhSOEE4X1VOT1JNX1NSR0I6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHRoaXMtPm1ldGFsRm9ybWF0ID0gTVRMUGl4ZWxG
b3JtYXRCR1JBOFVub3JtX3NSR0I7CkBAIC0xMzc4LDE1ICsxMzU2LDYgQEAgdm9pZCBGb3JtYXQ6
OmluaXQoY29uc3QgRGlzcGxheU10bCAqZGlzcGxheSwgYW5nbGU6OkZvcm1hdElEIGludGVuZGVk
Rm9ybWF0SWRfKQogICAgICAgICAgICAgdGhpcy0+c3dpenpsZWQgPSBmYWxzZTsKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgYW5nbGU6OkZvcm1hdElEOjpEMjRfVU5PUk1fUzhf
VUlOVDoKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGhpcy0+bWV0YWxGb3JtYXQgPSBNVExQ
aXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKLSAgICAgICAgICAgIHRoaXMtPmFjdHVh
bEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVDsKLSAgICAg
ICAgICAgIHRoaXMtPmluaXRGdW5jdGlvbiA9IG51bGxwdHI7Ci0KLSAgICAgICAgICAgIHRoaXMt
PnN3aXp6bGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIGFu
Z2xlOjpGb3JtYXRJRDo6UjRHNEI0QTRfVU5PUk06CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHRoaXMtPm1ldGFsRm9ybWF0ID0gTVRMUGl4ZWxGb3JtYXRSR0JBOFVub3JtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210
bF9mb3JtYXRfdXRpbHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF91dGlscy5tbQppbmRleCA0MTZhZDVjN2ZmMTQxNjhl
MDk3OGJiYzdiN2UxYzg4NjlmNmU3YTNmLi4yOTE5ZjI3OGU2MzFlYTEzZWJlNjVmYzY2YjAxOWM4
YjFiZjhmY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF91dGlscy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF91dGlscy5t
bQpAQCAtMTc3LDcgKzE3Nyw3IEBAIGFuZ2xlOjpSZXN1bHQgRm9ybWF0VGFibGU6OmluaXRpYWxp
emUoY29uc3QgRGlzcGxheU10bCAqZGlzcGxheSkKICAgICBtTWF4U2FtcGxlcyA9IDA7CiAKICAg
ICAvLyBJbml0aWFsaXplIG5hdGl2ZSBmb3JtYXQgY2FwcwotICAgIGluaXROYXRpdmVGb3JtYXRD
YXBzKGRpc3BsYXkpOworICAgICBpbml0TmF0aXZlRm9ybWF0Q2FwcyhkaXNwbGF5KTsKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5nbGU6OmtOdW1BTkdMRUZvcm1hdHM7ICsraSkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxzLmgK
aW5kZXggZGJjMTA5OTczOGQ5YzU2ODIyMTE2N2UyZTE1YzY0NTcwMTEyMjNhOS4uYjZlMmVjYzM4
NjgyZGNlOTg0N2FlM2NjMjM1YTczYzA3NWE2M2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91
dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMuaApAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1
ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9n
cmFtSW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsc2xhbmdfd3JhcHBlcl91
dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb25zdGFudHMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmgiCiAKIG5h
bWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91dGlscy5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxf
dXRpbHMubW0KaW5kZXggMWY5YWQzZjE2ZDM1Y2U0MmE1MjI0Y2ViNjUxNGZkZGE1NGRiMDE3Ni4u
Y2UwYTNiZTM4NWJhYTBlZDM0ZmZjNTUwZWJkYTU2YmIzNzNiNTgxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNs
YW5nX210bF91dGlscy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxzLm1tCkBAIC0xMSw5ICsxMSwz
MCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1NoYWRlck10bC5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91dGlscy5oIgog
I2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKLQogbmFtZXNwYWNlIHJ4CiB7CituYW1lc3Bh
Y2UKK3sKKyAgICBjb25zdGV4cHIgY2hhciBrWGZiQmluZGluZ3NNYXJrZXJbXSAgICA9ICJAQFhG
Qi1CaW5kaW5nc0BAIjsKKyAgICBjb25zdGV4cHIgY2hhciBrWGZiT3V0TWFya2VyW10gICAgID0g
IkFOR0xFX0BAWEZCLU9VVEBAIjsKKwordGVtcGxhdGUgPHNpemVfdCBOPgorY29uc3RleHByIHNp
emVfdCBDb25zdFN0ckxlbihjb25zdCBjaGFyICgmKVtOXSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0
KE4gPiAwLCAiQysrIHNob3VsZG4ndCBhbGxvdyBOIHRvIGJlIHplcm8iKTsKKworICAgIC8vIFRo
ZSBsZW5ndGggb2YgYSBzdHJpbmcgZGVmaW5lZCBhcyBhIGNoYXIgYXJyYXkgaXMgdGhlIHNpemUg
b2YgdGhlIGFycmF5IG1pbnVzIDEgKHRoZQorICAgIC8vIHRlcm1pbmF0aW5nICdcMCcpLgorICAg
IHJldHVybiBOIC0gMTsKK30KKworc3RkOjpzdHJpbmcgR2V0WGZiQnVmZmVyTmFtZU10bChjb25z
dCB1aW50MzJfdCBidWZmZXJJbmRleCkKK3sKKyAgICByZXR1cm4gInhmYkJ1ZmZlciIgKyBTdHIo
YnVmZmVySW5kZXgpOworfQorCit9ICAgLy8KKwogbmFtZXNwYWNlIG10bAogewogCkBAIC0xMzYs
MTYgKzE1Nyw2IEBAIHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uICpnZXRSZWZsZWN0aW9u
RnJvbVNoYWRlcihnbDo6U2hhZGVyICpzaGFkZXIpCiAgICAgcmV0dXJuIHNoYWRlckluc3RhbmNl
LT5nZXRUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uKCk7CiB9CiAKLXNoOjpUcmFuc2xhdG9yTWV0
YWxSZWZsZWN0aW9uICpnZXRSZWZsZWN0aW9uRnJvbUNvbXBpbGVyKGdsOjpDb21waWxlciAqY29t
cGlsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbDo6U2hhZGVyVHlwZSB0eXBlKQotewotICAgIGF1dG8gY29tcGlsZXJJbnN0YW5j
ZSAgICAgID0gY29tcGlsZXItPmdldEluc3RhbmNlKHR5cGUpOwotICAgIHNoOjpUU2hIYW5kbGVC
YXNlICpiYXNlICAgID0gc3RhdGljX2Nhc3Q8c2g6OlRTaEhhbmRsZUJhc2UgKj4oY29tcGlsZXJJ
bnN0YW5jZS5nZXRIYW5kbGUoKSk7Ci0gICAgYXV0byB0cmFuc2xhdG9yTWV0YWxEaXJlY3QgPSBi
YXNlLT5nZXRBc1RyYW5zbGF0b3JNZXRhbERpcmVjdCgpOwotICAgIGNvbXBpbGVyLT5wdXRJbnN0
YW5jZShzdGQ6Om1vdmUoY29tcGlsZXJJbnN0YW5jZSkpOwotICAgIHJldHVybiB0cmFuc2xhdG9y
TWV0YWxEaXJlY3QtPmdldFRyYW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24oKTsKLX0KLQogc3RkOjpz
dHJpbmcgdXBkYXRlU2hhZGVyQXR0cmlidXRlcyhzdGQ6OnN0cmluZyBzaGFkZXJTb3VyY2VJbiwg
Y29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlKQogewogICAgIC8vIEJ1aWxkIHN0
cmluZyB0byBhdHRyaWIgbWFwLgpAQCAtMTYwLDE4ICsxNzEsMTcgQEAgc3RkOjpzdHJpbmcgdXBk
YXRlU2hhZGVyQXR0cmlidXRlcyhzdGQ6OnN0cmluZyBzaGFkZXJTb3VyY2VJbiwgY29uc3QgZ2w6
OlByb2dyYW0KICAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCByZWdzOyBpKyspCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3RyZWFtLnN0cigiIik7Ci0gICAgICAgICAgICAg
ICAgc3RyZWFtIDw8IGF0dHJpYnV0ZS5uYW1lIDw8ICJfIiA8PCBzdGQ6OnRvX3N0cmluZyhpKSA8
PCBrVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZzsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwg
YXR0cmlidXRlLm5hbWUgPDwgIl8iIDw8IHN0ZDo6dG9fc3RyaW5nKGkpIDw8IHNoOjprVW5hc3Np
Z25lZEF0dHJpYnV0ZVN0cmluZzsKICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVCaW5kaW5ncy5p
bnNlcnQoe3N0ZDo6c3RyaW5nKHN0cmVhbS5zdHIoKSksIGkrYXR0cmlidXRlLmxvY2F0aW9ufSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAg
ICAgICAgICBzdHJlYW0uc3RyKCIiKTsKLSAgICAgICAgICAgIHN0cmVhbSA8PCBhdHRyaWJ1dGUu
bmFtZSA8PCBrVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZzsKKyAgICAgICAgICAgIHN0cmVhbSA8
PCBhdHRyaWJ1dGUubmFtZSA8PCBzaDo6a1VuYXNzaWduZWRBdHRyaWJ1dGVTdHJpbmc7CiAgICAg
ICAgICAgICBhdHRyaWJ1dGVCaW5kaW5ncy5pbnNlcnQoe3N0ZDo6c3RyaW5nKHN0cmVhbS5zdHIo
KSksYXR0cmlidXRlLmxvY2F0aW9ufSk7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICAvL1Jld3Jp
dGUgYXR0cmlidXRlcwogICAgIHN0ZDo6c3RyaW5nIG91dHB1dFNvdXJjZSA9IHNoYWRlclNvdXJj
ZUluOwogICAgIGZvcihhdXRvIGl0ID0gYXR0cmlidXRlQmluZGluZ3MuYmVnaW4oKTsgaXQhPWF0
dHJpYnV0ZUJpbmRpbmdzLmVuZCgpOyArK2l0KQpAQCAtMTgxLDEyICsxOTEsMTY5IEBAIHN0ZDo6
c3RyaW5nIHVwZGF0ZVNoYWRlckF0dHJpYnV0ZXMoc3RkOjpzdHJpbmcgc2hhZGVyU291cmNlSW4s
IGNvbnN0IGdsOjpQcm9ncmFtCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cmVhbS5zdHIoIiIp
OwogICAgICAgICAgICAgc3RyZWFtIDw8ICJbW2F0dHJpYnV0ZSgiIDw8IGl0LT5zZWNvbmQgPDwg
IildXSI7Ci0gICAgICAgICAgICBvdXRwdXRTb3VyY2UgPSBvdXRwdXRTb3VyY2UucmVwbGFjZShh
dHRyaWJGb3VuZCtpdC0+Zmlyc3QubGVuZ3RoKCktc3RybGVuKGtVbmFzc2lnbmVkQXR0cmlidXRl
U3RyaW5nKSwgc3RybGVuKGtVbmFzc2lnbmVkQXR0cmlidXRlU3RyaW5nKSwgc3RyZWFtLnN0cigp
KTsKKyAgICAgICAgICAgIG91dHB1dFNvdXJjZSA9IG91dHB1dFNvdXJjZS5yZXBsYWNlKGF0dHJp
YkZvdW5kK2l0LT5maXJzdC5sZW5ndGgoKS1zdHJsZW4oc2g6OmtVbmFzc2lnbmVkQXR0cmlidXRl
U3RyaW5nKSwgc3RybGVuKHNoOjprVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZyksIHN0cmVhbS5z
dHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG91dHB1dFNvdXJjZTsKIH0KIAor
c3RkOjpzdHJpbmcgU3Vic3RpdHV0ZVRyYW5zZm9ybUZlZWRiYWNrTWFya2Vycyhjb25zdCBzdGQ6
OnN0cmluZyAmb3JpZ2luYWxTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ4ZmJCaW5kaW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnhmYk91dCkKK3sKKyAgICBjb25zdCBzaXplX3QgeGZiQmluZGluZ3NNYXJrZXJTdGFydCA9IG9y
aWdpbmFsU291cmNlLmZpbmQoa1hmYkJpbmRpbmdzTWFya2VyKTsKKyAgICBib29sIGhhc0JpbmRp
bmdzTWFya2VyID0geGZiQmluZGluZ3NNYXJrZXJTdGFydCAhPSBzdGQ6OnN0cmluZzo6bnBvczsK
KyAgICBjb25zdCBzaXplX3QgeGZiQmluZGluZ3NNYXJrZXJFbmQgPSB4ZmJCaW5kaW5nc01hcmtl
clN0YXJ0ICsgQ29uc3RTdHJMZW4oa1hmYkJpbmRpbmdzTWFya2VyKTsKKworICAgIGNvbnN0IHNp
emVfdCB4ZmJPdXRNYXJrZXJTdGFydCA9IG9yaWdpbmFsU291cmNlLmZpbmQoa1hmYk91dE1hcmtl
ciwgeGZiQmluZGluZ3NNYXJrZXJTdGFydCk7CisgICAgYm9vbCBoYXNPdXRNYXJrZXIgPSB4ZmJP
dXRNYXJrZXJTdGFydCAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICBjb25zdCBzaXplX3QgeGZi
T3V0TWFya2VyRW5kID0geGZiT3V0TWFya2VyU3RhcnQgKyBDb25zdFN0ckxlbihrWGZiT3V0TWFy
a2VyKTsKKworICAgIC8vIFRoZSBzaGFkZXIgaXMgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgIC8v
CisgICAgLy8gLi5wYXJ0MS4uCisgICAgLy8gQEAgWEZCLUJJTkRJTkdTIEBACisgICAgLy8gLi5w
YXJ0Mi4uCisgICAgLy8gQEAgWEZCLU9VVCBAQDsKKyAgICAvLyAuLnBhcnQzLi4KKyAgICAvLwor
ICAgIC8vIENvbnN0cnVjdCB0aGUgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgdGhlc2UgZml2ZSBw
aWVjZXMsIHJlcGxhY2luZyB0aGUgbWFya2VycyB3aXRoIHRoZSBnaXZlbgorICAgIC8vIHZhbHVl
cy4KKyAgICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgICAgaWYoaGFzQmluZGluZ3NNYXJrZXIgJiYg
aGFzT3V0TWFya2VyKQorICAgIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgmb3JpZ2luYWxTb3Vy
Y2VbMF0sICZvcmlnaW5hbFNvdXJjZVt4ZmJCaW5kaW5nc01hcmtlclN0YXJ0XSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoeGZiQmluZGluZ3MpOworICAgICAgICByZXN1bHQuYXBwZW5kKCZvcmln
aW5hbFNvdXJjZVt4ZmJCaW5kaW5nc01hcmtlckVuZF0sICZvcmlnaW5hbFNvdXJjZVt4ZmJPdXRN
YXJrZXJTdGFydF0pOworICAgICAgICByZXN1bHQuYXBwZW5kKHhmYk91dCk7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoJm9yaWdpbmFsU291cmNlW3hmYk91dE1hcmtlckVuZF0sICZvcmlnaW5hbFNv
dXJjZVtvcmlnaW5hbFNvdXJjZS5zaXplKCldKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgcmV0dXJuIG9yaWdpbmFsU291cmNlOworfQorCitzdGQ6OnN0cmluZyBHZW5lcmF0
ZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ091dHB1dChjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nICZ2YXJ5aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlVuaWZvcm1UeXBlSW5mbyAmaW5mbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdHJpZGVC
eXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmYnVmZmVySW5kZXgpCit7CisgICAgc3RkOjpv
c3RyaW5nc3RyZWFtIHJlc3VsdDsKKworICAgIEFTU0VSVChzdHJpZGVCeXRlcyAlIDQgPT0gMCk7
CisgICAgc2l6ZV90IHN0cmlkZSA9IHN0cmlkZUJ5dGVzIC8gNDsKKworICAgIGNvbnN0IHNpemVf
dCBhcnJheUluZGV4U3RhcnQgPSB2YXJ5aW5nLmFycmF5SW5kZXggPT0gR0xfSU5WQUxJRF9JTkRF
WCA/IDAgOiB2YXJ5aW5nLmFycmF5SW5kZXg7CisgICAgY29uc3Qgc2l6ZV90IGFycmF5SW5kZXhF
bmQgICA9IGFycmF5SW5kZXhTdGFydCArIHZhcnlpbmcuc2l6ZSgpOworCisgICAgZm9yIChzaXpl
X3QgYXJyYXlJbmRleCA9IGFycmF5SW5kZXhTdGFydDsgYXJyYXlJbmRleCA8IGFycmF5SW5kZXhF
bmQ7ICsrYXJyYXlJbmRleCkKKyAgICB7CisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8
IGluZm8uY29sdW1uQ291bnQ7ICsrY29sKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGlu
dCByb3cgPSAwOyByb3cgPCBpbmZvLnJvd0NvdW50OyArK3JvdykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPDwgIiAgICAgICAgIjsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPDwgIkFOR0xFXyIgPDwgInhmYkJ1ZmZlciIgPDwgYnVmZmVySW5kZXggPDwgIlsiCisgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJBTkdMRV8iIDw8IHN0ZDo6c3RyaW5nKHNoOjprVW5pZm9y
bXNWYXIpPDwgIi5BTkdMRV94ZmJCdWZmZXJPZmZzZXRzWyIgPDwgYnVmZmVySW5kZXgKKyAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIl0gKyAoZ2xfVmVydGV4SUQgKyBBTkdMRV9pbnN0YW5jZUlk
TW9kICogIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAiQU5HTEVfIiA8PCBzdGQ6OnN0cmlu
ZyhzaDo6a1VuaWZvcm1zVmFyKSA8PCAiLkFOR0xFX3hmYlZlcnRpY2VzUGVyRHJhdykgKiAiIDw8
IHN0cmlkZQorICAgICAgICAgICAgICAgICAgICAgICA8PCAiICsgIiA8PCBvZmZzZXQgPDwgIl0g
PSAiIDw8ICJhc190eXBlPGZsb2F0PiIgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJBTkdMRV92ZXJ0ZXhPdXQuIiA8PCB2YXJ5aW5nLm5hbWU7CisKKyAgICAgICAgICAgICAgICBp
ZiAodmFyeWluZy5pc0FycmF5KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPDwgIlsiIDw8IGFycmF5SW5kZXggPDwgIl0iOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChpbmZvLmNvbHVtbkNvdW50ID4gMSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA8PCAiWyIgPDwgY29sIDw8ICJd
IjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaW5mby5yb3dDb3Vu
dCA+IDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPDwg
IlsiIDw8IHJvdyA8PCAiXSI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
cmVzdWx0IDw8ICIpO1xuIjsKKyAgICAgICAgICAgICAgICArK29mZnNldDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQuc3RyKCk7Cit9CisKK3Zv
aWQgR2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja0VtdWxhdGlvbk91dHB1dHMoY29uc3QgR2xzbGFu
Z1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
KnZlcnRleFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBlYXJseVJldHVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjphcnJheTx1aW50MzJfdCwga01heFNoYWRlclhGQnM+ICp4ZmJC
aW5kaW5nUmVtYXBPdXQpCit7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZz4gJnZhcnlpbmdzID0KKyAgICAgICAgcHJvZ3JhbVN0YXRlLmdldExpbmtl
ZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKTsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTHNp
emVpPiAmYnVmZmVyU3RyaWRlcyA9IHByb2dyYW1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja1N0
cmlkZXMoKTsKKyAgICBjb25zdCBib29sIGlzSW50ZXJsZWF2ZWQgPQorICAgICAgICBwcm9ncmFt
U3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xfSU5URVJMRUFWRURf
QVRUUklCUzsKKyAgICBjb25zdCBzaXplX3QgYnVmZmVyQ291bnQgPSBpc0ludGVybGVhdmVkID8g
MSA6IHZhcnlpbmdzLnNpemUoKTsKKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB4ZmJJ
bmRpY2VzKGJ1ZmZlckNvdW50KTsKKworICAgIHN0ZDo6c3RyaW5nIHhmYkJpbmRpbmdzOworCisg
ICAgZm9yICh1aW50MzJfdCBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVmZmVyQ291
bnQ7ICsrYnVmZmVySW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB4ZmJC
aW5kaW5nID0gU3RyKDApOworICAgICAgICB4ZmJJbmRpY2VzW2J1ZmZlckluZGV4XSAgICAgID0g
U3RyKGJ1ZmZlckluZGV4KTsKKworICAgICAgICBzdGQ6OnN0cmluZyBidWZmZXJOYW1lID0gR2V0
WGZiQnVmZmVyTmFtZU10bChidWZmZXJJbmRleCk7CisKKyAgICAgICAgeGZiQmluZGluZ3MgKz0g
IiwgIjsKKyAgICAgICAgLy8gVE9ETzogb2Zmc2V0IGZyb20gbGFzdCB1c2VkIGJ1ZmZlciBiaW5k
aW5nIGZyb20gZnJvbnQgZW5kCisgICAgICAgIC8vIFhGQiBidWZmZXIgaXMgYWxsb2NhdGVkIHNs
b3Qgc3RhcnRpbmcgZnJvbSBsYXN0IGRpc2NyZXRlIE1ldGFsIGJ1ZmZlciBzbG90LgorICAgICAg
ICB1aW50MzJfdCBiaW5kaW5nUG9pbnQgPSBrTWF4U2hhZGVyQnVmZmVycyAtIDEgLSBidWZmZXJJ
bmRleDsKKyAgICAgICAgeGZiQmluZGluZ1JlbWFwT3V0LT5hdChidWZmZXJJbmRleCkgPSBiaW5k
aW5nUG9pbnQ7CisgICAgICAgIHhmYkJpbmRpbmdzICs9ICJkZXZpY2UgZmxvYXQqIEFOR0xFXyIg
KyBidWZmZXJOYW1lICsgIiBbW2J1ZmZlcigiICsgU3RyKGJpbmRpbmdQb2ludCkgKyAiKV1dIjsK
KyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyB4ZmJPdXQgPSAiI2lmIFRSQU5TRk9STV9GRUVEQkFD
S19FTkFCTEVEXG4gICAgaWYgKEFOR0xFXyIgKyBzdGQ6OnN0cmluZyhzaDo6a1VuaWZvcm1zVmFy
KSArICIuQU5HTEVfeGZiQWN0aXZlVW5wYXVzZWQgIT0gMClcbiAgICB7XG4iOworICAgIHNpemVf
dCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGZvciAoc2l6ZV90IHZhcnlpbmdJbmRleCA9IDA7IHZh
cnlpbmdJbmRleCA8IHZhcnlpbmdzLnNpemUoKTsgKyt2YXJ5aW5nSW5kZXgpCisgICAgeworICAg
ICAgICBjb25zdCBzaXplX3QgYnVmZmVySW5kZXggICAgICAgICAgICAgICAgICAgID0gaXNJbnRl
cmxlYXZlZCA/IDAgOiB2YXJ5aW5nSW5kZXg7CisgICAgICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcgJnZhcnlpbmcgPSB2YXJ5aW5nc1t2YXJ5aW5nSW5kZXhdOworCisgICAg
ICAgIC8vIEZvciBldmVyeSB2YXJ5aW5nLCBvdXRwdXQgdG8gdGhlIHJlc3BlY3RpdmUgYnVmZmVy
IHBhY2tlZC4gIElmIGludGVybGVhdmVkLCB0aGUgb3V0cHV0IGlzCisgICAgICAgIC8vIGFsd2F5
cyB0byB0aGUgc2FtZSBidWZmZXIsIGJ1dCBhdCBkaWZmZXJlbnQgb2Zmc2V0cy4KKyAgICAgICAg
Y29uc3QgZ2w6OlVuaWZvcm1UeXBlSW5mbyAmaW5mbyA9IGdsOjpHZXRVbmlmb3JtVHlwZUluZm8o
dmFyeWluZy50eXBlKTsKKyAgICAgICAgeGZiT3V0ICs9IEdlbmVyYXRlVHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nT3V0cHV0KHZhcnlpbmcsIGluZm8sIGJ1ZmZlclN0cmlkZXNbYnVmZmVySW5kZXhd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0T2Zmc2V0LCB4ZmJJbmRpY2VzW2J1ZmZlckluZGV4XSk7CisKKyAgICAgICAgaWYg
KGlzSW50ZXJsZWF2ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dHB1dE9mZnNldCArPSBp
bmZvLmNvbHVtbkNvdW50ICogaW5mby5yb3dDb3VudCAqIHZhcnlpbmcuc2l6ZSgpOworICAgICAg
ICB9CisgICAgfQorICAgIGlmIChlYXJseVJldHVybikKKyAgICB7CisgICAgICAgIHhmYk91dCAr
PSAicmV0dXJuOyI7CisgICAgfQorICAgIHhmYk91dCArPSAiICAgIH1cbiNlbmRpZlxuIjsKKwor
ICAgICp2ZXJ0ZXhTaGFkZXIgPSBTdWJzdGl0dXRlVHJhbnNmb3JtRmVlZGJhY2tNYXJrZXJzKCp2
ZXJ0ZXhTaGFkZXIsIHhmYkJpbmRpbmdzLCB4ZmJPdXQpOworfQorCisKK3NoOjpUcmFuc2xhdG9y
TWV0YWxSZWZsZWN0aW9uICpnZXRSZWZsZWN0aW9uRnJvbUNvbXBpbGVyKGdsOjpDb21waWxlciAq
Y29tcGlsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6U2hhZGVyVHlwZSB0eXBlKQoreworICAgIGF1dG8gY29tcGlsZXJJbnN0
YW5jZSAgICAgID0gY29tcGlsZXItPmdldEluc3RhbmNlKHR5cGUpOworICAgIHNoOjpUU2hIYW5k
bGVCYXNlICpiYXNlICAgID0gc3RhdGljX2Nhc3Q8c2g6OlRTaEhhbmRsZUJhc2UgKj4oY29tcGls
ZXJJbnN0YW5jZS5nZXRIYW5kbGUoKSk7CisgICAgYXV0byB0cmFuc2xhdG9yTWV0YWxEaXJlY3Qg
PSBiYXNlLT5nZXRBc1RyYW5zbGF0b3JNZXRhbERpcmVjdCgpOworICAgIGNvbXBpbGVyLT5wdXRJ
bnN0YW5jZShzdGQ6Om1vdmUoY29tcGlsZXJJbnN0YW5jZSkpOworICAgIHJldHVybiB0cmFuc2xh
dG9yTWV0YWxEaXJlY3QtPmdldFRyYW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24oKTsKK30KKwogYW5n
bGU6OlJlc3VsdCBHbHNsYW5nR2V0TVNMKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3Jh
bVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDYXBzICZnbENh
cHMsCkBAIC0xOTYsMTUgKzM2MywxNiBAQCBhbmdsZTo6UmVzdWx0IEdsc2xhbmdHZXRNU0woY29u
c3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPiAqbXNsQ29kZU91dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgeGZiQnVmZmVyQ291bnQpCiB7CisgICAgY29uc3QgR2xzbGFuZ1Nv
dXJjZU9wdGlvbnMgb3B0aW9uczsKICAgICAvLyBSZXRyaWV2ZSBvcmlnaW5hbCB1bmlmb3JtIGJ1
ZmZlciBiaW5kaW5ncyBnZW5lcmF0ZWQgYnkgZnJvbnQgZW5kLiBXZSB3aWxsIG5lZWQgdG8gZG8g
YSByZW1hcC4KICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHVpbnQzMl90PiB1
Ym9PcmlnaW5hbEJpbmRpbmdzOwogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJbnRlcmZhY2VC
bG9jaz4gJmJsb2NrcyA9IHByb2dyYW1TdGF0ZS5nZXRVbmlmb3JtQmxvY2tzKCk7CiAgICAgZm9y
ICh1aW50MzJfdCBidWZmZXJJZHggPSAwOyBidWZmZXJJZHggPCBibG9ja3Muc2l6ZSgpOyArK2J1
ZmZlcklkeCkKICAgICB7CiAgICAgICAgIGNvbnN0IGdsOjpJbnRlcmZhY2VCbG9jayAmYmxvY2sg
PSBibG9ja3NbYnVmZmVySWR4XTsKLSAgICAgICAgaWYgKCF1Ym9PcmlnaW5hbEJpbmRpbmdzLmNv
dW50KGJsb2NrLm1hcHBlZE5hbWUpKQorICAgICAgICBpZiAoIXVib09yaWdpbmFsQmluZGluZ3Mu
Y291bnQoYmxvY2submFtZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVib09yaWdpbmFsQmlu
ZGluZ3NbYmxvY2subWFwcGVkTmFtZV0gPSBidWZmZXJJZHg7CisgICAgICAgICAgICB1Ym9Pcmln
aW5hbEJpbmRpbmdzW2Jsb2NrLm5hbWVdID0gYnVmZmVySWR4OwogICAgICAgICB9CiAgICAgfQog
ICAgIC8vIFJldHJpZXZlIG9yaWdpbmFsIHNhbXBsZXIgYmluZGluZ3MgcHJvZHVjZWQgYnkgZnJv
bnQgZW5kLgpAQCAtMjMxLDEyICszOTksMjcgQEAgYW5nbGU6OlJlc3VsdCBHbHNsYW5nR2V0TVNM
KGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCiAgICAgfQogICAgIGZvciAoZ2w6OlNoYWRl
clR5cGUgdHlwZSA6IHtnbDo6U2hhZGVyVHlwZTo6VmVydGV4LCBnbDo6U2hhZGVyVHlwZTo6RnJh
Z21lbnR9KQogICAgIHsKLSAgICAgICAgKCptc2xDb2RlT3V0KVt0eXBlXSAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHNoYWRlclNvdXJjZXNbdHlwZV07Ci0gICAgICAgICgqbXNsU2hhZGVySW5m
b091dClbdHlwZV0ubWV0YWxTaGFkZXJTb3VyY2UgPSBzaGFkZXJTb3VyY2VzW3R5cGVdOwogICAg
ICAgICBzdGQ6OnN0cmluZyBzb3VyY2U7CiAgICAgICAgIGlmKHR5cGUgPT0gZ2w6OlNoYWRlclR5
cGU6OlZlcnRleCkKICAgICAgICAgewogICAgICAgICAgICAgc291cmNlID0gdXBkYXRlU2hhZGVy
QXR0cmlidXRlcyhzaGFkZXJTb3VyY2VzW3R5cGVdLCBwcm9ncmFtU3RhdGUpOworICAgICAgICAg
ICAgLy8gV3JpdGUgdHJhbnNmb3JtIGZlZWRiYWNrIG91dHB1dCBjb2RlLgorICAgICAgICAgICAg
aWYgKCFzb3VyY2UuZW1wdHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
cHJvZ3JhbVN0YXRlLmdldExpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKS5lbXB0eSgp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gU3Vic3Rp
dHV0ZVRyYW5zZm9ybUZlZWRiYWNrTWFya2Vycyhzb3VyY2UsICIiLCAiIik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlVHJhbnNmb3JtRmVlZGJhY2tFbXVsYXRpb25PdXRwdXRzKAor
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgcHJvZ3JhbVN0YXRlLCAmc291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50cmFuc2Zvcm1GZWVkYmFja0Vhcmx5UmV0
dXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgJigqbXNsU2hhZGVySW5mb091dClbdHlwZV0u
YWN0dWFsWEZCQmluZGluZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC0yNDYsNiArNDI5LDI1IEBA
IGFuZ2xlOjpSZXN1bHQgR2xzbGFuZ0dldE1TTChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0
LAogICAgICAgICAoKm1zbFNoYWRlckluZm9PdXQpW3R5cGVdLm1ldGFsU2hhZGVyU291cmNlID0g
c291cmNlOwogICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXIgICAgICAgICAgICAgICAgICAgICAg
ICA9IHByb2dyYW1TdGF0ZS5nZXRBdHRhY2hlZFNoYWRlcih0eXBlKTsKICAgICAgICAgc2g6OlRy
YW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24gKnJlZmxlY3Rpb24gPSBnZXRSZWZsZWN0aW9uRnJvbVNo
YWRlcihzaGFkZXIpOworICAgICAgICBpZihyZWZsZWN0aW9uLT5oYXNVQk9zKQorICAgICAgICB7
CisgICAgICAgICAgICAoKm1zbFNoYWRlckluZm9PdXQpW3R5cGVdLmhhc1VCT0FyZ3VtZW50QnVm
ZmVyID0gdHJ1ZTsKKworICAgICAgICAgICAgZm9yIChhdXRvICZ1Ym9CaW5kaW5nIDogcmVmbGVj
dGlvbi0+Z2V0VW5pZm9ybUJ1ZmZlckJpbmRpbmdzKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVib05hbWUgICAgICAgICA9IHVib0JpbmRpbmcu
Zmlyc3Q7CisgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlVCT0JpbmRpbmdJbmZvICZiaW5kSW5m
byA9IHVib0JpbmRpbmcuc2Vjb25kOworICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHVi
b0JpbmRJbmRleCAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmluZEluZm8uYmluZElu
ZGV4KTsKKyAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB1Ym9BcnJheVNpemUgICAgICAg
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpbmRJbmZvLmFycmF5U2l6ZSk7CisgICAgICAgICAg
ICAgICAgY29uc3QgdWludDMyX3Qgb3JpZ2luYWxCaW5kaW5nICAgICA9IHVib09yaWdpbmFsQmlu
ZGluZ3MuYXQodWJvTmFtZSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgY3VycmVudFNsb3Qg
PSBzdGF0aWNfY2FzdDx1aW50Pih1Ym9CaW5kSW5kZXgpOworICAgICAgICAgICAgICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCB1Ym9BcnJheVNpemU7ICsraSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBjb25zZWN1dGl2ZSBzbG90IGZvciBtZW1iZXIg
aW4gYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgKCptc2xTaGFkZXJJbmZvT3V0KVt0eXBlXS5h
Y3R1YWxVQk9CaW5kaW5nc1tvcmlnaW5hbEJpbmRpbmcgKyBpXSA9IGN1cnJlbnRTbG90ICsgaTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgLy8g
UmV0cmlldmUgYXV0b21hdGljIHRleHR1cmUgc2xvdCBhc3NpZ25tZW50cwogICAgICAgICBpZiAo
b3JpZ2luYWxTYW1wbGVyQmluZGluZ3Muc2l6ZSgpID4gMCkKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210
bF9yZW5kZXJfdXRpbHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX3JlbmRlcl91dGlscy5tbQppbmRleCAzMmIzM2NhYjhmYmU5MTFi
YjI2YTgwMjNmOWZlYjMxYzU3YzkxNjdiLi40ZTM5MjIwYWVjOGYwM2E4NjBjNzRmMWVkMzZhZmU3
YTM0MzE2ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvbXRsX3JlbmRlcl91dGlscy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3JlbmRlcl91dGlscy5t
bQpAQCAtNTUsMTIgKzU1LDEwIEBAIHN0cnVjdCBCbGl0UGFyYW1zVW5pZm9ybQogICAgIGZsb2F0
IHNyY1RleENvb3Jkc1szXVsyXTsKICAgICBpbnQgc3JjTGV2ZWwgICAgICAgICA9IDA7CiAgICAg
aW50IHNyY0xheWVyICAgICAgICAgPSAwOwotICAgIGludCBzcmNMZXZlbDIgICAgICAgID0gMDsK
LSAgICBpbnQgc3JjTGF5ZXIyICAgICAgICA9IDA7CiAgICAgdWludDhfdCBkc3RGbGlwWCAgICAg
PSAwOwogICAgIHVpbnQ4X3QgZHN0RmxpcFkgICAgID0gMDsKICAgICB1aW50OF90IGRzdEx1bWlu
YW5jZSA9IDA7ICAvLyBkZXN0IHRleHR1cmUgaXMgbHVtaW5hY2UKLSAgICB1aW50OF90IHBhZGRp
bmdbOV07CisgICAgdWludDhfdCBwYWRkaW5nWzEzXTsKIH07CiAKIHN0cnVjdCBCbGl0U3RlbmNp
bFRvQnVmZmVyUGFyYW1zVW5pZm9ybQpAQCAtNzc0LDE0ICs3NzIsOCBAQCB2b2lkIFNldHVwQmxp
dFdpdGhEcmF3VW5pZm9ybURhdGEoUmVuZGVyQ29tbWFuZEVuY29kZXIgKmNtZEVuY29kZXIsCiAg
ICAgdW5pZm9ybVBhcmFtcy5zcmNMYXllciA9IHBhcmFtcy5zcmNMYXllcjsKICAgICBpZiAoaXND
b2xvckJsaXQpCiAgICAgewotICAgICAgICBjb25zdCBhdXRvIGNvbG9yUGFyYW1zICAgICA9IHN0
YXRpY19jYXN0PGNvbnN0IENvbG9yQmxpdFBhcmFtcyAqPigmcGFyYW1zKTsKLSAgICAgICAgdW5p
Zm9ybVBhcmFtcy5kc3RMdW1pbmFuY2UgPSBjb2xvclBhcmFtcy0+ZHN0THVtaW5hbmNlID8gMSA6
IDA7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gZHNQYXJhbXMg
ICAgID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGVwdGhTdGVuY2lsQmxpdFBhcmFtcyAqPigmcGFyYW1z
KTsKLSAgICAgICAgdW5pZm9ybVBhcmFtcy5zcmNMZXZlbDIgPSBkc1BhcmFtcy0+c3JjU3RlbmNp
bExldmVsOwotICAgICAgICB1bmlmb3JtUGFyYW1zLnNyY0xheWVyMiA9IGRzUGFyYW1zLT5zcmNT
dGVuY2lsTGF5ZXI7CisgICAgICAgIGNvbnN0IENvbG9yQmxpdFBhcmFtcyAqY29sb3JQYXJhbXMg
PSBzdGF0aWNfY2FzdDxjb25zdCBDb2xvckJsaXRQYXJhbXMgKj4oJnBhcmFtcyk7CisgICAgICAg
IHVuaWZvcm1QYXJhbXMuZHN0THVtaW5hbmNlICAgICAgICAgPSBjb2xvclBhcmFtcy0+ZHN0THVt
aW5hbmNlID8gMSA6IDA7CiAgICAgfQogCiAgICAgLy8gQ29tcHV0ZSBzb3VyY2UgdGV4Q29vcmRz
CkBAIC03OTUsOCArNzg3LDggQEAgdm9pZCBTZXR1cEJsaXRXaXRoRHJhd1VuaWZvcm1EYXRhKFJl
bmRlckNvbW1hbmRFbmNvZGVyICpjbWRFbmNvZGVyLAogICAgIHsKICAgICAgICAgY29uc3QgRGVw
dGhTdGVuY2lsQmxpdFBhcmFtcyAqZHNQYXJhbXMgPQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgRGVwdGhTdGVuY2lsQmxpdFBhcmFtcyAqPigmcGFyYW1zKTsKLSAgICAgICAgc3JjV2lk
dGggID0gZHNQYXJhbXMtPnNyY1N0ZW5jaWwtPndpZHRoKG10bDo6TWlwbWFwTmF0aXZlTGV2ZWwo
ZHNQYXJhbXMtPnNyY1N0ZW5jaWxMZXZlbCkpOwotICAgICAgICBzcmNIZWlnaHQgPSBkc1BhcmFt
cy0+c3JjU3RlbmNpbC0+aGVpZ2h0KG10bDo6TWlwbWFwTmF0aXZlTGV2ZWwoZHNQYXJhbXMtPnNy
Y1N0ZW5jaWxMZXZlbCkpOworICAgICAgICBzcmNXaWR0aCAgPSBkc1BhcmFtcy0+c3JjU3RlbmNp
bC0+d2lkdGgoZHNQYXJhbXMtPnNyY0xldmVsKTsKKyAgICAgICAgc3JjSGVpZ2h0ID0gZHNQYXJh
bXMtPnNyY1N0ZW5jaWwtPmhlaWdodChkc1BhcmFtcy0+c3JjTGV2ZWwpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewpAQCAtODA3LDggKzc5OSw4IEBAIHZvaWQgU2V0dXBCbGl0V2l0aERyYXdVbmlm
b3JtRGF0YShSZW5kZXJDb21tYW5kRW5jb2RlciAqY21kRW5jb2RlciwKICAgICBHZXRCbGl0VGV4
Q29vcmRzKHNyY1dpZHRoLCBzcmNIZWlnaHQsIHBhcmFtcy5zcmNSZWN0LCBwYXJhbXMuc3JjWUZs
aXBwZWQsIHBhcmFtcy51bnBhY2tGbGlwWCwKICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51
bnBhY2tGbGlwWSwgJnUwLCAmdjAsICZ1MSwgJnYxKTsKIAotICAgIGF1dG8gZHUgPSB1MSAtIHUw
OwotICAgIGF1dG8gZHYgPSB2MSAtIHYwOworICAgIGZsb2F0IGR1ID0gdTEgLSB1MDsKKyAgICBm
bG9hdCBkdiA9IHYxIC0gdjA7CiAKICAgICAvLyBsb3dlciBsZWZ0CiAgICAgdW5pZm9ybVBhcmFt
cy5zcmNUZXhDb29yZHNbMF1bMF0gPSB1MDsKQEAgLTMwMzUsMTIgKzMwMjcsMTMgQEAgQXV0b09i
akNQdHI8aWQ8TVRMTGlicmFyeT4+IFRyYW5zZm9ybUZlZWRiYWNrVXRpbHM6OmNyZWF0ZU1zbFhm
YkxpYnJhcnkoCiAgICAgICAgIC8vIENvbnZlcnQgdG8gYWN0dWFsIGJpbmFyeSBzaGFkZXIKICAg
ICAgICAgbXRsOjpBdXRvT2JqQ1B0cjxOU0Vycm9yICo+IGVyciA9IG5pbDsKICAgICAgICAgbXRs
OjpBdXRvT2JqQ1B0cjxpZDxNVExMaWJyYXJ5Pj4gbXRsU2hhZGVyTGliID0KLSAgICAgICAgICAg
IG10bDo6Q3JlYXRlU2hhZGVyTGlicmFyeShtdGxEZXZpY2UsIHRyYW5zbGF0ZWRNc2wsICZlcnIp
OworICAgICAgICBtdGw6OkNyZWF0ZVNoYWRlckxpYnJhcnkobXRsRGV2aWNlLCB0cmFuc2xhdGVk
TXNsLCBAe0AiVFJBTlNGT1JNX0ZFRURCQUNLX0VOQUJMRUQiOiBAIjEifSwgJmVycik7CiAgICAg
ICAgIGlmIChlcnIgJiYgIW10bFNoYWRlckxpYikKICAgICAgICAgewogICAgICAgICAgICAgTlNM
b2coQCIlQCIsIGVyci5nZXQoKSk7CiAgICAgICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIH0K
KyAgICAgICAgbXRsU2hhZGVyTGliLmdldCgpLmxhYmVsID0gQCJUcmFuc2Zvcm1GZWVkYmFjayI7
CiAgICAgICAgIHJldHVybiBtdGxTaGFkZXJMaWI7CiAgICAgfQogfQpAQCAtMzA1OCw3ICszMDUx
LDcgQEAgQXV0b09iakNQdHI8aWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4+IFRyYW5zZm9ybUZl
ZWRiYWNrVXRpbHM6OmdldFRyYW5zZm9ybUZlZWQKICAgICAgICAgLy8gUGlwZWxpbmUgY2FjaGUg
bm90IGludGlhbGl6ZWQsIGRvIGl0IG5vdzoKICAgICAgICAgQU5HTEVfTVRMX09CSkNfU0NPUEUK
ICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzaGFkZXJMaWIgPSBjcmVhdGVNc2xYZmJMaWJy
YXJ5KGNvbnRleHRNdGwsIHByb2dyYW1NdGwtPmdldFhmYk1zbFNvdXJjZSgpKTsKKyAgICAgICAg
ICAgIGF1dG8gc2hhZGVyTGliID0gY3JlYXRlTXNsWGZiTGlicmFyeShjb250ZXh0TXRsLCBwcm9n
cmFtTXRsLT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKGdsOjpTaGFkZXJUeXBlOjpWZXJ0ZXgp
KTsKICAgICAgICAgICAgIC8vIE5vbiBzcGVjaWFsaXplZCBjb25zdGFudHMgcHJvdmlkZWQsIHVz
ZSBkZWZhdWx0IGNyZWF0aW9uIGZ1bmN0aW9uLgogICAgICAgICAgICAgRW5zdXJlVmVydGV4U2hh
ZGVyT25seVBpcGVsaW5lQ2FjaGVJbml0aWFsaXplZChjb250ZXh0TXRsLCBTSEFERVJfRU5UUllf
TkFNRSwgc2hhZGVyTGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmY2FjaGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZXNvdXJjZXMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfcmVz
b3VyY2VzLmgKaW5kZXggMmUzMzM0ZGZlMjUyYmJmMTA5ZDMxYmVlZDY4NmI1OTNkNjkyY2I3Ni4u
NGEyMDNhYWMwYjY5Y2VhODE4NjIzOGI4YTQ0N2ZlNDEwMjc2ZDVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZXNv
dXJjZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5oCkBAIC0yNTEsNyArMjUxLDcgQEAgY2xhc3MgVGV4dHVy
ZSBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZSwKIAogICAgIC8vIEdldCBzdGVuY2lsIHZpZXcKICAg
ICBUZXh0dXJlUmVmIGdldFN0ZW5jaWxWaWV3KCk7Ci0gICAgLy9HZXQgbGluZWFyIGNvbG9yCisg
ICAgLy8gR2V0IGxpbmVhciBjb2xvcgogICAgIFRleHR1cmVSZWYgZ2V0TGluZWFyQ29sb3JWaWV3
KCk7CiAKICAgICAvLyBDaGFuZ2UgdGhlIHdyYXBwZWQgbWV0YWwgb2JqZWN0LiBTcGVjaWFsIGNh
c2UgZm9yIHN3YXBjaGFpbiBpbWFnZQpAQCAtMzIzLDkgKzMyMyw4IEBAIGNsYXNzIFRleHR1cmUg
ZmluYWwgOiBwdWJsaWMgUmVzb3VyY2UsCiAgICAgVGV4dHVyZVJlZiBtTGluZWFyQ29sb3JWaWV3
OwogCiAgICAgVGV4dHVyZVJlZiBtU3RlbmNpbFZpZXc7Ci0gICAgLy9SZWFkYWJsZSBjb3B5IG9m
IHRleHR1cmUKKyAgICAvLyBSZWFkYWJsZSBjb3B5IG9mIHRleHR1cmUKICAgICBUZXh0dXJlUmVm
IG1SZWFkQ29weTsKLQogfTsKIAogY2xhc3MgQnVmZmVyIGZpbmFsIDogcHVibGljIFJlc291cmNl
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9yZXNvdXJjZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5tbQppbmRleCBmNzVlNzI1ZmFj
N2IyOTM3MzMwZjA1ZGRjNzIwNGZhZGRiYTZmM2Y2Li5kNzcxYmMxMDY0MzYwOWM5MjY5Yzk0MTgz
OGNiMzNmMTdiYmQwOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5tbQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5t
bQpAQCAtMzkwLDYgKzM5MCw5IEBAIFRleHR1cmU6OlRleHR1cmUoQ29udGV4dE10bCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICBkZXNjLnVzYWdlID0gZGVzYy51c2FnZSB8IE1UTFRleHR1cmVV
c2FnZVNoYWRlcldyaXRlOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmKGRl
c2MucGl4ZWxGb3JtYXQgPT0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDgpewor
ICAgICAgICAgIEFTU0VSVChhbGxvd0Zvcm1hdFZpZXcpOworICAgICAgICB9CiAKICAgICAgICAg
aWYgKGFsbG93Rm9ybWF0VmlldykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9zdGF0ZV9jYWNoZS5t
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9t
dGxfc3RhdGVfY2FjaGUubW0KaW5kZXggYmQ3ZTRhOTk0Y2MyZTlkM2QyNmUxZmJhMjRjZWRjOTc1
OGRjMzAxZC4uZDlmYTU3MmU0YmVlYTk2ZDI5NzFhYjAyNzAzYmE0Yzc0ODczYjI5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L210bF9zdGF0ZV9jYWNoZS5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3N0YXRlX2NhY2hlLm1tCkBAIC00NjQsNyArNDY0LDcg
QEAgU2FtcGxlckRlc2M6OlNhbXBsZXJEZXNjKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmdsU3Rh
dGUpIDogU2FtcGxlckRlc2MoKQogICAgIG1heEFuaXNvdHJvcHkgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZ2xTdGF0ZS5nZXRNYXhBbmlzb3Ryb3B5KCkpOwogCiAgICAgY29tcGFyZUZ1bmN0aW9u
ID0gR2V0Q29tcGFyZUZ1bmMoZ2xTdGF0ZS5nZXRDb21wYXJlRnVuYygpKTsKLSAgICAKKwogICAg
IG5vcm1hbGl6ZWRDb29yZGluYXRlcyA9IFlFUzsKIH0KIApAQCAtNDgzLDExICs0ODMsMTEgQEAg
dm9pZCBTYW1wbGVyRGVzYzo6cmVzZXQoKQogICAgIG1pbkZpbHRlciA9IE1UTFNhbXBsZXJNaW5N
YWdGaWx0ZXJOZWFyZXN0OwogICAgIG1hZ0ZpbHRlciA9IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJO
ZWFyZXN0OwogICAgIG1pcEZpbHRlciA9IE1UTFNhbXBsZXJNaXBGaWx0ZXJOZWFyZXN0OwotICAg
IAorCiAgICAgbWF4QW5pc290cm9weSA9IDE7CiAKICAgICBjb21wYXJlRnVuY3Rpb24gPSBNVExD
b21wYXJlRnVuY3Rpb25OZXZlcjsKLSAgICAKKwogICAgIG5vcm1hbGl6ZWRDb29yZGluYXRlcyA9
IFlFUzsKIH0KIApAQCAtODY1LDkgKzg2NSw3IEBAIFJlbmRlclBpcGVsaW5lQ2FjaGU6OlJlbmRl
clBpcGVsaW5lQ2FjaGUoKSA6IFJlbmRlclBpcGVsaW5lQ2FjaGUobnVsbHB0cikgewogUmVuZGVy
UGlwZWxpbmVDYWNoZTo6UmVuZGVyUGlwZWxpbmVDYWNoZSgKICAgICBSZW5kZXJQaXBlbGluZUNh
Y2hlU3BlY2lhbGl6ZVNoYWRlckZhY3RvcnkgKnNwZWNpYWxpemVkU2hhZGVyRmFjdG9yeSkKICAg
ICA6IG1TcGVjaWFsaXplZFNoYWRlckZhY3Rvcnkoc3BlY2lhbGl6ZWRTaGFkZXJGYWN0b3J5KQot
ewotCi19Cit7fQogCiBSZW5kZXJQaXBlbGluZUNhY2hlOjp+UmVuZGVyUGlwZWxpbmVDYWNoZSgp
IHt9CiAKQEAgLTk2Niw3ICs5NjQsOSBAQCBBdXRvT2JqQ1B0cjxpZDxNVExSZW5kZXJQaXBlbGlu
ZVN0YXRlPj4gUmVuZGVyUGlwZWxpbmVDYWNoZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbgogICAgICAg
ICAvLyBDaG9vc2Ugc2hhZGVyIHZhcmlhbnQKICAgICAgICAgaWQ8TVRMRnVuY3Rpb24+IHZlcnRT
aGFkZXIgPSBuaWw7CiAgICAgICAgIGlkPE1UTEZ1bmN0aW9uPiBmcmFnU2hhZGVyID0gbmlsOwot
ICAgICAgICBpZiAobVNwZWNpYWxpemVkU2hhZGVyRmFjdG9yeSAmJgorICAgICAgICAvLyBTcGVj
aWFsIGNhc2UgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBzaGFkZXIsIHdlJ3ZlIGFscmVhZHkgY3Jl
YXRlZCBpdCEgU2VlIGdldFRyYW5zZm9ybUZlZWRiYWNrUmVuZGVyUGlwZWxpbmUKKyAgICAgICAg
aWYgKGRlc2MucmFzdGVyaXphdGlvblR5cGUgIT0gbXRsOjpSZW5kZXJQaXBlbGluZVJhc3Rlcml6
YXRpb246OkRpc2FibGVkICYmCisgICAgICAgICAgICBtU3BlY2lhbGl6ZWRTaGFkZXJGYWN0b3J5
ICYmCiAgICAgICAgICAgICBtU3BlY2lhbGl6ZWRTaGFkZXJGYWN0b3J5LT5oYXNTcGVjaWFsaXpl
ZFNoYWRlcihnbDo6U2hhZGVyVHlwZTo6VmVydGV4LCBkZXNjKSkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKElzRXJyb3IobVNwZWNpYWxpemVkU2hhZGVyRmFjdG9yeS0+Z2V0U3BlY2lhbGl6
ZWRTaGFkZXIoCkBAIC0xMDUzLDcgKzEwNTMsNiBAQCBBdXRvT2JqQ1B0cjxpZDxNVExSZW5kZXJQ
aXBlbGluZVN0YXRlPj4gUmVuZGVyUGlwZWxpbmVDYWNoZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbgog
ICAgIH0KIH0KIAotCiB2b2lkIFJlbmRlclBpcGVsaW5lQ2FjaGU6OnJlY3JlYXRlUGlwZWxpbmVT
dGF0ZXMoQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBmb3IgKGludCBoYXNEZWZhdWx0QXR0cmli
ID0gMDsgaGFzRGVmYXVsdEF0dHJpYiA8PSAxOyArK2hhc0RlZmF1bHRBdHRyaWIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
bXRsX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvbXRsX3V0aWxzLmgKaW5kZXggNDkwMGVjYmJlOGViN2U1N2ZiZTY4MzE2YjMxZTZl
NWMxZjAxNzZhYi4uMTBhNTRhYTI2ZDFlYWVjMzExMmYyN2Y3NzA5NWQxYmMzOTg3YmQxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL210bF91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfdXRpbHMuaApAQCAtODQsNiArODQsMTIgQEAgTVRMU2Npc3Nv
clJlY3QgR2V0U2Npc3NvclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVjdCwKIAogdWludDMy
X3QgR2V0RGV2aWNlVmVuZG9ySWQoaWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSk7CiAKKworQXV0
b09iakNQdHI8aWQ8TVRMTGlicmFyeT4+IENyZWF0ZVNoYWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNl
PiBtZXRhbERldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNPYmpl
Y3QgKj4gKiBzdWJzdGl0dXRpb25EaWN0aW9uYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQXV0b09iakNQdHI8TlNFcnJvciAqPiAqZXJyb3IpOwor
CiBBdXRvT2JqQ1B0cjxpZDxNVExMaWJyYXJ5Pj4gQ3JlYXRlU2hhZGVyTGlicmFyeShpZDxNVExE
ZXZpY2U+IG1ldGFsRGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9PYmpDUHRyPE5TRXJyb3IgKj4gKmVy
cm9yKTsKQEAgLTkxLDExICs5NywxMyBAQCBBdXRvT2JqQ1B0cjxpZDxNVExMaWJyYXJ5Pj4gQ3Jl
YXRlU2hhZGVyTGlicmFyeShpZDxNVExEZXZpY2U+IG1ldGFsRGV2aWNlLAogQXV0b09iakNQdHI8
aWQ8TVRMTGlicmFyeT4+IENyZWF0ZVNoYWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNlPiBtZXRhbERl
dmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBzb3VyY2VMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNPYmplY3QgKj4g
KiBzdWJzdGl0dXRpb25EaWN0aW9uYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQXV0b09iakNQdHI8TlNFcnJvciAqPiAqZXJyb3IpOwogCiBBdXRv
T2JqQ1B0cjxpZDxNVExMaWJyYXJ5Pj4gQ3JlYXRlU2hhZGVyTGlicmFyeUZyb21CaW5hcnkoaWQ8
TVRMRGV2aWNlPiBtZXRhbERldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpiaW5hcnlTb3VyY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGJpbmFyeVNvdXJjZUxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNPYmpl
Y3QgKj4gKiBzdWJzdGl0dXRpb25EaWN0aW9uYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9PYmpDUHRyPE5TRXJyb3IgKj4g
KmVycm9yKTsKIAogYm9vbCBTdXBwb3J0c0lPU0dQVUZhbWlseShpZDxNVExEZXZpY2U+IGRldmlj
ZSwgdWludDhfdCBpT1NGYW1pbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF91dGlscy5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfdXRpbHMubW0KaW5k
ZXggMGVjY2JjZTZkNGEwMDllY2M4MThiYjhkMjkxOWJkYjI5MGI1NDlkMC4uNDBkY2YzMTM0ODky
ZDdmZDExNTQ1MWMwYzM2OTI0YWZjMGNkOTQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF91dGlscy5tbQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3V0
aWxzLm1tCkBAIC0yNyw2ICsyNyw4IEBAIG5hbWVzcGFjZSBtdGwKIHsKIAogY29uc3RleHByIGNo
YXIga0FOR0xFUHJpbnRNU0xFbnZbXSA9ICJBTkdMRV9NRVRBTF9QUklOVF9NU0xfRU5BQkxFIjsK
K2NvbnN0ZXhwciBjaGFyIGtBTkdMRU1TTFZlcnNpb25NYWpvckVudltdID0gIkFOR0xFX01TTF9W
RVJTSU9OX01BSk9SIjsKK2NvbnN0ZXhwciBjaGFyIGtBTkdMRU1TTFZlcnNpb25NaW5vckVudltd
ID0gIkFOR0xFX01TTF9WRVJTSU9OX01JTk9SIjsKIAogbmFtZXNwYWNlCiB7CkBAIC00NzQsNDAg
KzQ3Niw5MiBAQCB1aW50MzJfdCBHZXREZXZpY2VWZW5kb3JJZChpZDxNVExEZXZpY2U+IG1ldGFs
RGV2aWNlKQogICAgIHJldHVybiB2ZW5kb3JJZDsKIH0KIAorc3RhdGljIE1UTExhbmd1YWdlVmVy
c2lvbiBHZXRVc2VyU2V0T3JIaWdoZXN0TVNMVmVyc2lvbihjb25zdCBNVExMYW5ndWFnZVZlcnNp
b24gY3VycmVudFZlcnNpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgbWFqb3Jfc3RyID0g
YW5nbGU6OkdldEVudmlyb25tZW50VmFyKGtBTkdMRU1TTFZlcnNpb25NYWpvckVudik7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgbWlub3Jfc3RyID0gYW5nbGU6OkdldEVudmlyb25tZW50VmFyKGtB
TkdMRU1TTFZlcnNpb25NaW5vckVudik7CisgICAgaWYgKG1ham9yX3N0ciAhPSAiIiAmJiBtaW5v
cl9zdHIgIT0gIiIpCisgICAgeworICAgICAgICBjb25zdCBpbnQgbWFqb3IgPSBzdGQ6OnN0b2ko
bWFqb3Jfc3RyKTsKKyAgICAgICAgY29uc3QgaW50IG1pbm9yID0gc3RkOjpzdG9pKG1pbm9yX3N0
cik7CisjaWYgIWRlZmluZWQoTkRFQlVHKQorICAgICAgICBOU0xvZyhAIkZvcmNpbmcgTVNMIFZl
cnNpb246IE1UTExhbmd1YWdlVmVyc2lvbiVkXyVkXG4iLCBtYWpvciwgbWlub3IpOworI2VuZGlm
CisgICAgICAgIHN3aXRjaCAobWFqb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMToK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1pbm9yKQorICAgICAgICAgICAgICAgIHsKKyNpZiAo
ZGVmaW5lZChfX0lQSE9ORV85XzApICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IF9fSVBIT05FXzlfMCkKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gTVRM
TGFuZ3VhZ2VWZXJzaW9uMV8wOworI2VuZGlmCisjaWYgKGRlZmluZWQoX19NQUNfMTBfMTEpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19NQUNfMTBfMTEpIHx8XAorICAg
IChkZWZpbmVkKF9fSVBIT05FXzlfMCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gX19JUEhPTkVfOV8wKSB8fFwKKyAgICAoZGVmaW5lZChfX1RWT1NfOV8wKSAmJiBfX1RW
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fVFZPU185XzApCisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMTogcmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjFfMTsKKyNlbmRpZgorI2lmIChk
ZWZpbmVkKF9fTUFDXzEwXzEyKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IF9fTUFDXzEwXzEyKSB8fFwKKyAgICAoZGVmaW5lZChfX0lQSE9ORV8xMF8wKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX0lQSE9ORV8xMF8wKSB8fFwKKyAgICAoZGVm
aW5lZChfX1RWT1NfMTBfMCkgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX1RW
T1NfMTBfMCkKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gTVRMTGFuZ3VhZ2VW
ZXJzaW9uMV8yOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQoMCAmJiAiVW5zdXBwb3J0ZWQgTVNMIE1pbm9yIExhbmd1
YWdlIFZlcnNpb24uIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIHN3aXRjaCAobWlub3IpCisg
ICAgICAgICAgICAgICAgeworI2lmIChkZWZpbmVkKF9fTUFDXzEwXzEzKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fTUFDXzEwXzEzKSB8fFwKKyAgICAoZGVmaW5lZChf
X0lQSE9ORV8xMV8wKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX0lQ
SE9ORV8xMV8wKSB8fFwKKyAgICAoZGVmaW5lZChfX1RWT1NfMTFfMCkgJiYgX19UVl9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSBfX1RWT1NfMTFfMCkKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAwOiByZXR1cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMl8wOworI2VuZGlmCisjaWYgKGRlZmluZWQo
X19NQUNfMTBfMTQpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19NQUNf
MTBfMTQpIHx8XAorICAgIChkZWZpbmVkKF9fSVBIT05FXzEyXzApICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IF9fSVBIT05FXzEyXzApIHx8XAorICAgIChkZWZpbmVkKF9f
VFZPU18xMl8wKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fVFZPU18xMl8w
KQorICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBNVExMYW5ndWFnZVZlcnNpb24y
XzE7CisjZW5kaWYKKyNpZiAoZGVmaW5lZChfX01BQ18xMF8xNSkgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSBfX01BQ18xMF8xNSkgfHxcCisgICAgKGRlZmluZWQoX19JUEhP
TkVfMTNfMCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19JUEhPTkVf
MTNfMCkgfHxcCisgICAgKGRlZmluZWQoX19UVk9TXzEzXzApICYmIF9fVFZfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gX19UVk9TXzEzXzApCisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjog
cmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjJfMjsKKyNlbmRpZgorI2lmIChkZWZpbmVkKF9fTUFD
XzExXzApICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19NQUNfMTFfMCkg
fHxcCisgICAgKGRlZmluZWQoX19JUEhPTkVfMTRfMCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gX19JUEhPTkVfMTRfMCkgfHxcCisgICAgKGRlZmluZWQoX19UVk9TXzE0
XzApICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19UVk9TXzE0XzApCisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjJfMzsKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0KDAgJiYgIlVuc3VwcG9ydGVkIE1TTCBNaW5vciBMYW5ndWFnZSBWZXJzaW9uLiIp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIlVuc3VwcG9ydGVkIE1TTCBN
YWpvciBMYW5ndWFnZSBWZXJzaW9uLiIpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBj
dXJyZW50VmVyc2lvbjsKK30KKwogQXV0b09iakNQdHI8aWQ8TVRMTGlicmFyeT4+IENyZWF0ZVNo
YWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgTlNPYmplY3QgKj4gKiBzdWJzdGl0dXRpb25NYWNyb3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRvT2JqQ1B0cjxO
U0Vycm9yICo+ICplcnJvcikKIHsKLSAgICByZXR1cm4gQ3JlYXRlU2hhZGVyTGlicmFyeShtZXRh
bERldmljZSwgc291cmNlLmNfc3RyKCksIHNvdXJjZS5zaXplKCksIGVycm9yKTsKKyAgICByZXR1
cm4gQ3JlYXRlU2hhZGVyTGlicmFyeShtZXRhbERldmljZSwgc291cmNlLmNfc3RyKCksIHNvdXJj
ZS5zaXplKCksIHN1YnN0aXR1dGlvbk1hY3JvcywgZXJyb3IpOwogfQogCi0jaWYgMAotc3RhdGlj
IE1UTExhbmd1YWdlVmVyc2lvbiBHZXRIaWdoZXN0U3VwcG9ydGVkTVNMVmVyc2lvbigpCitBdXRv
T2JqQ1B0cjxpZDxNVExMaWJyYXJ5Pj4gQ3JlYXRlU2hhZGVyTGlicmFyeShpZDxNVExEZXZpY2U+
IG1ldGFsRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9PYmpDUHRyPE5TRXJyb3IgKj4gKmVycm9yKQog
ewotICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL21ldGFs
L210bGxhbmd1YWdldmVyc2lvbj9sYW5ndWFnZT1vYmpjCi0gICAgaWYgKEFOR0xFX0FQUExFX0FW
QUlMQUJMRV9YQ0koMTEuMCwgMTQuMCwgMTQuMCkpCi0gICAgICAgIHJldHVybiBNVExMYW5ndWFn
ZVZlcnNpb24yXzM7Ci0gICAgaWYgKEFOR0xFX0FQUExFX0FWQUlMQUJMRV9YQ0koMTAuMTUsIDEz
LjAsIDEzLjApKQotICAgICAgICByZXR1cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMl8yOwotICAgIGlm
IChBTkdMRV9BUFBMRV9BVkFJTEFCTEVfWENJKDEwLjE1LCAxMy4wLCAxMi4wKSkKLSAgICAgICAg
cmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjJfMTsKLSAgICBpZiAoQU5HTEVfQVBQTEVfQVZBSUxB
QkxFX1hDSSgxMC4xMywgMTMuMCwgMTEuMCkpCi0gICAgICAgIHJldHVybiBNVExMYW5ndWFnZVZl
cnNpb24yXzA7Ci0gICAgaWYgKEFOR0xFX0FQUExFX0FWQUlMQUJMRV9YQ0koMTAuMTIsIDEzLjAs
IDEwLjApKQotICAgICAgICByZXR1cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMV8yOwotICAgIGlmIChB
TkdMRV9BUFBMRV9BVkFJTEFCTEVfWENJKDEwLjExLCAxMy4wLCA5LjApKQotICAgICAgICByZXR1
cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMV8xOwotIyAgICBpZiBUQVJHRVRfT1NfSU9TCi0gICAgaWYg
KEFOR0xFX0FQUExFX0FWQUlMQUJMRV9JKDkuMCkpCi0gICAgICAgIHJldHVybiBNVExMYW5ndWFn
ZVZlcnNpb24xXzA7Ci0jICAgIGVuZGlmCi0gICAgcmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjFf
MTsKKyAgICByZXR1cm4gQ3JlYXRlU2hhZGVyTGlicmFyeShtZXRhbERldmljZSwgc291cmNlLmNf
c3RyKCksIHNvdXJjZS5zaXplKCksQHt9LCBlcnJvcik7CiB9Ci0jZW5kaWYKIAogQXV0b09iakNQ
dHI8aWQ8TVRMTGlicmFyeT4+IENyZWF0ZVNoYWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNlPiBtZXRh
bERldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNPYmplY3Qg
Kj4gKiBzdWJzdGl0dXRpb25NYWNyb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBdXRvT2JqQ1B0cjxOU0Vycm9yICo+ICplcnJvck91dCkKIHsKICAg
ICBBTkdMRV9NVExfT0JKQ19TQ09QRQpAQCAtNTE5LDE5ICs1NzMsMjIgQEAgQXV0b09iakNQdHI8
aWQ8TVRMTGlicmFyeT4+IENyZWF0ZVNoYWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNlPiBtZXRhbERl
dmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmVlV2hlbkRvbmU6Tk9dOwogICAgICAgICBhdXRvIG9wdGlvbnMgICAgID0gW1tbTVRMQ29tcGls
ZU9wdGlvbnMgYWxsb2NdIGluaXRdIEFOR0xFX01UTF9BVVRPUkVMRUFTRV07CiAgICAgICAgIC8v
IE1hcmsgYWxsIHBvc2l0aW9ucyBpbiBWUyB3aXRoIGF0dHJpYnV0ZSBpbnZhcmlhbnQgYXMgbm9u
LW9wdGltaXphYmxlCi0jaWYgKGRlZmluZWQoX19NQUNfMTFfMCkgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01BWF9BTExPV0VEID49IF9fTUFDXzExXzApIHx8ICAgICAgICBcCi0gICAgKGRlZmluZWQo
X19JUEhPTkVfMTRfMCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBfX0lQ
SE9ORV8xNF8wKSB8fCBcCi0gICAgKGRlZmluZWQoX19UVk9TXzE0XzApICYmIF9fVFZfT1NfVkVS
U0lPTl9NQVhfQUxMT1dFRCA+PSBfX1RWT1NfMTRfMCkKKyNpZiAoZGVmaW5lZChfX01BQ18xMV8w
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fTUFDXzExXzApIHx8XAor
ICAgIChkZWZpbmVkKF9fSVBIT05FXzE0XzApICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IF9fSVBIT05FXzE0XzApIHx8XAorICAgIChkZWZpbmVkKF9fVFZPU18xNF8wKSAm
JiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fVFZPU18xNF8wKQogICAgICAgICBv
cHRpb25zLnByZXNlcnZlSW52YXJpYW5jZSA9IHRydWU7CiAjZWxzZQogICAgICAgICAvLyBObyBw
cmVzZXJ2ZUludmFyaWFuY2UgYXZhaWxhYmxlIGNvbXBpbGluZyBmcm9tIHNvdXJjZSwgc28ganVz
dCBkaXNhYmxlIGZhc3RtYXRoLgogICAgICAgICBvcHRpb25zLmZhc3RNYXRoRW5hYmxlZCA9IGZh
bHNlOwogI2VuZGlmCisgICAgICAgIG9wdGlvbnMubGFuZ3VhZ2VWZXJzaW9uID0gR2V0VXNlclNl
dE9ySGlnaGVzdE1TTFZlcnNpb24ob3B0aW9ucy5sYW5ndWFnZVZlcnNpb24pOwogICAgICAgICAv
LyBUT0RPKGpjdW5uaW5naGFtKTogd29ya2Fyb3VuZCBmb3IgaW50ZWwgZHJpdmVyIG5vdCBwcmVz
ZXJ2aW5nIGludmFyaWFuY2Ugb24gYWxsIHNoYWRlcnMKLSAgICAgICAgaWYgKFttZXRhbERldmlj
ZS5uYW1lIHJhbmdlT2ZTdHJpbmc6QCJJbnRlbCJdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisg
ICAgICAgIGNvbnN0IHVpbnQzMl90IHZlbmRvcl9pZCA9IEdldERldmljZVZlbmRvcklkKG1ldGFs
RGV2aWNlKTsKKyAgICAgICAgaWYgKHZlbmRvcl9pZCA9PSBhbmdsZTo6a1ZlbmRvcklEX0ludGVs
KQogICAgICAgICB7CiAgICAgICAgICAgICBvcHRpb25zLmZhc3RNYXRoRW5hYmxlZCA9IGZhbHNl
OwogICAgICAgICB9CisgICAgICAgIG9wdGlvbnMucHJlcHJvY2Vzc29yTWFjcm9zID0gc3Vic3Rp
dHV0aW9uTWFjcm9zOwogICAgICAgICBhdXRvIGxpYnJhcnkgPSBbbWV0YWxEZXZpY2UgbmV3TGli
cmFyeVdpdGhTb3VyY2U6bnNTb3VyY2Ugb3B0aW9uczpvcHRpb25zIGVycm9yOiZuc0Vycm9yXTsK
ICAgICAgICAgaWYgKGFuZ2xlOjpHZXRFbnZpcm9ubWVudFZhcihrQU5HTEVQcmludE1TTEVudilb
MF0gPT0gJzEnKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9ibGl0Lm1ldGFsIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL3NoYWRlcnMvYmxp
dC5tZXRhbAppbmRleCBhYmIwYWM2M2MzZDYzOWZjNDc4N2Y0NDZjNWY2NjM3ZjNkYjM4M2U5Li5l
MDJhOWI5OTA0ZjYwZDA4MjVlZmYyZTNjYTI1MzZmMDQ3ZDY5ZjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9i
bGl0Lm1ldGFsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9zaGFkZXJzL2JsaXQubWV0YWwKQEAgLTMyLDEyICszMiwxMCBAQCBzdHJ1Y3Qg
QmxpdFBhcmFtcwogICAgIGZsb2F0MiBzcmNUZXhDb29yZHNbM107CiAgICAgaW50IHNyY0xldmVs
OyAgLy8gU291cmNlIHRleHR1cmUgbGV2ZWwuCiAgICAgaW50IHNyY0xheWVyOyAgLy8gU291cmNl
IHRleHR1cmUgbGF5ZXIuCi0gICAgaW50IHNyY0xldmVsMjsgIC8vIFNvdXJjZSB0ZXh0dXJlIGxl
dmVsLgotICAgIGludCBzcmNMYXllcjI7ICAvLyBTb3VyY2UgdGV4dHVyZSBsYXllci4KICAgICBi
b29sIGRzdEZsaXBWaWV3cG9ydFg7CiAgICAgYm9vbCBkc3RGbGlwVmlld3BvcnRZOwogICAgIGJv
b2wgZHN0THVtaW5hbmNlOyAgLy8gZGVzdGluYXRpb24gdGV4dHVyZSBpcyBsdW1pbmFuY2UuIFVu
dXNlZCBieSBkZXB0aCAmIHN0ZW5jaWwgYmxpdHRpbmcuCi0gICAgdWludDhfdCBwYWRkaW5nWzld
OworICAgIHVpbnQ4X3QgcGFkZGluZ1sxM107CiB9OwogCiBzdHJ1Y3QgQmxpdFZTT3V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvc2hhZGVycy9mb3JtYXRfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL3NoYWRlcnMvZm9ybWF0X2F1dG9nZW4uaAppbmRleCBi
OTkxZTQ4ZjZhN2RmYzRkMjllOTRjOGE5YzY4MGQyNzVkMGNlMzVlLi44Mjc5NzM4YTMxNTg3MmVl
MzFhNTkxNDU5YmI0NTY2ZjM2MDg4ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9mb3JtYXRfYXV0b2dlbi5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9zaGFkZXJzL2Zvcm1hdF9hdXRvZ2VuLmgKQEAgLTEsNyArMSw3IEBACiAvLyBHRU5FUkFURUQg
RklMRSAtIERPIE5PVCBFRElULgogLy8gR2VuZXJhdGVkIGJ5IGdlbl9tdGxfaW50ZXJuYWxfc2hh
ZGVycy5weQogLy8KLS8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9tdGxfZGVmYXVsdF9z
aGFkZXJzX3NyY19hdXRvZ2VuLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9zaGFkZXJzL210bF9kZWZhdWx0X3NoYWRlcnNfc3JjX2F1dG9n
ZW4uaW5jCmluZGV4IGNhMDIwY2VlZjA5ZjUzZWM0NzQ3ZTYxMzU3NzM3ZjNkNzdhYWFiOGYuLjIz
MWZmY2NiZDU5MzEyMzcyOTZjOTI0MGVhZDAyZDdiNDZhMTkyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9zaGFkZXJzL210
bF9kZWZhdWx0X3NoYWRlcnNfc3JjX2F1dG9nZW4uaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9zaGFkZXJzL210bF9kZWZhdWx0X3No
YWRlcnNfc3JjX2F1dG9nZW4uaW5jCkBAIC0zMTksOCArMzE5LDYgQEAgc3RydWN0IEJsaXRQYXJh
bXMKICAgICBmbG9hdDIgc3JjVGV4Q29vcmRzWzNdOwogICAgIGludCBzcmNMZXZlbDsKICAgICBp
bnQgc3JjTGF5ZXI7Ci0gICAgaW50IHNyY0xldmVsMjsKLSAgICBpbnQgc3JjTGF5ZXIyOwogICAg
IGJvb2wgZHN0RmxpcFZpZXdwb3J0WDsKICAgICBib29sIGRzdEZsaXBWaWV3cG9ydFk7CiAgICAg
Ym9vbCBkc3RMdW1pbmFuY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423368</attachid>
            <date>2021-03-16 11:34:16 -0700</date>
            <delta_ts>2021-03-16 19:15:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222239-20210316113415.patch</filename>
            <type>text/plain</type>
            <size>210263</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggMzgwYWYyMjgwNDczNTI1NzJkMTNkZjNmMGU0OTQ1OTAwYjBkZmU1Yi4uNjZmMzBkMzE3YTZi
MjYxODEyN2UxMmMxNjBjZDUzMGQ5ZDhkY2ZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5MSBAQAorMjAyMS0wMy0wOSAgS3lsZSBQaWRkaW5ndG9uICA8a3BpZGRp
bmd0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb25zIGZyb20gQU5HTEUgTWV0YWwg
ZW5hYmxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIyMjM5CisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHJlc3NlZCBzZXZlcmFs
IGxhcmdlIGJpdHMgb2YgZnVuY2l0b25hbGl0eSB0aGF0IHdhcyBtaXNzaW5nIGZyb20gdGhlIG9y
aWdpbmFsIHBhdGNoLgorICAgICAgICAxKSBJbnRyb2R1Y2Ugc3VwcG9ydCBmb3IgVUJPJ3MuIFRo
aXMgcGF0Y2ggYWRkcyBhIERFUVAtY29uZm9ybWFudCBpbXBsZW1lbnRhdGlvbiBmb3IgVUJPIHN0
cnVjdHMuIFRoaXMgaW5jbHVkZXMgY2hhbmdlcyB0byB0aGUgdHJhbnNsYXRvciwKK2FuZCB0aGUg
ZnJvbnRlbmQuCisgICAgICAgIDIpIEludHJvZHVjZSBzdXBwb3J0IGZvciBUcmFuc2Zvcm0gZmVl
ZGJhY2sgdG8gdGhlIHRyYW5zbGF0b3IuIFdlIHVzZSBhIHNlcmllcyBvZiBzdWJzdGl0dXRpb24g
bWFjcm9zIGF0IHByb2dyYW0gbGluayB0aW1lIHRvIHByb2R1Y2UgYSB0cmFuc2Zvcm0tZmVlZGJh
Y2sgdmFyaWVudCBzaGFkZXIsIGFuZCB1c2UgYSB2ZXJ0ZXggcHJlLXBhc3MgdG8gZW11bGF0ZSB0
cmFuc2Zvcm0gZmVlZGJhY2suCisgICAgICAgIDMpIFZhcmlvdXMgZml4ZXMgdG8gaGFuZGxlIGEg
ZmV3IHdlYmdsMiBhc3NlcnRzLCBzdWNoIGFzIGxhcmdlIHVuaWZvcm0gYnVmZmVycy4gVGhpcyBj
aGFuZ2UgIChpbiBQcm9ncmFtTXRsLm1tKSB3aWxsIHJlc2VydmUgYSB1bmlmb3JtIGJ1ZmZlciBv
ZiB0d2ljZSB0aGUgbm9ybWFsIHNpemUgKDRrYikgaWYgdGhlIHByb2dyYW0gdW5pZm9ybXMgZXhj
ZWVkIHRoYXQgbGltaXQuIChGaXhlcyB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9nbHNsL2J1Z3Mv
Y29tcGxleC1nbHNsLWRvZXMtbm90LWNyYXNoLmh0bWwgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uv
Z2xzbC9taXNjL3NoYWRlci13aXRoLXRvby1tYW55LXVuaWZvcm1zLmh0bWwgd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvdW5pZm9ybXMvZ2wtdW5pZm9ybS1hcnJheXMuaHRtbCkKKworICAgICAgICBS
ZXZpZXdlZCBieSBKb24gTGVlLgorCisgICAgICAgICogQU5HTEUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBpbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzTXRsLmg6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyLmduaToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9CYXNlVHlwZXMuaDoKKyAgICAgICAgKHNoOjpnZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5jcHA6Cisg
ICAgICAgIChzaDo6VHJhbnNsYXRvck1ldGFsRGlyZWN0OjppbnNlcnRTYW1wbGVNYXNrV3JpdGlu
Z0xvZ2ljKToKKyAgICAgICAgKHNoOjptZXRhbFNoYWRlclR5cGVGcm9tR0xTTCk6CisgICAgICAg
IChzaDo6VHJhbnNsYXRvck1ldGFsRGlyZWN0Ojp0cmFuc2xhdGVJbXBsKToKKyAgICAgICAgKHNo
OjpUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRyYW5zbGF0ZSk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0Lmg6CisgICAgICAgIChzaDo6VHJh
bnNsYXRvck1ldGFsUmVmbGVjdGlvbjo6VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbik6CisgICAg
ICAgIChzaDo6VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbjo6YWRkVXNlclVuaWZvcm1CdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uOjphZGRVbmlm
b3JtQnVmZmVyQmluZGluZyk6CisgICAgICAgIChzaDo6VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlv
bjo6Z2V0VXNlclVuaWZvcm1CdWZmZXJCaW5kaW5ncyBjb25zdCk6CisgICAgICAgIChzaDo6VHJh
bnNsYXRvck1ldGFsUmVmbGVjdGlvbjo6Z2V0VXNlclVuaWZvcm1CdWZmZXJCaW5kaW5nIGNvbnN0
KToKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uOjpnZXRVbmlmb3JtQnVm
ZmVyQmluZGluZyBjb25zdCk6CisgICAgICAgIChzaDo6VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlv
bjo6cmVzZXQpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JN
ZXRhbERpcmVjdC9FbWl0TWV0YWwuY3BwOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6On5H
ZW5NZXRhbFRyYXZlcnNlcik6CisgICAgICAgIChHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdE9wZW5p
bmdQb2ludGVyUGFyZW4pOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRDbG9zaW5n
UG9pbnRlclBhcmVuKToKKyAgICAgICAgKEdldE9wZXJhdG9yU3RyaW5nKToKKyAgICAgICAgKEdl
bk1ldGFsVHJhdmVyc2VyOjplbWl0UG9zdFF1YWxpZmllcik6CisgICAgICAgIChHZW5NZXRhbFRy
YXZlcnNlcjo6ZW1pdFR5cGUpOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRGaWVs
ZERlY2xhcmF0aW9uKToKKyAgICAgICAgKEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0QXR0cmlidXRl
RGVjbGFyYXRpb24pOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRVbmlmb3JtQnVm
ZmVyRGVjbGFyYXRpb24pOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRTdHJ1Y3RE
ZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdE9yZGluYXJ5VmFy
aWFibGVEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5NZXRhbFRyYXZlcnNlcjo6dmlzaXRTeW1i
b2wpOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KToKKyAgICAgICAg
KEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0RnVuY3Rpb25TaWduYXR1cmUpOgorICAgICAgICAoR2Vu
TWV0YWxUcmF2ZXJzZXI6OmVtaXRGdW5jdGlvblJldHVybik6CisgICAgICAgIChHZW5NZXRhbFRy
YXZlcnNlcjo6ZW1pdEZ1bmN0aW9uUGFyYW1ldGVyKToKKyAgICAgICAgKEdlbk1ldGFsVHJhdmVy
c2VyOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5NZXRhbFRyYXZlcnNl
cjo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoUmVxdWlyZXNTZW1pY29sb25UZXJtaW5hdG9y
KToKKyAgICAgICAgKEdlbk1ldGFsVHJhdmVyc2VyOjp2aXNpdEJsb2NrKToKKyAgICAgICAgKEdl
bk1ldGFsVHJhdmVyc2VyOjp2aXNpdEJyYW5jaCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ZpeFR5cGVDb25zdHJ1Y3RvcnMuY3BwOgor
ICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9J
bnRyb2R1Y2VWZXJ0ZXhJbmRleElELmNwcDogQWRkZWQuCisgICAgICAgIChzaDo6UmV3cml0ZXI6
OlJld3JpdGVyKToKKyAgICAgICAgKHNoOjpJbnRyb2R1Y2VWZXJ0ZXhBbmRJbnN0YW5jZUluZGV4
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvSW50cm9kdWNlVmVydGV4SW5kZXhJRC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTGF5b3V0LmNwcDoKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTGF5b3V0Lmg6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L01vZGlmeVN0cnVjdC5jcHA6CisgICAgICAgIChzaDo6VHJ5Q3JlYXRlTW9kaWZpZWRTdHJ1Y3Qp
OgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9Nb2RpZnlTdHJ1Y3QuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yTWV0YWxEaXJlY3QvUGlwZWxpbmUuY3BwOgorICAgICAgICAoUGlwZWxpbmU6OnVzZXMg
Y29uc3QpOgorICAgICAgICAoUGlwZWxpbmU6OmdldFN0cnVjdFR5cGVOYW1lIGNvbnN0KToKKyAg
ICAgICAgKFBpcGVsaW5lOjpnZXRTdHJ1Y3RJbnN0YW5jZU5hbWUgY29uc3QpOgorICAgICAgICAo
QWxsb3dQYWNraW5nKToKKyAgICAgICAgKEFsbG93UGFkZGluZyk6CisgICAgICAgIChTYXR1cmF0
ZVZlY3Rvck9mKToKKyAgICAgICAgKFBpcGVsaW5lOjpleHRlcm5hbFN0cnVjdE1vZGlmeUNvbmZp
ZyBjb25zdCk6CisgICAgICAgIChQaXBlbGluZTo6YWx3YXlzUmVxdWlyZXNMb2NhbFZhcmlhYmxl
RGVjbGFyYXRpb25Jbk1haW4gY29uc3QpOgorICAgICAgICAoUGlwZWxpbmU6OmlzUGlwZWxpbmVP
dXQgY29uc3QpOgorICAgICAgICAoUGlwZWxpbmU6OmV4dGVybmFsQWRkcmVzc1NwYWNlIGNvbnN0
KToKKyAgICAgICAgKFBpcGVsaW5lU3RydWN0czo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1BpcGVsaW5lLmg6
CisgICAgICAgIChzaDo6UGlwZWxpbmVTY29wZWQ6Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAq
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFtUHJl
bHVkZS5jcHA6CisgICAgICAgIChzaDo6UHJvZ3JhbVByZWx1ZGU6OlByb2dyYW1QcmVsdWRlKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
UHJvZ3JhbVByZWx1ZGUuaDoKKyAgICAgICAgKHNoOjpQcm9ncmFtUHJlbHVkZUNvbmZpZzo6UHJv
Z3JhbVByZWx1ZGVDb25maWcpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9SZWR1Y2VJbnRlcmZhY2VCbG9ja3MuY3BwOgorICAgICAgICAo
c2g6OlJlZHVjZXI6OlJlZHVjZXIpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlUGlwZWxpbmVzLmNwcDoKKyAgICAgICAgKHNo
OjpHZW5lcmF0ZVBpcGVsaW5lU3RydWN0OjpleGVjKToKKyAgICAgICAgKHNoOjpHZW5lcmF0ZVBp
cGVsaW5lU3RydWN0OjpjcmVhdGVJbnRlcm5hbFBpcGVsaW5lU3RydWN0KToKKyAgICAgICAgKHNo
OjpQaXBlbGluZUZ1bmN0aW9uRW52OjpnZXRVcGRhdGVkRnVuY3Rpb24pOgorICAgICAgICAoc2g6
OlJld3JpdGVQaXBlbGluZXMpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9TeW1ib2xFbnYuY3BwOgorICAgICAgICAoU3ltYm9sRW52Ojpy
ZW1vdmVTcGFjZSk6CisgICAgICAgIChTeW1ib2xFbnY6OnJlbW92ZVBvaW50ZXIpOgorICAgICAg
ICAoU3ltYm9sRW52OjptYXJrQXNVQk8pOgorICAgICAgICAoU3ltYm9sRW52Ojppc1VCTyBjb25z
dCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGly
ZWN0L1N5bWJvbEVudi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVf
b3BzL05hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChzaDo6
TmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL3RyZWVfb3BzL05hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmg6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwOgorICAgICAgICAoc2g6Oklz
QnVpbHRpbk91dHB1dFZhcmlhYmxlKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL0NvbnRleHRDR0wuY3BwOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9CdWZmZXJNdGwuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
QnVmZmVyTXRsLm1tOgorICAgICAgICAocng6OkluZGV4Q29udmVyc2lvbkJ1ZmZlck10bDo6SW5k
ZXhDb252ZXJzaW9uQnVmZmVyTXRsKToKKyAgICAgICAgKHJ4OjpJbmRleENvbnZlcnNpb25CdWZm
ZXJNdGw6OmdldFJhbmdlRm9yQ29udmVydGVkQnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tOgorICAgICAgICAocng6OkNvbnRleHRNdGw6Omhh
bmRsZURpcnR5RHJpdmVyVW5pZm9ybXMpOgorICAgICAgICAocng6OkNvbnRleHRNdGw6OmhhbmRs
ZURpcnR5R3JhcGhpY3NUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFbXVsYXRpb24pOgorICAgICAg
ICAocng6OkNvbnRleHRNdGw6OmhhbmRsZURpcnR5RGVwdGhCaWFzKToKKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbToKKyAgICAgICAgKHJ4OjpEaXNw
bGF5TXRsOjpnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24gY29uc3QpOgorICAgICAgICAocng6OkRp
c3BsYXlNdGw6OmdlbmVyYXRlQ29uZmlncyk6CisgICAgICAgIChyeDo6RGlzcGxheU10bDo6ZW5z
dXJlQ2Fwc0luaXRpYWxpemVkIGNvbnN0KToKKyAgICAgICAgKHJ4OjpEaXNwbGF5TXRsOjppbml0
aWFsaXplRmVhdHVyZXMpOgorICAgICAgICAocng6OkRpc3BsYXlNdGw6OmluaXRpYWxpemVTaGFk
ZXJMaWJyYXJ5KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRnJhbWVC
dWZmZXJNdGwuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3Jh
bU10bC5oOgorICAgICAgICAocng6OlByb2dyYW1NdGw6OmNyZWF0ZU1zbFNoYWRlckxpYik6Cisg
ICAgICAgIChyeDo6UHJvZ3JhbU10bDo6Z2V0WGZiQmluZGluZ3MgY29uc3QpOgorICAgICAgICAo
cng6OlByb2dyYW1NdGw6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgY29uc3QpOgorICAgICAg
ICAocng6OlByb2dyYW1NdGw6OmdldFhmYk1zbFNvdXJjZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW06CisgICAgICAg
IChyeDo6UHJvZ3JhbU10bDo6UHJvZ3JhbU10bCk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6
ZGVzdHJveSk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6cmVzZXQpOgorICAgICAgICAocng6
OlByb2dyYW1NdGw6OnNhdmVUcmFuc2xhdGVkU2hhZGVycyk6CisgICAgICAgIChyeDo6UHJvZ3Jh
bU10bDo6bG9hZFRyYW5zbGF0ZWRTaGFkZXJzKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjps
aW5rSW1wbFNwaXJ2KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpsaW5rSW1wbERpcmVjdCk6
CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6bGlua0ltcGwpOgorICAgICAgICAocng6OlByb2dy
YW1NdGw6OmxpbmtUcmFuc2xhdGVkU2hhZGVycyk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6
Z2V0QnVmZmVyUG9vbCk6CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6cmVzaXplRGVmYXVsdFVu
aWZvcm1CbG9ja3NNZW1vcnkpOgorICAgICAgICAocng6OlByb2dyYW1NdGw6OmdldFNwZWNpYWxp
emVkU2hhZGVyKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpjcmVhdGVNc2xTaGFkZXJMaWIp
OgorICAgICAgICAocng6OlByb2dyYW1NdGw6OmNvbW1pdFVuaWZvcm1zKToKKyAgICAgICAgKiBz
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUXVlcnlNdGwuaDoKKyAgICAgICAgKiBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVyQnVmZmVyTXRsLm1tOgorICAgICAgICAocng6OlJl
bmRlcmJ1ZmZlck10bDo6c2V0U3RvcmFnZUltcGwpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9SZW5kZXJUYXJnZXRNdGwubW06CisgICAgICAgIChyeDo6UmVuZGVyVGFy
Z2V0TXRsOjpzZXRXaXRoSW1wbGljaXRNU1RleHR1cmUpOgorICAgICAgICAocng6OlJlbmRlclRh
cmdldE10bDo6cmVzZXQpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9T
aGFkZXJNdGwubW06CisgICAgICAgIChyeDo6U2hhZGVyTXRsOjpjb21waWxlKToKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5tbToKKyAgICAgICAgKHJ4
OjpXaW5kb3dTdXJmYWNlTXRsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5tbToKKyAgICAgICAgKHJ4OjpUZXh0dXJlTXRsOjpl
bnN1cmVTYW1wbGVyU3RhdGVDcmVhdGVkKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlTXRsOjpzZXRQ
ZXJTbGljZVN1YkltYWdlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlTXRsOjppbml0aWFsaXplQ29u
dGVudHMpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UcmFuc2Zvcm1G
ZWVkYmFja010bC5tbToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVmVy
dGV4QXJyYXlNdGwubW06CisgICAgICAgIChyeDo6VmVydGV4QXJyYXlNdGw6OmdldEluZGV4QnVm
ZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5o
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29uc3RhbnRzLmg6
CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfbWFwLmpz
b246CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFi
bGVfYXV0b2dlbi5tbToKKyAgICAgICAgKHJ4OjptdGw6OkZvcm1hdDo6aW5pdCk6CisgICAgICAg
ICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdXRpbHMubW06CisgICAg
ICAgIChyeDo6bXRsOjpGb3JtYXRUYWJsZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91dGlscy5oOgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMubW06Cisg
ICAgICAgIChyeDo6bXRsOjp1cGRhdGVTaGFkZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKHJ4Ojpt
dGw6OlN1YnN0aXR1dGVUcmFuc2Zvcm1GZWVkYmFja01hcmtlcnMpOgorICAgICAgICAocng6Om10
bDo6R2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdPdXRwdXQpOgorICAgICAgICAocng6
Om10bDo6R2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja0VtdWxhdGlvbk91dHB1dHMpOgorICAgICAg
ICAocng6Om10bDo6Z2V0UmVmbGVjdGlvbkZyb21Db21waWxlcik6CisgICAgICAgIChyeDo6bXRs
OjpHbHNsYW5nR2V0TVNMKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
bXRsX3JlbmRlcl91dGlscy5tbToKKyAgICAgICAgKHJ4OjptdGw6OlRyYW5zZm9ybUZlZWRiYWNr
VXRpbHM6OmNyZWF0ZU1zbFhmYkxpYnJhcnkpOgorICAgICAgICAocng6Om10bDo6VHJhbnNmb3Jt
RmVlZGJhY2tVdGlsczo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tSZW5kZXJQaXBlbGluZSk6CisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZXNvdXJjZXMuaDoKKyAgICAg
ICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5tbToKKyAgICAg
ICAgKHJ4OjptdGw6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9tdGxfc3RhdGVfY2FjaGUubW06CisgICAgICAgIChyeDo6bXRsOjpTYW1w
bGVyRGVzYzo6U2FtcGxlckRlc2MpOgorICAgICAgICAocng6Om10bDo6U2FtcGxlckRlc2M6OnJl
c2V0KToKKyAgICAgICAgKHJ4OjptdGw6OlJlbmRlclBpcGVsaW5lQ2FjaGU6OlJlbmRlclBpcGVs
aW5lQ2FjaGUpOgorICAgICAgICAocng6Om10bDo6UmVuZGVyUGlwZWxpbmVDYWNoZTo6Y3JlYXRl
UmVuZGVyUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL210bF91dGlscy5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9t
dGxfdXRpbHMubW06CisgICAgICAgIChyeDo6bXRsOjpHZXRVc2VyU2V0T3JIaWdoZXN0TVNMVmVy
c2lvbik6CisgICAgICAgIChyeDo6bXRsOjpDcmVhdGVTaGFkZXJMaWJyYXJ5KToKKyAgICAgICAg
KHJ4OjptdGw6OkdldEhpZ2hlc3RTdXBwb3J0ZWRNU0xWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9ibGl0Lm1ldGFsOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9zaGFkZXJzL2Zvcm1hdF9hdXRvZ2Vu
Lmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL3NoYWRlcnMvbXRsX2Rl
ZmF1bHRfc2hhZGVyc19zcmNfYXV0b2dlbi5pbmM6CisKIDIwMjEtMDMtMDMgIEt5bGUgUGlkZGlu
Z3RvbiAgPGtwaWRkaW5ndG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IERlcHRoMjRf
U3RlbmNpbDggc2ltdWxhdGlvbiBpbiB0aGUgTVRMU2ltdWxhdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBhZWU4NjI3NzhhZTJjNDI4MzJlZGIyOGM0MzQyMjIzOWY0NmJjYTkxLi42YzgxMTVlNmMwNzc1
ZjM0MDFiNmM3ZjE4YWExZWYwNjRmODdjNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExODMsNiAr
MTE4MywxMCBAQAogCQlGRjJEMkY1NDI1QzhCMTRBMDAyRkI2OTkgLyogRml4VHlwZUNvbnN0cnVj
dG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYy
RDJGNTIyNUM4QjE0QTAwMkZCNjk5IC8qIEZpeFR5cGVDb25zdHJ1Y3RvcnMuaCAqLzsgfTsKIAkJ
RkYyRDJGNTUyNUM4QjE0QTAwMkZCNjk5IC8qIEZpeFR5cGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMkQyRjUyMjVDOEIxNEEw
MDJGQjY5OSAvKiBGaXhUeXBlQ29uc3RydWN0b3JzLmggKi87IH07CiAJCUZGMkQyRjU2MjVDOEIx
NEEwMDJGQjY5OSAvKiBGaXhUeXBlQ29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMkQyRjUzMjVDOEIxNEEwMDJGQjY5OSAvKiBG
aXhUeXBlQ29uc3RydWN0b3JzLmNwcCAqLzsgfTsKKwkJRkYzMzI4NDUyNUY2Q0E5RTAwNUZERkM0
IC8qIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjMzMjg0MzI1RjZDQTlEMDA1RkRGQzQgLyogTmFtZU5h
bWVsZXNzVW5pZm9ybUJ1ZmZlcnMuaCAqLzsgfTsKKwkJRkYzMzI4NDYyNUY2Q0E5RTAwNUZERkM0
IC8qIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMzMyODQ0MjVGNkNBOUQwMDVGREZDNCAvKiBOYW1l
TmFtZWxlc3NVbmlmb3JtQnVmZmVycy5jcHAgKi87IH07CisJCUZGMzMyODQ5MjVGNkNBQjkwMDVG
REZDNCAvKiBJbnRyb2R1Y2VWZXJ0ZXhJbmRleElELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMzMyODQ3MjVGNkNBQjkwMDVGREZDNCAvKiBJbnRy
b2R1Y2VWZXJ0ZXhJbmRleElELmNwcCAqLzsgfTsKKwkJRkYzMzI4NEEyNUY2Q0FCOTAwNUZERkM0
IC8qIEludHJvZHVjZVZlcnRleEluZGV4SUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZGMzMyODQ4MjVGNkNBQjkwMDVGREZDNCAvKiBJbnRyb2R1Y2VW
ZXJ0ZXhJbmRleElELmggKi87IH07CiAJCUZGODFGRUQwMjU4MThENjgwMDg5NEUyNCAvKiBtdGxf
Z2xzbGFuZ191dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkY4MUZFODAyNTgxOEQ2ODAwODk0RTI0IC8qIG10bF9nbHNsYW5nX3V0aWxzLmggKi87
IH07CiAJCUZGODFGRUQxMjU4MThENjgwMDg5NEUyNCAvKiBQcm9ncmFtTXRsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjgxRkU4MTI1ODE4RDY4MDA4
OTRFMjQgLyogUHJvZ3JhbU10bC5oICovOyB9OwogCQlGRjgxRkVEMjI1ODE4RDY4MDA4OTRFMjQg
LyogRGlzcGxheU10bF9hcGkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZGODFGRTgyMjU4MThENjgwMDg5NEUyNCAvKiBEaXNwbGF5TXRsX2FwaS5oICov
OyB9OwpAQCAtMjE3Miw2ICsyMTc2LDEwIEBACiAJCUZCMzlEMkJGMTIwMEYzRTYwMDA4OEU2OSAv
KiBTaGFkZXJMYW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBTaGFkZXJM
YW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGMkQyRjUyMjVDOEIxNEEwMDJG
QjY5OSAvKiBGaXhUeXBlQ29uc3RydWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpeFR5cGVDb25z
dHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkYyRDJGNTMyNUM4QjE0
QTAwMkZCNjk5IC8qIEZpeFR5cGVDb25zdHJ1Y3RvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rml4VHlwZUNvbnN0cnVjdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZG
MzMyODQzMjVGNkNBOUQwMDVGREZDNCAvKiBOYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjMzMjg0NDI1RjZDQTlEMDA1RkRG
QzQgLyogTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRjMzMjg0NzI1RjZDQUI5MDA1RkRGQzQgLyogSW50cm9k
dWNlVmVydGV4SW5kZXhJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRyb2R1Y2VWZXJ0ZXhJbmRleElELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkYzMzI4NDgyNUY2Q0FCOTAwNUZERkM0IC8qIEludHJvZHVjZVZlcnRleEluZGV4SUQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50cm9kdWNlVmVydGV4SW5kZXhJRC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjgxRkU4MDI1ODE4RDY4MDA4OTRFMjQg
LyogbXRsX2dsc2xhbmdfdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
bXRsX2dsc2xhbmdfdXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY4MUZF
ODEyNTgxOEQ2ODAwODk0RTI0IC8qIFByb2dyYW1NdGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvZ3JhbU10bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RjgxRkU4MjI1ODE4RDY4MDA4OTRFMjQgLyogRGlzcGxheU10bF9hcGkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheU10bF9hcGkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyNDMsNyArMjI1MSw2IEBACiAJCUZGODFGRjE1MjU4MTkwQ0EwMDg5NEUy
NCAvKiBUcmFuc2xhdG9yTWV0YWxEaXJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHJhbnNsYXRvck1ldGFsRGlyZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZGODFGRjE2MjU4MTkwQ0EwMDg5NEUyNCAvKiBUcmFuc2xhdG9yTWV0YWxEaXJlY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNsYXRvck1ldGFsRGly
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY4MUZGMTcyNTgxOTBDQTAw
ODk0RTI0IC8qIFN0YXRpY1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RhdGljVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRjgxRkYxODI1ODE5
MENBMDA4OTRFMjQgLyogVHJhbnNsYXRvck1ldGFsRGlyZWN0ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFRyYW5zbGF0b3JNZXRhbERpcmVjdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkY4MUZGMTkyNTgxOTBDQTAwODk0RTI0IC8qIFRyYW5zbGF0b3JNZXRhbFV0aWxzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zbGF0b3JNZXRhbFV0aWxzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY4MUZGMUEyNTgxOTBDQTAwODk0RTI0
IC8qIFRyYW5zbGF0b3JNZXRhbFV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRyYW5zbGF0b3JNZXRhbFV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZGODFGRjIxMjU4MTkxOTcwMDg5NEUyNCAvKiBOYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjMzOCw3ICsyMzQ1LDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJRkY4MUZGMjAyNTgxOTE5NzAwODk0RTI0IC8qIFRyYW5zbGF0b3JNZXRhbERpcmVjdCAq
LywKLQkJCQlGRjgxRkYxODI1ODE5MENBMDA4OTRFMjQgLyogVHJhbnNsYXRvck1ldGFsRGlyZWN0
ICovLAogCQkJCTVDQkQ1OTY5MjI4MjZBMDAwMDJCMjJBQSAvKiB0cmVlb3BzICovLAogCQkJCTVD
NTVENkVBMjI4MjZDOTgwMEI1QkEyQyAvKiB0cmVldXRpbCAqLywKIAkJCQk1QzFEQkJGQjFCMDQz
NzVGMDAyMzU1NTIgLyogQVNUTWV0YWRhdGFITFNMLmNwcCAqLywKQEAgLTMwODMsNiArMzA4OSw4
IEBACiAJCQkJNUM1NUQ2MUYyMjgyNkI5NDAwQjVCQTJDIC8qIEluaXRpYWxpemVWYXJpYWJsZXMu
aCAqLywKIAkJCQk1QzU1RDYzRDIyODI2QjlCMDBCNUJBMkMgLyogTmFtZUVtYmVkZGVkVW5pZm9y
bVN0cnVjdHMuY3BwICovLAogCQkJCTVDNTVENjBEMjI4MjZCOTEwMEI1QkEyQyAvKiBOYW1lRW1i
ZWRkZWRVbmlmb3JtU3RydWN0cy5oICovLAorCQkJCUZGMzMyODQ0MjVGNkNBOUQwMDVGREZDNCAv
KiBOYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5jcHAgKi8sCisJCQkJRkYzMzI4NDMyNUY2Q0E5
RDAwNUZERkM0IC8qIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmggKi8sCiAJCQkJNUM1NUQ2
NEEyMjgyNkI5RTAwQjVCQTJDIC8qIFBydW5lRW1wdHlDYXNlcy5jcHAgKi8sCiAJCQkJNUM1NUQ2
MUIyMjgyNkI5MzAwQjVCQTJDIC8qIFBydW5lRW1wdHlDYXNlcy5oICovLAogCQkJCTVDNTVENjEy
MjI4MjZCOTEwMEI1QkEyQyAvKiBQcnVuZU5vT3BzLmNwcCAqLywKQEAgLTM1ODgsNiArMzU5Niw4
IEBACiAJCQkJRkY4MUZGNEMyNTgxOTE5NzAwODk0RTI0IC8qIEhvaXN0Q29uc3RhbnRzLmggKi8s
CiAJCQkJRkY4MUZGNTEyNTgxOTE5NzAwODk0RTI0IC8qIElkR2VuLmNwcCAqLywKIAkJCQlGRjgx
RkYzODI1ODE5MTk3MDA4OTRFMjQgLyogSWRHZW4uaCAqLywKKwkJCQlGRjMzMjg0NzI1RjZDQUI5
MDA1RkRGQzQgLyogSW50cm9kdWNlVmVydGV4SW5kZXhJRC5jcHAgKi8sCisJCQkJRkYzMzI4NDgy
NUY2Q0FCOTAwNUZERkM0IC8qIEludHJvZHVjZVZlcnRleEluZGV4SUQuaCAqLywKIAkJCQlGRjgx
RkYzMjI1ODE5MTk3MDA4OTRFMjQgLyogTGF5b3V0LmNwcCAqLywKIAkJCQlGRjgxRkY0MDI1ODE5
MTk3MDA4OTRFMjQgLyogTGF5b3V0LmggKi8sCiAJCQkJRkY4MUZGNUEyNTgxOTE5NzAwODk0RTI0
IC8qIE1hcEZ1bmN0aW9uc1RvRGVmaW5pdGlvbnMuY3BwICovLApAQCAtNDI1Miw2ICs0MjYyLDcg
QEAKIAkJCQk1QzU1RDcwODIyODI2Q0IzMDBCNUJBMkMgLyogSW50ZXJtTm9kZVBhdHRlcm5NYXRj
aGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRjgxRkY5RTI1ODFBM0MyMDA4OTRFMjQgLyogSW50
ZXJtUmVidWlsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MDEyMjgyNkNCMzAwQjVCQTJD
IC8qIEludGVybVRyYXZlcnNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRjMzMjg0QTI1RjZDQUI5
MDA1RkRGQzQgLyogSW50cm9kdWNlVmVydGV4SW5kZXhJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNDRDU5NzcyMjg0RkE4MzAwMThGMkQ4IC8qIElPU3VyZmFjZVN1cmZhY2VDR0wuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxM0JDRTU1MjM2MTEzM0EwMEZDMzlFNSAvKiBJT1N1cmZhY2VTdXJmYWNl
RUFHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkY4MUZFRjQyNTgxOEQ2OTAwODk0RTI0IC8qIElP
U3VyZmFjZVN1cmZhY2VNdGwuaCBpbiBIZWFkZXJzICovLApAQCAtNDI5MCw2ICs0MzAxLDcgQEAK
IAkJCQlGRjgxRkY1RTI1ODE5MTk3MDA4OTRFMjQgLyogTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM1NUQ2NjkyMjgyNkI5RjAwQjVCQTJDIC8qIE5hbWVFbWJlZGRlZFVuaWZvcm1TdHJ1Y3Rz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkEwQzJDODI1Q0I2QTc3MDAxMDUzMDYgLyogTmFtZUVt
YmVkZGVkVW5pZm9ybVN0cnVjdHNNZXRhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkYzMzI4NDUy
NUY2Q0E5RTAwNUZERkM0IC8qIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMzAzMDcwQjIzMDVGNkI1MDAyREE5NzIgLyogbm9fZGVzdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MDcyMjgyNkNCMzAwQjVCQTJDIC8qIE5vZGVTZWFyY2gu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZGODFGRjlCMjU4MUEzQzIwMDg5NEUyNCAvKiBOb2RlVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODExLDYgKzQ4MjMsNyBAQAogCQkJCTVDNTVENzA0MjI4
MjZDQjMwMEI1QkEyQyAvKiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkY4MUZGOUQyNTgxQTNDMjAwODk0RTI0IC8qIEludGVybVJlYnVpbGQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ3MDIyMjgyNkNCMzAwQjVCQTJDIC8qIEludGVybVRyYXZl
cnNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZGMzMyODQ5MjVGNkNBQjkwMDVGREZDNCAvKiBJ
bnRyb2R1Y2VWZXJ0ZXhJbmRleElELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQ0Q1OTc5MjI4
NEZBODMwMDE4RjJEOCAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxM0JDRTVDMjM2MTEzM0EwMEZDMzlFNSAvKiBJT1N1cmZhY2VTdXJmYWNlRUFHTC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUZGODFGRUVEMjU4MThENjkwMDg5NEUyNCAvKiBJT1N1cmZhY2VT
dXJmYWNlTXRsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00ODQ2LDYgKzQ4NTksNyBAQAogCQkJCUZG
ODFGRjVCMjU4MTkxOTcwMDg5NEUyNCAvKiBOYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
NTVENkI2MjI4MjZCQzgwMEI1QkEyQyAvKiBOYW1lRW1iZWRkZWRVbmlmb3JtU3RydWN0cy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRkEwQzJDNzI1Q0I2QTc3MDAxMDUzMDYgLyogTmFtZUVtYmVk
ZGVkVW5pZm9ybVN0cnVjdHNNZXRhbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRjMzMjg0NjI1
RjZDQTlFMDA1RkRGQzQgLyogTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzE1RUJEQkYxRkNFNDRCRjAwQUM3QTg5IC8qIG51bGxfZnVuY3Rpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDQ0Q1OTY5MjI4NEY3OTYwMDE4RjJEOCAvKiBPYnNlcnZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkMzMzFCMDQzNzVGMDAyMzU1NTIgLyogT3Bl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzTXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzTXRsLmgKaW5kZXggOWEwYmVlMDM3YTg5ZjMx
YzhkODU3MWE1YzAxMzJjZjdmMDlmYjFhOS4uYmFmNzdlYTA4M2MyYTQ4YmJmZDQ1Mzc3MWExOWRk
ZGUxZmM1ZWUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9w
bGF0Zm9ybS9GZWF0dXJlc010bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvcGxhdGZvcm0vRmVhdHVyZXNNdGwuaApAQCAtMTE1LDYgKzExNSwxMSBAQCBzdHJ1Y3QgRmVh
dHVyZXNNdGwgOiBGZWF0dXJlU2V0QmFzZQogICAgIEZlYXR1cmUgZW11bGF0ZVRyYW5zZm9ybUZl
ZWRiYWNrID0gewogICAgICAgICAiZW11bGF0ZV90cmFuc2Zvcm1fZmVlZGJhY2siLCBGZWF0dXJl
Q2F0ZWdvcnk6Ok1ldGFsRmVhdHVyZXMsCiAgICAgICAgICJUdXJuIHRoaXMgb24gdG8gYWxsb3cg
dHJhbnNmb3JtIGZlZWRiYWNrIGluIE1ldGFsIHVzaW5nIGEgMi1wYXNzIFZTIGZvciBHTEVTMy4i
LCAmbWVtYmVyc307CisgICAgCisgICAgRmVhdHVyZSByZXdyaXRlUm93TWFqb3JNYXRyaWNlcyA9
IHsKKyAgICAgICAgICAgICJyZXdyaXRlX3Jvd19tYWpvcl9tYXRyaWNlcyIsIEZlYXR1cmVDYXRl
Z29yeTo6TWV0YWxGZWF0dXJlcywKKyAgICAgICAgICAgICJSZXdyaXRlIHJvdyBtYWpvciBtYXRy
aWNlcyBpbiBzaGFkZXJzIGFzIGNvbHVtbiBtYWpvci4iLAorICAgICAgICAgICAgJm1lbWJlcnN9
OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyLmduaQppbmRleCBmMmJhYzk3MGM3ZDQxM2EyNjhlNWRiODcxOWE1NWQzZmU0OWI3
MTc1Li5kOTcyZDliZGIxNmRkNzZiMjdjMmM2ODgxYzdiYzJjODJkMGE2ODgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ25pCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci5nbmkKQEAgLTYzLDYgKzYzLDggQEAgYW5nbGVf
dHJhbnNsYXRvcl9zb3VyY2VzID0gWwogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJt
Tm9kZS5oIiwKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL0lzQVNURGVwdGhCZWxvd0xpbWl0
LmNwcCIsCiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jc0FTVERlcHRoQmVsb3dMaW1pdC5o
IiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL05hbWVOYW1lbGVzc1VuaWZv
cm1CdWZmZXJzLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvTmFtZU5h
bWVsZXNzVW5pZm9ybUJ1ZmZlcnMuY3BwIiwKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL09w
ZXJhdG9yLmNwcCIsCiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5oIiwKICAg
InNyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFRyZWUuY3BwIiwKQEAgLTIwNyw2ICsyMDks
NyBAQCBhbmdsZV90cmFuc2xhdG9yX3NvdXJjZXMgPSBbCiAgICJzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX29wcy9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oIiwKICAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL3RyZWVfb3BzL1ZlY3Rvcml6ZVZlY3RvclNjYWxhckFyaXRobWV0aWMuY3Bw
IiwKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1ZlY3Rvcml6ZVZlY3RvclNj
YWxhckFyaXRobWV0aWMuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwv
QXNUeXBlZC5oIiwKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfdXRpbC9CdWlsdElu
LmgiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0J1aWx0SW5fRVNTTF9h
dXRvZ2VuLmgiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0J1aWx0SW5f
Y29tcGxldGVfYXV0b2dlbi5oIiwKQEAgLTIyMCw2ICsyMjMsOCBAQCBhbmdsZV90cmFuc2xhdG9y
X3NvdXJjZXMgPSBbCiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvSW50ZXJt
Tm9kZVBhdHRlcm5NYXRjaGVyLmgiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91
dGlsL0ludGVybU5vZGVfdXRpbC5jcHAiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJl
ZV91dGlsL0ludGVybU5vZGVfdXRpbC5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3Ry
ZWVfdXRpbC9JbnRlcm1SZWJ1aWxkLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90
cmVlX3V0aWwvSW50ZXJtUmVidWlsZC5oIiwKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3Ry
ZWVfdXRpbC9JbnRlcm1UcmF2ZXJzZS5jcHAiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
dHJlZV91dGlsL0ludGVybVRyYXZlcnNlLmgiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
dHJlZV91dGlsL05vZGVTZWFyY2guaCIsCkBAIC0zMzAsNiArMzM1LDczIEBAIGFuZ2xlX3RyYW5z
bGF0b3JfbGliX21ldGFsX3NvdXJjZXMgPSBbCiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRWdWxrYW5HTFNMRm9yTWV0YWwubW0iLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsLmNwcCIsCiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yTWV0YWwuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxE
aXJlY3QuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERp
cmVjdC5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9BZGRFeHBsaWNpdFR5cGVDYXN0cy5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0L0FkZEV4cGxpY2l0VHlwZUNhc3RzLmgiLAorICAic3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0FzdEhlbHBlcnMuY3BwIiwK
KyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Bc3RIZWxw
ZXJzLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L0NvbnN0YW50TmFtZXMuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvRGVidWcuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yTWV0YWxEaXJlY3QvRGVidWdTaW5rLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0L0Rpc2NvdmVyRGVwZW5kZW50RnVuY3Rpb25zLmNwcCIsCisg
ICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRGlzY292ZXJE
ZXBlbmRlbnRGdW5jdGlvbnMuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yTWV0YWxEaXJlY3QvRGlzY292ZXJFbmNsb3NpbmdGdW5jdGlvblRyYXZlcnNlci5jcHAiLAor
ICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0Rpc2NvdmVy
RW5jbG9zaW5nRnVuY3Rpb25UcmF2ZXJzZXIuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcCIsCisgICJzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmgiLAorICAic3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0Vudmlyb25tZW50VmFyaWFi
bGUuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
SG9pc3RDb25zdGFudHMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JNZXRhbERpcmVjdC9Ib2lzdENvbnN0YW50cy5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9JZEdlbi5jcHAiLAorICAic3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0lkR2VuLmgiLAorICAic3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0xheW91dC5jcHAiLAorICAic3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0xheW91dC5oIiwKKyAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9NYXBGdW5jdGlvbnNU
b0RlZmluaXRpb25zLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvTWFwRnVuY3Rpb25zVG9EZWZpbml0aW9ucy5oIiwKKyAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9NYXBTeW1ib2xzLmNwcCIsCisgICJz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTWFwU3ltYm9scy5o
IiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Nb2Rp
ZnlTdHJ1Y3QuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9Nb2RpZnlTdHJ1Y3QuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yTWV0YWxEaXJlY3QvTmFtZS5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0L05hbWUuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTm9kZVR5cGUuaCIsCisgICJzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUGlwZWxpbmUuY3BwIiwKKyAgInNyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9QaXBlbGluZS5oIiwKKyAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFtUHJlbHVk
ZS5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L1Byb2dyYW1QcmVsdWRlLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ck1ldGFsRGlyZWN0L1JlZHVjZUludGVyZmFjZUJsb2Nrcy5jcHAiLAorICAic3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1JlZHVjZUludGVyZmFjZUJsb2Nrcy5o
IiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZWZl
cmVuY2UuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvUmV3cml0ZUNhc2VEZWNsYXJhdGlvbnMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlQ2FzZURlY2xhcmF0aW9ucy5oIiwKKyAg
InNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlR2xv
YmFsUXVhbGlmaWVyRGVjbHMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlR2xvYmFsUXVhbGlmaWVyRGVjbHMuaCIsCisgICJzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZUtleXdvcmRz
LmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
UmV3cml0ZUtleXdvcmRzLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ck1ldGFsRGlyZWN0L1Jld3JpdGVPdXRBcmdzLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZU91dEFyZ3MuaCIsCisgICJzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZVBpcGVsaW5lcy5j
cHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Jl
d3JpdGVQaXBlbGluZXMuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvUmV3cml0ZVVuYWRkcmVzc2FibGVSZWZlcmVuY2VzLmNwcCIsCisgICJzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZVVuYWRkcmVz
c2FibGVSZWZlcmVuY2VzLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ck1ldGFsRGlyZWN0L1NlcGFyYXRlQ29tcG91bmRFeHByZXNzaW9ucy5jcHAiLAorICAic3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1NlcGFyYXRlQ29tcG91bmRF
eHByZXNzaW9ucy5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9TZXBhcmF0ZUNvbXBvdW5kU3RydWN0RGVjbGFyYXRpb25zLmNwcCIsCisgICJzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvU2VwYXJhdGVDb21wb3Vu
ZFN0cnVjdERlY2xhcmF0aW9ucy5oIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9Ta2lwcGluZ1RyYXZlcnNlci5oIiwKKyAgInNyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9TeW1ib2xFbnYuY3BwIiwKKyAgInNyYy9j
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9TeW1ib2xFbnYuaCIsCisg
ICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvVG9wb3NvcnRT
dHJ1Y3RzLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxE
aXJlY3QvVG9wb3NvcnRTdHJ1Y3RzLmgiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvck1ldGFsRGlyZWN0L1dyYXBNYWluLmNwcCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvV3JhcE1haW4uaCIsCisgICJzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvVHJhbnNwb3NlUm93TWFqb3JNYXRyaWNl
cy5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L1RyYW5zcG9zZVJvd01ham9yTWF0cmljZXMuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvSW50cm9kdWNlVmVydGV4SW5kZXhJRC5jcHAiLAorICAi
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZl
cnRleEluZGV4SUQuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0
YWxVdGlscy5jcHAiLAorICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFs
VXRpbHMuaCIsCiBdCiAKIGFuZ2xlX3ByZXByb2Nlc3Nvcl9zb3VyY2VzID0gWwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5
cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9C
YXNlVHlwZXMuaAppbmRleCA1MDc1YWIzZWY1M2U1ODY1NzYyMjEyZjE1YmZmZjE5NmZlNmY4MTAz
Li5iYjA2ZGZlYTdlZmMyODQ3NTZjZDdmZmRhMDFlODk2MzkxOTZlYmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CYXNlVHlwZXMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9C
YXNlVHlwZXMuaApAQCAtOTU1LDYgKzk1NSw3IEBAIGVudW0gVFF1YWxpZmllcgogICAgIC8vIGJ1
aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNoYWRlcgogICAgIEV2cUZyYWdDb2xvciwKICAg
ICBFdnFGcmFnRGF0YSwKKyAgICBFdnFTYW1wbGVNYXNrLAogCiAgICAgRXZxRnJhZ0RlcHRoLCAg
ICAgLy8gZ2xfRnJhZ0RlcHRoIGZvciBFU1NMMzAwLgogICAgIEV2cUZyYWdEZXB0aEVYVCwgIC8v
IGdsX0ZyYWdEZXB0aEVYVCBmb3IgRVNTTDEwMCwgRVhUX2ZyYWdfZGVwdGguCkBAIC0xMzA1LDYg
KzEzMDYsNyBAQCBpbmxpbmUgY29uc3QgY2hhciAqZ2V0UXVhbGlmaWVyU3RyaW5nKFRRdWFsaWZp
ZXIgcSkKICAgICBjYXNlIEV2cUZyYWdEZXB0aDogICAgICAgICAgICAgIHJldHVybiAiRnJhZ0Rl
cHRoIjsKICAgICBjYXNlIEV2cVNlY29uZGFyeUZyYWdDb2xvckVYVDogIHJldHVybiAiU2Vjb25k
YXJ5RnJhZ0NvbG9yRVhUIjsKICAgICBjYXNlIEV2cVNlY29uZGFyeUZyYWdEYXRhRVhUOiAgIHJl
dHVybiAiU2Vjb25kYXJ5RnJhZ0RhdGFFWFQiOworICAgIGNhc2UgRXZxU2FtcGxlTWFzazogICAg
ICAgICAgICAgcmV0dXJuICJTYW1wbGVNYXNrIjsKICAgICBjYXNlIEV2cVZpZXdJRE9WUjogICAg
ICAgICAgICAgIHJldHVybiAiVmlld0lET1ZSIjsKICAgICBjYXNlIEV2cVZpZXdwb3J0SW5kZXg6
ICAgICAgICAgIHJldHVybiAiVmlld3BvcnRJbmRleCI7CiAgICAgY2FzZSBFdnFMYXllcjogICAg
ICAgICAgICAgICAgICByZXR1cm4gIkxheWVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yTWV0YWxEaXJlY3QuY3BwCmluZGV4IGI5ZGQ0MzEzMGRiN2UxMzAwYjM3YWIwMDY4YWYz
YTk1NjI1ODFhMjUuLjg5NjM0NDRkOTZkYTgzMzIxY2ZmYjhhOTI1NTBjMTA5YjU1ZjhmNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JNZXRhbERpcmVjdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmNwcApAQCAtMzEs
OSArMzEsMTEgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9TeW1ib2xFbnYuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9Ub3Bvc29ydFN0cnVjdHMuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9XcmFwTWFpbi5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZlcnRleElu
ZGV4SUQuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbFV0
aWxzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9Jbml0aWFsaXpl
VmFyaWFibGVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0
YWxEaXJlY3QvTmFtZUVtYmVkZGVkVW5pZm9ybVN0cnVjdHNNZXRhbC5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvTmFtZU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnMuaCIK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0b21pY0NvdW50
ZXJCdWlsdGlucy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVt
b3ZlSW5hY3RpdmVJbnRlcmZhY2VWYXJpYWJsZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL3RyZWVfb3BzL1Jld3JpdGVBdG9taWNDb3VudGVycy5oIgpAQCAtNDgsNiArNTAsNyBA
QAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL1JlcGxhY2VDbGlwRGlz
dGFuY2VWYXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGls
L1JlcGxhY2VWYXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91
dGlsL1J1bkF0VGhlRW5kT2ZTaGFkZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L3RyZWVfb3BzL1Jld3JpdGVSb3dNYWpvck1hdHJpY2VzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci91dGlsLmgiCiAKIG5hbWVzcGFjZSBzaApAQCAtNTgsMzYgKzYxLDI0IEBAIG5h
bWVzcGFjZQogCiBjb25zdGV4cHIgTmFtZSBrQ292ZXJhZ2VNYXNrRmllbGQoImNvdmVyYWdlTWFz
ayIsIFN5bWJvbFR5cGU6OlVzZXJEZWZpbmVkKTsKIGNvbnN0ZXhwciBOYW1lIGtFbXVJbnN0YW5j
ZUlERmllbGQoImVtdWxhdGVkSW5zdGFuY2VJRCIsIFN5bWJvbFR5cGU6OlVzZXJEZWZpbmVkKTsK
K2NvbnN0ZXhwciBOYW1lIGtTYW1wbGVNYXNrV3JpdGVGdW5jTmFtZSgid3JpdGVTYW1wbGVNYXNr
IiwgU3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCk7CiAjaWYgMAotY29uc3RleHByIE5hbWUga1Nh
bXBsZU1hc2tXcml0ZUZ1bmNOYW1lKCJXcml0ZVNhbXBsZU1hc2siKTsKIGNvbnN0ZXhwciBOYW1l
IGtEaXNjYXJkV3JhcHBlckZ1bmNOYW1lKCJEaXNjYXJkV3JhcHBlciIpOwogI2VuZGlmCiBjb25z
dGV4cHIgTmFtZSBrRW11bGF0ZWREZXB0aFJhbmdlUGFyYW1zKCJEZXB0aFJhbmdlUGFyYW1zIik7
CiBjb25zdGV4cHIgTmFtZSBrVW5pZm9ybXNCbG9ja05hbWUoIkFuZ2xlVW5pZm9ybXMiKTsKLWNv
bnN0ZXhwciBOYW1lIGtVbmlmb3Jtc1Zhck5hbWUoImFuZ2xlVW5pZm9ybXMiKTsKK2NvbnN0ZXhw
ciBOYW1lIGtVbmlmb3Jtc1Zhck5hbWUoa1VuaWZvcm1zVmFyKTsKIGNvbnN0ZXhwciBOYW1lIGtG
bGlwcGVkUG9pbnRDb29yZE5hbWUoImZsaXBwZWRQb2ludENvb3JkIiwgU3ltYm9sVHlwZTo6VXNl
ckRlZmluZWQpOwogY29uc3RleHByIE5hbWUga0ZsaXBwZWRGcmFnQ29vcmROYW1lKCJmbGlwcGVk
RnJhZ0Nvb3JkIiwgU3ltYm9sVHlwZTo6VXNlckRlZmluZWQpOwogCi1jb25zdGV4cHIgY29uc3Qg
Y2hhciBrVmlld3BvcnRbXSAgICAgICAgICAgICA9ICJ2aWV3cG9ydCI7Ci1jb25zdGV4cHIgY29u
c3QgY2hhciBrSGFsZlJlbmRlckFyZWFbXSAgICAgICA9ICJoYWxmUmVuZGVyQXJlYSI7Ci1jb25z
dGV4cHIgY29uc3QgY2hhciBrRmxpcFhZW10gICAgICAgICAgICAgICA9ICJmbGlwWFkiOwotY29u
c3RleHByIGNvbnN0IGNoYXIga05lZ0ZsaXBYWVtdICAgICAgICAgICAgPSAibmVnRmxpcFhZIjsK
LWNvbnN0ZXhwciBjb25zdCBjaGFyIGtDbGlwRGlzdGFuY2VzRW5hYmxlZFtdID0gImNsaXBEaXN0
YW5jZXNFbmFibGVkIjsKLWNvbnN0ZXhwciBjb25zdCBjaGFyIGtYZmJBY3RpdmVVbnBhdXNlZFtd
ICAgID0gInhmYkFjdGl2ZVVucGF1c2VkIjsKLWNvbnN0ZXhwciBjb25zdCBjaGFyIGtYZmJWZXJ0
aWNlc1BlckRyYXdbXSAgID0gInhmYlZlcnRpY2VzUGVyRHJhdyI7Ci1jb25zdGV4cHIgY29uc3Qg
Y2hhciBrWGZiQnVmZmVyT2Zmc2V0c1tdICAgICA9ICJ4ZmJCdWZmZXJPZmZzZXRzIjsKLWNvbnN0
ZXhwciBjb25zdCBjaGFyIGtBY2JCdWZmZXJPZmZzZXRzW10gICAgID0gImFjYkJ1ZmZlck9mZnNl
dHMiOwotY29uc3RleHByIGNvbnN0IGNoYXIga0RlcHRoUmFuZ2VbXSAgICAgICAgICAgPSAiZGVw
dGhSYW5nZSI7Ci1jb25zdGV4cHIgY29uc3QgY2hhciBrUHJlUm90YXRpb25bXSAgICAgICAgICA9
ICJwcmVSb3RhdGlvbiI7Ci1jb25zdGV4cHIgY29uc3QgY2hhciBrRnJhZ1JvdGF0aW9uW10gICAg
ICAgICA9ICJmcmFnUm90YXRpb24iOwotCi1jb25zdGV4cHIgY29uc3QgVFZhcmlhYmxlIGtnbF9W
ZXJ0ZXhJbmRleE1ldGFsKAotICAgIEJ1aWx0SW5JZDo6Z2xfVmVydGV4SW5kZXgsCi0gICAgSW1t
dXRhYmxlU3RyaW5nKCJnbF9WZXJ0ZXhJbmRleCIpLAorY29uc3RleHByIGNvbnN0IFRWYXJpYWJs
ZSBrZ2xfVmVydGV4SURNZXRhbCgKKyAgICBCdWlsdEluSWQ6OmdsX1ZlcnRleElELAorICAgIElt
bXV0YWJsZVN0cmluZygiZ2xfVmVydGV4SUQiKSwKICAgICBTeW1ib2xUeXBlOjpCdWlsdEluLAog
ICAgIFRFeHRlbnNpb246OlVOREVGSU5FRCwKICAgICBTdGF0aWNUeXBlOjpHZXQ8RWJ0VUludCwg
RWJwSGlnaCwgRXZxVmVydGV4SUQsIDEsIDE+KCkpOwogCisKIGNvbnN0ZXhwciBzaXplX3Qga051
bUdyYXBoaWNzRHJpdmVyVW5pZm9ybXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDEyOwogY29uc3RleHByIHN0ZDo6YXJyYXk8Y29uc3QgY2hhciAqLCBr
TnVtR3JhcGhpY3NEcml2ZXJVbmlmb3Jtcz4ga0dyYXBoaWNzRHJpdmVyVW5pZm9ybU5hbWVzID0g
ewogICAgIHtrVmlld3BvcnQsIGtIYWxmUmVuZGVyQXJlYSwga0ZsaXBYWSwga05lZ0ZsaXBYWSwg
a0NsaXBEaXN0YW5jZXNFbmFibGVkLCBrWGZiQWN0aXZlVW5wYXVzZWQsCkBAIC00MTcsMTQgKzQw
OCwxMyBAQCBUSW50ZXJtU2VxdWVuY2UgKkdldE1haW5TZXF1ZW5jZShUSW50ZXJtQmxvY2sgJnJv
b3QpCiB9CiAKIEFOR0xFX05PX0RJU0NBUkQgYm9vbCBBcHBlbmRWZXJ0ZXhTaGFkZXJUcmFuc2Zv
cm1GZWVkYmFja091dHB1dFRvTWFpbihUQ29tcGlsZXIgJmNvbXBpbGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN5bWJvbEVudiAmbVN5bWJvbEVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgJnJvb3Qp
CiB7CiAgICAgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSA9IGNvbXBpbGVyLmdldFN5bWJvbFRh
YmxlKCk7Ci0gICAgVFZhcmlhYmxlICp4ZmJQbGFjZWhvbGRlciA9IG5ldyBUVmFyaWFibGUoJnN5
bWJvbFRhYmxlLCBJbW11dGFibGVTdHJpbmcoIkBAIFhGQi1PVVQgQEAiKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFR5cGUoKSwgU3ltYm9sVHlw
ZTo6QW5nbGVJbnRlcm5hbCk7CiAKICAgICAvLyBBcHBlbmQgdGhlIGFzc2lnbm1lbnQgYXMgYSBz
dGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgc2hhZGVyLgotICAgIHJldHVybiBSdW5BdFRoZUVu
ZE9mU2hhZGVyKCZjb21waWxlciwgJnJvb3QsIG5ldyBUSW50ZXJtU3ltYm9sKHhmYlBsYWNlaG9s
ZGVyKSwgJnN5bWJvbFRhYmxlKTsKKyAgICByZXR1cm4gUnVuQXRUaGVFbmRPZlNoYWRlcigmY29t
cGlsZXIsICZyb290LCAmKG1TeW1ib2xFbnYuY2FsbEZ1bmN0aW9uT3ZlcmxvYWQoTmFtZSgiQEBY
RkItT1VUQEAiKSwgKm5ldyBUVHlwZSgpLCAqbmV3IFRJbnRlcm1TZXF1ZW5jZSgpKSksICZzeW1i
b2xUYWJsZSk7CiB9CiAKIC8vIFRoaXMgb3BlcmF0aW9uIHBlcmZvcm1zIHRoZSB2aWV3cG9ydCBk
ZXB0aCB0cmFuc2xhdGlvbiBuZWVkZWQgYnkgVnVsa2FuLiBJbiBHTCB0aGUgdmlld3BvcnQKQEAg
LTYwNCwxMCArNTk0LDkgQEAgdm9pZCBBZGRGcmFnRGVwdGhEZWNsYXJhdGlvbihUSW50ZXJtQmxv
Y2sgJnJvb3QsIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCiB9CiAKIHZvaWQgQWRkRnJhZ0Rl
cHRoRVhURGVjbGFyYXRpb24oVENvbXBpbGVyICZjb21waWxlciwgVEludGVybUJsb2NrICZyb290
LCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQoteyAgIAorewogICAgIGNvbnN0IFRJbnRlcm1T
eW1ib2wgKmdsRnJhZ0RlcHRoRXh0ID0gRmluZFN5bWJvbE5vZGUoJnJvb3QsIEltbXV0YWJsZVN0
cmluZygiZ2xfRnJhZ0RlcHRoRVhUIikpOwogICAgIEFTU0VSVChnbEZyYWdEZXB0aEV4dCk7Ci0K
ICAgICAvLyBSZXBsYWNlIGdsX0ZyYWdEYXRhIHdpdGggb3VyIGdsb2JhbGx5IGRlZmluZWQgZnJh
Z2RhdGEuCiAgICAgaWYgKCFSZXBsYWNlVmFyaWFibGUoJmNvbXBpbGVyLCAmcm9vdCwgJihnbEZy
YWdEZXB0aEV4dC0+dmFyaWFibGUoKSksIEJ1aWx0SW5WYXJpYWJsZTo6Z2xfRnJhZ0RlcHRoKCkp
KQogICAgIHsKQEAgLTYxNSw2ICs2MDQsMTQgQEAgdm9pZCBBZGRGcmFnRGVwdGhFWFREZWNsYXJh
dGlvbihUQ29tcGlsZXIgJmNvbXBpbGVyLCBUSW50ZXJtQmxvY2sgJnJvb3QsIFRTeW1ib2wKICAg
ICB9CiAgICAgQWRkRnJhZ0RlcHRoRGVjbGFyYXRpb24ocm9vdCwgc3ltYm9sVGFibGUpOwogfQor
dm9pZCBBZGRTYW1wbGVNYXNrRGVjbGFyYXRpb24oVEludGVybUJsb2NrICZyb290LCBUU3ltYm9s
VGFibGUgJnN5bWJvbFRhYmxlKQoreworICAgIFRUeXBlICpnbF9TYW1wbGVNYXNrVHlwZSAgICA9
IG5ldyBUVHlwZShFYnRVSW50LCBFYnBIaWdoLCBFdnFTYW1wbGVNYXNrLCAxLCAxKTsKKyAgICBj
b25zdCBUVmFyaWFibGUgKmdsX1NhbXBsZU1hc2sgPQorICAgICAgICBuZXcgVFZhcmlhYmxlKCZz
eW1ib2xUYWJsZSwgSW1tdXRhYmxlU3RyaW5nKCJnbF9TYW1wbGVNYXNrIiksIGdsX1NhbXBsZU1h
c2tUeXBlLCBTeW1ib2xUeXBlOjpCdWlsdEluLAorICAgICAgICAgICAgICAgICAgICAgIFRFeHRl
bnNpb246OlVOREVGSU5FRCk7CisgICAgcm9vdC5pbnNlcnRDaGlsZE5vZGVzKEZpbmRNYWluSW5k
ZXgoJnJvb3QpLCBUSW50ZXJtU2VxdWVuY2V7bmV3IFRJbnRlcm1EZWNsYXJhdGlvbntnbF9TYW1w
bGVNYXNrfX0pOworfQogCiBBTkdMRV9OT19ESVNDQVJEIGJvb2wgQWRkRnJhZ0RhdGFEZWNsYXJh
dGlvbihUQ29tcGlsZXIgJmNvbXBpbGVyLCBUSW50ZXJtQmxvY2sgJnJvb3QpCiB7CkBAIC03MDUs
NyArNzAyLDYgQEAgQU5HTEVfTk9fRElTQ0FSRCBib29sIEFwcGVuZFZlcnRleFNoYWRlclBvc2l0
aW9uWUNvcnJlY3Rpb25Ub01haW4oVENvbXBpbGVyICZjb20KICAgICAvLyBBcHBlbmQgdGhlIGFz
c2lnbm1lbnQgYXMgYSBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgc2hhZGVyLgogICAgIHJl
dHVybiBSdW5BdFRoZUVuZE9mU2hhZGVyKCZjb21waWxlciwgJnJvb3QsIGFzc2lnbm1lbnQsICZz
eW1ib2xUYWJsZSk7CiB9Ci0KIH0gIC8vIG5hbWVzcGFjZQogCiBUcmFuc2xhdG9yTWV0YWxEaXJl
Y3Q6OlRyYW5zbGF0b3JNZXRhbERpcmVjdChzaDo6R0xlbnVtIHR5cGUsCkBAIC03MjYsNiArNzIy
LDU1IEBAIGNvbnN0IGNoYXIgKlRyYW5zbGF0b3JNZXRhbERpcmVjdDo6R2V0UmFzdGVyaXphdGlv
bkRpc2NhcmRFbmFibGVkQ29uc3ROYW1lKCkKICAgICByZXR1cm4gY29uc3RhbnRfbmFtZXM6OmtS
YXN0ZXJpemF0aW9uRGlzY2FyZEVuYWJsZWQucmF3TmFtZSgpLmRhdGEoKTsKIH0KIAorLy8gQWRk
IHNhbXBsZV9tYXNrIHdyaXRpbmcgdG8gbWFpbiwgZ3VhcmRlZCBieSB0aGUgZnVuY3Rpb24gY29u
c3RhbnQKKy8vIGtDb3ZlcmFnZU1hc2tFbmFibGVkTmFtZQorQU5HTEVfTk9fRElTQ0FSRCBib29s
IFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6aW5zZXJ0U2FtcGxlTWFza1dyaXRpbmdMb2dpYyhUSW50
ZXJtQmxvY2sgJnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSAmZHJpdmVy
VW5pZm9ybXMpCit7CisgICAgVFN5bWJvbFRhYmxlICpzeW1ib2xUYWJsZSA9ICZnZXRTeW1ib2xU
YWJsZSgpOworCisgICAgLy8gQ3JlYXRlIGtDb3ZlcmFnZU1hc2tFbmFibGVkIGFuZCBrU2FtcGxl
TWFza1dyaXRlRnVuY05hbWUgdmFyaWFibGUgcmVmZXJlbmNlcy4KKyAgICBUVHlwZSAqYm9vbFR5
cGUgPSBuZXcgVFR5cGUoRWJ0Qm9vbCk7CisgICAgYm9vbFR5cGUtPnNldFF1YWxpZmllcihFdnFD
b25zdCk7CisgICAgVFZhcmlhYmxlICpjb3ZlcmFnZU1hc2tFbmFibGVkVmFyID0KKyAgICAgICAg
bmV3IFRWYXJpYWJsZShzeW1ib2xUYWJsZSwgY29uc3RhbnRfbmFtZXM6OmtDb3ZlcmFnZU1hc2tF
bmFibGVkLnJhd05hbWUoKSwgYm9vbFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgU3ltYm9s
VHlwZTo6QW5nbGVJbnRlcm5hbCk7CisKKyAgICBURnVuY3Rpb24gKnNhbXBsZU1hc2tXcml0ZUZ1
bmMgPQorICAgICAgICBuZXcgVEZ1bmN0aW9uKHN5bWJvbFRhYmxlLCBrU2FtcGxlTWFza1dyaXRl
RnVuY05hbWUucmF3TmFtZSgpLCBrU2FtcGxlTWFza1dyaXRlRnVuY05hbWUuc3ltYm9sVHlwZSgp
LAorICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY1R5cGU6OkdldEJhc2ljPEVidFZvaWQ+KCks
IGZhbHNlKTsKKworICAgIFRUeXBlICp1aW50VHlwZSA9IG5ldyBUVHlwZShFYnRVSW50KTsKKyAg
ICBUVmFyaWFibGUgKm1hc2tBcmcgPQorICAgICAgICBuZXcgVFZhcmlhYmxlKHN5bWJvbFRhYmxl
LCBJbW11dGFibGVTdHJpbmcoIm1hc2siKSwgdWludFR5cGUsIFN5bWJvbFR5cGU6OkFuZ2xlSW50
ZXJuYWwpOworICAgIHNhbXBsZU1hc2tXcml0ZUZ1bmMtPmFkZFBhcmFtZXRlcihtYXNrQXJnKTsK
KworICAgIFRWYXJpYWJsZSAqZ2xfU2FtcGxlTWFza0FyZyA9CisgICAgICAgIG5ldyBUVmFyaWFi
bGUoc3ltYm9sVGFibGUsIEltbXV0YWJsZVN0cmluZygiZ2xfU2FtcGxlTWFzayIpLCB1aW50VHlw
ZSwgU3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCk7CisgICAgc2FtcGxlTWFza1dyaXRlRnVuYy0+
YWRkUGFyYW1ldGVyKGdsX1NhbXBsZU1hc2tBcmcpOworCisgICAgLy8gSW5zZXJ0IHRoaXMgY29k
ZSB0byB0aGUgZW5kIG9mIG1haW4oKQorICAgIC8vIGlmIChBTkdMRV9Db3ZlcmFnZU1hc2tFbmFi
bGVkKQorICAgIC8vIHsKKyAgICAvLyAgICAgIEFOR0xFX3dyaXRlU2FtcGxlTWFzayhBTkdMRV9h
bmdsZVVuaWZvcm1zLmNvdmVyYWdlTWFzaywgQU5HTEVfZnJhZ21lbnRPdXQuZ2xfU2FtcGxlTWFz
ayk7CisgICAgLy8gfQorICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJncyA9IG5ldyBUSW50ZXJtU2Vx
dWVuY2U7CisgICAgVEludGVybUJpbmFyeSAqY292ZXJhZ2VNYXNrID0gQ3JlYXRlRHJpdmVyVW5p
Zm9ybVJlZihkcml2ZXJVbmlmb3Jtcywga0NvdmVyYWdlTWFza0ZpZWxkLnJhd05hbWUoKS5kYXRh
KCkpOworICAgIGFyZ3MtPnB1c2hfYmFjayhjb3ZlcmFnZU1hc2spOworICAgIGNvbnN0IFRJbnRl
cm1TeW1ib2wgKmdsX1NhbXBsZU1hc2sgPSBGaW5kU3ltYm9sTm9kZSgmcm9vdCwgSW1tdXRhYmxl
U3RyaW5nKCJnbF9TYW1wbGVNYXNrIikpOworICAgIGFyZ3MtPnB1c2hfYmFjayhnbF9TYW1wbGVN
YXNrLT5kZWVwQ29weSgpKTsKKworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNhbGxTYW1wbGVNYXNr
V3JpdGVGdW5jID0KKyAgICAgICAgVEludGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlRnVuY3Rpb25DYWxs
KCpzYW1wbGVNYXNrV3JpdGVGdW5jLCBhcmdzKTsKKyAgICBUSW50ZXJtQmxvY2sgKmNhbGxCbG9j
ayA9IG5ldyBUSW50ZXJtQmxvY2s7CisgICAgY2FsbEJsb2NrLT5hcHBlbmRTdGF0ZW1lbnQoY2Fs
bFNhbXBsZU1hc2tXcml0ZUZ1bmMpOworCisgICAgVEludGVybVN5bWJvbCAqY292ZXJhZ2VNYXNr
RW5hYmxlZCA9IG5ldyBUSW50ZXJtU3ltYm9sKGNvdmVyYWdlTWFza0VuYWJsZWRWYXIpOworICAg
IFRJbnRlcm1JZkVsc2UgKmlmQ2FsbCAgICAgICAgICAgICAgPSBuZXcgVEludGVybUlmRWxzZShj
b3ZlcmFnZU1hc2tFbmFibGVkLCBjYWxsQmxvY2ssIG51bGxwdHIpOworCisgICAgcmV0dXJuIFJ1
bkF0VGhlRW5kT2ZTaGFkZXIodGhpcywgJnJvb3QsIGlmQ2FsbCwgc3ltYm9sVGFibGUpOworfQor
CiBBTkdMRV9OT19ESVNDQVJEIGJvb2wgVHJhbnNsYXRvck1ldGFsRGlyZWN0OjppbnNlcnRSYXN0
ZXJpemF0aW9uRGlzY2FyZExvZ2ljKFRJbnRlcm1CbG9jayAmcm9vdCkKIHsKICAgICBUU3ltYm9s
VGFibGUgKnN5bWJvbFRhYmxlID0gJmdldFN5bWJvbFRhYmxlKCk7CkBAIC04OTksMTEgKzk0NCwy
OCBAQCBzdGF0aWMgc3RkOjpzZXQ8SW1tdXRhYmxlU3RyaW5nPiBHZXRNc2xLZXl3b3JkcygpCiAg
ICAgcmV0dXJuIGtleXdvcmRzOwogfQogCitzdGF0aWMgaW5saW5lIE1ldGFsU2hhZGVyVHlwZSBt
ZXRhbFNoYWRlclR5cGVGcm9tR0xTTChzaDo6R0xlbnVtIHNoYWRlclR5cGUpCit7CisgICAgc3dp
dGNoIChzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgor
ICAgICAgICAgICAgcmV0dXJuIE1ldGFsU2hhZGVyVHlwZTo6VmVydGV4OworICAgICAgICBjYXNl
IEdMX0ZSQUdNRU5UX1NIQURFUjoKKyAgICAgICAgICAgIHJldHVybiBNZXRhbFNoYWRlclR5cGU6
OkZyYWdtZW50OworICAgICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgICAgICAg
QVNTRVJUKDAgJiYgImNvbXB1dGUgc2hhZGVycyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCIpOwor
ICAgICAgICAgICAgcmV0dXJuIE1ldGFsU2hhZGVyVHlwZTo6Q29tcHV0ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIEFTU0VSVCgwICYmICJJbnZhbGlkIHNoYWRlciB0eXBlLiIpOwor
ICAgICAgICAgICAgcmV0dXJuIE1ldGFsU2hhZGVyVHlwZTo6Tm9uZTsKKyAgICB9Cit9CisKIGJv
b2wgVHJhbnNsYXRvck1ldGFsRGlyZWN0Ojp0cmFuc2xhdGVJbXBsKFRJbnRlcm1CbG9jayAmcm9v
dCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKIHsKICAgICBUU3ltYm9sVGFibGUg
JnN5bWJvbFRhYmxlID0gZ2V0U3ltYm9sVGFibGUoKTsKICAgICBJZEdlbiBpZEdlbjsKLSAgICBQ
cm9ncmFtUHJlbHVkZUNvbmZpZyBwcGM7CisgICAgUHJvZ3JhbVByZWx1ZGVDb25maWcgcHBjKG1l
dGFsU2hhZGVyVHlwZUZyb21HTFNMKGdldFNoYWRlclR5cGUoKSkpOwogCiAgICAgaWYgKCFXcmFw
TWFpbigqdGhpcywgaWRHZW4sIHJvb3QpKQogICAgIHsKQEAgLTEwNzEsNiArMTEzMyw3IEBAIGJv
b2wgVHJhbnNsYXRvck1ldGFsRGlyZWN0Ojp0cmFuc2xhdGVJbXBsKFRJbnRlcm1CbG9jayAmcm9v
dCwgU2hDb21waWxlT3B0aW9ucyBjCiAKICAgICB7CiAgICAgICAgIGJvb2wgdXNlc0luc3RhbmNl
SWQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCB1c2VzVmVydGV4SWQgPSBmYWxzZTsKICAgICAgICAg
Zm9yIChjb25zdCBTaGFkZXJWYXJpYWJsZSAmdmFyIDogbUF0dHJpYnV0ZXMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICh2YXIuaXNCdWlsdEluKCkpCkBAIC0xMDc5LDYgKzExNDIsMTAgQEAg
Ym9vbCBUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZy
b290LCBTaENvbXBpbGVPcHRpb25zIGMKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIHVzZXNJbnN0YW5jZUlkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKHZhci5uYW1lID09ICJnbF9WZXJ0ZXhJRCIpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICB1c2VzVmVydGV4SWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMDg4LDggKzExNTUsMTcgQEAg
Ym9vbCBUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZy
b290LCBTaENvbXBpbGVPcHRpb25zIGMKICAgICAgICAgICAgICAgICBGaW5kTWFpbkluZGV4KCZy
b290KSwKICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2V7bmV3IFRJbnRlcm1EZWNsYXJh
dGlvbntCdWlsdEluVmFyaWFibGU6OmdsX0luc3RhbmNlSUQoKX19KTsKICAgICAgICAgfQorICAg
ICAgICBpZiAodXNlc1ZlcnRleElkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIVJlcGxh
Y2VWYXJpYWJsZSh0aGlzLCAmcm9vdCwgQnVpbHRJblZhcmlhYmxlOjpnbF9WZXJ0ZXhJRCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtnbF9WZXJ0ZXhJRE1ldGFsKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBEZWNsYXJlUmlnaHRCZWZvcmVNYWluKHJvb3QsIGtnbF9WZXJ0ZXhJRE1l
dGFsKTsKKyAgICAgICAgfQogICAgIH0KLQorICAgIFN5bWJvbEVudiBzeW1ib2xFbnYoKnRoaXMs
IHJvb3QpOwogICAgIC8vIERlY2xhcmUgZ2xfRnJhZ0NvbG9yIGFuZCBnbEZyYWdEYXRhIGFzIHdl
YmdsX0ZyYWdDb2xvciBhbmQgd2ViZ2xfRnJhZ0RhdGEKICAgICAvLyBpZiBpdCdzIGNvcmUgcHJv
ZmlsZSBzaGFkZXJzIGFuZCB0aGV5IGFyZSB1c2VkLgogICAgIGlmIChnZXRTaGFkZXJUeXBlKCkg
PT0gR0xfRlJBR01FTlRfU0hBREVSKQpAQCAtMTExNiw5ICsxMTkyLDkgQEAgYm9vbCBUcmFuc2xh
dG9yTWV0YWxEaXJlY3Q6OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBp
bGVPcHRpb25zIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgdXNl
c0ZyYWdDb2xvciA9IGZhbHNlOwotICAgICAgICBib29sIHVzZXNGcmFnRGF0YSAgPSBmYWxzZTsK
LSAgICAgICAgYm9vbCB1c2VzRnJhZ0RlcHRoID0gZmFsc2U7CisgICAgICAgIGJvb2wgdXNlc0Zy
YWdDb2xvciAgPSBmYWxzZTsKKyAgICAgICAgYm9vbCB1c2VzRnJhZ0RhdGEgICA9IGZhbHNlOwor
ICAgICAgICBib29sIHVzZXNGcmFnRGVwdGggID0gZmFsc2U7CiAgICAgICAgIGJvb2wgdXNlc0Zy
YWdEZXB0aEVYVCA9IGZhbHNlOwogICAgICAgICBmb3IgKGNvbnN0IFNoYWRlclZhcmlhYmxlICZv
dXRwdXRWYXJ5aW5nIDogbU91dHB1dFZhcmlhYmxlcykKICAgICAgICAgewpAQCAtMTE2MCwxMyAr
MTIzNiwyMCBAQCBib29sIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6dHJhbnNsYXRlSW1wbChUSW50
ZXJtQmxvY2sgJnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgYwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZih1c2VzRnJhZ0Rl
cHRoRVhUKQorICAgICAgICBpZiAodXNlc0ZyYWdEZXB0aCkKKyAgICAgICAgeworICAgICAgICAg
ICAgQWRkRnJhZ0RlcHRoRGVjbGFyYXRpb24ocm9vdCwgc3ltYm9sVGFibGUpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYodXNlc0ZyYWdEZXB0aEVYVCkKICAgICAgICAgewogICAgICAgICAg
ICAgQWRkRnJhZ0RlcHRoRVhURGVjbGFyYXRpb24oKnRoaXMsIHJvb3QsIHN5bWJvbFRhYmxlKTsK
ICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh1c2VzRnJhZ0RlcHRoKQorICAgICAgICAKKyAg
ICAgICAgLy8gQWx3YXlzIGFkZCBzYW1wbGVfbWFzay4gSXQgd2lsbCBiZSBndWFyZGVkIGJ5IGEg
ZnVuY3Rpb24gY29uc3RhbnQgZGVjaWRlZCBhdCBydW50aW1lLgorICAgICAgICBib29sIHVzZXNT
YW1wbGVNYXNrID0gdHJ1ZTsKKyAgICAgICAgaWYgKHVzZXNTYW1wbGVNYXNrKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBZGRGcmFnRGVwdGhEZWNsYXJhdGlvbihyb290LCBzeW1ib2xUYWJsZSk7
CisgICAgICAgICAgICBBZGRTYW1wbGVNYXNrRGVjbGFyYXRpb24ocm9vdCwgc3ltYm9sVGFibGUp
OwogICAgICAgICB9CiAKICNpZiAwCkBAIC0xMjM2LDIyICsxMzE5LDEyIEBAIGJvb2wgVHJhbnNs
YXRvck1ldGFsRGlyZWN0Ojp0cmFuc2xhdGVJbXBsKFRJbnRlcm1CbG9jayAmcm9vdCwgU2hDb21w
aWxlT3B0aW9ucyBjCiAgICAgICAgIGlmIChGaW5kU3ltYm9sTm9kZSgmcm9vdCwgQnVpbHRJblZh
cmlhYmxlOjpnbF9WZXJ0ZXhJbmRleCgpLT5uYW1lKCkpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIVJlcGxhY2VWYXJpYWJsZSh0aGlzLCAmcm9vdCwgQnVpbHRJblZhcmlhYmxlOjpnbF9W
ZXJ0ZXhJbmRleCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtnbF9WZXJ0
ZXhJbmRleE1ldGFsKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBEZWNsYXJlUmlnaHRCZWZvcmVNYWluKHJv
b3QsIGtnbF9WZXJ0ZXhJbmRleE1ldGFsKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChG
aW5kU3ltYm9sTm9kZSgmcm9vdCwgQnVpbHRJblZhcmlhYmxlOjpnbF9WZXJ0ZXhJRCgpLT5uYW1l
KCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIVJlcGxhY2VWYXJpYWJsZSh0aGlzLCAm
cm9vdCwgQnVpbHRJblZhcmlhYmxlOjpnbF9WZXJ0ZXhJRCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmtnbF9WZXJ0ZXhJbmRleE1ldGFsKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZrZ2xfVmVydGV4SURNZXRhbCkpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgRGVj
bGFyZVJpZ2h0QmVmb3JlTWFpbihyb290LCBrZ2xfVmVydGV4SW5kZXhNZXRhbCk7CisgICAgICAg
ICAgICBEZWNsYXJlUmlnaHRCZWZvcmVNYWluKHJvb3QsIGtnbF9WZXJ0ZXhJRE1ldGFsKTsKICAg
ICAgICAgfQotCiAjaWYgMAogICAgICAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9BRERfQlJF
U0VOSEFNX0xJTkVfUkFTVEVSX0VNVUxBVElPTikKICAgICAgICAgewpAQCAtMTI2MCwxMyArMTMz
Myw5IEBAIGJvb2wgVHJhbnNsYXRvck1ldGFsRGlyZWN0Ojp0cmFuc2xhdGVJbXBsKFRJbnRlcm1C
bG9jayAmcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkIGEgbWFjcm8g
dG8gZGVjbGFyZSB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVycy4KLSAgICAgICAgc2luayA8PCAi
QEAgWEZCLURFQ0wgQEBcblxuIjsKICNlbmRpZgotCiAgICAgICAgIC8vIEFwcGVuZCBhIG1hY3Jv
IGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgc3Vic3RpdHV0aW9uIHByaW9yIHRvIG1vZGlmeWluZyBk
ZXB0aC4KLSAgICAgICAgaWYgKCFBcHBlbmRWZXJ0ZXhTaGFkZXJUcmFuc2Zvcm1GZWVkYmFja091
dHB1dFRvTWFpbigqdGhpcywgcm9vdCkpCisgICAgICAgIGlmICghQXBwZW5kVmVydGV4U2hhZGVy
VHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRUb01haW4oKnRoaXMsIHN5bWJvbEVudiwgcm9vdCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTI5OSw2
ICsxMzY4LDggQEAgYm9vbCBUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRyYW5zbGF0ZUltcGwoVElu
dGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRpb25zIGMKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCisKKwogICAgICAgICBpZiAoKGNvbXBpbGVPcHRpb25zICYgU0hf
QUREX1BSRV9ST1RBVElPTikgIT0gMCAmJgogICAgICAgICAgICAgIUFwcGVuZFByZVJvdGF0aW9u
KCp0aGlzLCByb290LCBkcml2ZXJVbmlmb3JtcykpCiAgICAgICAgIHsKQEAgLTEzMzksNiArMTQx
MCwxNSBAQCBib29sIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6dHJhbnNsYXRlSW1wbChUSW50ZXJt
QmxvY2sgJnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgYwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKGdldFNoYWRlclR5cGUoKSA9PSBHTF9G
UkFHTUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBpZiAoIWluc2VydFNhbXBsZU1hc2tXcml0
aW5nTG9naWMocm9vdCwgZHJpdmVyVW5pZm9ybXMpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKwogCiAgICAgaWYgKCF2YWxpZGF0ZUFT
VCgmcm9vdCkpCiAgICAgewpAQCAtMTM1OSw3ICsxNDM5LDYgQEAgYm9vbCBUcmFuc2xhdG9yTWV0
YWxEaXJlY3Q6OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRp
b25zIGMKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KICAgICAvLyBUaGlz
IGlzIHRoZSBsYXJnZXN0IHNpemUgcmVxdWlyZWQgdG8gcGFzcyBhbGwgdGhlIHRlc3RzIGluCiAg
ICAgLy8gKGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxhcmdlX2NvbnN0YW50X2FycmF5
cykKICAgICAvLyBUaGlzIHZhbHVlIGNvdWxkIGluIHByaW5jaXBsZSBiZSBzbWFsbGVyLgpAQCAt
MTM3NSw4ICsxNDU0LDYgQEAgYm9vbCBUcmFuc2xhdG9yTWV0YWxEaXJlY3Q6OnRyYW5zbGF0ZUlt
cGwoVEludGVybUJsb2NrICZyb290LCBTaENvbXBpbGVPcHRpb25zIGMKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIFN5bWJvbEVudiBzeW1ib2xFbnYoKnRoaXMsIHJvb3QpOwot
CiAgICAgaWYgKCFBZGRFeHBsaWNpdFR5cGVDYXN0cygqdGhpcywgcm9vdCwgc3ltYm9sRW52KSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzODgsNyArMTQ2NSwxMyBAQCBib29s
IFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6dHJhbnNsYXRlSW1wbChUSW50ZXJtQmxvY2sgJnJvb3Qs
IFNoQ29tcGlsZU9wdGlvbnMgYwogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LQorICAgIGlmIChnZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7Cisg
ICAgICAgIGlmICghSW50cm9kdWNlVmVydGV4QW5kSW5zdGFuY2VJbmRleCgqdGhpcywgcm9vdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
ICAgICBpZiAoIVNlcGFyYXRlQ29tcG91bmRFeHByZXNzaW9ucygqdGhpcywgc3ltYm9sRW52LCBp
ZEdlbiwgcm9vdCkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDEyLDEyICsx
NDk1LDEwIEBAIGJvb2wgVHJhbnNsYXRvck1ldGFsRGlyZWN0Ojp0cmFuc2xhdGVJbXBsKFRJbnRl
cm1CbG9jayAmcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjCiAgICAgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotCiAgICAgaWYgKCFUb3Bvc29ydFN0cnVjdHMoKnRoaXMsIHN5bWJvbEVu
diwgcm9vdCwgcHBjKSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gCiAg
ICAgaWYgKCFFbWl0TWV0YWwoKnRoaXMsIHJvb3QsIGlkR2VuLCBwaXBlbGluZVN0cnVjdHMsIGlu
dmFyaWFudHMsIHN5bWJvbEVudiwgcHBjKSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE0MzksNiArMTUyMCwyMSBAQCBib29sIFRyYW5zbGF0b3JNZXRhbERpcmVjdDo6dHJhbnNs
YXRlKFRJbnRlcm1CbG9jayAqcm9vdCwKIAogICAgIFRJbmZvU2lua0Jhc2UgJnNpbmsgPSBnZXRJ
bmZvU2luaygpLm9iajsKIAorICAgIGlmICgoY29tcGlsZU9wdGlvbnMgJiBTSF9SRVdSSVRFX1JP
V19NQUpPUl9NQVRSSUNFUykgIT0gMCAmJiBnZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwKQorICAg
IHsKKyAgICAgICAgLy8gIk1ha2Ugc3VyZSBldmVyeSB1bmlmb3JtIGJ1ZmZlciB2YXJpYWJsZSBo
YXMgYSBuYW1lLiAgVGhlIGZvbGxvd2luZyB0cmFuc2Zvcm1hdGlvbiByZWxpZXMgb24gdGhpcy4i
CisgICAgICAgIC8vIFRoaXMgcGFzcyB3YXMgcmVtb3ZlZCBpbiBlMTk2YmM4NWFjMmRkYTBlOWY2
NjY0Y2ZjMmVjYTAwMjllMzNkMmQxLCBidXQgY3VycmVudGx5IGZpbmRpbmcgaXQgc3RpbGwgbmVj
ZXNzYXJ5IGZvciBNU0wuCisgICAgICAgIC8vIFRPRE8oamN1bm5pbmdoYW0pOiBMb29rIGludG8g
cmVtb3ZpbmcgdGhlIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzIGFuZCBmaXhpbmcgdGhlIHJv
b3QgY2F1c2UgaW4gUmV3cml0ZVJvd01ham9yTWF0cmljZXMKKyAgICAgICAgaWYgKCFOYW1lTmFt
ZWxlc3NVbmlmb3JtQnVmZmVycyh0aGlzLCByb290LCAmZ2V0U3ltYm9sVGFibGUoKSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
IVJld3JpdGVSb3dNYWpvck1hdHJpY2VzKHRoaXMsIHJvb3QsICZnZXRTeW1ib2xUYWJsZSgpKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CiAgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIWVtdWxhdGVQ
cmVjaXNpb25JZk5lZWRlZChyb290LCBzaW5rLCAmcHJlY2lzaW9uRW11bGF0aW9uLCBTSF9HTFNM
X1ZVTEtBTl9PVVRQVVQpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1l
dGFsRGlyZWN0LmgKaW5kZXggZWZjYjMwNjcxOTc3YmY1ODFiNmFjMjU3MzIxYzdkMTZmNjZmYzU2
ZS4uMzBhODg2N2RmNTczZmVmZjRmZmYyNDNkNWQ2YzIxYzY2YjQ0Mzk2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ck1ldGFsRGlyZWN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0LmgKQEAgLTExLDE3ICsxMSw0MSBAQAog
CiBuYW1lc3BhY2Ugc2gKIHsKKworY29uc3RleHByIGNvbnN0IGNoYXIga1VuaWZvcm1zVmFyW10g
ICAgICAgICAgICAgICA9ICJhbmdsZVVuaWZvcm1zIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtW
aWV3cG9ydFtdICAgICAgICAgICAgICAgICAgPSAidmlld3BvcnQiOworY29uc3RleHByIGNvbnN0
IGNoYXIga0hhbGZSZW5kZXJBcmVhW10gICAgICAgICAgICA9ICJoYWxmUmVuZGVyQXJlYSI7Citj
b25zdGV4cHIgY29uc3QgY2hhciBrRmxpcFhZW10gICAgICAgICAgICAgICAgICAgID0gImZsaXBY
WSI7Citjb25zdGV4cHIgY29uc3QgY2hhciBrTmVnRmxpcFhZW10gICAgICAgICAgICAgICAgID0g
Im5lZ0ZsaXBYWSI7Citjb25zdGV4cHIgY29uc3QgY2hhciBrQ2xpcERpc3RhbmNlc0VuYWJsZWRb
XSAgICAgID0gImNsaXBEaXN0YW5jZXNFbmFibGVkIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtY
ZmJBY3RpdmVVbnBhdXNlZFtdICAgICAgICAgPSAieGZiQWN0aXZlVW5wYXVzZWQiOworY29uc3Rl
eHByIGNvbnN0IGNoYXIga1hmYlZlcnRpY2VzUGVyRHJhd1tdICAgICAgICA9ICJ4ZmJWZXJ0aWNl
c1BlckRyYXciOworY29uc3RleHByIGNvbnN0IGNoYXIga1hmYkJ1ZmZlck9mZnNldHNbXSAgICAg
ICAgICA9ICJ4ZmJCdWZmZXJPZmZzZXRzIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtBY2JCdWZm
ZXJPZmZzZXRzW10gICAgICAgICAgPSAiYWNiQnVmZmVyT2Zmc2V0cyI7Citjb25zdGV4cHIgY29u
c3QgY2hhciBrRGVwdGhSYW5nZVtdICAgICAgICAgICAgICAgID0gImRlcHRoUmFuZ2UiOworY29u
c3RleHByIGNvbnN0IGNoYXIga1ByZVJvdGF0aW9uW10gICAgICAgICAgICAgICA9ICJwcmVSb3Rh
dGlvbiI7Citjb25zdGV4cHIgY29uc3QgY2hhciBrRnJhZ1JvdGF0aW9uW10gICAgICAgICAgICAg
ID0gImZyYWdSb3RhdGlvbiI7Citjb25zdGV4cHIgY29uc3QgY2hhciBrVW5hc3NpZ25lZEF0dHJp
YnV0ZVN0cmluZ1tdID0gIiBfX3VuYXNzaWduZWRfYXR0cmlidXRlX18iOworCiBjbGFzcyBUT3V0
cHV0TVNMOwogCiB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxzaXplX3QsIHN0ZDo6c3RyaW5n
PiBvcmlnaW5hbE5hbWVzTWFwOwogdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJp
bmcsIHNpemVfdD4gc2FtcGxlckJpbmRpbmdNYXA7CiB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgc2l6ZV90PiB0ZXh0dXJlQmluZGluZ01hcDsKLXR5cGVkZWYgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzaXplX3Q+IHVuaWZvcm1CdWZmZXJCaW5kaW5nTWFw
OwordHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHNpemVfdD4gdXNlclVu
aWZvcm1CdWZmZXJCaW5kaW5nTWFwOwordHlwZWRlZiBzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+
IHVib0JpbmRpbmdJbmZvOworc3RydWN0IFVCT0JpbmRpbmdJbmZvCit7CisgICAgc2l6ZV90IGJp
bmRJbmRleCA9IDA7CisgICAgc2l6ZV90IGFycmF5U2l6ZSA9IDA7Cit9OwordHlwZWRlZiBzdGQ6
OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFVCT0JpbmRpbmdJbmZvPiB1bmlmb3JtQnVmZmVy
QmluZGluZ01hcDsKIAogY2xhc3MgVHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbgogewogICBwdWJs
aWM6Ci0gICAgVHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbigpIHt9CisgICAgVHJhbnNsYXRvck1l
dGFsUmVmbGVjdGlvbigpOgorICAgICAgICBoYXNVQk9zKGZhbHNlKSwgaGFzRmxhdElucHV0KGZh
bHNlKSAge30KICAgICB+VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbigpIHt9CiAKICAgICB2b2lk
IGFkZE9yaWdpbmFsTmFtZShjb25zdCBzaXplX3QgaWQsIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1l
KQpAQCAtMzYsMTMgKzYwLDE4IEBAIGNsYXNzIFRyYW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24KICAg
ICB7CiAgICAgICAgIHRleHR1cmVCaW5kaW5ncy5pbnNlcnQoe25hbWUsIHRleHR1cmVCaW5kaW5n
fSk7CiAgICAgfQotICAgIHZvaWQgYWRkVW5pZm9ybUJ1ZmZlckJpbmRpbmcoY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUsIHNpemVfdCB1bmlmb3JtQnVmZmVyQmluZGluZykKKyAgICB2b2lkIGFkZFVz
ZXJVbmlmb3JtQnVmZmVyQmluZGluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgc2l6ZV90IHVz
ZXJVbmlmb3JtQnVmZmVyQmluZGluZykKICAgICB7Ci0gICAgICAgIHVuaWZvcm1CdWZmZXJCaW5k
aW5ncy5pbnNlcnQoe25hbWUsIHVuaWZvcm1CdWZmZXJCaW5kaW5nfSk7CisgICAgICAgIHVzZXJV
bmlmb3JtQnVmZmVyQmluZGluZ3MuaW5zZXJ0KHtuYW1lLCB1c2VyVW5pZm9ybUJ1ZmZlckJpbmRp
bmd9KTsKKyAgICB9CisgICAgdm9pZCBhZGRVbmlmb3JtQnVmZmVyQmluZGluZyhjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSwgVUJPQmluZGluZ0luZm8gYmluZGluZ0luZm8pCisgICAgeworICAgICAg
ICB1bmlmb3JtQnVmZmVyQmluZGluZ3MuaW5zZXJ0KHtuYW1lLCBiaW5kaW5nSW5mb30pOwogICAg
IH0KICAgICBzdGQ6OnN0cmluZyBnZXRPcmlnaW5hbE5hbWUoY29uc3Qgc2l6ZV90IGlkKSB7IHJl
dHVybiBvcmlnaW5hbE5hbWVzLmF0KGlkKTsgfQogICAgIHNhbXBsZXJCaW5kaW5nTWFwIGdldFNh
bXBsZXJCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIHNhbXBsZXJCaW5kaW5nczsgfQogICAgIHRl
eHR1cmVCaW5kaW5nTWFwIGdldFRleHR1cmVCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIHRleHR1
cmVCaW5kaW5nczsgfQorICAgIHVzZXJVbmlmb3JtQnVmZmVyQmluZGluZ01hcCBnZXRVc2VyVW5p
Zm9ybUJ1ZmZlckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gdXNlclVuaWZvcm1CdWZmZXJCaW5k
aW5nczsgfQogICAgIHVuaWZvcm1CdWZmZXJCaW5kaW5nTWFwIGdldFVuaWZvcm1CdWZmZXJCaW5k
aW5ncygpIGNvbnN0IHsgcmV0dXJuIHVuaWZvcm1CdWZmZXJCaW5kaW5nczsgfQogICAgIHNpemVf
dCBnZXRTYW1wbGVyQmluZGluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKICAgICB7
CkBAIC02NCw3ICs5MywxNyBAQCBjbGFzcyBUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uCiAgICAg
ICAgIEFTU0VSVCgwKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCk7CiAgICAgfQotICAgIHNpemVfdCBnZXRVbmlmb3JtQnVmZmVyQmluZGluZyhjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKKyAgICBzaXplX3QgZ2V0VXNlclVuaWZvcm1CdWZm
ZXJCaW5kaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAg
YXV0byBpdCA9IHVzZXJVbmlmb3JtQnVmZmVyQmluZGluZ3MuZmluZChuYW1lKTsKKyAgICAgICAg
aWYgKGl0ICE9IHVzZXJVbmlmb3JtQnVmZmVyQmluZGluZ3MuZW5kKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgw
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7Cisg
ICAgfQorICAgIFVCT0JpbmRpbmdJbmZvIGdldFVuaWZvcm1CdWZmZXJCaW5kaW5nKGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogICAgIHsKICAgICAgICAgYXV0byBpdCA9IHVuaWZvcm1C
dWZmZXJCaW5kaW5ncy5maW5kKG5hbWUpOwogICAgICAgICBpZiAoaXQgIT0gdW5pZm9ybUJ1ZmZl
ckJpbmRpbmdzLmVuZCgpKQpAQCAtNzIsMjAgKzExMSwyOCBAQCBjbGFzcyBUcmFuc2xhdG9yTWV0
YWxSZWZsZWN0aW9uCiAgICAgICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlQoMCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpOworICAgICAgICByZXR1cm4gey5iaW5kSW5kZXggPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpLAorICAgICAgICAgICAgICAgIC5hcnJheVNpemUgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpfTsKICAgICB9CiAgICAgdm9pZCByZXNldCgp
CiAgICAgeworICAgICAgICBoYXNVQk9zID0gZmFsc2U7CisgICAgICAgIGhhc0ZsYXRJbnB1dCA9
IGZhbHNlOwogICAgICAgICBvcmlnaW5hbE5hbWVzLmNsZWFyKCk7CiAgICAgICAgIHNhbXBsZXJC
aW5kaW5ncy5jbGVhcigpOwogICAgICAgICB0ZXh0dXJlQmluZGluZ3MuY2xlYXIoKTsKKyAgICAg
ICAgdXNlclVuaWZvcm1CdWZmZXJCaW5kaW5ncy5jbGVhcigpOwogICAgICAgICB1bmlmb3JtQnVm
ZmVyQmluZGluZ3MuY2xlYXIoKTsKICAgICB9CiAKKyAgICBib29sIGhhc1VCT3MgPSBmYWxzZTsK
KyAgICBib29sIGhhc0ZsYXRJbnB1dCA9IGZhbHNlOworCiAgIHByaXZhdGU6CiAgICAgb3JpZ2lu
YWxOYW1lc01hcCBvcmlnaW5hbE5hbWVzOwogICAgIHNhbXBsZXJCaW5kaW5nTWFwIHNhbXBsZXJC
aW5kaW5nczsKICAgICB0ZXh0dXJlQmluZGluZ01hcCB0ZXh0dXJlQmluZGluZ3M7CisgICAgdXNl
clVuaWZvcm1CdWZmZXJCaW5kaW5nTWFwIHVzZXJVbmlmb3JtQnVmZmVyQmluZGluZ3M7CiAgICAg
dW5pZm9ybUJ1ZmZlckJpbmRpbmdNYXAgdW5pZm9ybUJ1ZmZlckJpbmRpbmdzOwogfTsKIApAQCAt
MTE1LDYgKzE2Miw4IEBAIGNsYXNzIFRyYW5zbGF0b3JNZXRhbERpcmVjdCA6IHB1YmxpYyBUQ29t
cGlsZXIKIAogICAgIEFOR0xFX05PX0RJU0NBUkQgYm9vbCB0cmFuc2Zvcm1EZXB0aEJlZm9yZUNv
cnJlY3Rpb24oVEludGVybUJsb2NrICZyb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFZhcmlhYmxlICZkcml2ZXJVbmlm
b3Jtcyk7CisgICAgQU5HTEVfTk9fRElTQ0FSRCBib29sIGluc2VydFNhbXBsZU1hc2tXcml0aW5n
TG9naWMoVEludGVybUJsb2NrICZyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSAmZHJpdmVyVW5pZm9ybXMp
OwogICAgIEFOR0xFX05PX0RJU0NBUkQgYm9vbCBpbnNlcnRSYXN0ZXJpemF0aW9uRGlzY2FyZExv
Z2ljKFRJbnRlcm1CbG9jayAmcm9vdCk7CiAKICAgICB2b2lkIGNyZWF0ZUFkZGl0aW9uYWxHcmFw
aGljc0RyaXZlclVuaWZvcm1GaWVsZHMoc3RkOjp2ZWN0b3I8VEZpZWxkICo+ICZmaWVsZHNPdXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0VtaXRNZXRhbC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
RW1pdE1ldGFsLmNwcAppbmRleCAxYTNmNjMzYjY4NjUwYzFkM2JiODMyODJlNzI5ODM0ZjA0OGE5
MjM5Li45Y2E1OWE3ZTQ2ZTgxOGIwNDBiZTRlODczMmI0NTg0MzIyOWEwY2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFs
LmNwcApAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3lt
Ym9sVGFibGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFs
RGlyZWN0L0FzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9Db25zdGFudE5hbWVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRGVidWcuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9EZWJ1Z1NpbmsuaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9FbWl0TWV0YWwuaCIK
QEAgLTExOCw2ICsxMTksNyBAQCBjbGFzcyBHZW5NZXRhbFRyYXZlcnNlciA6IHB1YmxpYyBUSW50
ZXJtVHJhdmVyc2VyCiAgICAgICAgIGJvb2wgZW1pdFBvc3RRdWFsaWZpZXIgICAgICAgICAgPSBm
YWxzZTsKICAgICAgICAgYm9vbCBpc1BhY2tlZCAgICAgICAgICAgICAgICAgICA9IGZhbHNlOwog
ICAgICAgICBib29sIGRpc2FibGVTdHJ1Y3RTcGVjaWZpZXIgICAgID0gZmFsc2U7CisgICAgICAg
IGJvb2wgaXNVQk8gICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKICAgICAgICAgY29uc3Qg
QWRkcmVzc1NwYWNlICppc1BvaW50ZXIgICA9IG51bGxwdHI7CiAgICAgICAgIGNvbnN0IEFkZHJl
c3NTcGFjZSAqaXNSZWZlcmVuY2UgPSBudWxscHRyOwogICAgIH07CkBAIC0xMjgsNiArMTMwLDgg
QEAgY2xhc3MgR2VuTWV0YWxUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAg
IH07CiAKICAgICB2b2lkIGVtaXRJbmRlbnRhdGlvbigpOworICAgIHZvaWQgZW1pdE9wZW5pbmdQ
b2ludGVyUGFyZW4oKTsKKyAgICB2b2lkIGVtaXRDbG9zaW5nUG9pbnRlclBhcmVuKCk7CiAgICAg
dm9pZCBlbWl0RnVuY3Rpb25TaWduYXR1cmUoY29uc3QgVEZ1bmN0aW9uICZmdW5jKTsKICAgICB2
b2lkIGVtaXRGdW5jdGlvblJldHVybihjb25zdCBURnVuY3Rpb24gJmZ1bmMpOwogICAgIHZvaWQg
ZW1pdEZ1bmN0aW9uUGFyYW1ldGVyKGNvbnN0IFRGdW5jdGlvbiAmZnVuYywgY29uc3QgVFZhcmlh
YmxlICZwYXJhbSk7CkBAIC0xNTIsNiArMTU2LDcgQEAgY2xhc3MgR2VuTWV0YWxUcmF2ZXJzZXIg
OiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN0cnVjdHVyZSAmcGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmllbGRBbm5vdGF0aW9uSW5kaWNlcyAmYW5ub3RhdGlvbkluZGljZXMpOwogICAgIHZvaWQgZW1p
dEF0dHJpYnV0ZURlY2xhcmF0aW9uKGNvbnN0IFRGaWVsZCAmZmllbGQsIEZpZWxkQW5ub3RhdGlv
bkluZGljZXMgJmFubm90YXRpb25JbmRpY2VzKTsKKyAgICB2b2lkIGVtaXRVbmlmb3JtQnVmZmVy
RGVjbGFyYXRpb24oY29uc3QgVEZpZWxkICZmaWVsZCwgRmllbGRBbm5vdGF0aW9uSW5kaWNlcyAm
YW5ub3RhdGlvbkluZGljZXMpOwogICAgIHZvaWQgZW1pdFN0cnVjdERlY2xhcmF0aW9uKGNvbnN0
IFRUeXBlICZ0eXBlKTsKICAgICB2b2lkIGVtaXRPcmRpbmFyeVZhcmlhYmxlRGVjbGFyYXRpb24o
Y29uc3QgVmFyRGVjbCAmZGVjbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRW1pdFZhcmlhYmxlRGVjbGFyYXRpb25Db25maWcgJmV2ZENvbmZpZyk7CkBA
IC0xODEsOSArMTg2LDEyIEBAIGNsYXNzIEdlbk1ldGFsVHJhdmVyc2VyIDogcHVibGljIFRJbnRl
cm1UcmF2ZXJzZXIKICAgICBjb25zdCBJbnZhcmlhbnRzICZtSW52YXJpYW50czsKICAgICBTeW1i
b2xFbnYgJm1TeW1ib2xFbnY7CiAgICAgSWRHZW4gJm1JZEdlbjsKLSAgICBpbnQgbUluZGVudExl
dmVsICAgICAgICA9IC0xOwotICAgIGludCBtTGFzdEluZGVudGF0aW9uUG9zID0gLTE7CisgICAg
aW50IG1JbmRlbnRMZXZlbCAgICAgICAgICAgPSAtMTsKKyAgICBpbnQgbUxhc3RJbmRlbnRhdGlv
blBvcyAgICA9IC0xOworICAgIGludCBtT3BlblBvaW50ZXJQYXJlbkNvdW50ID0gMDsKICAgICBi
b29sIG1QYXJlbnRJc1N3aXRjaCAgICA9IGZhbHNlOworICAgIGJvb2wgaXNUcmF2ZXJzaW5nVmVy
dGV4TWFpbiAgPSBmYWxzZTsKKyAgICBib29sIG1UZW1wb3JhcmlseURpc2FibGVTZW1pY29sb24g
PSBmYWxzZTsKICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8Y29uc3QgVFN5bWJvbCAqLCBOYW1lPiBt
UmVuYW1lZFN5bWJvbHM7CiAgICAgY29uc3QgRnVuY1RvTmFtZSBtRnVuY1RvTmFtZSAgID0gQnVp
bGRGdW5jVG9OYW1lKCk7CiAgICAgc2l6ZV90IG1NYWluVGV4dHVyZUluZGV4ICAgICAgID0gMDsK
QEAgLTE5Nyw2ICsyMDUsNyBAQCBHZW5NZXRhbFRyYXZlcnNlcjo6fkdlbk1ldGFsVHJhdmVyc2Vy
KCkKIHsKICAgICBBU1NFUlQobUluZGVudExldmVsID09IC0xKTsKICAgICBBU1NFUlQoIW1QYXJl
bnRJc1N3aXRjaCk7CisgICAgQVNTRVJUKG1PcGVuUG9pbnRlclBhcmVuQ291bnQgPT0gMCk7CiB9
CiAKIEdlbk1ldGFsVHJhdmVyc2VyOjpHZW5NZXRhbFRyYXZlcnNlcihjb25zdCBUQ29tcGlsZXIg
JmNvbXBpbGVyLApAQCAtMjMxLDYgKzI0MCwyMSBAQCB2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjpl
bWl0SW5kZW50YXRpb24oKQogICAgIG1MYXN0SW5kZW50YXRpb25Qb3MgPSBtT3V0LnNpemUoKTsK
IH0KIAordm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdE9wZW5pbmdQb2ludGVyUGFyZW4oKQor
eworICAgIG1PdXQgPDwgIigqIjsKKyAgICBtT3BlblBvaW50ZXJQYXJlbkNvdW50Kys7Cit9CisK
K3ZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRDbG9zaW5nUG9pbnRlclBhcmVuKCkKK3sKKyAg
ICBpZiAobU9wZW5Qb2ludGVyUGFyZW5Db3VudCA+IDApCisgICAgeworICAgICAgICBtT3V0IDw8
ICIpIjsKKyAgICAgICAgbU9wZW5Qb2ludGVyUGFyZW5Db3VudC0tOworICAgIH0KK30KKwogc3Rh
dGljIGNvbnN0IGNoYXIgKkdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciBvcCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcmVzdWx0VHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqYXJnVHlwZTAs
CkBAIC0zNjYsNyArMzkwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKkdldE9wZXJhdG9yU3RyaW5n
KFRPcGVyYXRvciBvcCwKIAogICAgICAgICBjYXNlIFRPcGVyYXRvcjo6RU9wTm90RXF1YWw6CiAg
ICAgICAgICAgICBpZiAoKGFyZ1R5cGUwLT5pc1ZlY3RvcigpICYmIGFyZ1R5cGUxLT5pc1ZlY3Rv
cigpKSB8fAotICAgICAgICAgICAgICAgIChhcmdUeXBlMC0+aXNBcnJheSgpICYmIGFyZ1R5cGUx
LT5pc0FycmF5KCkpfHwKKyAgICAgICAgICAgICAgICAoYXJnVHlwZTAtPmlzQXJyYXkoKSAmJiBh
cmdUeXBlMS0+aXNBcnJheSgpKSB8fAogICAgICAgICAgICAgICAgIChhcmdUeXBlMC0+aXNNYXRy
aXgoKSAmJiBhcmdUeXBlMS0+aXNNYXRyaXgoKSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuICJBTkdMRV9ub3RFcXVhbCI7CkBAIC05MzUsNyArOTU5LDcgQEAgdm9pZCBH
ZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdFBvc3RRdWFsaWZpZXIoY29uc3QgRW1pdFZhcmlhYmxlRGVj
bGFyYXRpb25Db25maWcgJmUKICAgICB9CiAKICAgICBjb25zdCBib29sIGlzSW52YXJpYW50ID0K
LSAgICAgICAgKGRlY2wuaXNGaWVsZCgpID8gbUludmFyaWFudHMuY29udGFpbnMoZGVjbC5maWVs
ZCgpKSA6IG1JbnZhcmlhbnRzLmNvbnRhaW5zKGRlY2wudmFyaWFibGUoKSkpICYmIChxdWFsaWZp
ZXIgPT0gVFF1YWxpZmllcjo6RXZxUG9zaXRpb24gfHwgcXVhbGlmaWVyID09IFRRdWFsaWZpZXI6
OkV2cUZyYWdDb29yZCk7CisgICAgKGRlY2wuaXNGaWVsZCgpID8gbUludmFyaWFudHMuY29udGFp
bnMoZGVjbC5maWVsZCgpKSA6IG1JbnZhcmlhbnRzLmNvbnRhaW5zKGRlY2wudmFyaWFibGUoKSkp
ICYmIChxdWFsaWZpZXIgPT0gVFF1YWxpZmllcjo6RXZxUG9zaXRpb24gfHwgcXVhbGlmaWVyID09
IFRRdWFsaWZpZXI6OkV2cUZyYWdDb29yZCk7CiAKICAgICBpZiAoaXNJbnZhcmlhbnQpCiAgICAg
ewpAQCAtMTAzNyw5ICsxMDYxLDE3IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRCYXJl
VHlwZU5hbWUoY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IEVtaXRUeXBlQ29uZmlnCiAKIHZvaWQg
R2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRUeXBlKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBFbWl0
VHlwZUNvbmZpZyAmZXRDb25maWcpCiB7CisgICAgY29uc3QgYm9vbCBpc1VCTyA9IGV0Q29uZmln
LmV2ZENvbmZpZyA/IGV0Q29uZmlnLmV2ZENvbmZpZy0+aXNVQk8gOiBmYWxzZTsKICAgICBpZiAo
ZXRDb25maWcuZXZkQ29uZmlnKQogICAgIHsKICAgICAgICAgY29uc3QgYXV0byAmZXZkQ29uZmln
ID0gKmV0Q29uZmlnLmV2ZENvbmZpZzsKKyAgICAgICAgaWYgKGlzVUJPKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAodHlwZS5pc0FycmF5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbU91dCA8PCAiQU5HTEVfdGVuc29yPCI7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICAgICAgaWYgKGV2ZENvbmZpZy5pc1BvaW50ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1PdXQgPDwgdG9TdHJpbmcoKmV2ZENvbmZpZy5pc1BvaW50ZXIpOwpAQCAtMTA1Miw5ICsxMDg0
LDEyIEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRUeXBlKGNvbnN0IFRUeXBlICZ0eXBl
LCBjb25zdCBFbWl0VHlwZUNvbmZpZyAmZXRDb25mCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAodHlwZS5pc0FycmF5KCkpCisgICAgaWYgKCFpc1VCTykKICAgICB7Ci0gICAgICAgIG1PdXQg
PDwgIkFOR0xFX3RlbnNvcjwiOworICAgICAgICBpZiAodHlwZS5pc0FycmF5KCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1PdXQgPDwgIkFOR0xFX3RlbnNvcjwiOworICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKHR5cGUuaXNWZWN0b3IoKSB8fCB0eXBlLmlzTWF0cml4KCkpCkBAIC0xMDc4
LDEzICsxMTEzLDE2IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRUeXBlKGNvbnN0IFRU
eXBlICZ0eXBlLCBjb25zdCBFbWl0VHlwZUNvbmZpZyAmZXRDb25mCiAgICAgICAgIG1PdXQgPDwg
dHlwZS5nZXRDb2xzKCkgPDwgIngiIDw8IHR5cGUuZ2V0Um93cygpOwogICAgIH0KIAotICAgIGlm
ICh0eXBlLmlzQXJyYXkoKSkKKyAgICBpZiAoIWlzVUJPKQogICAgIHsKLSAgICAgICAgZm9yIChh
dXRvIHNpemUgOiB0eXBlLmdldEFycmF5U2l6ZXMoKSkKKyAgICAgICAgaWYgKHR5cGUuaXNBcnJh
eSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtT3V0IDw8ICIsICIgPDwgc2l6ZTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBzaXplIDogdHlwZS5nZXRBcnJheVNpemVzKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbU91dCA8PCAiLCAiIDw8IHNpemU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtT3V0IDw8ICI+IjsKICAgICAgICAgfQotICAgICAgICBtT3V0IDw8ICI+
IjsKICAgICB9CiAKICAgICBpZiAoZXRDb25maWcuZXZkQ29uZmlnKQpAQCAtMTA5OCw2ICsxMTM2
LDE3IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRUeXBlKGNvbnN0IFRUeXBlICZ0eXBl
LCBjb25zdCBFbWl0VHlwZUNvbmZpZyAmZXRDb25mCiAgICAgICAgIHsKICAgICAgICAgICAgIG1P
dXQgPDwgIiAmIjsKICAgICAgICAgfQorICAgICAgICBpZiAoaXNVQk8pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8gc2l6ZSA6IHR5cGUuZ2V0QXJyYXlTaXplcygpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbU91dCA8PCAiLCAiIDw8IHNpemU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1PdXQgPDwgIj4iOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xMTEyLDYgKzExNjEsNyBAQCB2b2lkIEdlbk1ldGFs
VHJhdmVyc2VyOjplbWl0RmllbGREZWNsYXJhdGlvbihjb25zdCBURmllbGQgJmZpZWxkLAogICAg
IGV2ZENvbmZpZy5lbWl0UG9zdFF1YWxpZmllciAgICAgID0gdHJ1ZTsKICAgICBldmRDb25maWcu
ZGlzYWJsZVN0cnVjdFNwZWNpZmllciA9IHRydWU7CiAgICAgZXZkQ29uZmlnLmlzUGFja2VkICAg
ICAgICAgICAgICAgPSBtU3ltYm9sRW52LmlzUGFja2VkKGZpZWxkKTsKKyAgICBldmRDb25maWcu
aXNVQk8gICAgICAgICAgICAgICAgICA9IG1TeW1ib2xFbnYuaXNVQk8oZmllbGQpOwogICAgIGV2
ZENvbmZpZy5pc1BvaW50ZXIgICAgICAgICAgICAgID0gbVN5bWJvbEVudi5pc1BvaW50ZXIoZmll
bGQpOwogICAgIGV2ZENvbmZpZy5pc1JlZmVyZW5jZSAgICAgICAgICAgID0gbVN5bWJvbEVudi5p
c1JlZmVyZW5jZShmaWVsZCk7CiAgICAgZW1pdFZhcmlhYmxlRGVjbGFyYXRpb24oVmFyRGVjbChm
aWVsZCksIGV2ZENvbmZpZyk7CkBAIC0xMTIzLDYgKzExNzMsOSBAQCB2b2lkIEdlbk1ldGFsVHJh
dmVyc2VyOjplbWl0RmllbGREZWNsYXJhdGlvbihjb25zdCBURmllbGQgJmZpZWxkLAogICAgICAg
ICAgICAgaWYgKG1QaXBlbGluZVN0cnVjdHMuZnJhZ21lbnRJbi5leHRlcm5hbCA9PSAmcGFyZW50
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1PdXQgPDwgIiBbW2ZsYXRdXSI7Cisg
ICAgICAgICAgICAgICAgVHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbiAqcmVmbGVjdGlvbiA9Cisg
ICAgICAgICAgICAgICAgICAgICgoc2g6OlRyYW5zbGF0b3JNZXRhbERpcmVjdCAqKSZtQ29tcGls
ZXIpLT5nZXRUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmVm
bGVjdGlvbi0+aGFzRmxhdElucHV0ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogCkBAIC0xMTUwLDYgKzEyMDMsMTAgQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6
ZW1pdEZpZWxkRGVjbGFyYXRpb24oY29uc3QgVEZpZWxkICZmaWVsZCwKICAgICAgICAgICAgIG1P
dXQgPDwgIiBbW2RlcHRoKGFueSldXSI7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBj
YXNlIFRRdWFsaWZpZXI6OkV2cVNhbXBsZU1hc2s6CisgICAgICAgICAgICBtT3V0IDw8ICIgW1tz
YW1wbGVfbWFzaywgZnVuY3Rpb25fY29uc3RhbnQoIiA8PCBzaDo6VHJhbnNsYXRvck1ldGFsRGly
ZWN0OjpHZXRDb3ZlcmFnZU1hc2tFbmFibGVkQ29uc3ROYW1lKCkgPDwgIildXSI7CisgICAgICAg
ICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTIyOCw3ICsxMjg1LDMxIEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRBdHRy
aWJ1dGVEZWNsYXJhdGlvbihjb25zdCBURmllbGQgJmZpZWxkLAogICAgIEVtaXRWYXJpYWJsZURl
Y2xhcmF0aW9uQ29uZmlnIGV2ZENvbmZpZzsKICAgICBldmRDb25maWcuZGlzYWJsZVN0cnVjdFNw
ZWNpZmllciA9IHRydWU7CiAgICAgZW1pdFZhcmlhYmxlRGVjbGFyYXRpb24oVmFyRGVjbChmaWVs
ZCksIGV2ZENvbmZpZyk7Ci0gICAgbU91dCA8PCByeDo6bXRsOjprVW5hc3NpZ25lZEF0dHJpYnV0
ZVN0cmluZzsKKyAgICBtT3V0IDw8IHNoOjprVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZzsKK30K
Kwordm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdFVuaWZvcm1CdWZmZXJEZWNsYXJhdGlvbihj
b25zdCBURmllbGQgJmZpZWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZpZWxkQW5ub3RhdGlvbkluZGljZXMgJmFubm90YXRpb25JbmRpY2VzKQor
eworICAgIEVtaXRWYXJpYWJsZURlY2xhcmF0aW9uQ29uZmlnIGV2ZENvbmZpZzsKKyAgICBldmRD
b25maWcuZGlzYWJsZVN0cnVjdFNwZWNpZmllciA9IHRydWU7CisgICAgZXZkQ29uZmlnLmlzVUJP
ICAgICAgICAgICAgICAgICAgPSBtU3ltYm9sRW52LmlzVUJPKGZpZWxkKTsKKyAgICBldmRDb25m
aWcuaXNQb2ludGVyICAgICAgICAgICAgICA9IG1TeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKTsK
KyAgICBlbWl0VmFyaWFibGVEZWNsYXJhdGlvbihWYXJEZWNsKGZpZWxkKSwgZXZkQ29uZmlnKTsK
KyAgICBtT3V0IDw8ICJbW2lkKCIgPDwgYW5ub3RhdGlvbkluZGljZXMuYXR0cmlidXRlIDw8ICIp
XV0iOworCisgICAgY29uc3QgVFR5cGUgJnR5cGUgPSAqZmllbGQudHlwZSgpOworICAgIGNvbnN0
IGludCBhcnJheVNpemUgPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0QXJyYXlTaXplUHJvZHVj
dCgpIDogMTsKKworICAgIFRyYW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24gKnJlZmxlY3Rpb24gPQor
ICAgICAgICAoKHNoOjpUcmFuc2xhdG9yTWV0YWxEaXJlY3QgKikmbUNvbXBpbGVyKS0+Z2V0VHJh
bnNsYXRvck1ldGFsUmVmbGVjdGlvbigpOworICAgIEFTU0VSVCh0eXBlLmdldEJhc2ljVHlwZSgp
ID09IFRCYXNpY1R5cGU6OkVidFN0cnVjdCk7CisgICAgY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0
dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBvcmlnaW5hbE5h
bWUgPQorICAgICAgICByZWZsZWN0aW9uLT5nZXRPcmlnaW5hbE5hbWUoc3RydWN0dXJlLT51bmlx
dWVJZCgpLmdldCgpKTsKKyAgICByZWZsZWN0aW9uLT5hZGRVbmlmb3JtQnVmZmVyQmluZGluZyhv
cmlnaW5hbE5hbWUsIHsuYmluZEluZGV4ID0gYW5ub3RhdGlvbkluZGljZXMuYXR0cmlidXRlLCAu
YXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihhcnJheVNpemUpfSk7CisKKyAgICBhbm5v
dGF0aW9uSW5kaWNlcy5hdHRyaWJ1dGUgKz0gYXJyYXlTaXplOwogfQogCiB2b2lkIEdlbk1ldGFs
VHJhdmVyc2VyOjplbWl0U3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFR5cGUgJnR5cGUpCkBAIC0x
MjQ1LDYgKzEzMjYsNyBAQCB2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0U3RydWN0RGVjbGFy
YXRpb24oY29uc3QgVFR5cGUgJnR5cGUpCiAgICAgY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJl
ID0gKnR5cGUuZ2V0U3RydWN0KCk7CiAgICAgc3RkOjptYXA8TmFtZSwgc2l6ZV90PiBmaWVsZFRv
QXR0cmlidXRlSW5kZXg7CiAgICAgY29uc3QgYm9vbCBoYXNBdHRyaWJ1dGVJbmRpY2VzICAgICAg
ICAgICA9IG1QaXBlbGluZVN0cnVjdHMudmVydGV4SW4uZXh0ZXJuYWwgPT0gJnN0cnVjdHVyZTsK
KyAgICBjb25zdCBib29sIGhhc1VuaWZvcm1CdWZmZXJJbmRpY2llcyAgICAgID0gbVBpcGVsaW5l
U3RydWN0cy51bmlmb3JtQnVmZmVycy5leHRlcm5hbCA9PSAmc3RydWN0dXJlOwogICAgIGNvbnN0
IGJvb2wgcmVjbGFpbVVudXNlZEF0dHJpYnV0ZUluZGljZXMgPSBtQ29tcGlsZXIuZ2V0U2hhZGVy
VmVyc2lvbigpIDwgMzAwOwogCiAgICAgaWYgKGhhc0F0dHJpYnV0ZUluZGljZXMpCkBAIC0xMjgw
LDYgKzEzNjIsMTAgQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdFN0cnVjdERlY2xhcmF0
aW9uKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAgICAgICAgICAgIGVtaXRBdHRyaWJ1dGVEZWNs
YXJhdGlvbigqZmllbGQsIGFubm90YXRpb25JbmRpY2VzKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmKGhhc1VuaWZvcm1CdWZmZXJJbmRpY2llcykKKyAgICAgICAg
eworICAgICAgICAgICAgZW1pdFVuaWZvcm1CdWZmZXJEZWNsYXJhdGlvbigqZmllbGQsIGFubm90
YXRpb25JbmRpY2VzKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGVtaXRGaWVsZERlY2xhcmF0aW9uKCpmaWVsZCwgc3RydWN0dXJlLCBhbm5vdGF0aW9u
SW5kaWNlcyk7CkBAIC0xMjg3LDEyICsxMzczLDEyIEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6
OmVtaXRTdHJ1Y3REZWNsYXJhdGlvbihjb25zdCBUVHlwZSAmdHlwZSkKICAgICAgICAgbU91dCA8
PCAiO1xuIjsKICAgICB9CiAKLSAgICBpZiAoIW1QaXBlbGluZVN0cnVjdHMubWF0Y2hlcygmc3Ry
dWN0dXJlLCB0cnVlLCB0cnVlKSkKKyAgICBpZiAoIW1QaXBlbGluZVN0cnVjdHMubWF0Y2hlcyhz
dHJ1Y3R1cmUsIHRydWUsIHRydWUpKQogICAgIHsKICAgICAgICAgTWV0YWxMYXlvdXRPZkNvbmZp
ZyBsYXlvdXRDb25maWc7CiAgICAgICAgIGxheW91dENvbmZpZy50cmVhdFNhbXBsZXJzQXNUZXh0
dXJlRW52ID0gdHJ1ZTsKICAgICAgICAgTGF5b3V0IGxheW91dCAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBNZXRhbExheW91dE9mKHR5cGUsIGxheW91dENvbmZpZyk7Ci0gICAgICAgIHNpemVf
dCBwYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbGF5b3V0LnNpemVPZiAlIDE2Owor
ICAgICAgICBzaXplX3QgcGFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChrRGVmYXVs
dFN0cnVjdEFsaWdubWVudFNpemUgLSBsYXlvdXQuc2l6ZU9mKSAlIGtEZWZhdWx0U3RydWN0QWxp
Z25tZW50U2l6ZTsKICAgICAgICAgaWYgKHBhZCAhPSAwKQogICAgICAgICB7CiAgICAgICAgICAg
ICBlbWl0SW5kZW50YXRpb24oKTsKQEAgLTEzMTQsNyArMTQwMCw2IEBAIHZvaWQgR2VuTWV0YWxU
cmF2ZXJzZXI6OmVtaXRPcmRpbmFyeVZhcmlhYmxlRGVjbGFyYXRpb24oCiAKICAgICBjb25zdCBU
VHlwZSAmdHlwZSA9IGRlY2wudHlwZSgpOwogICAgIGVtaXRUeXBlKHR5cGUsIGV0Q29uZmlnKTsK
LQogICAgIGlmIChkZWNsLnN5bWJvbFR5cGUoKSAhPSBTeW1ib2xUeXBlOjpFbXB0eSkKICAgICB7
CiAgICAgICAgIG1PdXQgPDwgIiAiOwpAQCAtMTM2Nyw3ICsxNDUyLDYgQEAgdm9pZCBHZW5NZXRh
bFRyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSkKIHsKICAg
ICBjb25zdCBUVmFyaWFibGUgJnZhciA9IHN5bWJvbE5vZGUtPnZhcmlhYmxlKCk7CiAgICAgY29u
c3QgVFR5cGUgJnR5cGUgICAgPSB2YXIuZ2V0VHlwZSgpOwotCiAgICAgQVNTRVJUKHZhci5zeW1i
b2xUeXBlKCkgIT0gU3ltYm9sVHlwZTo6RW1wdHkpOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gVEJhc2ljVHlwZTo6RWJ0Vm9pZCkKQEAgLTE1NDAsOSArMTYyNCwxNyBAQCBib29s
IEdlbk1ldGFsVHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAqYmlu
YXJ5Tm9kZSkKICAgICAgICAgY2FzZSBUT3BlcmF0b3I6OkVPcEluZGV4RGlyZWN0U3RydWN0Ogog
ICAgICAgICBjYXNlIFRPcGVyYXRvcjo6RU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKICAg
ICAgICAgeworICAgICAgICAgICAgY29uc3QgVEZpZWxkICZmaWVsZCA9IGdldERpcmVjdEZpZWxk
KGxlZnROb2RlLCByaWdodE5vZGUpOworICAgICAgICAgICAgaWYgKG1TeW1ib2xFbnYuaXNQb2lu
dGVyKGZpZWxkKSAmJiBtU3ltYm9sRW52LmlzVUJPKGZpZWxkKSkgeworICAgICAgICAgICAgICAg
IGVtaXRPcGVuaW5nUG9pbnRlclBhcmVuKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBn
cm91cGVkVHJhdmVyc2UobGVmdE5vZGUpOworICAgICAgICAgICAgaWYgKCFtU3ltYm9sRW52Lmlz
UG9pbnRlcihmaWVsZCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdENsb3Np
bmdQb2ludGVyUGFyZW4oKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1PdXQgPDwgIi4i
OwotICAgICAgICAgICAgZW1pdE5hbWVPZihnZXREaXJlY3RGaWVsZChsZWZ0Tm9kZSwgcmlnaHRO
b2RlKSk7CisgICAgICAgICAgICBlbWl0TmFtZU9mKGZpZWxkKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKIApAQCAtMTU3NSw3ICsxNjY3LDYgQEAgYm9vbCBHZW5NZXRhbFRyYXZlcnNlcjo6
dmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIG1PdXQgPDwgbWF4U2l6ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgbU91dCA8PCAiKSI7Ci0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1PdXQgPDwg
Il0iOwogICAgICAgICB9CkBAIC0xNTk0LDExICsxNjg1LDE2IEBAIGJvb2wgR2VuTWV0YWxUcmF2
ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5ICpiaW5hcnlOb2RlKQogICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbU91dCA8PCAiICI7CiAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRDbG9zaW5nUG9pbnRlclBhcmVuKCk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIG1PdXQgPDwgR2V0T3BlcmF0b3JTdHJpbmcob3AsIHJlc3Vs
dFR5cGUsICZsZWZ0VHlwZSwgJnJpZ2h0VHlwZSkgPDwgIiAiOwogICAgICAgICAgICAgICAgIGdy
b3VwZWRUcmF2ZXJzZShyaWdodE5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRDbG9zaW5nUG9pbnRlclBhcmVu
KCk7CiAgICAgICAgICAgICAgICAgbU91dCA8PCBHZXRPcGVyYXRvclN0cmluZyhvcCwgcmVzdWx0
VHlwZSwgJmxlZnRUeXBlLCAmcmlnaHRUeXBlKSA8PCAiKCI7CiAgICAgICAgICAgICAgICAgbGVm
dE5vZGUudHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgbU91dCA8PCAiLCAiOwpAQCAt
MTc2Niw2ICsxODYyLDEwIEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRGdW5jdGlvblNp
Z25hdHVyZShjb25zdCBURnVuY3Rpb24gJmZ1bmMpCiAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSAm
cGFyYW0gPSAqZnVuYy5nZXRQYXJhbShpKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUGFyYW1ldGVy
KGZ1bmMsIHBhcmFtKTsKICAgICB9CisgICAgaWYoaXNUcmF2ZXJzaW5nVmVydGV4TWFpbikKKyAg
ICB7CisgICAgICAgIG1PdXQgPDwgIiBAQFhGQi1CaW5kaW5nc0BAICI7CisgICAgfQogCiAgICAg
bU91dCA8PCAiKSI7CiB9CkBAIC0xNzczLDE4ICsxODczLDIwIEBAIHZvaWQgR2VuTWV0YWxUcmF2
ZXJzZXI6OmVtaXRGdW5jdGlvblNpZ25hdHVyZShjb25zdCBURnVuY3Rpb24gJmZ1bmMpCiB2b2lk
IEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0RnVuY3Rpb25SZXR1cm4oY29uc3QgVEZ1bmN0aW9uICZm
dW5jKQogewogICAgIGNvbnN0IGJvb2wgaXNNYWluID0gZnVuYy5pc01haW4oKTsKLQorICAgIGJv
b2wgaXNWZXJ0ZXhNYWluID0gZmFsc2U7CiAgICAgY29uc3QgVFR5cGUgJnJldHVyblR5cGUgPSBm
dW5jLmdldFJldHVyblR5cGUoKTsKICAgICBpZiAoaXNNYWluKQogICAgIHsKICAgICAgICAgY29u
c3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gcmV0dXJuVHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAg
ICAgaWYgKG1QaXBlbGluZVN0cnVjdHMuZnJhZ21lbnRPdXQubWF0Y2hlcyhzdHJ1Y3R1cmUpKQor
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IG51bGxwdHIpOworICAgICAgICBpZiAobVBpcGVs
aW5lU3RydWN0cy5mcmFnbWVudE91dC5tYXRjaGVzKCpzdHJ1Y3R1cmUpKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtT3V0IDw8ICJmcmFnbWVudCAiOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKG1QaXBlbGluZVN0cnVjdHMudmVydGV4T3V0Lm1hdGNoZXMoc3RydWN0dXJlKSkKKyAgICAg
ICAgZWxzZSBpZiAobVBpcGVsaW5lU3RydWN0cy52ZXJ0ZXhPdXQubWF0Y2hlcygqc3RydWN0dXJl
KSkKICAgICAgICAgewotICAgICAgICAgICAgbU91dCA8PCAidmVydGV4ICI7CisgICAgICAgICAg
ICBtT3V0IDw8ICJ2ZXJ0ZXggX19WRVJURVhfT1VUKCI7CisgICAgICAgICAgICBpc1ZlcnRleE1h
aW4gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtMTc5Miw2
ICsxODk0LDggQEAgdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEZ1bmN0aW9uUmV0dXJuKGNv
bnN0IFRGdW5jdGlvbiAmZnVuYykKICAgICAgICAgfQogICAgIH0KICAgICBlbWl0VHlwZShyZXR1
cm5UeXBlLCBFbWl0VHlwZUNvbmZpZygpKTsKKyAgICBpZihpc1ZlcnRleE1haW4pCisgICAgICAg
IG1PdXQgPDwgIikgIjsKIH0KIAogdm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEZ1bmN0aW9u
UGFyYW1ldGVyKGNvbnN0IFRGdW5jdGlvbiAmZnVuYywgY29uc3QgVFZhcmlhYmxlICZwYXJhbSkK
QEAgLTE4MDUsNiArMTkwOSw3IEBAIHZvaWQgR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRGdW5jdGlv
blBhcmFtZXRlcihjb25zdCBURnVuY3Rpb24gJmZ1bmMsIGNvbnN0IFRWYXJpCiAgICAgZXZkQ29u
ZmlnLmlzUGFyYW1ldGVyICAgICAgID0gdHJ1ZTsKICAgICBldmRDb25maWcuaXNNYWluUGFyYW1l
dGVyICAgPSBpc01haW47CiAgICAgZXZkQ29uZmlnLmVtaXRQb3N0UXVhbGlmaWVyID0gaXNNYWlu
OworICAgIGV2ZENvbmZpZy5pc1VCTyAgICAgICAgICAgICA9IG1TeW1ib2xFbnYuaXNVQk8ocGFy
YW0pOwogICAgIGV2ZENvbmZpZy5pc1BvaW50ZXIgICAgICAgICA9IG1TeW1ib2xFbnYuaXNQb2lu
dGVyKHBhcmFtKTsKICAgICBldmRDb25maWcuaXNSZWZlcmVuY2UgICAgICAgPSBtU3ltYm9sRW52
LmlzUmVmZXJlbmNlKHBhcmFtKTsKICAgICBlbWl0VmFyaWFibGVEZWNsYXJhdGlvbihWYXJEZWNs
KHBhcmFtKSwgZXZkQ29uZmlnKTsKQEAgLTE4MTUsMTkgKzE5MjAsMjQgQEAgdm9pZCBHZW5NZXRh
bFRyYXZlcnNlcjo6ZW1pdEZ1bmN0aW9uUGFyYW1ldGVyKGNvbnN0IFRGdW5jdGlvbiAmZnVuYywg
Y29uc3QgVFZhcmkKICAgICAgICAgICAgICgoc2g6OlRyYW5zbGF0b3JNZXRhbERpcmVjdCAqKSZt
Q29tcGlsZXIpLT5nZXRUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uKCk7CiAgICAgICAgIGlmIChz
dHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtUGlwZWxpbmVTdHJ1Y3RzLmZy
YWdtZW50SW4ubWF0Y2hlcyhzdHJ1Y3R1cmUpIHx8Ci0gICAgICAgICAgICAgICAgbVBpcGVsaW5l
U3RydWN0cy52ZXJ0ZXhJbi5tYXRjaGVzKHN0cnVjdHVyZSkpCisgICAgICAgICAgICBpZiAobVBp
cGVsaW5lU3RydWN0cy5mcmFnbWVudEluLm1hdGNoZXMoKnN0cnVjdHVyZSkgfHwKKyAgICAgICAg
ICAgICAgICBtUGlwZWxpbmVTdHJ1Y3RzLnZlcnRleEluLm1hdGNoZXMoKnN0cnVjdHVyZSkpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbU91dCA8PCAiIFtbc3RhZ2VfaW5dXSI7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtUGlwZWxpbmVTdHJ1Y3RzLmFuZ2xl
VW5pZm9ybXMubWF0Y2hlcyhzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgZWxzZSBpZiAobVBpcGVs
aW5lU3RydWN0cy5hbmdsZVVuaWZvcm1zLm1hdGNoZXMoKnN0cnVjdHVyZSkpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgbU91dCA8PCAiIFtbYnVmZmVyKCIgPDwgcng6Om10bDo6a0Ry
aXZlclVuaWZvcm1zQmluZGluZ0luZGV4IDw8ICIpXV0iOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSBpZiAobVBpcGVsaW5lU3RydWN0cy51c2VyVW5pZm9ybXMubWF0Y2hlcyhzdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgZWxzZSBpZiAobVBpcGVsaW5lU3RydWN0cy51bmlmb3JtQnVm
ZmVycy5tYXRjaGVzKCpzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IG1PdXQgPDwgIiBbW2J1ZmZlcigiIDw8IHJ4OjptdGw6OmtVQk9Bcmd1bWVudEJ1ZmZlckJpbmRp
bmdJbmRleCA8PCAiKV1dIjsKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5oYXNVQk9zID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1QaXBlbGluZVN0cnVj
dHMudXNlclVuaWZvcm1zLm1hdGNoZXMoKnN0cnVjdHVyZSkpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgbU91dCA8PCAiIFtbYnVmZmVyKCIgPDwgbU1haW5Vbmlmb3JtQnVmZmVySW5k
ZXggPDwgIildXSI7Ci0gICAgICAgICAgICAgICAgcmVmbGVjdGlvbi0+YWRkVW5pZm9ybUJ1ZmZl
ckJpbmRpbmcocGFyYW0ubmFtZSgpLmRhdGEoKSwgbU1haW5Vbmlmb3JtQnVmZmVySW5kZXgpOwor
ICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPmFkZFVzZXJVbmlmb3JtQnVmZmVyQmluZGluZyhw
YXJhbS5uYW1lKCkuZGF0YSgpLCBtTWFpblVuaWZvcm1CdWZmZXJJbmRleCk7CiAgICAgICAgICAg
ICAgICAgbU1haW5Vbmlmb3JtQnVmZmVySW5kZXggKz0gdHlwZS5nZXRBcnJheVNpemVQcm9kdWN0
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPm5hbWUo
KSA9PSAibWV0YWw6OnNhbXBsZXIiKQpAQCAtMTg2NiwxMiArMTk3NiwyMCBAQCBib29sIEdlbk1l
dGFsVHJhdmVyc2VyOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCwgVEludGVybUZ1bmN0
aW9uRGVmaW5pdGlvbgogewogICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuYyA9ICpmdW5jRGVmTm9k
ZS0+Z2V0RnVuY3Rpb24oKTsKICAgICBUSW50ZXJtQmxvY2sgJmJvZHkgICAgPSAqZnVuY0RlZk5v
ZGUtPmdldEJvZHkoKTsKLQorICAgIGlmKGZ1bmMuaXNNYWluKCkpCisgICAgeworICAgICAgICBj
b25zdCBUVHlwZSAmcmV0dXJuVHlwZSA9IGZ1bmMuZ2V0UmV0dXJuVHlwZSgpOworICAgICAgICBj
b25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSByZXR1cm5UeXBlLmdldFN0cnVjdCgpOworICAg
ICAgICBpc1RyYXZlcnNpbmdWZXJ0ZXhNYWluID0gKG1QaXBlbGluZVN0cnVjdHMudmVydGV4T3V0
Lm1hdGNoZXMoKnN0cnVjdHVyZSkpOworICAgIH0KICAgICBlbWl0SW5kZW50YXRpb24oKTsKICAg
ICBlbWl0RnVuY3Rpb25TaWduYXR1cmUoZnVuYyk7CiAgICAgbU91dCA8PCAiXG4iOwogICAgIGJv
ZHkudHJhdmVyc2UodGhpcyk7Ci0KKyAgICBpZihpc1RyYXZlcnNpbmdWZXJ0ZXhNYWluKQorICAg
IHsKKyAgICAgICAgaXNUcmF2ZXJzaW5nVmVydGV4TWFpbiA9IGZhbHNlOworICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE5MzEsNiArMjA0OSw3IEBAIGJvb2wgR2VuTWV0YWxUcmF2
ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVO
b2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZW1pdENvbW1hKQogICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGVtaXRDbG9zaW5nUG9pbnRlclBhcmVuKCk7CiAgICAgICAgICAg
ICAgICAgbU91dCA8PCAiLCAiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZW1pdENvbW1h
ID0gdHJ1ZTsKQEAgLTE5OTAsNyArMjEwOSwxNSBAQCBib29sIEdlbk1ldGFsVHJhdmVyc2VyOjp2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlTm9kZSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24gJmZ1bmMgPSAqYWdn
cmVnYXRlTm9kZS0+Z2V0RnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICBlbWl0TmFtZU9mKGZ1
bmMpOwotICAgICAgICAgICAgICAgIGVtaXRBcmdMaXN0KCIoIiwgIikiKTsKKyAgICAgICAgICAg
ICAgICAvLydAJyBzeW1ib2wgaW4gbmFtZSBzcGVjaWZpY2VzIGEgbWFjcm8gc3Vic3RpdHV0aW9u
IG1hcmtlci4KKyAgICAgICAgICAgICAgICBpZighZnVuYy5uYW1lKCkuY29udGFpbnMoIkAiKSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRBcmdMaXN0KCIoIiwg
IikiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbVRlbXBvcmFyaWx5RGlzYWJsZVNlbWljb2xv
biA9IHRydWU7IC8vRGlzYWJsZSBzZW1pY29sb24gZm9yIG1hY3JvIHN1YnN0aXR1dGlvbi4KKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogCkBAIC0yMTE2LDYgKzIyNDMsNyBAQCBzdGF0aWMgYm9vbCBSZXF1aXJlc1NlbWljb2xv
blRlcm1pbmF0b3IoVEludGVybU5vZGUgJm5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIxNzUsMTAgKzIzMDMsMTEg
QEAgYm9vbCBHZW5NZXRhbFRyYXZlcnNlcjo6dmlzaXRCbG9jayhWaXNpdCwgVEludGVybUJsb2Nr
ICpibG9ja05vZGUpCiAgICAgICAgIGVtaXRJbmRlbnRhdGlvbigpOwogICAgICAgICBtSW5kZW50
TGV2ZWwgKz0gaXNDYXNlOwogICAgICAgICBzdG10Tm9kZS50cmF2ZXJzZSh0aGlzKTsKLSAgICAg
ICAgaWYgKFJlcXVpcmVzU2VtaWNvbG9uVGVybWluYXRvcihzdG10Tm9kZSkpCisgICAgICAgIGlm
IChSZXF1aXJlc1NlbWljb2xvblRlcm1pbmF0b3Ioc3RtdE5vZGUpICYmICFtVGVtcG9yYXJpbHlE
aXNhYmxlU2VtaWNvbG9uKQogICAgICAgICB7CiAgICAgICAgICAgICBtT3V0IDw8ICI7IjsKICAg
ICAgICAgfQorICAgICAgICBtVGVtcG9yYXJpbHlEaXNhYmxlU2VtaWNvbG9uID0gZmFsc2U7CiAg
ICAgICAgIG1PdXQgPDwgIlxuIjsKIAogICAgICAgICBwcmV2U3RtdE5vZGUgPSAmc3RtdE5vZGU7
CkBAIC0yMzc2LDExICsyNTA1LDI4IEBAIGJvb2wgR2VuTWV0YWxUcmF2ZXJzZXI6OnZpc2l0QnJh
bmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICpicmFuY2hOb2RlKQogCiAgICAgICAgIGNhc2UgVE9w
ZXJhdG9yOjpFT3BSZXR1cm46CiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmKGlzVHJhdmVyc2lu
Z1ZlcnRleE1haW4pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbU91dCA8PCAiI2lm
IFRSQU5TRk9STV9GRUVEQkFDS19FTkFCTEVEXG4iOworICAgICAgICAgICAgICAgIGVtaXRJbmRl
bnRhdGlvbigpOworICAgICAgICAgICAgICAgIG1PdXQgPDwgInJldHVybjtcbiI7CisgICAgICAg
ICAgICAgICAgZW1pdEluZGVudGF0aW9uKCk7CisgICAgICAgICAgICAgICAgbU91dCA8PCAiI2Vs
c2VcbiI7CisgICAgICAgICAgICAgICAgZW1pdEluZGVudGF0aW9uKCk7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtT3V0IDw8ICJyZXR1cm4iOwogICAgICAgICAgICAgaWYgKGV4cHJOb2Rl
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1PdXQgPDwgIiAiOwogICAgICAgICAg
ICAgICAgIGV4cHJOb2RlLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBtT3V0IDw8
ICI7IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGlzVHJhdmVyc2luZ1ZlcnRleE1h
aW4pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbU91dCA8PCAiXG4iOworICAgICAg
ICAgICAgICAgIGVtaXRJbmRlbnRhdGlvbigpOworICAgICAgICAgICAgICAgIG1PdXQgPDwgIiNl
bmRpZlxuIjsKKyAgICAgICAgICAgICAgICBtVGVtcG9yYXJpbHlEaXNhYmxlU2VtaWNvbG9uID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9GaXhUeXBlQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9G
aXhUeXBlQ29uc3RydWN0b3JzLmNwcAppbmRleCA1MDk4MzM0YzlmNzdkNDc1MGI2MmY2Y2UwYTY2
Y2NlZjA3YTNhMzhlLi5iMjYwMmIzNzljNDQ2MDY3MGRkNzJiNDlmMjk2NDMxYTUwNTQyMTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRml4VHlwZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1l
dGFsRGlyZWN0L0ZpeFR5cGVDb25zdHJ1Y3RvcnMuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHJldFR5cGUuaXNWZWN0b3Io
KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaXplX3QgcHJpbWFyeVNpemUgPSBy
ZXRUeXBlLmdldE5vbWluYWxTaXplKCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IHByaW1hcnlT
aXplID0gcmV0VHlwZS5nZXROb21pbmFsU2l6ZSgpICogcmV0VHlwZS5nZXRBcnJheVNpemVQcm9k
dWN0KCk7CiAgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmdzID0gYWdncmVnYXRl
Tm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICAgICAgICAgICAgICBzaXplX3QgYXJnc1NpemUgPSAw
OwogICAgICAgICAgICAgICAgIHNpemVfdCBiZWZvcmVTaXplID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JN
ZXRhbERpcmVjdC9JbnRyb2R1Y2VWZXJ0ZXhJbmRleElELmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9JbnRy
b2R1Y2VWZXJ0ZXhJbmRleElELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDQ5MTliYTdkZmU5ZDMwMjAzNzNl
ZDI0ZTAzZTk1ZDVmZTgxNWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJv
ZHVjZVZlcnRleEluZGV4SUQuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9JbnRyb2R1Y2VW
ZXJ0ZXhJbmRleElELmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
TWV0YWxEaXJlY3QvQXN0SGVscGVycy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
dHJlZV91dGlsL0ludGVybVJlYnVpbGQuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L1N0YXRpY1R5cGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3RyZWVfdXRpbC9C
dWlsdEluLmgiCit1c2luZyBuYW1lc3BhY2Ugc2g7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisKK25hbWVzcGFjZQoreworCitjb25zdGV4cHIgY29uc3QgVFZhcmlhYmxlIGtnbF9WZXJ0ZXhJ
RE1ldGFsKAorICAgIEJ1aWx0SW5JZDo6Z2xfVmVydGV4SUQsCisgICAgSW1tdXRhYmxlU3RyaW5n
KCJnbF9WZXJ0ZXhJRCIpLAorICAgIFN5bWJvbFR5cGU6OkJ1aWx0SW4sCisgICAgVEV4dGVuc2lv
bjo6VU5ERUZJTkVELAorICAgIFN0YXRpY1R5cGU6OkdldDxFYnRVSW50LCBFYnBIaWdoLCBFdnFW
ZXJ0ZXhJRCwgMSwgMT4oKSk7CisKK2NvbnN0ZXhwciBjb25zdCBUVmFyaWFibGUga2dsX2luc3Rh
bmNlSWRNZXRhbCgKKyAgICBCdWlsdEluSWQ6OmdsX1ZlcnRleElELAorICAgIEltbXV0YWJsZVN0
cmluZygiaW5zdGFuY2VJZE1vZCIpLAorICAgIFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwsCisg
ICAgVEV4dGVuc2lvbjo6VU5ERUZJTkVELAorICAgIFN0YXRpY1R5cGU6OkdldDxFYnRVSW50LCBF
YnBIaWdoLCBFdnFJbnN0YW5jZUlELCAxLCAxPigpKTsKKworCitjbGFzcyBSZXdyaXRlciA6IHB1
YmxpYyBUSW50ZXJtUmVidWlsZAoreworICBwdWJsaWM6CisgICAgUmV3cml0ZXIoVENvbXBpbGVy
ICZjb21waWxlcikgOiBUSW50ZXJtUmVidWlsZChjb21waWxlciwgdHJ1ZSwgdHJ1ZSkKKyAgICB7
fQorCisKKyAgcHJpdmF0ZToKKworICAgIFByZVJlc3VsdCB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlv
blByZShUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICZub2RlKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYobm9kZS5nZXRGdW5jdGlvbigpLT5pc01haW4oKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29uc3QgVEZ1bmN0aW9uICogbWFpbkZ1bmN0aW9uID0gbm9kZS5nZXRGdW5jdGlvbigp
OworICAgICAgICAgICAgYm9vbCBuZWVkc1ZlcnRleElkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJv
b2wgbmVlZHNJbnN0YW5jZUlkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNvbnN0
IFRWYXJpYWJsZSAqPiBtVmFyaWFibGVzVG9JbnRyb2R1Y2U7CisgICAgICAgICAgICBmb3Ioc2l6
ZV90IGkgPSAwOyBpIDwgbWFpbkZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCk7ICsraSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUgKiBwYXJhbSA9IG1haW5G
dW5jdGlvbi0+Z2V0UGFyYW0oaSk7CisgICAgICAgICAgICAgICAgTmFtZSBpbnN0YW5jZUlETmFt
ZSA9IFBpcGVsaW5le1BpcGVsaW5lOjpUeXBlOjpJbnN0YW5jZUlkLCBudWxscHRyfS5nZXRTdHJ1
Y3RJbnN0YW5jZU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXBl
bGluZTo6VmFyaWFudDo6TW9kaWZpZWQpOworICAgICAgICAgICAgICAgIGlmKE5hbWUoKnBhcmFt
KSA9PSBpbnN0YW5jZUlETmFtZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIG5lZWRzSW5zdGFuY2VJZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChwYXJhbS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IFRRdWFs
aWZpZXI6OkV2cVZlcnRleElEKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgbmVlZHNWZXJ0ZXhJZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmKG5lZWRzSW5zdGFuY2VJZCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBtVmFyaWFibGVzVG9JbnRyb2R1Y2UucHVzaF9iYWNrKCZrZ2xfaW5zdGFuY2VJ
ZE1ldGFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKG5lZWRzVmVydGV4SWQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVZhcmlhYmxlc1RvSW50cm9kdWNlLnB1c2hf
YmFjaygma2dsX1ZlcnRleElETWV0YWwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29u
c3QgVEZ1bmN0aW9uICYgbmV3RnVuY3Rpb24gPSBDbG9uZUZ1bmN0aW9uQW5kQXBwZW5kUGFyYW1z
KG1TeW1ib2xUYWJsZSwgbnVsbHB0ciwgKm5vZGUuZ2V0RnVuY3Rpb24oKSwgbVZhcmlhYmxlc1Rv
SW50cm9kdWNlKTsKKyAgICAgICAgICAgIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqIG5ld1By
b3RvID0gbmV3IFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSgmbmV3RnVuY3Rpb24pOworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uKG5ld1Byb3RvLCBub2Rl
LmdldEJvZHkoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorfTsK
KworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
Citib29sIHNoOjpJbnRyb2R1Y2VWZXJ0ZXhBbmRJbnN0YW5jZUluZGV4KFRDb21waWxlciAmY29t
cGlsZXIsIFRJbnRlcm1CbG9jayAmcm9vdCkKK3sKKyAgICBpZiAoIVJld3JpdGVyKGNvbXBpbGVy
KS5yZWJ1aWxkUm9vdChyb290KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvSW50cm9kdWNl
VmVydGV4SW5kZXhJRC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZlcnRleEluZGV4SUQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MGUwZjYxZjk0OWRlZWI5MGRmOGFmMzRkYjYyNTg3ZjkzMjdiMWQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L0ludHJvZHVjZVZlcnRleEluZGV4SUQuaApAQCAt
MCwwICsxLDIwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVFJB
TlNMQVRPUk1FVEFMRElSRUNUX0lOVFJPRFVDRVZFUlRFWElOREVYX0hfCisjZGVmaW5lIENPTVBJ
TEVSX1RSQU5TTEFUT1JfVFJBTlNMQVRPUk1FVEFMRElSRUNUX0lOVFJPRFVDRVZFUlRFWElOREVY
X0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvQ29tcGlsZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9QaXBlbGluZS5oIgorbmFtZXNwYWNlIHNoCit7CisKK0FOR0xF
X05PX0RJU0NBUkQgYm9vbCBJbnRyb2R1Y2VWZXJ0ZXhBbmRJbnN0YW5jZUluZGV4KFRDb21waWxl
ciAmY29tcGlsZXIsIFRJbnRlcm1CbG9jayAmcm9vdCk7CisKK30gIC8vIG5hbWVzcGFjZSBzaAor
CisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVFJBTlNMQVRPUk1FVEFMRElSRUNUX0lO
VFJPRFVDRVZFUlRFWElOREVYX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTGF5b3V0LmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9MYXlvdXQuY3BwCmluZGV4IDUzNDZmNmY4MTQyODJjMTJhZjY3OTE0
ZDJhMzA0MjM0MTYwZmEyZWIuLjU3YjQ4ODkwMDE0ZmY3OTU1MDdjZDUzZmJmZjA3YTE5Y2Y0YjZj
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9MYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9MYXlvdXQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgTGF5b3V0IHNoOjpNZXRhbExheW91dE9m
KGNvbnN0IFRUeXBlICZ0eXBlLCBNZXRhbExheW91dE9mQ29uZmlnIGNvbmZpZykKICAgICAgICAg
fQogICAgICAgICBpZiAoY29uZmlnLmFzc3VtZVN0cnVjdHNBcmVUYWlsUGFkZGVkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBzaXplX3QgcGFkID0gbGF5b3V0LnNpemVPZiAlIDE2OworICAgICAg
ICAgICAgc2l6ZV90IHBhZCA9IChrRGVmYXVsdFN0cnVjdEFsaWdubWVudFNpemUgLSBsYXlvdXQu
c2l6ZU9mKSAlIGtEZWZhdWx0U3RydWN0QWxpZ25tZW50U2l6ZTsKICAgICAgICAgICAgIGxheW91
dC5zaXplT2YgKz0gcGFkOwogICAgICAgICB9CiAgICAgICAgIGxheW91dC5zaXplT2YgPSBSb3Vu
ZFVwVG9NdWx0aXBsZU9mKGxheW91dC5zaXplT2YsIGxheW91dC5hbGlnbk9mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9MYXlvdXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9MYXlvdXQuaAppbmRleCAx
NDEzZWRmNDlmZWYyN2MwMGFkNjE2NmFlYWNmZTUyNmFhOTRmMWQ0Li40NTI4N2NkMjI0NmNjMGU2
ODY2NDQ5ZGQzNjQ1ODdjMGU5NDFiNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTGF5b3V0
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0L0xheW91dC5oCkBAIC0xNSw2ICsxNSw3IEBAIG5hbWVzcGFj
ZSBzaAogCiBjb25zdGV4cHIgY29uc3QgYXV0byBrRGVmYXVsdExheW91dEJsb2NrU3RvcmFnZSAg
PSBUTGF5b3V0QmxvY2tTdG9yYWdlOjpFYnNTaGFyZWQ7CiBjb25zdGV4cHIgY29uc3QgYXV0byBr
RGVmYXVsdExheW91dE1hdHJpeFBhY2tpbmcgPSBUTGF5b3V0TWF0cml4UGFja2luZzo6RW1wQ29s
dW1uTWFqb3I7Citjb25zdGV4cHIgY29uc3QgYXV0byBrRGVmYXVsdFN0cnVjdEFsaWdubWVudFNp
emUgPSAxNjsKIAogLy8gUmV0dXJucyBgb2xkU3RvcmFnZWAgaWYgYHR5cGVgIGhhcyB1bnNwZWNp
ZmllZCBibG9jayBzdG9yYWdlLgogLy8gT3RoZXJ3aXNlIHJldHVybnMgYmxvY2sgc3RvcmFnZSBv
ZiBgdHlwZWAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTW9kaWZ5U3RydWN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JN
ZXRhbERpcmVjdC9Nb2RpZnlTdHJ1Y3QuY3BwCmluZGV4IDk3NzhkMzRjYzMxYzUwOWIwOTYzOWUw
NmViMzg2NTBmODBmMTJiMGMuLmU0M2E4ZWUxOWE0ZGExMzdjMjAyZTVmZGM0ZTQyODgxYmI4ZThk
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Nb2RpZnlTdHJ1Y3QuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9Nb2RpZnlTdHJ1Y3QuY3BwCkBAIC0xMCw2ICsxMCw4IEBACiAjaW5jbHVkZSA8dW5v
cmRlcmVkX21hcD4KICNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgogCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9Db21waWxlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvQXN0SGVscGVycy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L01vZGlmeVN0cnVjdC5oIgogCkBAIC0xNDgs
MTYgKzE1MCwyMCBAQCBjbGFzcyBDb252ZXJ0U3RydWN0U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICB9OwogCiAgIHB1YmxpYzoKLSAgICBDb252ZXJ0U3RydWN0U3RhdGUoU3ltYm9sRW52
ICZzeW1ib2xFbnYsCisgICAgQ29udmVydFN0cnVjdFN0YXRlKFRDb21waWxlciAmY29tcGlsZXIs
CisgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbEVudiAmc3ltYm9sRW52LAogICAgICAgICAg
ICAgICAgICAgICAgICBJZEdlbiAmaWRHZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE1vZGlmeVN0cnVjdENvbmZpZyAmY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICBNb2Rp
ZmllZFN0cnVjdE1hY2hpbmVyaWVzICZvdXRNYWNoaW5lcmllcykKLSAgICAgICAgOiBjb25maWco
Y29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpZWRTdHJ1Y3RNYWNoaW5lcmll
cyAmb3V0TWFjaGluZXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNV
Qk8pCisgICAgICAgIDogbUNvbXBpbGVyKGNvbXBpbGVyKSwKKyAgICAgICAgICBjb25maWcoY29u
ZmlnKSwKICAgICAgICAgICBzeW1ib2xFbnYoc3ltYm9sRW52KSwKICAgICAgICAgICBtb2RpZmll
ZEZpZWxkcygqbmV3IFRGaWVsZExpc3QoKSksCiAgICAgICAgICAgc3ltYm9sVGFibGUoc3ltYm9s
RW52LnN5bWJvbFRhYmxlKCkpLAogICAgICAgICAgIGlkR2VuKGlkR2VuKSwKLSAgICAgICAgICBv
dXRNYWNoaW5lcmllcyhvdXRNYWNoaW5lcmllcykKKyAgICAgICAgICBvdXRNYWNoaW5lcmllcyhv
dXRNYWNoaW5lcmllcyksCisgICAgICAgICAgaXNVQk8oaXNVQk8pCiAgICAge30KIAogICAgIH5D
b252ZXJ0U3RydWN0U3RhdGUoKQpAQCAtMTgzLDYgKzE4OSw3IEBAIGNsYXNzIENvbnZlcnRTdHJ1
Y3RTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgQ3JlYXRlSW5zdGFuY2VW
YXJpYWJsZShzeW1ib2xUYWJsZSwgb3JpZ2luYWxTdHJ1Y3QsIE5hbWUoIm9yaWdpbmFsIikpOwog
ICAgICAgICBNb2RpZmllZFBhcmFtIG1vZGlmaWVkUGFyYW0gPQogICAgICAgICAgICAgQ3JlYXRl
SW5zdGFuY2VWYXJpYWJsZShzeW1ib2xUYWJsZSwgbW9kaWZpZWRTdHJ1Y3QsIE5hbWUoIm1vZGlm
aWVkIikpOworCiAgICAgICAgIHN5bWJvbEVudi5tYXJrQXNSZWZlcmVuY2Uob3JpZ2luYWxQYXJh
bSwgQWRkcmVzc1NwYWNlOjpUaHJlYWQpOwogICAgICAgICBzeW1ib2xFbnYubWFya0FzUmVmZXJl
bmNlKG1vZGlmaWVkUGFyYW0sIGNvbmZpZy5leHRlcm5hbEFkZHJlc3NTcGFjZSk7CiAgICAgICAg
IGlmIChpc09yaWdpbmFsVG9Nb2RpZmllZCkKQEAgLTIyOCw3ICsyMzUsNyBAQCBjbGFzcyBDb252
ZXJ0U3RydWN0U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgIGNvbnN0IFRU
eXBlIG10ID0gbW9kaWZpZWQtPmdldFR5cGUoKTsKICAgICAgICAgICAgIEFTU0VSVChvdC5pc0Fy
cmF5KCkgPT0gbXQuaXNBcnJheSgpKTsKIAotICAgICAgICAgICAgaWYgKG90LmlzQXJyYXkoKSAm
JiBvdCAhPSBtdCkKKyAgICAgICAgICAgIGlmIChvdC5pc0FycmF5KCkgJiYgKG90LmdldExheW91
dFF1YWxpZmllcigpLm1hdHJpeFBhY2tpbmcgPT0gRW1wUm93TWFqb3IgIHx8IG90ICE9IG10KSkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQob3QuZ2V0QXJyYXlTaXplcygp
ID09IG10LmdldEFycmF5U2l6ZXMoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG90LmlzQXJyYXlP
ZkFycmF5cygpKQpAQCAtMjk2LDE5ICszMDMsMjIgQEAgY2xhc3MgQ29udmVydFN0cnVjdFN0YXRl
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIHBhdGhJdGVtcy5wb3BfYmFjaygpOwogICAg
IH0KIAotICAgIHZvaWQgZmluYWxpemUoKQorICAgIHZvaWQgZmluYWxpemUoY29uc3QgYm9vbCBh
bGxvd1BhZGRpbmcpCiAgICAgewogICAgICAgICBBU1NFUlQoIWZpbmFsaXplZCk7CiAgICAgICAg
IGZpbmFsaXplZCA9IHRydWU7CiAgICAgICAgIGludHJvZHVjZVBhY2tpbmcoKTsKICAgICAgICAg
QVNTRVJUKG1ldGFsTGF5b3V0VG90YWwgPT0gTGF5b3V0OjpJZGVudGl0eSgpKTsKLSAgICAgICAg
aW50cm9kdWNlUGFkZGluZygpOworICAgICAgICAvLyBPbmx5IHBhZCBzdWJzdHJ1Y3RzLiBXZSBk
b24ndCB3YW50IHRvIHBhZCB0aGUgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgYWxsIHRoZSBVQk9z
LCBvbmx5IGluZGl2aWR1YWwgVUJPcy4KKyAgICAgICAgaWYgKGFsbG93UGFkZGluZykKKyAgICAg
ICAgICAgIGludHJvZHVjZVBhZGRpbmcoKTsKICAgICB9CiAKICAgICB2b2lkIGFkZE1vZGlmaWVk
RmllbGQoY29uc3QgVEZpZWxkICZmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5
cGUgJm5ld1R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRMYXlvdXRCbG9ja1N0b3Jh
Z2Ugc3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVExheW91dE1hdHJpeFBhY2tp
bmcgcGFja2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVExheW91dE1hdHJpeFBhY2tp
bmcgcGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWRkcmVzc1NwYWNl
ICogYWRkcmVzc1NwYWNlKQogICAgIHsKICAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRR
dWFsaWZpZXIgPSBuZXdUeXBlLmdldExheW91dFF1YWxpZmllcigpOwogICAgICAgICBsYXlvdXRR
dWFsaWZpZXIuYmxvY2tTdG9yYWdlICAgICA9IHN0b3JhZ2U7CkBAIC0zMTYsNyArMzI2LDE3IEBA
IGNsYXNzIENvbnZlcnRTdHJ1Y3RTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBu
ZXdUeXBlLnNldExheW91dFF1YWxpZmllcihsYXlvdXRRdWFsaWZpZXIpOwogCiAgICAgICAgIGNv
bnN0IEltbXV0YWJsZVN0cmluZyBwYXRoTmFtZShuYW1lUGF0aCk7Ci0gICAgICAgIG1vZGlmaWVk
RmllbGRzLnB1c2hfYmFjayhuZXcgVEZpZWxkKCZuZXdUeXBlLCBwYXRoTmFtZSwgZmllbGQubGlu
ZSgpLCBmaWVsZC5zeW1ib2xUeXBlKCkpKTsKKyAgICAgICAgVEZpZWxkICogbW9kaWZpZWRGaWVs
ZCA9IG5ldyBURmllbGQoJm5ld1R5cGUsIHBhdGhOYW1lLCBmaWVsZC5saW5lKCksIGZpZWxkLnN5
bWJvbFR5cGUoKSk7CisgICAgICAgIGlmKGFkZHJlc3NTcGFjZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgc3ltYm9sRW52Lm1hcmtBc1BvaW50ZXIoKm1vZGlmaWVkRmllbGQsICphZGRyZXNzU3Bh
Y2UpOworCisgICAgICAgIH0KKyAgICAgICAgaWYgKHN5bWJvbEVudi5pc1VCTyhmaWVsZCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN5bWJvbEVudi5tYXJrQXNVQk8oKm1vZGlmaWVkRmllbGQp
OworICAgICAgICB9CisgICAgICAgIG1vZGlmaWVkRmllbGRzLnB1c2hfYmFjayhtb2RpZmllZEZp
ZWxkKTsKICAgICB9CiAKICAgICB2b2lkIGFkZENvbnZlcnNpb24oY29uc3QgQ29udmVyc2lvbkZ1
bmMgJmZ1bmMpCkBAIC0zMzUsMTMgKzM1NSwxNiBAQCBjbGFzcyBDb252ZXJ0U3RydWN0U3RhdGUg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0
dXJuIHBhZEZpZWxkQ291bnQgPiAwOyB9CiAKLSAgICBib29sIHJlY3Vyc2UoY29uc3QgVFN0cnVj
dHVyZSAmc3RydWN0dXJlLCBNb2RpZmllZFN0cnVjdE1hY2hpbmVyeSAmb3V0TWFjaGluZXJ5KQor
ICAgIGJvb2wgcmVjdXJzZShjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUsIE1vZGlmaWVkU3Ry
dWN0TWFjaGluZXJ5ICZvdXRNYWNoaW5lcnksIGNvbnN0IGJvb2wgaXNVQk8pCiAgICAgewogICAg
ICAgICBjb25zdCBNb2RpZmllZFN0cnVjdE1hY2hpbmVyeSAqbSA9IG91dE1hY2hpbmVyaWVzLmZp
bmQoc3RydWN0dXJlKTsKICAgICAgICAgaWYgKG0gPT0gbnVsbHB0cikKICAgICAgICAgeworICAg
ICAgICAgICAgVHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbiAqcmVmbGVjdGlvbiA9CisgICAgICAg
ICAgICAgICAgKChzaDo6VHJhbnNsYXRvck1ldGFsRGlyZWN0ICopJm1Db21waWxlciktPmdldFRy
YW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24oKTsKKyAgICAgICAgICAgIHJlZmxlY3Rpb24tPmFkZE9y
aWdpbmFsTmFtZShzdHJ1Y3R1cmUudW5pcXVlSWQoKS5nZXQoKSwgc3RydWN0dXJlLm5hbWUoKS5k
YXRhKCkpOwogICAgICAgICAgICAgY29uc3QgTmFtZSBuYW1lID0gaWRHZW4uY3JlYXRlTmV3TmFt
ZShzdHJ1Y3R1cmUubmFtZSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBpZiAoIVRyeUNyZWF0ZU1v
ZGlmaWVkU3RydWN0KHN5bWJvbEVudiwgaWRHZW4sIGNvbmZpZywgc3RydWN0dXJlLCBuYW1lLCBv
dXRNYWNoaW5lcmllcykpCisgICAgICAgICAgICBpZiAoIVRyeUNyZWF0ZU1vZGlmaWVkU3RydWN0
KG1Db21waWxlciwgc3ltYm9sRW52LCBpZEdlbiwgY29uZmlnLCBzdHJ1Y3R1cmUsIG5hbWUsIG91
dE1hY2hpbmVyaWVzLCBpc1VCTywgdHJ1ZSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMzUyLDYgKzM3NSwxMSBAQCBjbGFz
cyBDb252ZXJ0U3RydWN0U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCisgICAgYm9vbCBnZXRJc1VCTygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gaXNVQk87CisgICAgfQorCiAgIHByaXZhdGU6CiAgICAgdm9pZCBhZGRQYWRkaW5n
KHNpemVfdCBwYWRBbW91bnQsIGJvb2wgdXBkYXRlTGF5b3V0KQogICAgIHsKQEAgLTU3NCw2ICs2
MDIsNyBAQCBjbGFzcyBDb252ZXJ0U3RydWN0U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICB9CiAKICAgcHVibGljOgorICAgIFRDb21waWxlciAmbUNvbXBpbGVyOwogICAgIGNvbnN0IE1v
ZGlmeVN0cnVjdENvbmZpZyAmY29uZmlnOwogICAgIFN5bWJvbEVudiAmc3ltYm9sRW52OwogCkBA
IC01OTMsNiArNjIyLDcgQEAgY2xhc3MgQ29udmVydFN0cnVjdFN0YXRlIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZTsKICAgICBJZEdlbiAmaWRHZW47
CiAgICAgTW9kaWZpZWRTdHJ1Y3RNYWNoaW5lcmllcyAmb3V0TWFjaGluZXJpZXM7CisgICAgY29u
c3QgYm9vbCBpc1VCTzsKIH07CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC02MTMsNyAr
NjQzLDcgQEAgYm9vbCBJZGVudGl0eU1vZGlmeShDb252ZXJ0U3RydWN0U3RhdGUgJnN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUTGF5b3V0TWF0cml4UGFja2luZyBwYWNraW5nKQog
ewogICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gKmZpZWxkLnR5cGUoKTsKLSAgICBzdGF0ZS5hZGRN
b2RpZmllZEZpZWxkKGZpZWxkLCBDbG9uZVR5cGUodHlwZSksIHN0b3JhZ2UsIHBhY2tpbmcpOwor
ICAgIHN0YXRlLmFkZE1vZGlmaWVkRmllbGQoZmllbGQsIENsb25lVHlwZSh0eXBlKSwgc3RvcmFn
ZSwgcGFja2luZywgbnVsbHB0cik7CiAgICAgc3RhdGUuYWRkQ29udmVyc2lvbihbPV0oQWNjZXNz
OjpFbnYgJiwgT3JpZ2luYWxBY2Nlc3MgJm8sIE1vZGlmaWVkQWNjZXNzICZtKSB7CiAgICAgICAg
IHJldHVybiBBY2Nlc3N7bywgbX07CiAgICAgfSk7CkBAIC02NjksNyArNjk5LDcgQEAgYm9vbCBS
ZWN1cnNlU3RydWN0KENvbnZlcnRTdHJ1Y3RTdGF0ZSAmc3RhdGUsCiAgICAgfQogCiAgICAgTW9k
aWZpZWRTdHJ1Y3RNYWNoaW5lcnkgbWFjaGluZXJ5OwotICAgIGlmICghc3RhdGUucmVjdXJzZSgq
c3Vic3RydWN0dXJlLCBtYWNoaW5lcnkpKQorICAgIGlmICghc3RhdGUucmVjdXJzZSgqc3Vic3Ry
dWN0dXJlLCBtYWNoaW5lcnksIHN0YXRlLmdldElzVUJPKCkpKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTY4Myw3ICs3MTMsMTEgQEAgYm9vbCBSZWN1cnNlU3RydWN0
KENvbnZlcnRTdHJ1Y3RTdGF0ZSAmc3RhdGUsCiAgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlv
biAqY29udmVydGVyID0gbWFjaGluZXJ5LmdldENvbnZlcnRlcihzdGF0ZS5jb25maWcuY29udmVy
dFR5cGUpOwogICAgIEFTU0VSVChjb252ZXJ0ZXIpOwogCi0gICAgc3RhdGUuYWRkTW9kaWZpZWRG
aWVsZChmaWVsZCwgbmV3VHlwZSwgc3RvcmFnZSwgcGFja2luZyk7CisgICAgc3RhdGUuYWRkTW9k
aWZpZWRGaWVsZChmaWVsZCwgbmV3VHlwZSwgc3RvcmFnZSwgcGFja2luZywgc3RhdGUuc3ltYm9s
RW52LmlzUG9pbnRlcihmaWVsZCkpOworICAgIGlmKHN0YXRlLnN5bWJvbEVudi5pc1BvaW50ZXIo
ZmllbGQpKQorICAgIHsKKyAgICAgICAgc3RhdGUuc3ltYm9sRW52LnJlbW92ZVBvaW50ZXIoZmll
bGQpOworICAgIH0KICAgICBzdGF0ZS5hZGRDb252ZXJzaW9uKCpjb252ZXJ0ZXItPmdldEZ1bmN0
aW9uKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC02OTksNiArNzMzLDcgQEAgYm9vbCBTcGxp
dE1hdHJpeENvbHVtbnMoQ29udmVydFN0cnVjdFN0YXRlICZzdGF0ZSwKICAgICB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CisKICAgICBpZiAoIXN0YXRlLmNvbmZpZy5zcGxpdE1hdHJp
eENvbHVtbnMoZmllbGQpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzExLDcg
Kzc0NiwxMSBAQCBib29sIFNwbGl0TWF0cml4Q29sdW1ucyhDb252ZXJ0U3RydWN0U3RhdGUgJnN0
YXRlLAogICAgIHsKICAgICAgICAgc3RhdGUucHVzaFBhdGgoYyk7CiAKLSAgICAgICAgc3RhdGUu
YWRkTW9kaWZpZWRGaWVsZChmaWVsZCwgcm93VHlwZSwgc3RvcmFnZSwgcGFja2luZyk7CisgICAg
ICAgIHN0YXRlLmFkZE1vZGlmaWVkRmllbGQoZmllbGQsIHJvd1R5cGUsIHN0b3JhZ2UsIHBhY2tp
bmcsIHN0YXRlLnN5bWJvbEVudi5pc1BvaW50ZXIoZmllbGQpKTsKKyAgICAgICAgaWYoc3RhdGUu
c3ltYm9sRW52LmlzUG9pbnRlcihmaWVsZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRl
LnN5bWJvbEVudi5yZW1vdmVQb2ludGVyKGZpZWxkKTsKKyAgICAgICAgfQogICAgICAgICBzdGF0
ZS5hZGRDb252ZXJzaW9uKFs9XShBY2Nlc3M6OkVudiAmLCBPcmlnaW5hbEFjY2VzcyAmbywgTW9k
aWZpZWRBY2Nlc3MgJm0pIHsKICAgICAgICAgICAgIHJldHVybiBBY2Nlc3N7bywgbX07CiAgICAg
ICAgIH0pOwpAQCAtNzMyLDI0ICs3NzEsMzEgQEAgYm9vbCBTYXR1cmF0ZU1hdHJpeFJvd3MoQ29u
dmVydFN0cnVjdFN0YXRlICZzdGF0ZSwKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgY29uc3QgaW50IHJvd3MgICAgICAgPSB0eXBlLmdldFJvd3MoKTsKLSAgICBjb25z
dCBpbnQgc2F0dXJhdGlvbiA9IHN0YXRlLmNvbmZpZy5zYXR1cmF0ZU1hdHJpeFJvd3MoZmllbGQp
OwotICAgIGlmIChzYXR1cmF0aW9uIDw9IHJvd3MpCisgICAgY29uc3QgYm9vbCBpc1Jvd01ham9y
ID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5tYXRyaXhQYWNraW5nID09IEVtcFJvd01ham9y
OworICAgIGNvbnN0IGludCByb3dzICAgICAgICA9IHR5cGUuZ2V0Um93cygpOworICAgIGNvbnN0
IGludCBzYXR1cmF0aW9uICA9IHN0YXRlLmNvbmZpZy5zYXR1cmF0ZU1hdHJpeFJvd3MoZmllbGQp
OworICAgIGlmIChzYXR1cmF0aW9uIDw9IHJvd3MgJiYgIWlzUm93TWFqb3IpCiAgICAgewogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgaW50IGNvbHMgPSB0eXBlLmdl
dENvbHMoKTsKICAgICBUVHlwZSAmc2F0VHlwZSA9IFNldE1hdHJpeFJvd0RpbSh0eXBlLCBzYXR1
cmF0aW9uKTsKLSAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCBzYXRUeXBlLCBzdG9y
YWdlLCBwYWNraW5nKTsKKyAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCBzYXRUeXBl
LCBzdG9yYWdlLCBwYWNraW5nLCBzdGF0ZS5zeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKSk7Cisg
ICAgaWYoc3RhdGUuc3ltYm9sRW52LmlzUG9pbnRlcihmaWVsZCkpCisgICAgeworICAgICAgICBz
dGF0ZS5zeW1ib2xFbnYucmVtb3ZlUG9pbnRlcihmaWVsZCk7CisgICAgfQogCiAgICAgZm9yIChp
bnQgYyA9IDA7IGMgPCBjb2xzOyArK2MpCiAgICAgewogICAgICAgICBmb3IgKGludCByID0gMDsg
ciA8IHJvd3M7ICsrcikKICAgICAgICAgewogICAgICAgICAgICAgc3RhdGUuYWRkQ29udmVyc2lv
bihbPV0oQWNjZXNzOjpFbnYgJiwgT3JpZ2luYWxBY2Nlc3MgJm8sIE1vZGlmaWVkQWNjZXNzICZt
KSB7CisgICAgICAgICAgICAgICAgaW50IGZpcnN0TW9kaWZpZWRJbmRleCAgPSBpc1Jvd01ham9y
ID8gciA6IGM7CisgICAgICAgICAgICAgICAgaW50IHNlY29uZE1vZGlmaWVkSW5kZXggPSBpc1Jv
d01ham9yID8gYyA6IHI7CiAgICAgICAgICAgICAgICAgYXV0byAmb18gPSBBY2Nlc3NJbmRleChB
Y2Nlc3NJbmRleChvLCBjKSwgcik7Ci0gICAgICAgICAgICAgICAgYXV0byAmbV8gPSBBY2Nlc3NJ
bmRleChBY2Nlc3NJbmRleChtLCBjKSwgcik7CisgICAgICAgICAgICAgICAgYXV0byAmbV8gPSBB
Y2Nlc3NJbmRleChBY2Nlc3NJbmRleChtLCBmaXJzdE1vZGlmaWVkSW5kZXgpLCBzZWNvbmRNb2Rp
ZmllZEluZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXNze29fLCBtX307CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtODE1LDcgKzg2MSwxMSBAQCBib29sIFNhdHVyYXRl
U2NhbGFyT3JWZWN0b3JDb21tb24oQ29udmVydFN0cnVjdFN0YXRlICZzdGF0ZSwKICAgICB7CiAg
ICAgICAgIHNhdFR5cGUuc2V0QmFzaWNUeXBlKFRCYXNpY1R5cGU6OkVidFVJbnQpOwogICAgIH0K
LSAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCBzYXRUeXBlLCBzdG9yYWdlLCBwYWNr
aW5nKTsKKyAgICBzdGF0ZS5hZGRNb2RpZmllZEZpZWxkKGZpZWxkLCBzYXRUeXBlLCBzdG9yYWdl
LCBwYWNraW5nLCBzdGF0ZS5zeW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKSk7CisgICAgaWYoc3Rh
dGUuc3ltYm9sRW52LmlzUG9pbnRlcihmaWVsZCkpCisgICAgeworICAgICAgICBzdGF0ZS5zeW1i
b2xFbnYucmVtb3ZlUG9pbnRlcihmaWVsZCk7CisgICAgfQogCiAgICAgZm9yIChpbnQgZCA9IDA7
IGQgPCBkaW07ICsrZCkKICAgICB7CkBAIC04NjQsNyArOTE0LDExIEBAIGJvb2wgUHJvbW90ZUJv
b2xUb1VpbnQoQ29udmVydFN0cnVjdFN0YXRlICZzdGF0ZSwKIAogICAgIGF1dG8gJnByb21vdGVk
VHlwZSA9IENsb25lVHlwZSgqZmllbGQudHlwZSgpKTsKICAgICBwcm9tb3RlZFR5cGUuc2V0QmFz
aWNUeXBlKFRCYXNpY1R5cGU6OkVidFVJbnQpOwotICAgIHN0YXRlLmFkZE1vZGlmaWVkRmllbGQo
ZmllbGQsIHByb21vdGVkVHlwZSwgc3RvcmFnZSwgcGFja2luZyk7CisgICAgc3RhdGUuYWRkTW9k
aWZpZWRGaWVsZChmaWVsZCwgcHJvbW90ZWRUeXBlLCBzdG9yYWdlLCBwYWNraW5nLCBzdGF0ZS5z
eW1ib2xFbnYuaXNQb2ludGVyKGZpZWxkKSk7CisgICAgaWYoc3RhdGUuc3ltYm9sRW52LmlzUG9p
bnRlcihmaWVsZCkpCisgICAgeworICAgICAgICBzdGF0ZS5zeW1ib2xFbnYucmVtb3ZlUG9pbnRl
cihmaWVsZCk7CisgICAgfQogCiAgICAgc3RhdGUuYWRkQ29udmVyc2lvbihbPV0oQWNjZXNzOjpF
bnYgJmVudiwgT3JpZ2luYWxBY2Nlc3MgJm8sIE1vZGlmaWVkQWNjZXNzICZtKSB7CiAgICAgICAg
IHJldHVybiBDb252ZXJ0Qm9vbFRvVWludChlbnYudHlwZSwgbywgbSk7CkBAIC05NjYsMTQgKzEw
MjAsMTcgQEAgYm9vbCBNb2RpZnlSZWN1cnNpdmUoQ29udmVydFN0cnVjdFN0YXRlICZzdGF0ZSwK
IAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotYm9vbCBzaDo6VHJ5Q3JlYXRlTW9kaWZpZWRT
dHJ1Y3QoU3ltYm9sRW52ICZzeW1ib2xFbnYsCitib29sIHNoOjpUcnlDcmVhdGVNb2RpZmllZFN0
cnVjdChUQ29tcGlsZXIgJmNvbXBpbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3ltYm9sRW52ICZzeW1ib2xFbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJZEdlbiAmaWRHZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBN
b2RpZnlTdHJ1Y3RDb25maWcgJmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJ1Y3R1cmUgJm9yaWdpbmFsU3RydWN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgTmFtZSAmbW9kaWZpZWRTdHJ1Y3ROYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpZWRTdHJ1Y3RNYWNoaW5lcmllcyAmb3V0TWFj
aGluZXJpZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RpZmllZFN0cnVj
dE1hY2hpbmVyaWVzICZvdXRNYWNoaW5lcmllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGJvb2wgaXNVQk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBib29sIGFsbG93UGFkZGluZykKIHsKLSAgICBDb252ZXJ0U3RydWN0U3RhdGUgc3Rh
dGUoc3ltYm9sRW52LCBpZEdlbiwgY29uZmlnLCBvdXRNYWNoaW5lcmllcyk7CisgICAgQ29udmVy
dFN0cnVjdFN0YXRlIHN0YXRlKGNvbXBpbGVyLCBzeW1ib2xFbnYsIGlkR2VuLCBjb25maWcsIG91
dE1hY2hpbmVyaWVzLCBpc1VCTyk7CiAgICAgc2l6ZV90IGlkZW50aWNhbEZpZWxkQ291bnQgPSAw
OwogCiAgICAgY29uc3QgVEZpZWxkTGlzdCAmb3JpZ2luYWxGaWVsZHMgPSBvcmlnaW5hbFN0cnVj
dC5maWVsZHMoKTsKQEAgLTk4OCw5ICsxMDQ1LDkgQEAgYm9vbCBzaDo6VHJ5Q3JlYXRlTW9kaWZp
ZWRTdHJ1Y3QoU3ltYm9sRW52ICZzeW1ib2xFbnYsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBz
dGF0ZS5maW5hbGl6ZSgpOworICAgIHN0YXRlLmZpbmFsaXplKGFsbG93UGFkZGluZyk7CiAKLSAg
ICBpZiAoaWRlbnRpY2FsRmllbGRDb3VudCA9PSBvcmlnaW5hbEZpZWxkcy5zaXplKCkgJiYgIXN0
YXRlLmhhc1BhY2tpbmcoKSAmJiAhc3RhdGUuaGFzUGFkZGluZygpKQorICAgIGlmIChpZGVudGlj
YWxGaWVsZENvdW50ID09IG9yaWdpbmFsRmllbGRzLnNpemUoKSAmJiAhc3RhdGUuaGFzUGFja2lu
ZygpICYmICFzdGF0ZS5oYXNQYWRkaW5nKCkgJiYgIWlzVUJPKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Nb2RpZnlTdHJ1Y3Qu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9Nb2RpZnlTdHJ1Y3QuaAppbmRleCA0YjhjZmM1NTA0NjgyNDM4ZDJh
YjdiMTIzMGE5NDljNjk4ZmRhZTkwLi44ZTE0YmZjYzFmMDI4MDVlOGUyNDg3OTg3NzIzNzI0OTQ3
NzliMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTW9kaWZ5U3RydWN0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1l
dGFsRGlyZWN0L01vZGlmeVN0cnVjdC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8dW5v
cmRlcmVkX21hcD4KICNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgogCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9Db21waWxlci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0L0lkR2VuLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTGF5b3V0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvTmFtZS5oIgpAQCAtMTIzLDEyICsxMjQs
MTUgQEAgY2xhc3MgTW9kaWZpZWRTdHJ1Y3RNYWNoaW5lcmllcwogCiAvLyBSZXR1cm5zIHRydWUg
YW5kIGBvdXRNYWNoaW5lcnlgIHBvcHVsYXRlZCBpZiBtb2RpZmljYXRpb25zIHdlcmUgcGVyZm9y
bWVkLgogLy8gUmV0dXJucyBmYWxzZSBvdGhlcndpc2UuCi1ib29sIFRyeUNyZWF0ZU1vZGlmaWVk
U3RydWN0KFN5bWJvbEVudiAmc3ltYm9sRW52LAorYm9vbCBUcnlDcmVhdGVNb2RpZmllZFN0cnVj
dChUQ29tcGlsZXIgJmNvbXBpbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1i
b2xFbnYgJnN5bWJvbEVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRHZW4gJmlk
R2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNb2RpZnlTdHJ1Y3RDb25m
aWcgJmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVy
ZSAmb3JpZ2luYWxTdHJ1Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5h
bWUgJm1vZGlmaWVkU3RydWN0TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9k
aWZpZWRTdHJ1Y3RNYWNoaW5lcmllcyAmb3V0TWFjaGluZXJpZXMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNb2RpZmllZFN0cnVjdE1hY2hpbmVyaWVzICZvdXRNYWNoaW5lcmllcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBpc1VCTywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBhbGxvd1BhZGRpbmcpOwogCiB9ICAvLyBu
YW1lc3BhY2Ugc2gKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1BpcGVsaW5lLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JN
ZXRhbERpcmVjdC9QaXBlbGluZS5jcHAKaW5kZXggMmQzMDMxNjhkYjhjYWJiODEzYWEwMDA3MGE3
ZTYzNmU3ZjFkZTg1NC4uMjA3ZGY4NGNlYTY2NTRjZmRjZDVlYzAzYmExZGEzZTJkYTNmN2QxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1BpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
UGlwZWxpbmUuY3BwCkBAIC03OCw2ICs3OCw3IEBAIGJvb2wgUGlwZWxpbmU6OnVzZXMoY29uc3Qg
VFZhcmlhYmxlICZ2YXIpIGNvbnN0CiAgICAgICAgICAgICAgICAgY2FzZSBUUXVhbGlmaWVyOjpF
dnFGcmFnQ29sb3I6CiAgICAgICAgICAgICAgICAgY2FzZSBUUXVhbGlmaWVyOjpFdnFGcmFnRGF0
YToKICAgICAgICAgICAgICAgICBjYXNlIFRRdWFsaWZpZXI6OkV2cUZyYWdEZXB0aDoKKyAgICAg
ICAgICAgICAgICBjYXNlIFRRdWFsaWZpZXI6OkV2cVNhbXBsZU1hc2s6CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMSw2ICsxMjIsMTQgQEAgYm9vbCBQaXBlbGlu
ZTo6dXNlcyhjb25zdCBUVmFyaWFibGUgJnZhcikgY29uc3QKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCisgICAgICAgIGNhc2UgVHlwZTo6VW5pZm9y
bUJ1ZmZlcjoKKyAgICAgICAgICAgIHN3aXRjaChxdWFsaWZpZXIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBUUXVhbGlmaWVyOjpFdnFCdWZmZXI6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBUeXBl
OjpBbmdsZVVuaWZvcm1zOgogICAgICAgICAgICAgTE9HSUNfRVJST1IoKTsgIC8vIGdsb2JhbElu
c3RhbmNlVmFyIHNob3VsZCBiZSBub24tbnVsbCBhbmQgdGh1cyBuZXZlciByZWFjaCBoZXJlLgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcxLDYgKzE4MCw4IEBAIE5hbWUgUGlwZWxp
bmU6OmdldFN0cnVjdFR5cGVOYW1lKFZhcmlhbnQgdmFyaWFudCkgY29uc3QKICAgICAgICAgY2Fz
ZSBUeXBlOjpJbnN0YW5jZUlkOgogICAgICAgICAgICAgbmFtZSA9IFZBUklBTlRfTkFNRSh2YXJp
YW50LCAiSW5zdGFuY2VJZCIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlw
ZTo6VW5pZm9ybUJ1ZmZlcjoKKyAgICAgICAgICAgIG5hbWUgPSBWQVJJQU5UX05BTUUodmFyaWFu
dCwgIlVuaWZvcm1CdWZmZXIiKTsKICAgICB9CiAgICAgcmV0dXJuIE5hbWUobmFtZSk7CiB9CkBA
IC0yMTMsNiArMjI0LDggQEAgTmFtZSBQaXBlbGluZTo6Z2V0U3RydWN0SW5zdGFuY2VOYW1lKFZh
cmlhbnQgdmFyaWFudCkgY29uc3QKICAgICAgICAgY2FzZSBUeXBlOjpJbnN0YW5jZUlkOgogICAg
ICAgICAgICAgbmFtZSA9IFZBUklBTlRfTkFNRSh2YXJpYW50LCAiaW5zdGFuY2VJZCIpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6VW5pZm9ybUJ1ZmZlcjoKKyAgICAg
ICAgICAgIG5hbWUgPSBWQVJJQU5UX05BTUUodmFyaWFudCwgInVuaWZvcm1CdWZmZXIiKTsKICAg
ICB9CiAgICAgcmV0dXJuIE5hbWUobmFtZSk7CiB9CkBAIC0yMjMsNiArMjM2LDcgQEAgc3RhdGlj
IGJvb2wgQWxsb3dQYWNraW5nKFBpcGVsaW5lOjpUeXBlIHR5cGUpCiAKICAgICBzd2l0Y2ggKHR5
cGUpCiAgICAgeworICAgICAgICBjYXNlIFR5cGU6OlVuaWZvcm1CdWZmZXI6CiAgICAgICAgIGNh
c2UgVHlwZTo6VXNlclVuaWZvcm1zOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTI1
NSw2ICsyNjksNyBAQCBzdGF0aWMgYm9vbCBBbGxvd1BhZGRpbmcoUGlwZWxpbmU6OlR5cGUgdHlw
ZSkKICAgICAgICAgY2FzZSBUeXBlOjpOb25Db25zdGFudEdsb2JhbHM6CiAgICAgICAgIGNhc2Ug
VHlwZTo6SW52b2NhdGlvblZlcnRleEdsb2JhbHM6CiAgICAgICAgIGNhc2UgVHlwZTo6SW52b2Nh
dGlvbkZyYWdtZW50R2xvYmFsczoKKyAgICAgICAgY2FzZSBUeXBlOjpVbmlmb3JtQnVmZmVyOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgY2FzZSBUeXBlOjpUZXh0dXJlOgpA
QCAtMzAwLDcgKzMxNSw2IEBAIHN0YXRpYyBpbnQgU2F0dXJhdGVWZWN0b3JPZihjb25zdCBURmll
bGQgJmZpZWxkKQogICAgIGNvbnN0IGJvb2wgY29uZCA9IHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
QlQgJiYgIXR5cGUuaXNBcnJheSgpICYmCiAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZUJ5
KENtcCwgdHlwZS5nZXROb21pbmFsU2l6ZSgpLCBNYXRjaERpbSkgJiYgdHlwZS5nZXRRdWFsaWZp
ZXIoKSAhPSBUUXVhbGlmaWVyOjpFdnFGcmFnRGVwdGg7CiAKLQogICAgIGlmIChjb25kKQogICAg
IHsKICAgICAgICAgcmV0dXJuIE5ld0RpbTsKQEAgLTM0NCw2ICszNTgsMTAgQEAgTW9kaWZ5U3Ry
dWN0Q29uZmlnIFBpcGVsaW5lOjpleHRlcm5hbFN0cnVjdE1vZGlmeUNvbmZpZygpIGNvbnN0CiAg
ICAgICAgICAgICBjb25maWcuc3BsaXRNYXRyaXhDb2x1bW5zICAgICA9IFByZWQ6OlRydWU7CiAg
ICAgICAgICAgICBjb25maWcuaW5saW5lU3RydWN0ICAgICAgICAgICA9IFByZWQ6OlRydWU7CiAg
ICAgICAgICAgICBjb25maWcuc2F0dXJhdGVTY2FsYXJPclZlY3RvciA9IFtdKGNvbnN0IFRGaWVs
ZCAmZmllbGQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSgpLT5nZXRRdWFsaWZp
ZXIoKSA9PSBUUXVhbGlmaWVyOjpFdnFTYW1wbGVNYXNrKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGlmIChpbnQgcyA9IFNhdHVyYXRlVmVjdG9yT2Y8VEJhc2ljVHlwZTo6RWJ0SW50LCBM
VCwgNCwgND4oZmllbGQpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHM7CkBAIC0zNTksNyArMzc3LDYgQEAgTW9kaWZ5U3RydWN0Q29uZmlnIFBpcGVsaW5l
OjpleHRlcm5hbFN0cnVjdE1vZGlmeUNvbmZpZygpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2Fz
ZSBUeXBlOjpVc2VyVW5pZm9ybXM6CiAgICAgICAgICAgICBjb25maWcucHJvbW90ZUJvb2xUb1Vp
bnQgICAgICAgICAgICA9IFByZWQ6OlRydWU7CiAgICAgICAgICAgICBjb25maWcuc2F0dXJhdGVN
YXRyaXhSb3dzICAgICAgICAgICA9IFNhdFZlYzo6RnVsbHlTYXR1cmF0ZTsKQEAgLTM3Myw3ICsz
OTAsMTIgQEAgTW9kaWZ5U3RydWN0Q29uZmlnIFBpcGVsaW5lOjpleHRlcm5hbFN0cnVjdE1vZGlm
eUNvbmZpZygpIGNvbnN0CiAKICAgICAgICAgY2FzZSBUeXBlOjpOb25Db25zdGFudEdsb2JhbHM6
CiAgICAgICAgICAgICBicmVhazsKLQorICAgICAgICBjYXNlIFR5cGU6OlVuaWZvcm1CdWZmZXI6
CisgICAgICAgICAgICBjb25maWcucHJvbW90ZUJvb2xUb1VpbnQgICAgICAgICAgICA9IFByZWQ6
OlRydWU7CisgICAgICAgICAgICBjb25maWcuc2F0dXJhdGVNYXRyaXhSb3dzICAgICAgICAgICA9
IFNhdFZlYzo6RnVsbHlTYXR1cmF0ZTsKKyAgICAgICAgICAgIGNvbmZpZy5zYXR1cmF0ZVNjYWxh
ck9yVmVjdG9yQXJyYXlzID0gU2F0VmVjOjpGdWxseVNhdHVyYXRlOworICAgICAgICAgICAgY29u
ZmlnLnJlY3Vyc2VTdHJ1Y3QgICAgICAgICAgICAgICAgPSBQcmVkOjpUcnVlOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZTo6SW52b2NhdGlvblZlcnRleEdsb2JhbHM6CiAg
ICAgICAgIGNhc2UgVHlwZTo6SW52b2NhdGlvbkZyYWdtZW50R2xvYmFsczoKICAgICAgICAgY2Fz
ZSBUeXBlOjpUZXh0dXJlOgpAQCAtMzkyLDYgKzQxNCw3IEBAIGJvb2wgUGlwZWxpbmU6OmFsd2F5
c1JlcXVpcmVzTG9jYWxWYXJpYWJsZURlY2xhcmF0aW9uSW5NYWluKCkgY29uc3QKICAgICAgICAg
Y2FzZSBUeXBlOjpGcmFnbWVudEluOgogICAgICAgICBjYXNlIFR5cGU6OlVzZXJVbmlmb3JtczoK
ICAgICAgICAgY2FzZSBUeXBlOjpBbmdsZVVuaWZvcm1zOgorICAgICAgICBjYXNlIFR5cGU6OlVu
aWZvcm1CdWZmZXI6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgY2FzZSBU
eXBlOjpWZXJ0ZXhPdXQ6CkBAIC00MTgsNiArNDQxLDcgQEAgYm9vbCBQaXBlbGluZTo6aXNQaXBl
bGluZU91dCgpIGNvbnN0CiAgICAgICAgIGNhc2UgVHlwZTo6SW52b2NhdGlvbkZyYWdtZW50R2xv
YmFsczoKICAgICAgICAgY2FzZSBUeXBlOjpUZXh0dXJlOgogICAgICAgICBjYXNlIFR5cGU6Oklu
c3RhbmNlSWQ6CisgICAgICAgIGNhc2UgVHlwZTo6VW5pZm9ybUJ1ZmZlcjoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgICAgICBjYXNlIFR5cGU6OlZlcnRleE91dDoKQEAgLTQ0Mywx
MSArNDY3LDEyIEBAIEFkZHJlc3NTcGFjZSBQaXBlbGluZTo6ZXh0ZXJuYWxBZGRyZXNzU3BhY2Uo
KSBjb25zdAogCiAgICAgICAgIGNhc2UgVHlwZTo6VXNlclVuaWZvcm1zOgogICAgICAgICBjYXNl
IFR5cGU6OkFuZ2xlVW5pZm9ybXM6CisgICAgICAgIGNhc2UgVHlwZTo6VW5pZm9ybUJ1ZmZlcjoK
ICAgICAgICAgICAgIHJldHVybiBBZGRyZXNzU3BhY2U6OkNvbnN0YW50OwogICAgIH0KIH0KIAot
Ym9vbCBQaXBlbGluZVN0cnVjdHM6Om1hdGNoZXMoY29uc3QgVFN0cnVjdHVyZSAqcywgYm9vbCBp
bnRlcm5hbCwgYm9vbCBleHRlcm5hbCkgY29uc3QKK2Jvb2wgUGlwZWxpbmVTdHJ1Y3RzOjptYXRj
aGVzKGNvbnN0IFRTdHJ1Y3R1cmUgJnMsIGJvb2wgaW50ZXJuYWwsIGJvb2wgZXh0ZXJuYWwpIGNv
bnN0CiB7CiAgICAgUGlwZWxpbmVTY29wZWQ8VFN0cnVjdHVyZT4gcHNbXSA9IHsKICAgICAgICAg
ZnJhZ21lbnRJbiwKQEAgLTQ1NSwyMCArNDgwLDIxIEBAIGJvb2wgUGlwZWxpbmVTdHJ1Y3RzOjpt
YXRjaGVzKGNvbnN0IFRTdHJ1Y3R1cmUgKnMsIGJvb2wgaW50ZXJuYWwsIGJvb2wgZXh0ZXJuYWwp
CiAgICAgICAgIHZlcnRleEluLAogICAgICAgICB2ZXJ0ZXhPdXQsCiAgICAgICAgIHVzZXJVbmlm
b3JtcywKLSAgICAgICAgYW5nbGVVbmlmb3JtcywKKyAgICAgICAgLyogYW5nbGVVbmlmb3Jtcywg
Ki8KICAgICAgICAgbm9uQ29uc3RhbnRHbG9iYWxzLAogICAgICAgICBpbnZvY2F0aW9uVmVydGV4
R2xvYmFscywKICAgICAgICAgaW52b2NhdGlvbkZyYWdtZW50R2xvYmFscywKKyAgICAgICAgdW5p
Zm9ybUJ1ZmZlcnMsCiAgICAgICAgIHRleHR1cmUsCiAgICAgICAgIGluc3RhbmNlSWQsCiAgICAg
fTsKICAgICBmb3IgKGNvbnN0IGF1dG8gJnAgOiBwcykKICAgICB7Ci0gICAgICAgIGlmIChpbnRl
cm5hbCAmJiBwLmludGVybmFsID09IHMpCisgICAgICAgIGlmIChpbnRlcm5hbCAmJiBwLmludGVy
bmFsID09ICZzKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQotICAgICAgICBpZiAoZXh0ZXJuYWwgJiYgcC5leHRlcm5hbCA9PSBzKQorICAgICAgICBpZiAo
ZXh0ZXJuYWwgJiYgcC5leHRlcm5hbCA9PSAmcykKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9QaXBlbGluZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvck1ldGFsRGlyZWN0L1BpcGVsaW5lLmgKaW5kZXggMWE2MWFhN2MxMmRjZTBlYjNlN2UzOWUz
NTQwMTQ1NmU3MjcxMTFmMS4uZDE5MmFkYzViM2I4Yjk5NjUzODY5ZTlmNWU4YzcxYzlhNmJkYzgz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1BpcGVsaW5lLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L1BpcGVsaW5lLmgKQEAgLTI4LDcgKzI4LDcgQEAgc3RydWN0IFBpcGVsaW5lU2NvcGVkCiAgICAg
Y29uc3QgVCAqaW50ZXJuYWwgPSBudWxscHRyOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgaW5wdXQgY29pbmNpZGVzIHdpdGggZWl0aGVyIGBleHRlcm5hbGAgb3IgYGludGVybmFsYCBk
YXRhLgotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBUICpvYmplY3QpIGNvbnN0IHsgcmV0dXJuIGV4
dGVybmFsID09IG9iamVjdCB8fCBpbnRlcm5hbCA9PSBvYmplY3Q7IH0KKyAgICBib29sIG1hdGNo
ZXMoY29uc3QgVCAmb2JqZWN0KSBjb25zdCB7IHJldHVybiBleHRlcm5hbCA9PSAmb2JqZWN0IHx8
IGludGVybmFsID09ICZvYmplY3Q7IH0KIAogICAgIC8vIEJvdGggYGV4dGVybmFsYCBhbmQgYGlu
dGVybmFsYCByZXByZXNlbnRhdGlvbnMgYXJlIG5vbi1udWxsLgogICAgIGJvb2wgaXNUb3RhbGx5
RnVsbCgpIGNvbnN0IHsgcmV0dXJuIGV4dGVybmFsICYmIGludGVybmFsOyB9CkBAIC01NSw2ICs1
NSw3IEBAIGNsYXNzIFBpcGVsaW5lCiAgICAgICAgIE5vbkNvbnN0YW50R2xvYmFscywKICAgICAg
ICAgSW52b2NhdGlvblZlcnRleEdsb2JhbHMsCiAgICAgICAgIEludm9jYXRpb25GcmFnbWVudEds
b2JhbHMsCisgICAgICAgIFVuaWZvcm1CdWZmZXIsCiAgICAgICAgIFRleHR1cmUsCiAgICAgICAg
IEluc3RhbmNlSWQsCiAgICAgfTsKQEAgLTExMiwxMCArMTEzLDExIEBAIHN0cnVjdCBQaXBlbGlu
ZVN0cnVjdHMgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBQaXBlbGluZVNjb3BlZDxUU3RydWN0
dXJlPiBub25Db25zdGFudEdsb2JhbHM7CiAgICAgUGlwZWxpbmVTY29wZWQ8VFN0cnVjdHVyZT4g
aW52b2NhdGlvblZlcnRleEdsb2JhbHM7CiAgICAgUGlwZWxpbmVTY29wZWQ8VFN0cnVjdHVyZT4g
aW52b2NhdGlvbkZyYWdtZW50R2xvYmFsczsKKyAgICBQaXBlbGluZVNjb3BlZDxUU3RydWN0dXJl
PiB1bmlmb3JtQnVmZmVyczsKICAgICBQaXBlbGluZVNjb3BlZDxUU3RydWN0dXJlPiB0ZXh0dXJl
OwogICAgIFBpcGVsaW5lU2NvcGVkPFRTdHJ1Y3R1cmU+IGluc3RhbmNlSWQ7CiAKLSAgICBib29s
IG1hdGNoZXMoY29uc3QgVFN0cnVjdHVyZSAqcywgYm9vbCBpbnRlcm5hbCwgYm9vbCBleHRlcm5h
bCkgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFRTdHJ1Y3R1cmUgJnMsIGJvb2wgaW50
ZXJuYWwsIGJvb2wgZXh0ZXJuYWwpIGNvbnN0OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHNoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUHJvZ3JhbVByZWx1ZGUuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L1Byb2dyYW1QcmVsdWRlLmNwcAppbmRleCBmMTg0MmFlOTVlNjM3MDVmZTY3Y2U3YWQ5ODE4MDMy
NTIzZDY1MjFhLi44YzI5ZTY0NzhhM2NiZWExOTVjOGIwNWNjNTE3Y2JlNWZlOTNjNTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvUHJvZ3JhbVByZWx1ZGUuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9Qcm9ncmFtUHJlbHVkZS5jcHAKQEAgLTQwLDggKzQwLDI3IEBAIGNsYXNzIFByb2dyYW1QcmVs
dWRlIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgICAgIGVxdWFsTWF0cml4KCk7
CiAgICAgICAgIH0KIAorICAgICAgICBzd2l0Y2ggKHBwYy5zaGFkZXJUeXBlKQorICAgICAgICB7
CisgICAgICAgICAgICBjYXNlIE1ldGFsU2hhZGVyVHlwZTo6Tm9uZToKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoMCAmJiAicHBjLnNoYWRlclR5cGUgc2hvdWxkIG5vdCBiZSBTaGFkZXJUeXBlTm9u
ZSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBNZXRhbFNoYWRl
clR5cGU6OlZlcnRleDoKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1fZmVlZGJhY2tfZ3VhcmQo
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTWV0YWxTaGFkZXJU
eXBlOjpGcmFnbWVudDoKKyAgICAgICAgICAgICAgICB3cml0ZVNhbXBsZU1hc2soKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTWV0YWxTaGFkZXJUeXBlOjpDb21w
dXRlOgorICAgICAgICAgICAgICAgIEFTU0VSVCgwICYmICJjb21wdXRlIHNoYWRlcnMgbm90IGN1
cnJlbnRseSBzdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmIDEKICAg
ICAgICAgbU91dCA8PCAiI2RlZmluZSBBTkdMRV90ZW5zb3IgbWV0YWw6OmFycmF5XG4iOworICAg
ICAgICBtT3V0IDw8ICIjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XdW51c2Vk
LXZhbHVlXCJcbiI7CiAjZWxzZQogICAgICAgICB0ZW5zb3IoKTsKICNlbmRpZgpAQCAtODYsNiAr
MTA1LDggQEAgY2xhc3MgUHJvZ3JhbVByZWx1ZGUgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgog
ICAgIHZvaWQgaW5jbHVkZV9tZXRhbF9wYWNrKCk7CiAgICAgdm9pZCBpbmNsdWRlX21ldGFsX3Jl
bGF0aW9uYWwoKTsKIAorICAgIHZvaWQgdHJhbnNmb3JtX2ZlZWRiYWNrX2d1YXJkKCk7CisKICAg
ICB2b2lkIGVuYWJsZV9pZigpOwogICAgIHZvaWQgc2NhbGFyX29mKCk7CiAgICAgdm9pZCBpc19z
Y2FsYXIoKTsKQEAgLTE0NSw2ICsxNjYsNyBAQCBjbGFzcyBQcm9ncmFtUHJlbHVkZSA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgdm9pZCBjYXN0TWF0cml4KCk7CiAgICAgdm9pZCBmdW5j
dGlvbkNvbnN0YW50cygpOwogICAgIHZvaWQgZ3JhZGllbnQoKTsKKyAgICB2b2lkIHdyaXRlU2Ft
cGxlTWFzaygpOwogICAgIHZvaWQgdGV4dHVyZUVudigpOwogICAgIHZvaWQgdGV4ZWxGZXRjaCgp
OwogICAgIHZvaWQgdGV4ZWxGZXRjaE9mZnNldCgpOwpAQCAtMjY1LDcgKzI4NywxNCBAQCBQUk9H
UkFNX1BSRUxVREVfSU5DTFVERShtZXRhbF9tYXRyaXgpCiBQUk9HUkFNX1BSRUxVREVfSU5DTFVE
RShtZXRhbF9wYWNrKQogUFJPR1JBTV9QUkVMVURFX0lOQ0xVREUobWV0YWxfcmVsYXRpb25hbCkK
IAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK1BST0dSQU1fUFJFTFVERV9ERUNMQVJFKHRyYW5z
Zm9ybV9mZWVkYmFja19ndWFyZCwgUiIoCisjaWYgVFJBTlNGT1JNX0ZFRURCQUNLX0VOQUJMRUQK
KyAgICAjZGVmaW5lIF9fVkVSVEVYX09VVChhcmdzKSB2b2lkCisjZWxzZQorICAgICNkZWZpbmUg
X19WRVJURVhfT1VUKGFyZ3MpIGFyZ3MKKyNlbmRpZgorKSIpCisKIAogUFJPR1JBTV9QUkVMVURF
X0RFQ0xBUkUoQUxXQVlTX0lOTElORSwgUiIoCiAjZGVmaW5lIEFOR0xFX0FMV0FZU19JTkxJTkUg
X19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCkBAIC0xMDY2LDI3ICsxMDk1LDI1IEBAIEFO
R0xFX0FMV0FZU19JTkxJTkUgYm9vbCBBTkdMRV9lcXVhbChtZXRhbDo6bWF0cml4PFQsIEMsIFI+
IGEsIG1ldGFsOjptYXRyaXg8VCwKICkiLAogICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxW
ZWN0b3IoKSkKIAotCi1QUk9HUkFNX1BSRUxVREVfREVDTEFSRShub3RFcXVhbFZlY3RvciwKK1BS
T0dSQU1fUFJFTFVERV9ERUNMQVJFKG5vdEVxdWFsTWF0cml4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgUiIoCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IE4+Ci1BTkdMRV9BTFdBWVNfSU5M
SU5FIGJvb2wgQU5HTEVfbm90RXF1YWwobWV0YWw6OnZlYzxULCBOPiB1LCBtZXRhbDo6dmVjPFQs
IE4+IHYpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IEMsIGludCBSPgorQU5HTEVfQUxXQVlT
X0lOTElORSBib29sIEFOR0xFX25vdEVxdWFsKG1ldGFsOjptYXRyaXg8VCwgQywgUj4gdSwgbWV0
YWw6Om1hdHJpeDxULCBDLCBSPiB2KQogewogICAgIHJldHVybiAhQU5HTEVfZXF1YWwodSwgdik7
CiB9CiApIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVxdWFsVmVjdG9yKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBlcXVhbE1hdHJpeCgpKQogCi1QUk9HUkFNX1BSRUxVREVfREVDTEFS
RShub3RFcXVhbE1hdHJpeCwKK1BST0dSQU1fUFJFTFVERV9ERUNMQVJFKG5vdEVxdWFsVmVjdG9y
LAogICAgICAgICAgICAgICAgICAgICAgICAgUiIoCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50
IEMsIGludCBSPgotQU5HTEVfQUxXQVlTX0lOTElORSBib29sIEFOR0xFX25vdEVxdWFsKG1ldGFs
OjptYXRyaXg8VCwgQywgUj4gdSwgbWV0YWw6Om1hdHJpeDxULCBDLCBSPiB2KQordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIGludCBOPgorQU5HTEVfQUxXQVlTX0lOTElORSBib29sIEFOR0xFX25vdEVx
dWFsKG1ldGFsOjp2ZWM8VCwgTj4gdSwgbWV0YWw6OnZlYzxULCBOPiB2KQogewogICAgIHJldHVy
biAhQU5HTEVfZXF1YWwodSwgdik7CiB9CiApIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVx
dWFsTWF0cml4KCkpCi0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVxdWFsVmVjdG9yKCkpCiAK
IFBST0dSQU1fUFJFTFVERV9ERUNMQVJFKG5vdEVxdWFsU3RydWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgUiIoCkBAIC0xMTM1LDcgKzExNjIsNyBAQCBzdHJ1Y3QgQU5HTEVfU3dpenpsZVJl
ZgogICAgICAgICAgICAgbVZlY1tqXSA9IG1SZWZbaV07CiAgICAgICAgIH0KICAgICB9Ci0gICAg
QU5HTEVfU3dpenpsZVJlZih0aHJlYWQgbWV0YWw6OnZlYzxULCBOPiAmdmVjLCB0aHJlYWQgY29u
c3QgaW50ICppbmRpY2VzKQorICAgIEFOR0xFX1N3aXp6bGVSZWYodGhyZWFkIG1ldGFsOjp2ZWM8
VCwgVk4+ICZ2ZWMsIHRocmVhZCBjb25zdCBpbnQgKmluZGljZXMpCiAgICAgICAgIDogbVZlYyh2
ZWMpCiAgICAgewogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFNOOyArK2kpCkBAIC0xMTUw
LDcgKzExNzcsOCBAQCBzdHJ1Y3QgQU5HTEVfU3dpenpsZVJlZgogdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIGludCBOPgogQU5HTEVfQUxXQVlTX0lOTElORSBBTkdMRV9WZWN0b3JFbGVtUmVmPFQsIE4+
IEFOR0xFX3N3aXp6bGVfcmVmKHRocmVhZCBtZXRhbDo6dmVjPFQsIE4+ICZ2ZWMsIGludCBpMCkK
IHsKLSAgICByZXR1cm4gQU5HTEVfVmVjdG9yRWxlbVJlZjxULCBOPih2ZWMsIGluZGV4KTsKKyAg
ICBjb25zdCBpbnQgaXNbXSA9IHsgaTAgfTsKKyAgICByZXR1cm4gQU5HTEVfVmVjdG9yRWxlbVJl
ZjxULCBOPih2ZWMsIGlzKTsKIH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgTj4KIEFOR0xF
X0FMV0FZU19JTkxJTkUgQU5HTEVfU3dpenpsZVJlZjxULCBOLCAyPiBBTkdMRV9zd2l6emxlX3Jl
Zih0aHJlYWQgbWV0YWw6OnZlYzxULCBOPiAmdmVjLCBpbnQgaTAsIGludCBpMSkKQEAgLTEzNzks
NiArMTQwNywxOSBAQCB0ZW1wbGF0ZSA8aW50IE4+CiB1c2luZyBBTkdMRV9ncmFkaWVudCA9IHR5
cGVuYW1lIEFOR0xFX2dyYWRpZW50X3RyYWl0czxOPjo6dHlwZTsKICkiKQogCitQUk9HUkFNX1BS
RUxVREVfREVDTEFSRSh3cml0ZVNhbXBsZU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICBS
IigKK0FOR0xFX0FMV0FZU19JTkxJTkUgdm9pZCBBTkdMRV93cml0ZVNhbXBsZU1hc2soY29uc3Qg
dWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJlYWQgdWludCYgZ2xfU2FtcGxlTWFzaykKK3sKKyAgICBpZiAoQU5HTEVfQ292ZXJhZ2VN
YXNrRW5hYmxlZCkKKyAgICB7CisgICAgICAgIGdsX1NhbXBsZU1hc2sgPSBhc190eXBlPGludD4o
bWFzayk7CisgICAgfQorfQorKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkNv
bnN0YW50cygpKQorCiBQUk9HUkFNX1BSRUxVREVfREVDTEFSRSh0ZXh0dXJlRW52LAogICAgICAg
ICAgICAgICAgICAgICAgICAgUiIoCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEzOTQsMTAg
KzE0MzUsMTIgQEAgUFJPR1JBTV9QUkVMVURFX0RFQ0xBUkUoZnVuY3Rpb25Db25zdGFudHMsCiAj
ZGVmaW5lIEFOR0xFX1NBTVBMRV9DT01QQVJFX0dSQURJRU5UX0lOREVYIDAKICNkZWZpbmUgQU5H
TEVfU0FNUExFX0NPTVBBUkVfTE9EX0lOREVYICAgICAgMQogI2RlZmluZSBBTkdMRV9SQVNURVJJ
WkFUSU9OX0RJU0NBUkRfSU5ERVggICAyCisjZGVmaW5lIEFOR0xFX0NPVkVSQUdFX01BU0tfRU5B
QkxFRF9JTkRFWCAgIDMKIAogY29uc3RhbnQgYm9vbCBBTkdMRV9Vc2VTYW1wbGVDb21wYXJlR3Jh
ZGllbnQgW1tmdW5jdGlvbl9jb25zdGFudChBTkdMRV9TQU1QTEVfQ09NUEFSRV9HUkFESUVOVF9J
TkRFWCldXTsKIGNvbnN0YW50IGJvb2wgQU5HTEVfVXNlU2FtcGxlQ29tcGFyZUxvZCAgICAgIFtb
ZnVuY3Rpb25fY29uc3RhbnQoQU5HTEVfU0FNUExFX0NPTVBBUkVfTE9EX0lOREVYKV1dOwogY29u
c3RhbnQgYm9vbCBBTkdMRV9SYXN0ZXJpemF0aW9uRGlzY2FyZCAgICAgW1tmdW5jdGlvbl9jb25z
dGFudChBTkdMRV9SQVNURVJJWkFUSU9OX0RJU0NBUkRfSU5ERVgpXV07Citjb25zdGFudCBib29s
IEFOR0xFX0NvdmVyYWdlTWFza0VuYWJsZWQgICAgICBbW2Z1bmN0aW9uX2NvbnN0YW50KEFOR0xF
X0NPVkVSQUdFX01BU0tfRU5BQkxFRF9JTkRFWCldXTsKICkiKQogCiBQUk9HUkFNX1BSRUxVREVf
REVDTEFSRSh0ZXhlbEZldGNoLApAQCAtMTUzNyw3ICsxNTgwLDcgQEAgQU5HTEVfQUxXQVlTX0lO
TElORSBhdXRvIEFOR0xFX3RleHR1cmVfaW1wbCgKICAgICB0aHJlYWQgbWV0YWw6OnNhbXBsZXIg
Y29uc3QgJnNhbXBsZXIsCiAgICAgdGhyZWFkIG1ldGFsOjpmbG9hdDMgY29uc3QgJmNvb3JkKQog
ewotICAgIHJldHVybiB0ZXh0dXJlLnNhbXBsZShzYW1wbGVyLCBjb29yZC54eSk7CisgICAgcmV0
dXJuIHRleHR1cmUuc2FtcGxlX2NvbXBhcmUoc2FtcGxlciwgY29vcmQueHksIGNvb3JkLnopOwog
fQogKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlKCkpCkBAIC0xNTUxLDcgKzE1
OTQsNyBAQCBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVyZV9pbXBsKAogICAg
IHRocmVhZCBtZXRhbDo6ZmxvYXQzIGNvbnN0ICZjb29yZCwKICAgICBmbG9hdCBiaWFzKQogewot
ICAgIHJldHVybiB0ZXh0dXJlLnNhbXBsZShzYW1wbGVyLCBjb29yZC54eSwgbWV0YWw6OmJpYXMo
YmlhcykpOworICAgIHJldHVybiB0ZXh0dXJlLnNhbXBsZV9jb21wYXJlKHNhbXBsZXIsIGNvb3Jk
Lnh5LCBjb29yZC56LCBtZXRhbDo6YmlhcyhiaWFzKSk7CiB9CiApIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUoKSkKQEAgLTE1OTEsNyArMTYzNCw3IEBAIEFOR0xFX0FMV0FZU19J
TkxJTkUgYXV0byBBTkdMRV90ZXh0dXJlX2ltcGwoCiAgICAgdGhyZWFkIG1ldGFsOjpzYW1wbGVy
IGNvbnN0ICZzYW1wbGVyLAogICAgIHRocmVhZCBtZXRhbDo6ZmxvYXQ0IGNvbnN0ICZjb29yZCkK
IHsKLSAgICByZXR1cm4gdGV4dHVyZS5zYW1wbGUoc2FtcGxlciwgY29vcmQueHl6KTsKKyAgICBy
ZXR1cm4gdGV4dHVyZS5zYW1wbGVfY29tcGFyZShzYW1wbGVyLCBjb29yZC54eXosIGNvb3JkLncp
OwogfQogKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlKCkpCkBAIC0xNjA1LDcg
KzE2NDgsNyBAQCBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVyZV9pbXBsKAog
ICAgIHRocmVhZCBtZXRhbDo6ZmxvYXQ0IGNvbnN0ICZjb29yZCwKICAgICBmbG9hdCBiaWFzKQog
ewotICAgIHJldHVybiB0ZXh0dXJlLnNhbXBsZShzYW1wbGVyLCBjb29yZC54eXosIG1ldGFsOjpi
aWFzKGJpYXMpKTsKKyAgICByZXR1cm4gdGV4dHVyZS5zYW1wbGVfY29tcGFyZShzYW1wbGVyLCBj
b29yZC54eXosIGNvb3JkLncsIG1ldGFsOjpiaWFzKGJpYXMpKTsKIH0KICkiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZSgpKQpAQCAtMTc3OSw3ICsxODIyLDYgQEAgQU5HTEVfQUxX
QVlTX0lOTElORSBhdXRvIEFOR0xFX3RleHR1cmUyRF9pbXBsKAogUFJPR1JBTV9QUkVMVURFX0RF
Q0xBUkUodGV4dHVyZTJEUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFIiKAogI2RlZmlu
ZSBBTkdMRV90ZXh0dXJlMkRSZWN0KGVudiwgLi4uKSBBTkdMRV90ZXh0dXJlMkRSZWN0X2ltcGwo
KmVudi50ZXh0dXJlLCAqZW52LnNhbXBsZXIsIF9fVkFfQVJHU19fKQotCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGV4dHVyZT4KIEFOR0xFX0FMV0FZU19JTkxJTkUgYXV0byBBTkdMRV90ZXh0dXJlMkRS
ZWN0X2ltcGwoCiAgICAgdGhyZWFkIFRleHR1cmUgJnRleHR1cmUsCkBAIC0xODQ2LDcgKzE4ODgs
NiBAQCBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVyZTJEUmVjdFByb2pfaW1w
bCgKIHsKICAgICByZXR1cm4gdGV4dHVyZS5zYW1wbGUoc2FtcGxlciwgY29vcmQueHkvY29vcmQu
eik7CiB9Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUZXh0dXJlPgogQU5HTEVfQUxXQVlTX0lOTElO
RSBhdXRvIEFOR0xFX3RleHR1cmUyRFJlY3RQcm9qX2ltcGwoCiAgICAgdGhyZWFkIFRleHR1cmUg
JnRleHR1cmUsCkBAIC0xODg0LDcgKzE5MjUsNiBAQCBBTkdMRV9BTFdBWVNfSU5MSU5FIGF1dG8g
QU5HTEVfdGV4dHVyZTJEUHJvakxvZF9pbXBsKAogKSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlRW52KCkpCiAKLQogUFJPR1JBTV9QUkVMVURFX0RFQ0xBUkUodGV4dHVyZTNETG9k
LAogICAgICAgICAgICAgICAgICAgICAgICAgUiIoCiAjZGVmaW5lIEFOR0xFX3RleHR1cmUzRExv
ZChlbnYsIC4uLikgQU5HTEVfdGV4dHVyZTNETG9kX2ltcGwoKmVudi50ZXh0dXJlLCAqZW52LnNh
bXBsZXIsIF9fVkFfQVJHU19fKQpAQCAtMjI1Niw3ICsyMjk2LDcgQEAgQU5HTEVfQUxXQVlTX0lO
TElORSBhdXRvIEFOR0xFX3RleHR1cmVHcmFkT2Zmc2V0X2ltcGwoCiAgICAgdGhyZWFkIG1ldGFs
OjpmbG9hdDMgY29uc3QgJmRQZHksCiAgICAgdGhyZWFkIG1ldGFsOjppbnQzIGNvbnN0ICZvZmZz
ZXQpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUuc2FtcGxlKHNhbXBsZXIsIGNvb3JkLnh5eiwgbWV0
YWw6OmdyYWRpZW50Y3ViZShkUGR4LCBkUGR5KSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gdGV4dHVy
ZS5zYW1wbGVfY29tcGFyZShzYW1wbGVyLCBjb29yZC54eXosIGNvb3JkLncsIG1ldGFsOjpncmFk
aWVudGN1YmUoZFBkeCwgZFBkeSksIG9mZnNldCk7CiB9CiApIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmVHcmFkT2Zmc2V0KCkpCkBAIC0yNTA0LDcgKzI1NDQsNyBAQCBBTkdMRV9B
TFdBWVNfSU5MSU5FIGF1dG8gQU5HTEVfdGV4dHVyZU9mZnNldF9pbXBsKAogICAgIHRocmVhZCBm
bG9hdDMgY29uc3QgJmNvb3JkLAogICAgIHRocmVhZCBpbnQyIGNvbnN0ICZvZmZzZXQpCiB7Ci0g
ICAgcmV0dXJuIHRleHR1cmUuc2FtcGxlKHNhbXBsZXIsIGNvb3JkLnh5LCBvZmZzZXQpOworICAg
IHJldHVybiB0ZXh0dXJlLnNhbXBsZV9jb21wYXJlKHNhbXBsZXIsIGNvb3JkLnh5LCBjb29yZC56
LCBvZmZzZXQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTI1MTUsNyArMjU1NSw3
IEBAIEFOR0xFX0FMV0FZU19JTkxJTkUgYXV0byBBTkdMRV90ZXh0dXJlT2Zmc2V0X2ltcGwoCiAg
ICAgdGhyZWFkIGludDIgY29uc3QgJm9mZnNldCwKICAgICBmbG9hdCBiaWFzKQogewotICAgIHJl
dHVybiB0ZXh0dXJlLnNhbXBsZShzYW1wbGVyLCBjb29yZC54eSwgbWV0YWw6OmJpYXMoYmlhcyks
IG9mZnNldCk7CisgICAgcmV0dXJuIHRleHR1cmUuc2FtcGxlX2NvbXBhcmUoc2FtcGxlciwgY29v
cmQueHksIGNvb3JkLnosIG1ldGFsOjpiaWFzKGJpYXMpLCBvZmZzZXQpOwogfQogKSIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRW52KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJl
Y3QvUHJvZ3JhbVByZWx1ZGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFtUHJlbHVkZS5oCmluZGV4
IGUwMDQxM2Y1NzY5MmEwNTM0ZGE0ZDdkYzk2M2EwOThiYjg4Y2RkYzYuLjhkNDU2ODRmMGNhYWUz
ZDVmOTY3NTliNWUxMWJiMWY3ZTgyODA3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9n
cmFtUHJlbHVkZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFtUHJlbHVkZS5oCkBAIC0xNyw5
ICsxNywyNCBAQCBuYW1lc3BhY2Ugc2gKIGNsYXNzIFRJbmZvU2lua0Jhc2U7CiBjbGFzcyBUSW50
ZXJtQmxvY2s7CiAKK2VudW0gY2xhc3MgTWV0YWxTaGFkZXJUeXBlCit7CisgICAgTm9uZSwKKyAg
ICBWZXJ0ZXgsCisgICAgRnJhZ21lbnQsCisgICAgQ29tcHV0ZSwgLy8gVW51c2VkIGN1cnJlbnRs
eQorICAgIENvdW50LAorfTsKKwogc3RydWN0IFByb2dyYW1QcmVsdWRlQ29uZmlnCiB7CitwdWJs
aWM6CisgICAgUHJvZ3JhbVByZWx1ZGVDb25maWcoKSB7fQorICAgIGV4cGxpY2l0IFByb2dyYW1Q
cmVsdWRlQ29uZmlnKE1ldGFsU2hhZGVyVHlwZSBzaGFkZXJUeXBlKQorICAgIDogc2hhZGVyVHlw
ZShzaGFkZXJUeXBlKQorICAgIHt9CiAgICAgYm9vbCBoYXNTdHJ1Y3RFcSA9IGZhbHNlOworICAg
IE1ldGFsU2hhZGVyVHlwZSBzaGFkZXJUeXBlID0gTWV0YWxTaGFkZXJUeXBlOjpOb25lOwogfTsK
IAogLy8gVGhpcyBlbWl0cyBmaXhlZCBoZWxwZXIgTWV0YWwgY29kZSBkaXJlY3RseSB3aXRob3V0
IGFkZGluZyBjb2RlIHRvIHRoZSBBU1QuIFRoaXMgd2Fsa3MgdGhlIEFTVCB0bwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvck1ldGFsRGlyZWN0L1JlZHVjZUludGVyZmFjZUJsb2Nrcy5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
UmVkdWNlSW50ZXJmYWNlQmxvY2tzLmNwcAppbmRleCA4ZTk2Y2ZkODJiZTFkMTAwMGQxMmUyZTRm
MTBiNzEzZmEzOGZjMDY1Li5lNDc3MmJiMzllMjRkZTE5YjZmYjJmZjU5OGNlN2U0N2U2MmJhMGRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmVkdWNlSW50ZXJmYWNlQmxvY2tzLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yTWV0YWxEaXJlY3QvUmVkdWNlSW50ZXJmYWNlQmxvY2tzLmNwcApAQCAtMjYsMTIgKzI2LDEw
IEBAIGNsYXNzIFJlZHVjZXIgOiBwdWJsaWMgVEludGVybVJlYnVpbGQKICAgICBzdGQ6OnVub3Jk
ZXJlZF9tYXA8Y29uc3QgVEludGVyZmFjZUJsb2NrICosICBjb25zdCBUVmFyaWFibGUgKj4KICAg
ICAgICAgbUxpZnRlZE1hcDsKICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8Y29uc3QgVFZhcmlhYmxl
ICosIGNvbnN0IFRWYXJpYWJsZSAqPiBtSW5zdGFuY2VNYXA7Ci0gICAgSWRHZW4gJm1JZEdlbjsK
LQotcHVibGljOgotICAgIFJlZHVjZXIoVENvbXBpbGVyICZjb21waWxlciwgSWRHZW4gJmlkR2Vu
KQotICAgICAgICA6IFRJbnRlcm1SZWJ1aWxkKGNvbXBpbGVyLCB0cnVlLCBmYWxzZSksCi0gICAg
ICAgICAgbUlkR2VuKGlkR2VuKQorICAgIElkR2VuICYgbUlkR2VuOworICBwdWJsaWM6CisgICAg
UmVkdWNlcihUQ29tcGlsZXIgJmNvbXBpbGVyLCBJZEdlbiAmIGlkR2VuKSA6IFRJbnRlcm1SZWJ1
aWxkKGNvbXBpbGVyLCB0cnVlLCBmYWxzZSksCisgICAgICAgIG1JZEdlbihpZEdlbikKICAgICB7
CiAKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZVBpcGVsaW5lcy5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yTWV0YWxEaXJlY3QvUmV3cml0ZVBpcGVsaW5lcy5jcHAKaW5kZXggMzYzN2UyMzMwMGFiOTll
MTBmYjgwYWM4ZjVmZjBjNmUxODA2NjFjZi4uMzI3YjY4MTEzZjEzZDZjNDVmODEyOGQ0YjM4ZWM0
Zjg1MzUzOGFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1Jld3JpdGVQaXBlbGluZXMuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlUGlwZWxpbmVzLmNwcApAQCAtMTksNyArMTksNyBA
QAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0ZpbmRNYWluLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX3V0aWwvSW50ZXJtUmVidWlsZC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0ludGVybVRyYXZlcnNlLmgi
Ci0KKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9T
eW1ib2xFbnYuaCIKIHVzaW5nIG5hbWVzcGFjZSBzaDsKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KQEAgLTEyMiwxNCArMTIyLDE2IEBAIGNsYXNzIEdlbmVyYXRlUGlwZWxpbmVTdHJ1Y3QgOiBw
cml2YXRlIFRJbnRlcm1SZWJ1aWxkCiAgICAgICAgIH0oKTsKIAogICAgICAgICBNb2RpZmllZFN0
cnVjdE1hY2hpbmVyaWVzIG1vZGlmaWVkTWFjaGluZXJpZXM7Ci0gICAgICAgIGNvbnN0IGJvb2wg
bW9kaWZpZWQgPSBUcnlDcmVhdGVNb2RpZmllZFN0cnVjdCgKKyAgICAgICAgY29uc3QgYm9vbCBp
c1VCTyA9IG1QaXBlbGluZS50eXBlID09IFBpcGVsaW5lOjpUeXBlOjpVbmlmb3JtQnVmZmVyOwor
ICAgICAgICBjb25zdCBib29sIG1vZGlmaWVkID0gVHJ5Q3JlYXRlTW9kaWZpZWRTdHJ1Y3QobUNv
bXBpbGVyLAogICAgICAgICAgICAgbVN5bWJvbEVudiwgbUlkR2VuLCBtUGlwZWxpbmUuZXh0ZXJu
YWxTdHJ1Y3RNb2RpZnlDb25maWcoKSwgcGlwZWxpbmVTdHJ1Y3QsCi0gICAgICAgICAgICBtUGlw
ZWxpbmUuZ2V0U3RydWN0VHlwZU5hbWUoUGlwZWxpbmU6OlZhcmlhbnQ6Ok1vZGlmaWVkKSwgbW9k
aWZpZWRNYWNoaW5lcmllcyk7CisgICAgICAgICAgICBtUGlwZWxpbmUuZ2V0U3RydWN0VHlwZU5h
bWUoUGlwZWxpbmU6OlZhcmlhbnQ6Ok1vZGlmaWVkKSwKKyAgICAgICAgICAgIG1vZGlmaWVkTWFj
aGluZXJpZXMsIGlzVUJPLCAhaXNVQk8pOwogCiAgICAgICAgIGlmIChtb2RpZmllZCkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKG1QaXBlbGluZS50eXBlICE9IFBpcGVsaW5lOjpUeXBl
OjpUZXh0dXJlKTsKLSAgICAgICAgICAgIEFTU0VSVCghbVBpcGVsaW5lLmdsb2JhbEluc3RhbmNl
VmFyKTsgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBieSBjb25zdHJ1Y3Rpb24uCisgICAgICAg
ICAgICBBU1NFUlQobVBpcGVsaW5lLnR5cGUgPT0gUGlwZWxpbmU6OlR5cGU6OkFuZ2xlVW5pZm9y
bXMgfHwgIW1QaXBlbGluZS5nbG9iYWxJbnN0YW5jZVZhcik7ICAvLyBUaGlzIHNob3VsZG4ndCBo
YXBwZW4gYnkgY29uc3RydWN0aW9uLgogCiAgICAgICAgICAgICBhdXRvIGdldEZ1bmN0aW9uID0g
W10oc2g6OlRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmZ1bmNEZWNsKSB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmNEZWNsID8gZnVuY0RlY2wtPmdldEZ1bmN0aW9uKCkgOiBudWxscHRy
OwpAQCAtMTg1LDEyICsxODcsMTAgQEAgY2xhc3MgR2VuZXJhdGVQaXBlbGluZVN0cnVjdCA6IHBy
aXZhdGUgVEludGVybVJlYnVpbGQKICAgICB7CiAgICAgICAgIHJldHVybiB7bm9kZSwgVmlzaXRC
aXRzOjpOZWl0aGVyfTsKICAgICB9Ci0KICAgICBQb3N0UmVzdWx0IHZpc2l0RGVjbGFyYXRpb25Q
b3N0KFRJbnRlcm1EZWNsYXJhdGlvbiAmZGVjbE5vZGUpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBEZWNsYXJhdGlvbiBkZWNsICAgICA9IFZpZXdEZWNsYXJhdGlvbihkZWNsTm9kZSk7CiAgICAg
ICAgIGNvbnN0IFRWYXJpYWJsZSAmdmFyID0gZGVjbC5zeW1ib2wudmFyaWFibGUoKTsKLQogICAg
ICAgICBpZiAobVBpcGVsaW5lLnVzZXModmFyKSkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKG1JbmZvLnBpcGVsaW5lVmFyaWFibGVzLmZpbmQoJnZhcikgPT0gbUluZm8ucGlwZWxpbmVW
YXJpYWJsZXMuZW5kKCkpOwpAQCAtMjI5LDYgKzIyOSwxOSBAQCBjbGFzcyBHZW5lcmF0ZVBpcGVs
aW5lU3RydWN0IDogcHJpdmF0ZSBUSW50ZXJtUmVidWlsZAogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgIGNhc2UgUGlwZWxpbmU6OlR5cGU6OlVuaWZvcm1C
dWZmZXI6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBUVmFyaWFi
bGUgKnZhciA6IG1QaXBlbGluZVZhcmlhYmxlTGlzdCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gJnR5cGUgID0gQ2xvbmVUeXBlKHZhci0+Z2V0VHlwZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byAqZmllbGQgPSBuZXcgVEZpZWxkKCZ0eXBlLCB2YXIt
Pm5hbWUoKSwga05vU291cmNlTG9jLCB2YXItPnN5bWJvbFR5cGUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1TeW1ib2xFbnYubWFya0FzUG9pbnRlcigqZmllbGQsIEFkZHJlc3NTcGFjZTo6Q29u
c3RhbnQpOworICAgICAgICAgICAgICAgICAgICBtU3ltYm9sRW52Lm1hcmtBc1VCTygqZmllbGQp
OworICAgICAgICAgICAgICAgICAgICBtU3ltYm9sRW52Lm1hcmtBc1BvaW50ZXIoKnZhciwgQWRk
cmVzc1NwYWNlOjpDb25zdGFudCk7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoX2Jh
Y2soZmllbGQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBmb3IgKGNvbnN0IFRWYXJpYWJsZSAqdmFyIDogbVBpcGVsaW5lVmFyaWFibGVMaXN0KQpA
QCAtNDExLDcgKzQyNCw2IEBAIGNsYXNzIFBpcGVsaW5lRnVuY3Rpb25FbnYKICAgICAgICAgICAg
ICAgICBhdXRvICp2YXIgPSBuZXcgVFZhcmlhYmxlKCZtU3ltYm9sVGFibGUsIG5hbWUucmF3TmFt
ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRUeXBl
KFRCYXNpY1R5cGU6OkVidFVJbnQpLCBuYW1lLnN5bWJvbFR5cGUoKSk7CiAgICAgICAgICAgICAg
ICAgbmV3RnVuYyAgID0gJkNsb25lRnVuY3Rpb25BbmRQcmVwZW5kUGFyYW0obVN5bWJvbFRhYmxl
LCBudWxscHRyLCBmdW5jLCAqdmFyKTsKLSAgICAgICAgICAgICAgICBtU3ltYm9sRW52Lm1hcmtB
c1JlZmVyZW5jZSgqdmFyLCBtUGlwZWxpbmUuZXh0ZXJuYWxBZGRyZXNzU3BhY2UoKSk7CiAgICAg
ICAgICAgICAgICAgbVBpcGVsaW5lTWFpbkxvY2FsVmFyLmV4dGVybmFsID0gdmFyOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoaXNNYWluICYmIG1QaXBlbGluZS5hbHdheXNS
ZXF1aXJlc0xvY2FsVmFyaWFibGVEZWNsYXJhdGlvbkluTWFpbigpKQpAQCAtNDMzLDYgKzQ0NSwy
OSBAQCBjbGFzcyBQaXBlbGluZUZ1bmN0aW9uRW52CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtUGlwZWxpbmUudHlwZSA9PSBQaXBlbGluZTo6VHlwZTo6VW5pZm9ybUJ1ZmZlcikKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRvck1ldGFs
UmVmbGVjdGlvbiAqcmVmbGVjdGlvbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChz
aDo6VHJhbnNsYXRvck1ldGFsRGlyZWN0ICopJm1Db21waWxlciktPmdldFRyYW5zbGF0b3JNZXRh
bFJlZmxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IG5lZWQgbW9y
ZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZXkgbGluZSB1cD8gQ291bGQgYmUgcmVvcmRlcmVkPwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1QaXBlbGluZVN0cnVjdC5leHRlcm5hbC0+
ZmllbGRzKCkuc2l6ZSgpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBpcGVs
aW5lU3RydWN0LmludGVybmFsLT5maWVsZHMoKS5zaXplKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtUGlwZWxpbmVTdHJ1Y3QuZXh0ZXJuYWwtPmZp
ZWxkcygpLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZXh0ZXJuYWxGaWVsZCA9IG1QaXBlbGlu
ZVN0cnVjdC5leHRlcm5hbC0+ZmllbGRzKClbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVEZpZWxkICppbnRlcm5hbEZpZWxkID0gbVBpcGVsaW5lU3RydWN0LmludGVybmFs
LT5maWVsZHMoKVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAm
ZXh0ZXJuYWxUeXBlID0gKmV4dGVybmFsRmllbGQtPnR5cGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUVHlwZSAmaW50ZXJuYWxUeXBlID0gKmludGVybmFsRmllbGQtPnR5
cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZXh0ZXJuYWxUeXBlLmdl
dEJhc2ljVHlwZSgpID09IGludGVybmFsVHlwZS5nZXRCYXNpY1R5cGUoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGV4dGVybmFsVHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBUQmFz
aWNUeXBlOjpFYnRTdHJ1Y3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlICpleHRlcm5hbEVudiA9
IGV4dGVybmFsVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN0cnVjdHVyZSAqaW50ZXJuYWxFbnYgPSBpbnRlcm5hbFR5cGUuZ2V0U3RydWN0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGlu
dGVybmFsTmFtZSA9IHJlZmxlY3Rpb24tPmdldE9yaWdpbmFsTmFtZShpbnRlcm5hbEVudi0+dW5p
cXVlSWQoKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rp
b24tPmFkZE9yaWdpbmFsTmFtZShleHRlcm5hbEVudi0+dW5pcXVlSWQoKS5nZXQoKSwgaW50ZXJu
YWxOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgdmFy
ID0gJkNyZWF0ZUluc3RhbmNlVmFyaWFibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBtU3lt
Ym9sVGFibGUsICptUGlwZWxpbmVTdHJ1Y3QuaW50ZXJuYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtUGlwZWxpbmUuZ2V0U3RydWN0SW5zdGFuY2VOYW1lKFBpcGVsaW5lOjpWYXJpYW50OjpP
cmlnaW5hbCkpOwpAQCAtOTIyLDYgKzk1Nyw3IEBAIGJvb2wgc2g6OlJld3JpdGVQaXBlbGluZXMo
VENvbXBpbGVyICZjb21waWxlciwKICAgICAgICAge1BpcGVsaW5lOjpUeXBlOjpGcmFnbWVudE91
dCwgb3V0U3RydWN0cy5mcmFnbWVudE91dCwgbnVsbHB0cn0sCiAgICAgICAgIHtQaXBlbGluZTo6
VHlwZTo6SW52b2NhdGlvblZlcnRleEdsb2JhbHMsIG91dFN0cnVjdHMuaW52b2NhdGlvblZlcnRl
eEdsb2JhbHMsIG51bGxwdHJ9LAogICAgICAgICB7UGlwZWxpbmU6OlR5cGU6Okludm9jYXRpb25G
cmFnbWVudEdsb2JhbHMsIG91dFN0cnVjdHMuaW52b2NhdGlvbkZyYWdtZW50R2xvYmFscywgbnVs
bHB0cn0sCisgICAgICAgIHtQaXBlbGluZTo6VHlwZTo6VW5pZm9ybUJ1ZmZlciwgb3V0U3RydWN0
cy51bmlmb3JtQnVmZmVycywgbnVsbHB0cn0sCiAgICAgfTsKIAogICAgIGZvciAoSW5mbyAmaW5m
byA6IGluZm9zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1N5bWJvbEVudi5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0
YWxEaXJlY3QvU3ltYm9sRW52LmNwcAppbmRleCA0NzUzZGFjZjJkNjg4Y2JlNjAxNTg4MDA2YWUy
OTdmYWM0MTMwNWNjLi4yZmQwOTExNjUwMjQ0ZDk0OGQxZDA0ODQwYjFiMzVmODA3YjhlN2QwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvU3ltYm9sRW52LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3Qv
U3ltYm9sRW52LmNwcApAQCAtNDMyLDYgKzQzMiwxNSBAQCB2b2lkIFN5bWJvbEVudjo6bWFya1Nw
YWNlKFZhckZpZWxkIHgsCiAgICAgbWFwW3hdID0gc3BhY2U7CiB9CiAKK3ZvaWQgU3ltYm9sRW52
OjpyZW1vdmVTcGFjZShWYXJGaWVsZCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVub3JkZXJlZF9tYXA8VmFyRmllbGQsIEFkZHJlc3NTcGFjZT4gJm1hcCkKK3sKKyAgICAvLyBJ
dCBpcyBpbiBwcmluY2lwbGUgcGVybWlzc2libGUgdG8gaGF2ZSByZWZlcmVuY2VzIHRvIHBvaW50
ZXJzIG9yIG11bHRpcGxlIHBvaW50ZXJzLCBidXQgdGhpcworICAgIC8vIGlzIG5vdCByZXF1aXJl
ZCBmb3Igbm93IGFuZCB3b3VsZCByZXF1aXJlIGNvZGUgY2hhbmdlcyB0byBnZXQgcmlnaHQuCisg
ICAgbWFwLmVyYXNlKHgpOworfQorCisKIGNvbnN0IEFkZHJlc3NTcGFjZSAqU3ltYm9sRW52Ojpp
c1NwYWNlKFZhckZpZWxkIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8VmFyRmllbGQsIEFkZHJlc3NTcGFjZT4gJm1hcCkg
Y29uc3QKIHsKQEAgLTQ1MCw2ICs0NTksMTEgQEAgdm9pZCBTeW1ib2xFbnY6Om1hcmtBc1BvaW50
ZXIoVmFyRmllbGQgeCwgQWRkcmVzc1NwYWNlIHNwYWNlKQogICAgIHJldHVybiBtYXJrU3BhY2Uo
eCwgc3BhY2UsIG1Qb2ludGVycyk7CiB9CiAKK3ZvaWQgU3ltYm9sRW52OjpyZW1vdmVQb2ludGVy
KFZhckZpZWxkIHgpCit7CisgICAgcmV0dXJuIHJlbW92ZVNwYWNlKHgsIG1Qb2ludGVycyk7Cit9
CisKIHZvaWQgU3ltYm9sRW52OjptYXJrQXNSZWZlcmVuY2UoVmFyRmllbGQgeCwgQWRkcmVzc1Nw
YWNlIHNwYWNlKQogewogICAgIHJldHVybiBtYXJrU3BhY2UoeCwgc3BhY2UsIG1SZWZlcmVuY2Vz
KTsKQEAgLTQ3NSw2ICs0ODksMTYgQEAgYm9vbCBTeW1ib2xFbnY6OmlzUGFja2VkKGNvbnN0IFRG
aWVsZCAmZmllbGQpIGNvbnN0CiAgICAgcmV0dXJuIG1QYWNrZWRGaWVsZHMuZmluZCgmZmllbGQp
ICE9IG1QYWNrZWRGaWVsZHMuZW5kKCk7CiB9CiAKK3ZvaWQgU3ltYm9sRW52OjptYXJrQXNVQk8o
VmFyRmllbGQgeCkKK3sKKyAgICBtVWJvRmllbGRzLmluc2VydCh4KTsKK30KKworYm9vbCBTeW1i
b2xFbnY6OmlzVUJPKFZhckZpZWxkIHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1VYm9GaWVsZHMu
ZmluZCh4KSAhPSBtVWJvRmllbGRzLmVuZCgpOworfQorCiBzdGF0aWMgVEJhc2ljVHlwZSBHZXRU
ZXh0dXJlQmFzaWNUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlKQogewogICAgIEFTU0VSVChJc1Nh
bXBsZXIoYmFzaWNUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvU3ltYm9sRW52Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yTWV0YWxEaXJlY3QvU3ltYm9sRW52LmgKaW5kZXggNGM5NjQ1ZTA1MTk4ODY3ZjI1ZGMwMzBj
MDJlZWMwNzU2NWZiZDJlMS4uY2Q0YzkyNjA3ODUxMmFlYWZjMThmMzRjNGU0ZTZiMmUwYTdlMzNk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1N5bWJvbEVudi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9TeW1ib2xFbnYuaApAQCAtMTc4LDE4ICsxNzgsMjQgQEAgY2xhc3MgU3ltYm9sRW52CiAgICAg
Y29uc3QgVFN0cnVjdHVyZSAmZ2V0U2FtcGxlclN0cnVjdCgpOwogCiAgICAgdm9pZCBtYXJrQXNQ
b2ludGVyKFZhckZpZWxkIHgsIEFkZHJlc3NTcGFjZSBzcGFjZSk7CisgICAgdm9pZCByZW1vdmVQ
b2ludGVyKFZhckZpZWxkIHgpOwogICAgIGNvbnN0IEFkZHJlc3NTcGFjZSAqaXNQb2ludGVyKFZh
ckZpZWxkIHgpIGNvbnN0OwogCiAgICAgdm9pZCBtYXJrQXNSZWZlcmVuY2UoVmFyRmllbGQgeCwg
QWRkcmVzc1NwYWNlIHNwYWNlKTsKKyAgICB2b2lkIHJlbW92ZUFzUmVmZXJlbmNlKFZhckZpZWxk
IHgpOwogICAgIGNvbnN0IEFkZHJlc3NTcGFjZSAqaXNSZWZlcmVuY2UoVmFyRmllbGQgeCkgY29u
c3Q7CiAKICAgICB2b2lkIG1hcmtBc1BhY2tlZChjb25zdCBURmllbGQgJmZpZWxkKTsKICAgICBi
b29sIGlzUGFja2VkKGNvbnN0IFRGaWVsZCAmZmllbGQpIGNvbnN0OwogCisgICAgdm9pZCBtYXJr
QXNVQk8oVmFyRmllbGQgeCk7CisgICAgYm9vbCBpc1VCTyhWYXJGaWVsZCB4KSBjb25zdDsKKwog
ICBwcml2YXRlOgogICAgIGNvbnN0IFRGdW5jdGlvbiAmZ2V0RnVuY3Rpb25PdmVybG9hZEltcGwo
KTsKIAogICAgIHZvaWQgbWFya1NwYWNlKFZhckZpZWxkIHgsIEFkZHJlc3NTcGFjZSBzcGFjZSwg
c3RkOjp1bm9yZGVyZWRfbWFwPFZhckZpZWxkLCBBZGRyZXNzU3BhY2U+ICZtYXApOworICAgIHZv
aWQgcmVtb3ZlU3BhY2UoVmFyRmllbGQgeCwgc3RkOjp1bm9yZGVyZWRfbWFwPFZhckZpZWxkLCBB
ZGRyZXNzU3BhY2U+ICZtYXApOwogICAgIGNvbnN0IEFkZHJlc3NTcGFjZSAqaXNTcGFjZShWYXJG
aWVsZCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnVub3Jk
ZXJlZF9tYXA8VmFyRmllbGQsIEFkZHJlc3NTcGFjZT4gJm1hcCkgY29uc3Q7CiAKQEAgLTIwOSw2
ICsyMTUsNyBAQCBjbGFzcyBTeW1ib2xFbnYKICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8VmFyRmll
bGQsIEFkZHJlc3NTcGFjZT4gbVBvaW50ZXJzOwogICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxWYXJG
aWVsZCwgQWRkcmVzc1NwYWNlPiBtUmVmZXJlbmNlczsKICAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8
Y29uc3QgVEZpZWxkICo+IG1QYWNrZWRGaWVsZHM7CisgICAgc3RkOjp1bm9yZGVyZWRfc2V0PFZh
ckZpZWxkPiBtVWJvRmllbGRzOwogfTsKIAogTmFtZSBHZXRUZXh0dXJlVHlwZU5hbWUoVEJhc2lj
VHlwZSBzYW1wbGVyVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9OYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVy
cy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90
cmVlX29wcy9OYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ4Mzhm
MjQyNjVjMTRhNmE4ZDgyYzE3MGY1YjkyMzQxZDk2YjM2MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL05h
bWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmNwcApAQCAtMCwwICsxLDEyNyBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzOiBHaXZlcyBuYW1lbGVzcyB1bmlmb3JtIGJ1
ZmZlciB2YXJpYWJsZXMgaW50ZXJuYWwgbmFtZXMuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci90cmVlX29wcy9OYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5oIgorCisjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0ludGVybU5vZGVfdXRpbC5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0ludGVybVRyYXZlcnNlLmgiCisKK25hbWVzcGFj
ZSBzaAoreworbmFtZXNwYWNlCit7CisvLyBUcmF2ZXJzZSB1bmlmb3JtIGJ1ZmZlciBkZWNsYXJh
dGlvbnMgYW5kIGdpdmUgbmFtZSB0byBuYW1lbGVzcyBkZWNsYXJhdGlvbnMuICBLZWVwcyB0cmFj
ayBvZgorLy8gdGhlIGludGVyZmFjZSBmaWVsZHMgd2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSBz
b3VyY2Ugd2l0aG91dCB0aGUgaW50ZXJmYWNlIGJsb2NrIHZhcmlhYmxlIG5hbWUKKy8vIGFuZCBy
ZXBsYWNlcyB0aGVtIHdpdGggbmFtZS5maWVsZC4KK2NsYXNzIE5hbWVVbmlmb3JtQnVmZmVyVmFy
aWFibGVzVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgor
ICAgIGV4cGxpY2l0IE5hbWVVbmlmb3JtQnVmZmVyVmFyaWFibGVzVHJhdmVyc2VyKFRTeW1ib2xU
YWJsZSAqc3ltYm9sVGFibGUpCisgICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxz
ZSwgZmFsc2UsIHN5bWJvbFRhYmxlKQorICAgIHt9CisKKyAgICBib29sIHZpc2l0RGVjbGFyYXRp
b24oVmlzaXQgdmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7CisKKyAgICAgICAgY29uc3QgVElu
dGVybVNlcXVlbmNlICZzZXF1ZW5jZSA9ICooZGVjbC0+Z2V0U2VxdWVuY2UoKSk7CisKKyAgICAg
ICAgVEludGVybVR5cGVkICp2YXJpYWJsZU5vZGUgPSBzZXF1ZW5jZS5mcm9udCgpLT5nZXRBc1R5
cGVkKCk7CisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlICAgICAgICAgID0gdmFyaWFibGVOb2Rl
LT5nZXRUeXBlKCk7CisKKyAgICAgICAgLy8gSWYgaXQncyBhbiBpbnRlcmZhY2UgYmxvY2ssIGl0
IG1heSBoYXZlIHRvIGJlIGNvbnZlcnRlZCBpZiBpdCBjb250YWlucyBhbnkgcm93LW1ham9yCisg
ICAgICAgIC8vIGZpZWxkcy4KKyAgICAgICAgaWYgKCF0eXBlLmlzSW50ZXJmYWNlQmxvY2soKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBNdWx0aSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzIGFyZSBhbHJlYWR5IHNlcGFyYXRlZCwg
c28gdGhlcmUgY2FuIG9ubHkgYmUgb25lIHZhcmlhYmxlCisgICAgICAgIC8vIGhlcmUuCisgICAg
ICAgIEFTU0VSVChzZXF1ZW5jZS5zaXplKCkgPT0gMSk7CisgICAgICAgIGNvbnN0IFRWYXJpYWJs
ZSAqdmFyaWFibGUgPSAmdmFyaWFibGVOb2RlLT5nZXRBc1N5bWJvbE5vZGUoKS0+dmFyaWFibGUo
KTsKKyAgICAgICAgaWYgKHZhcmlhYmxlLT5zeW1ib2xUeXBlKCkgIT0gU3ltYm9sVHlwZTo6RW1w
dHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqbmV3RGVjbGFyYXRpb24gPSBuZXcgVEludGVybURl
Y2xhcmF0aW9uOworICAgICAgICBUVmFyaWFibGUgKm5ld1ZhcmlhYmxlID0gbmV3IFRWYXJpYWJs
ZShtU3ltYm9sVGFibGUsIGtFbXB0eUltbXV0YWJsZVN0cmluZywgJnR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFR5cGU6OkFuZ2xlSW50
ZXJuYWwsIHZhcmlhYmxlLT5leHRlbnNpb24oKSk7CisgICAgICAgIG5ld0RlY2xhcmF0aW9uLT5h
cHBlbmREZWNsYXJhdG9yKG5ldyBUSW50ZXJtU3ltYm9sKG5ld1ZhcmlhYmxlKSk7CisKKyAgICAg
ICAgcXVldWVSZXBsYWNlbWVudChuZXdEZWNsYXJhdGlvbiwgT3JpZ2luYWxOb2RlOjpJU19EUk9Q
UEVEKTsKKworICAgICAgICAvLyBJdCdzIHNhZmUgdG8ga2V5IHRoZSBtYXAgd2l0aCB0aGUgaW50
ZXJmYWNlIGJsb2NrLCBhcyB0aGVyZSBjb3VsZG4ndCBoYXZlIGJlZW4gbXVsdGlwbGUKKyAgICAg
ICAgLy8gZGVjbGFyYXRpb25zIHdpdGggdGhpcyBpbnRlcmZhY2UgYmxvY2sgKGFzIHRoZSB2YXJp
YWJsZSBpcyBuYW1lbGVzcyksIHNvIGZvciBuYW1lbGVzcworICAgICAgICAvLyB1bmlmb3JtIGJ1
ZmZlcnMsIHRoZSBpbnRlcmZhY2UgYmxvY2sgaXMgdW5pcXVlLgorICAgICAgICBtTmFtZWxlc3NV
bmlmb3JtQnVmZmVyc01hcFt0eXBlLmdldEludGVyZmFjZUJsb2NrKCldID0gbmV3VmFyaWFibGU7
CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgdmlzaXRTeW1ib2wo
VEludGVybVN5bWJvbCAqc3ltYm9sKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY29uc3QgVFR5
cGUgJnR5cGUgPSBzeW1ib2wtPmdldFR5cGUoKTsKKworICAgICAgICAvLyBUaGUgc3ltYm9scyB3
ZSBhcmUgbG9va2luZyBmb3IgaGF2ZSB0aGUgaW50ZXJmYWNlIGJsb2NrIHBvaW50ZXIgc2V0LCBi
dXQgYXJlIG5vdAorICAgICAgICAvLyBpbnRlcmZhY2UgYmxvY2tzLiAgVGhlc2UgYXJlIHJlZmVy
ZW5jZXMgdG8gZmllbGRzIG9mIG5hbWVsZXNzIHVuaWZvcm0gYnVmZmVycy4KKyAgICAgICAgaWYg
KHR5cGUuaXNJbnRlcmZhY2VCbG9jaygpIHx8IHR5cGUuZ2V0SW50ZXJmYWNlQmxvY2soKSA9PSBu
dWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBUSW50ZXJmYWNlQmxvY2sgKmJsb2NrID0gdHlwZS5nZXRJbnRlcmZhY2VCbG9j
aygpOworCisgICAgICAgIC8vIElmIGJsb2NrIHZhcmlhYmxlIGlzIG5vdCBuYW1lbGVzcywgdGhl
cmUncyBub3RoaW5nIHRvIGRvLgorICAgICAgICBpZiAobU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnNN
YXAuY291bnQoYmxvY2spID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnN0IEltbXV0YWJsZVN0cmluZyBzeW1ib2xOYW1lID0gc3lt
Ym9sLT5nZXROYW1lKCk7CisKKyAgICAgICAgLy8gRmluZCB3aGljaCBmaWVsZCBpdCBpcworICAg
ICAgICBjb25zdCBUVmVjdG9yPFRGaWVsZCAqPiBmaWVsZHMgPSBibG9jay0+ZmllbGRzKCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGZpZWxkSW5kZXggPSAwOyBmaWVsZEluZGV4IDwgZmllbGRzLnNp
emUoKTsgKytmaWVsZEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBURmllbGQg
KmZpZWxkID0gZmllbGRzW2ZpZWxkSW5kZXhdOworICAgICAgICAgICAgaWYgKGZpZWxkLT5uYW1l
KCkgIT0gc3ltYm9sTmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGlzIG5vZGUgd2l0
aCBhIGJpbmFyeSBub2RlIHRoYXQgaW5kZXhlcyB0aGUgbmFtZWQgdW5pZm9ybSBidWZmZXIuCisg
ICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpuYW1lZFVuaWZvcm1CdWZmZXIgPQorICAgICAgICAg
ICAgICAgIG5ldyBUSW50ZXJtU3ltYm9sKG1OYW1lbGVzc1VuaWZvcm1CdWZmZXJzTWFwW2Jsb2Nr
XSk7CisgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICpyZXBsYWNlbWVudCA9CisgICAgICAgICAg
ICAgICAgbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jaywgbmFt
ZWRVbmlmb3JtQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0
ZUluZGV4Tm9kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGRJbmRleCkpKTsKKworICAgICAg
ICAgICAgcXVldWVSZXBsYWNlbWVudChyZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpJU19EUk9Q
UEVEKTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICAvLyBBIG1hcCBmcm9tIG5hbWVsZXNz
IHVuaWZvcm0gYnVmZmVycyB0byB0aGVpciBuYW1lZCByZXBsYWNlbWVudHMuCisgICAgc3RkOjp1
bm9yZGVyZWRfbWFwPGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqLCBjb25zdCBUVmFyaWFibGUgKj4g
bU5hbWVsZXNzVW5pZm9ybUJ1ZmZlcnNNYXA7Cit9OworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQorCitib29sIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzKFRDb21waWxlciAqY29tcGlsZXIs
IFRJbnRlcm1CbG9jayAqcm9vdCwgVFN5bWJvbFRhYmxlICpzeW1ib2xUYWJsZSkKK3sKKyAgICBO
YW1lVW5pZm9ybUJ1ZmZlclZhcmlhYmxlc1RyYXZlcnNlciBuYW1lVW5pZm9ybUJ1ZmZlclZhcmlh
YmxlcyhzeW1ib2xUYWJsZSk7CisgICAgcm9vdC0+dHJhdmVyc2UoJm5hbWVVbmlmb3JtQnVmZmVy
VmFyaWFibGVzKTsKKyAgICByZXR1cm4gbmFtZVVuaWZvcm1CdWZmZXJWYXJpYWJsZXMudXBkYXRl
VHJlZShjb21waWxlciwgcm9vdCk7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3Bz
L05hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9OYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVy
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM3ZDZmNmQ4OGI1NDFhNWM3ZjI1NTIxZDIwOWRhNzk0YWFhNmYwODMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci90cmVlX29wcy9OYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVycy5oCkBAIC0wLDAg
KzEsMzIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBOYW1lTmFtZWxlc3NVbmlmb3JtQnVmZmVyczogR2l2ZXMg
bmFtZWxlc3MgdW5pZm9ybSBidWZmZXIgdmFyaWFibGVzIGludGVybmFsIG5hbWVzLgorLy8KKy8v
IEZvciBleGFtcGxlOgorLy8gICB1bmlmb3JtIFVuaWZvcm1CdWZmZXIgeyBpbnQgYTsgfTsKKy8v
ICAgeCA9IGE7CisvLyBiZWNvbWVzOgorLy8gICB1bmlmb3JtIFVuaWZvcm1CdWZmZXIgeyBpbnQg
YTsgfSBzMTIzOworLy8gICB4ID0gczEyMy5hOworLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFO
U0xBVE9SX1RSRUVPUFNfTkFNRU5BTUVMRVNTVU5JRk9STUJVRkZFUlNfSF8KKyNkZWZpbmUgQ09N
UElMRVJfVFJBTlNMQVRPUl9UUkVFT1BTX05BTUVOQU1FTEVTU1VOSUZPUk1CVUZGRVJTX0hfCisK
KyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2Ugc2gKK3sKK2NsYXNz
IFRDb21waWxlcjsKK2NsYXNzIFRJbnRlcm1CbG9jazsKK2NsYXNzIFRTeW1ib2xUYWJsZTsKKwor
QU5HTEVfTk9fRElTQ0FSRCBib29sIE5hbWVOYW1lbGVzc1VuaWZvcm1CdWZmZXJzKFRDb21waWxl
ciAqY29tcGlsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUJsb2NrICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAqc3ltYm9sVGFibGUpOworfSAgLy8gbmFt
ZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9UUkVFT1BTX05BTUVO
QU1FTEVTU1VOSUZPUk1CVUZGRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCmluZGV4IDU4MmRkYzcwYzk2
YzBhZGEwMDE2NWMyMWNhMWU5NjZmNzk1ODRhYTcuLjRlZTA4OWFhYmNmMWU3ZTRmMzRmZTE3MTM3
NWU4ZmM3ZmY3NTcyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCkBAIC03MzAsNiArNzMwLDcgQEAgYm9v
bCBJc0J1aWx0aW5PdXRwdXRWYXJpYWJsZShUUXVhbGlmaWVyIHF1YWxpZmllcikKICAgICAgICAg
Y2FzZSBFdnFGcmFnRGF0YToKICAgICAgICAgY2FzZSBFdnFTZWNvbmRhcnlGcmFnRGF0YUVYVDoK
ICAgICAgICAgY2FzZSBFdnFDbGlwRGlzdGFuY2U6CisgICAgICAgIGNhc2UgRXZxU2FtcGxlTWFz
azoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvY2dsL0NvbnRleHRDR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9Db250ZXh0Q0dMLmNwcAppbmRleCBiZTk5
Yjg1MDg5MzI0NTRkY2MxZWRlYTA0ZjA3ZWQyZDVmNjIwOWI5Li5mNWYzZDYwZmI2OTQwMTI3YmNh
OGQ5M2E0MjkwOGY3MmQ5NzFjYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0NvbnRleHRDR0wuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvQ29udGV4dENH
TC5jcHAKQEAgLTY2LDQgKzY2LDQgQEAgdm9pZCBDb250ZXh0Q0dMOjpvbkRlc3Ryb3koY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQpCiAKIH0gIC8vIG5hbWVzcGFjZSByeAogCi0jZW5kaWYgIC8v
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDT1MpIHx8IGRlZmluZWQoQU5HTEVfUExBVEZPUk1f
TUFDQ0FUQUxZU1QpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmICAvLyBkZWZp
bmVkKEFOR0xFX1BMQVRGT1JNX01BQ09TKSB8fCBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX01BQ0NB
VEFMWVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL0J1ZmZlck10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0J1ZmZlck10bC5oCmluZGV4IDlmOWVjNmNiZDljODMx
NTdlMzE0NzRlNjY4ZDM1MjJmMmVkNGYyODEuLmExNjIwZWNmYmZjNmM0YmUzZmRjNGE0ZDZiMWUy
ZDFiYjE1ODE5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9CdWZmZXJNdGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQnVmZmVyTXRsLmgKQEAgLTI0LDcgKzI0
LDExIEBACiAKIG5hbWVzcGFjZSByeAogewotCitzdHJ1Y3QgSW5kZXhSYW5nZQoreworICAgIHNp
emVfdCByZXN0YXJ0QmVnaW47CisgICAgc2l6ZV90IHJlc3RhcnRFbmQ7Cit9OwogLy8gQ29udmVy
c2lvbiBidWZmZXJzIGhvbGQgdHJhbnNsYXRlZCBpbmRleCBhbmQgdmVydGV4IGRhdGEuCiBzdHJ1
Y3QgQ29udmVyc2lvbkJ1ZmZlck10bAogewpAQCAtMzYsNyArNDAsNiBAQCBzdHJ1Y3QgQ29udmVy
c2lvbkJ1ZmZlck10bAogCiAgICAgLy8gVGhlIGNvbnZlcnNpb24gaXMgc3RvcmVkIGluIGEgZHlu
YW1pYyBidWZmZXIuCiAgICAgbXRsOjpCdWZmZXJQb29sIGRhdGE7Ci0KICAgICAvLyBUaGVzZSBw
cm9wZXJ0aWVzIGFyZSB0byBiZSBmaWxsZWQgYnkgdXNlciBvZiB0aGlzIGJ1ZmZlciBjb252ZXJz
aW9uCiAgICAgbXRsOjpCdWZmZXJSZWYgY29udmVydGVkQnVmZmVyOwogICAgIHNpemVfdCBjb252
ZXJ0ZWRPZmZzZXQ7CkBAIC02MCwxMSArNjMsMTQgQEAgc3RydWN0IEluZGV4Q29udmVyc2lvbkJ1
ZmZlck10bCA6IHB1YmxpYyBDb252ZXJzaW9uQnVmZmVyTXRsCiAgICAgSW5kZXhDb252ZXJzaW9u
QnVmZmVyTXRsKENvbnRleHRNdGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpEcmF3RWxlbWVudHNUeXBlIGVsZW1UeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW4pOwotCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvZmZzZXRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8SW5kZXhSYW5nZT4gcmVzdGFydFJhbmdlc0luID0gc3RkOjp2ZWN0b3I8SW5kZXhSYW5n
ZT4oKSk7CiAgICAgY29uc3QgZ2w6OkRyYXdFbGVtZW50c1R5cGUgZWxlbVR5cGU7CiAgICAgY29u
c3Qgc2l6ZV90IG9mZnNldDsKICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkOworICAg
IHN0ZDo6dmVjdG9yPEluZGV4UmFuZ2U+IHJlc3RhcnRSYW5nZXM7CisgICAgSW5kZXhSYW5nZSBn
ZXRSYW5nZUZvckNvbnZlcnRlZEJ1ZmZlcihzaXplX3QgY291bnQpOworCiB9OwogCiBzdHJ1Y3Qg
VW5pZm9ybUNvbnZlcnNpb25CdWZmZXJNdGwgOiBwdWJsaWMgQ29udmVyc2lvbkJ1ZmZlck10bApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0J1ZmZlck10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9CdWZmZXJNdGwubW0KaW5kZXggZjU0ZTE2NTczNmMyZDhiOGU4OGIw
NmUzMmZmNzU0NDYzMzhjOGMxMS4uM2ViMzJkOTUxM2U1YmVlMjg0ZmNhMzY2NDA3ZDY0OWY1ZTE3
MDZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0J1ZmZlck10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQnVmZmVyTXRsLm1tCkBAIC02MCwxNSArNjAsMjMg
QEAgQ29udmVyc2lvbkJ1ZmZlck10bDo6fkNvbnZlcnNpb25CdWZmZXJNdGwoKSA9IGRlZmF1bHQ7
CiBJbmRleENvbnZlcnNpb25CdWZmZXJNdGw6OkluZGV4Q29udmVyc2lvbkJ1ZmZlck10bChDb250
ZXh0TXRsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkRyYXdFbGVtZW50c1R5cGUgZWxlbVR5cGVJbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVz
dGFydEVuYWJsZWRJbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXRJbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEluZGV4UmFuZ2U+
IHJlc3RhcnRSYW5nZXNJbikKICAgICA6IENvbnZlcnNpb25CdWZmZXJNdGwoY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0NvbnZlcnRlZEVsZW1lbnRBcnJheUJ1ZmZlckluaXRp
YWxTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICBtdGw6OmtJbmRleEJ1ZmZlck9mZnNl
dEFsaWdubWVudCksCiAgICAgICBlbGVtVHlwZShlbGVtVHlwZUluKSwKICAgICAgIG9mZnNldChv
ZmZzZXRJbiksCi0gICAgICBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZChwcmltaXRpdmVSZXN0YXJ0
RW5hYmxlZEluKQorICAgICAgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQocHJpbWl0aXZlUmVzdGFy
dEVuYWJsZWRJbiksCisgICAgICByZXN0YXJ0UmFuZ2VzKHJlc3RhcnRSYW5nZXNJbikKKwoge30K
IAorSW5kZXhSYW5nZSBJbmRleENvbnZlcnNpb25CdWZmZXJNdGw6OmdldFJhbmdlRm9yQ29udmVy
dGVkQnVmZmVyKHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gSW5kZXhSYW5nZXswLCBjb3Vu
dH07Cit9CisKIC8vIFVuaWZvcm1Db252ZXJzaW9uQnVmZmVyTXRsIGltcGxlbWVudGF0aW9uCiBV
bmlmb3JtQ29udmVyc2lvbkJ1ZmZlck10bDo6VW5pZm9ybUNvbnZlcnNpb25CdWZmZXJNdGwoQ29u
dGV4dE10bCAqY29udGV4dCwgc2l6ZV90IG9mZnNldEluKQogICAgIDogQ29udmVyc2lvbkJ1ZmZl
ck10bChjb250ZXh0LCAwLCBtdGw6OmtVbmlmb3JtQnVmZmVyU2V0dGluZ09mZnNldE1pbkFsaWdu
bWVudCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwuaAppbmRleCA4Mjg5NGZlYjQ1OTcx
NDFmMWVmYWI3ZTYyNjIyN2I4ZGZiM2RiNmUwLi5mM2Y1YmNhY2JhZmRiODI1MDc5YmM5MDNmZmY1
ZTMwMzFjNjcwYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLmgKQEAgLTUyNCw3
ICs1MjQsNyBAQCBjbGFzcyBDb250ZXh0TXRsIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMg
bXRsOjpDb250ZXh0CiAgICAgICAgIC8vIE5PVEU6IEV4cGxpY2l0IHBhZGRpbmcuIEZpbGwgaW4g
d2l0aCB1c2VmdWwgZGF0YSB3aGVuIG5lZWRlZCBpbiB0aGUgZnV0dXJlLgogICAgICAgICBpbnQz
Ml90IHBhZGRpbmdfMFszXTsKIAotICAgICAgICBpbnQzMl90IHhmYkJ1ZmZlck9mZnNldHNbNF07
CisgICAgICAgIHN0ZDo6YXJyYXk8aW50MzJfdCwgND4geGZiQnVmZmVyT2Zmc2V0czsKICAgICAg
ICAgdWludDMyX3QgYWNiQnVmZmVyT2Zmc2V0c1s0XTsKIAogICAgICAgICAvLyBXZSdsbCB1c2Ug
eCwgeSwgeiwgdyBmb3IgbmVhciAvIGZhciAvIGRpZmYgLyB6c2NhbGUgcmVzcGVjdGl2ZWx5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0NvbnRleHRNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbQppbmRleCBkMjUyY2ViNTJkNWZlYTU4ODEw
MjY3MTBjZjE3YzJlNTQ1ZDAzNjVmLi40YmUwZTE2ZGVlNjc0MjY0NTA2Y2M2NDljNTcxMGMxMjBi
NDIwZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbQpAQCAtMjMwOSw2ICsy
MzA5LDIwIEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6aGFuZGxlRGlydHlEcml2ZXJVbmlm
b3Jtcyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICB9CiAgICAgbURyaXZlclVuaWZv
cm1zLmNvdmVyYWdlTWFzayA9IGNvdmVyYWdlTWFzazsKIAorICAgIHVpbnQzMl90IHhmYkFjdGl2
ZVVucGF1c2VkID0gbVN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpOwor
CisgICAgbURyaXZlclVuaWZvcm1zLnhmYkFjdGl2ZVVucGF1c2VkID0geGZiQWN0aXZlVW5wYXVz
ZWQ7CisgICAgbURyaXZlclVuaWZvcm1zLnhmYlZlcnRpY2VzUGVyRHJhdyA9IG1YZmJWZXJ0ZXhD
b3VudFBlckluc3RhbmNlOworCisgICAgaWYgKHhmYkFjdGl2ZVVucGF1c2VkKQorICAgIHsKKyAg
ICAgICAgVHJhbnNmb3JtRmVlZGJhY2tNdGwgKnRyYW5zZm9ybUZlZWRiYWNrTXRsID0KKyAgICAg
ICAgICAgIG10bDo6R2V0SW1wbChtU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkp
OworICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja010bC0+Z2V0QnVmZmVyT2Zmc2V0cyh0aGlzLCBt
WGZiQmFzZVZlcnRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbURyaXZlclVuaWZvcm1zLnhmYkJ1ZmZlck9mZnNldHMuZGF0YSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRHJpdmVyVW5pZm9ybXMueGZi
QnVmZmVyT2Zmc2V0cy5zaXplKCkpOworICAgIH0KKwogICAgIEFTU0VSVChtUmVuZGVyRW5jb2Rl
ci52YWxpZCgpKTsKICAgICBtUmVuZGVyRW5jb2Rlci5zZXRGcmFnbWVudERhdGEobURyaXZlclVu
aWZvcm1zLCBtdGw6OmtEcml2ZXJVbmlmb3Jtc0JpbmRpbmdJbmRleCk7CiAgICAgbVJlbmRlckVu
Y29kZXIuc2V0VmVydGV4RGF0YShtRHJpdmVyVW5pZm9ybXMsIG10bDo6a0RyaXZlclVuaWZvcm1z
QmluZGluZ0luZGV4KTsKQEAgLTIzMzEsMTUgKzIzNDUsMTYgQEAgYW5nbGU6OlJlc3VsdCBDb250
ZXh0TXRsOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRW11bGF0
aW9uKAogICAgIHNpemVfdCBidWZmZXJDb3VudCAgICAgICAgICAgICAgICAgICAgICAgICA9IGV4
ZWN1dGFibGUtPmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKTsKICAgICBjb25zdCBn
bDo6VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzQXJyYXk8QnVmZmVyTXRsICo+ICZidWZmZXJIYW5k
bGVzID0KICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tNdGwtPmdldEJ1ZmZlckhhbmRsZXMoKTsK
LQorICAgIGNvbnN0IHN0ZDo6YXJyYXk8dWludDMyX3QsIG10bDo6a01heFNoYWRlclhGQnM+ICZh
Y3R1YWxYZmJCaW5kaW5ncyA9IG1Qcm9ncmFtLT5nZXRYZmJCaW5kaW5ncygpOwogICAgIGZvciAo
c2l6ZV90IGJ1ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBidWZmZXJDb3VudDsgKytidWZm
ZXJJbmRleCkKICAgICB7CiAgICAgICAgIEJ1ZmZlck10bCAqYnVmZmVySGFuZGxlID0gYnVmZmVy
SGFuZGxlc1tidWZmZXJJbmRleF07CiAgICAgICAgIEFTU0VSVChidWZmZXJIYW5kbGUpOwogICAg
ICAgICBBU1NFUlQobVJlbmRlckVuY29kZXIudmFsaWQoKSk7CisgICAgICAgIHVpbnQzMl90IGFj
dHVhbEJ1ZmZlcklkeCA9IGFjdHVhbFhmYkJpbmRpbmdzW2J1ZmZlckluZGV4XTsKKyAgICAgICAg
YXNzZXJ0KGFjdHVhbEJ1ZmZlcklkeCA8IG10bDo6a01heFNoYWRlckJ1ZmZlcnMgJiYgIlRyYW5z
Zm9ybSBGZWVkYmFjayBCdWZmZXIgSW5kZXggc2hvdWxkIGJlIGluaXRpYWxpemVkLiIpOwogICAg
ICAgICBtUmVuZGVyRW5jb2Rlci5zZXRCdWZmZXJGb3JXcml0ZSgKLSAgICAgICAgICAgIGdsOjpT
aGFkZXJUeXBlOjpWZXJ0ZXgsIGJ1ZmZlckhhbmRsZS0+Z2V0Q3VycmVudEJ1ZmZlcigpLCAwLAot
ICAgICAgICAgICAgbXRsOjprVHJhbnNmb3JtRmVlZGJhY2tCaW5kaW5nSW5kZXggKyAodWludDMy
X3QpYnVmZmVySW5kZXgpOworICAgICAgICAgICAgZ2w6OlNoYWRlclR5cGU6OlZlcnRleCwgYnVm
ZmVySGFuZGxlLT5nZXRDdXJyZW50QnVmZmVyKCksIDAsIGFjdHVhbEJ1ZmZlcklkeCk7CiAgICAg
fQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMjM3Myw3ICsyMzg4
LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRsOjpoYW5kbGVEaXJ0eURlcHRoU3RlbmNpbFN0
YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXgKIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRs
OjpoYW5kbGVEaXJ0eURlcHRoQmlhcyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAg
ICBjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXNlclN0YXRlID0gbVN0YXRlLmdldFJhc3Rl
cml6ZXJTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3RlclN0YXRl
ID0gbVN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpOwogICAgIEFTU0VSVChtUmVuZGVyRW5jb2Rl
ci52YWxpZCgpKTsKICAgICBpZiAoIW1TdGF0ZS5pc1BvbHlnb25PZmZzZXRGaWxsRW5hYmxlZCgp
KQogICAgIHsKQEAgLTIzODEsNyArMjM5Niw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6
aGFuZGxlRGlydHlEZXB0aEJpYXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiAgICAgfQog
ICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG1SZW5kZXJFbmNvZGVyLnNldERlcHRoQmlhcyhyYXNl
clN0YXRlLnBvbHlnb25PZmZzZXRVbml0cywgcmFzZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0RmFjdG9y
LAorICAgICAgICBtUmVuZGVyRW5jb2Rlci5zZXREZXB0aEJpYXMocmFzdGVyU3RhdGUucG9seWdv
bk9mZnNldFVuaXRzLCByYXN0ZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0RmFjdG9yLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10
bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9EaXNwbGF5TXRsLm1tCmluZGV4IGE2NDMyYTU4YmQ5NThhZTM0ZmY4ODFkNGZlYTViNWUxOGIx
ZTNlZDIuLjRlNjgxMjEyZDIyODA0ZTM2NDM0MDZlMTJjNzI4NjQwNzAyZGE5NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9E
aXNwbGF5TXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaWYgZGVmaW5l
ZChBTkdMRV9QTEFURk9STV9NQUNPUykgfHwgZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNDQVRB
TFlTVCkKIGNvbnN0ZXhwciBjaGFyIGtBTkdMRVByZWZlcnJlZERldmljZUVudltdID0gIkFOR0xF
X1BSRUZFUlJFRF9ERVZJQ0UiOwogI2VuZGlmCi1jb25zdGV4cHIgY2hhciBrQU5HTEVUcmFuc2Zv
cm1GZWVkYmFja0VudltdID0gIkFOR0xFX01FVEFMX1hGQl9FTkFCTEUiOwogCiBuYW1lc3BhY2Ug
cngKIHsKQEAgLTMyNiw3ICszMjUsOCBAQCBTdHJlYW1Qcm9kdWNlckltcGwgKkRpc3BsYXlNdGw6
OmNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZSgKIGdsOjpWZXJzaW9uIERpc3BsYXlNdGw6
OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0CiB7CiAgICAgLy8gTk9URShocWxlKTog
U3VwcG9ydHMgR0xFUyAzLjAgb24gaU9TIEdQVSBGYW1pbHkgNCsgZm9yIG5vdy4KLSNpZiBUQVJH
RVRfT1NfU0lNVUxBVE9SIC8vIFNpbXVsYXRvciBzaG91bGQgYmUgYWJsZSB0byBzdXBwb3J0IEVT
MywgZGVzcGl0ZSBub3Qgc3VwcG9ydGluZyBpT1MgR1BVIEZhbWlseSA0IGluIGl0cyBlbnRpcmV0
eS4KKyNpZiBUQVJHRVRfT1NfU0lNVUxBVE9SICAvLyBTaW11bGF0b3Igc2hvdWxkIGJlIGFibGUg
dG8gc3VwcG9ydCBFUzMsIGRlc3BpdGUgbm90IHN1cHBvcnRpbmcgaU9TIEdQVQorICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEZhbWlseSA0IGluIGl0cyBlbnRpcmV0eS4KICAgICByZXR1cm4g
Z2w6OlZlcnNpb24oMywgMCk7CiAjZWxzZQogICAgIGlmIChzdXBwb3J0c0VpdGhlckdQVUZhbWls
eSg0LCAxKSkKQEAgLTQxOCw5ICs0MTgsOSBAQCBlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5TXRsOjpn
ZW5lcmF0ZUNvbmZpZ3MoKQogI2Vsc2UKICAgICBjb25maWcuYmluZFRvVGV4dHVyZVRhcmdldCA9
IEVHTF9URVhUVVJFXzJEOwogI2VuZGlmCi0gICAgY29uZmlnLm1heFBCdWZmZXJXaWR0aCAgICAg
PSA0MDk2OwotICAgIGNvbmZpZy5tYXhQQnVmZmVySGVpZ2h0ICAgID0gNDA5NjsKLSAgICBjb25m
aWcubWF4UEJ1ZmZlclBpeGVscyAgICA9IDQwOTYgKiA0MDk2OworICAgIGNvbmZpZy5tYXhQQnVm
ZmVyV2lkdGggID0gNDA5NjsKKyAgICBjb25maWcubWF4UEJ1ZmZlckhlaWdodCA9IDQwOTY7Cisg
ICAgY29uZmlnLm1heFBCdWZmZXJQaXhlbHMgPSA0MDk2ICogNDA5NjsKIAogICAgIC8vIENhdmVh
dAogICAgIGNvbmZpZy5jb25maWdDYXZlYXQgPSBFR0xfTk9ORTsKQEAgLTQzOCw4ICs0MzgsOCBA
QCBlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5TXRsOjpnZW5lcmF0ZUNvbmZpZ3MoKQogICAgIGNvbmZp
Zy5taW5Td2FwSW50ZXJ2YWwgPSAwOwogICAgIGNvbmZpZy5tYXhTd2FwSW50ZXJ2YWwgPSAxOwog
I2Vsc2UKLSAgICBjb25maWcubWluU3dhcEludGVydmFsID0gMTsKLSAgICBjb25maWcubWF4U3dh
cEludGVydmFsID0gMTsKKyAgICBjb25maWcubWluU3dhcEludGVydmFsICAgICA9IDE7CisgICAg
Y29uZmlnLm1heFN3YXBJbnRlcnZhbCAgICAgPSAxOwogI2VuZGlmCiAKICAgICBjb25maWcucmVu
ZGVyVGFyZ2V0Rm9ybWF0ID0gR0xfUkdCQTg7CkBAIC02MTIsMTIgKzYxMiwxMiBAQCB2b2lkIERp
c3BsYXlNdGw6OmVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgbU5hdGl2ZUNhcHMu
ZnJhZ21lbnRNZWRpdW1wSW50LnNldFR3b3NDb21wbGVtZW50SW50KDMyKTsKICAgICBtTmF0aXZl
Q2Fwcy5mcmFnbWVudExvd3BJbnQuc2V0VHdvc0NvbXBsZW1lbnRJbnQoMzIpOwogCi0gICAgR0x1
aW50IG1heERlZmF1bHRVbmlmb3JtVmVjdG9ycyA9IG10bDo6a0RlZmF1bHRVbmlmb3Jtc01heFNp
emUgLyAoc2l6ZW9mKEdMZmxvYXQpICogNCk7CisgICAgR0x1aW50IG1heERlZmF1bHRVbmlmb3Jt
VmVjdG9ycyA9IG10bDo6a0RlZmF1bHRVbmlmb3Jtc01heFNpemUgLyAoc2l6ZW9mKEdMZmxvYXQp
KTsKIAotICAgIGNvbnN0IEdMdWludCBtYXhEZWZhdWx0VW5pZm9ybUNvbXBvbmVudHMgPSBtYXhE
ZWZhdWx0VW5pZm9ybVZlY3RvcnMgKiA0OworICAgIGNvbnN0IEdMdWludCBtYXhEZWZhdWx0VW5p
Zm9ybUNvbXBvbmVudHMgPSBtYXhEZWZhdWx0VW5pZm9ybVZlY3RvcnM7CiAKICAgICAvLyBVbmlm
b3JtcyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSB1bmlmb3JtIGJ1ZmZlciwgc28gdGhlIG1heCBu
dW1iZXIgb2YgdW5pZm9ybXMgd2UgY2FuCi0gICAgLy8gc3VwcG9ydCBpcyB0aGUgbWF4IGJ1ZmZl
ciByYW5nZSBkaXZpZGVkIGJ5IHRoZSBzaXplIG9mIGEgc2luZ2xlIHVuaWZvcm0gKDRYIGZsb2F0
KS4KKyAgICAvLyBzdXBwb3J0IGlzIHRoZSBtYXggYnVmZmVyIHJhbmdlIGRpdmlkZWQgYnkgdGhl
IHNpemUgb2YgYSBzaW5nbGUgdW5pZm9ybSAoMVggZmxvYXQpLgogICAgIG1OYXRpdmVDYXBzLm1h
eFZlcnRleFVuaWZvcm1WZWN0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtYXhE
ZWZhdWx0VW5pZm9ybVZlY3RvcnM7CiAgICAgbU5hdGl2ZUNhcHMubWF4U2hhZGVyVW5pZm9ybUNv
bXBvbmVudHNbZ2w6OlNoYWRlclR5cGU6OlZlcnRleF0gICA9IG1heERlZmF1bHRVbmlmb3JtQ29t
cG9uZW50czsKICAgICBtTmF0aXZlQ2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gbWF4RGVmYXVsdFVuaWZvcm1WZWN0b3JzOwpAQCAtODUz
LDkgKzg1Myw4IEBAIHZvaWQgRGlzcGxheU10bDo6aW5pdGlhbGl6ZUZlYXR1cmVzKCkKIAogICAg
IEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgYWxsb3dTZXBhcmF0ZWREZXB0
aFN0ZW5jaWxCdWZmZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc09TWCAmJiAh
aXNDYXRhbHlzdCAmJiAhaXNTaW11bGF0b3IpOwotCi0gICAgbUZlYXR1cmVzLmVtdWxhdGVUcmFu
c2Zvcm1GZWVkYmFjay5lbmFibGVkID0KLSAgICAgICAgYW5nbGU6OkdldEVudmlyb25tZW50VmFy
KGtBTkdMRVRyYW5zZm9ybUZlZWRiYWNrRW52KVswXSA9PSAnMSc7CisgICAgQU5HTEVfRkVBVFVS
RV9DT05ESVRJT04oKCZtRmVhdHVyZXMpLCByZXdyaXRlUm93TWFqb3JNYXRyaWNlcywgdHJ1ZSk7
CisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVyZXMpLCBlbXVsYXRlVHJhbnNm
b3JtRmVlZGJhY2ssIHRydWUpOwogCiAgICAgYW5nbGU6OlBsYXRmb3JtTWV0aG9kcyAqcGxhdGZv
cm0gPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOwogICAgIHBsYXRmb3JtLT5vdmVycmlkZUZlYXR1
cmVzTXRsKHBsYXRmb3JtLCAmbUZlYXR1cmVzKTsKQEAgLTg2NSwyNyArODY0LDI3IEBAIHZvaWQg
RGlzcGxheU10bDo6aW5pdGlhbGl6ZUZlYXR1cmVzKCkKIAogYW5nbGU6OlJlc3VsdCBEaXNwbGF5
TXRsOjppbml0aWFsaXplU2hhZGVyTGlicmFyeSgpCiB7Ci0gICAgI2lmZGVmIEFOR0xFX01FVEFM
X1hDT0RFX0JVSUxEU19TSEFERVJTCi0gICAgICAgIG1EZWZhdWx0U2hhZGVyc0FzeW5jSW5mby5y
ZXNldChuZXcgRGVmYXVsdFNoYWRlckFzeW5jSW5mb010bCk7Ci0gICAgICAgIAotICAgIAotICAg
ICAgICBOU1N0cmluZyAqcGF0aCA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNv
bS5hcHBsZS5XZWJLaXQiXS5idW5kbGVQYXRoOwotICAgICAgICBOU0Vycm9yICogZXJyb3IgPSBu
dWxscHRyOwotICAgICAgICBtRGVmYXVsdFNoYWRlcnNBc3luY0luZm8tPmRlZmF1bHRTaGFkZXJz
ID0gW2dldE1ldGFsRGV2aWNlKCkgbmV3RGVmYXVsdExpYnJhcnlXaXRoQnVuZGxlOltOU0J1bmRs
ZSBidW5kbGVXaXRoUGF0aDpwYXRoXSBlcnJvcjomZXJyb3JdOworI2lmZGVmIEFOR0xFX01FVEFM
X1hDT0RFX0JVSUxEU19TSEFERVJTCisgICAgbURlZmF1bHRTaGFkZXJzQXN5bmNJbmZvLnJlc2V0
KG5ldyBEZWZhdWx0U2hhZGVyQXN5bmNJbmZvTXRsKTsKIAotICAgICAgICBpZiAoZXJyb3IgJiYg
IW1EZWZhdWx0U2hhZGVyc0FzeW5jSW5mby0+ZGVmYXVsdFNoYWRlcnMpCisgICAgTlNTdHJpbmcg
KnBhdGggPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0
Il0uYnVuZGxlUGF0aDsKKyAgICBOU0Vycm9yICplcnJvciA9IG51bGxwdHI7CisgICAgbURlZmF1
bHRTaGFkZXJzQXN5bmNJbmZvLT5kZWZhdWx0U2hhZGVycyA9CisgICAgICAgIFtnZXRNZXRhbERl
dmljZSgpIG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZTpbTlNCdW5kbGUgYnVuZGxlV2l0aFBh
dGg6cGF0aF0gZXJyb3I6JmVycm9yXTsKKworICAgIGlmIChlcnJvciAmJiAhbURlZmF1bHRTaGFk
ZXJzQXN5bmNJbmZvLT5kZWZhdWx0U2hhZGVycykKKyAgICB7CisgICAgICAgIEFOR0xFX01UTF9P
QkpDX1NDT1BFCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFOR0xFX01UTF9PQkpDX1NDT1BFCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVJSKCkgPDwgIkludGVybmFsIGVycm9yOiBu
ZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGUgZmFpbGVkLiAiIDw8IGVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uLlVURjhTdHJpbmc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtRGVmYXVs
dFNoYWRlcnNBc3luY0luZm8tPmRlZmF1bHRTaGFkZXJzQ29tcGlsZUVycm9yID0gc3RkOjptb3Zl
KGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpTdG9wOwotICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIEVSUigpIDw8ICJJbnRlcm5hbCBlcnJvcjogbmV3RGVm
YXVsdExpYnJhcnlXaXRoQnVuZGxlIGZhaWxlZC4gIgorICAgICAgICAgICAgICAgICAgPDwgZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZzsKICAgICAgICAgfQotICAgICAgICBt
RGVmYXVsdFNoYWRlcnNBc3luY0luZm8tPmNvbXBpbGVkID0gdHJ1ZTsKLSAgICAgICAgCi0gICAg
I2Vsc2UKKyAgICAgICAgbURlZmF1bHRTaGFkZXJzQXN5bmNJbmZvLT5kZWZhdWx0U2hhZGVyc0Nv
bXBpbGVFcnJvciA9IHN0ZDo6bW92ZShlcnJvcik7CisgICAgICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpTdG9wOworICAgIH0KKyAgICBtRGVmYXVsdFNoYWRlcnNBc3luY0luZm8tPmNvbXBpbGVk
ID0gdHJ1ZTsKKworI2Vsc2UKICAgICBtRGVmYXVsdFNoYWRlcnNBc3luY0luZm8ucmVzZXQobmV3
IERlZmF1bHRTaGFkZXJBc3luY0luZm9NdGwpOwogCiAgICAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMg
dG8gYXN5bmMgaW5mbyBzdHJ1Y3Qgc2luY2UgaXQgbWlnaHQgYmUgcmVsZWFzZWQgaW4gdGVybWlu
YXRlKCksIGJ1dCB0aGUKQEAgLTkxNCw3ICs5MTMsNyBAQCBhbmdsZTo6UmVzdWx0IERpc3BsYXlN
dGw6OmluaXRpYWxpemVTaGFkZXJMaWJyYXJ5KCkKIAogICAgICAgICBbbnNTb3VyY2UgQU5HTEVf
TVRMX0FVVE9SRUxFQVNFXTsKICAgICB9Ci0gICAgI2VuZGlmCisjZW5kaWYKICAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9GcmFtZUJ1ZmZlck10bC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1l
QnVmZmVyTXRsLmgKaW5kZXggOTEwNTk1ZWQzZmM0YWY5Yzk2ZjgxMDA2YjkzYWQ3OTg3OGQ2Mjhl
Mi4uOTRlMDAxY2VkYjBiYTJkNGZjYjgyNmUyODA3OTUyZWJkMmUxNTU1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ZyYW1l
QnVmZmVyTXRsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0ZyYW1lQnVmZmVyTXRsLmgKQEAgLTIzLDcgKzIzLDcgQEAgbmFtZXNwYWNl
IG10bAogY2xhc3MgUmVuZGVyQ29tbWFuZEVuY29kZXI7CiB9ICAvLyBuYW1lc3BhY2UgbXRsCiBj
bGFzcyBDb250ZXh0TXRsOwotY2xhc3MgV2luZG93U3VyZmFjZU10bDsKK2NsYXNzIFN1cmZhY2VN
dGw7CiAKIGNsYXNzIEZyYW1lYnVmZmVyTXRsIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL1Byb2dyYW1NdGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLmgKaW5kZXggZWI5YmIwMTU1YzJmOTEzNTNiOGI1
YmM5NmNjMjEzNjlkNjY3OGJkOC4uMDE5NzliYTViNjUyOTA1MTQ4NzhjNTc4MjY4YTViYTMwYzYz
NDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL1Byb2dyYW1NdGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5oCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2J1ZmZlcl9wb29sLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1hbmRfYnVmZmVyLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxzLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZXNvdXJjZXMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfc3RhdGVfY2FjaGUuaCIKIApAQCAtMTM4LDcgKzEz
OSw4IEBAIGNsYXNzIFByb2dyYW1NdGwgOiBwdWJsaWMgUHJvZ3JhbUltcGwsIHB1YmxpYyBtdGw6
OlJlbmRlclBpcGVsaW5lQ2FjaGVTcGVjaWFsaXplCiAgICAgYW5nbGU6OlJlc3VsdCBjcmVhdGVN
c2xTaGFkZXJMaWIobXRsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRsOjpUcmFuc2xhdGVkU2hhZGVySW5mbyAqdHJh
bnNsYXRlZE1zbEluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10
bDo6VHJhbnNsYXRlZFNoYWRlckluZm8gKnRyYW5zbGF0ZWRNc2xJbmZvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TRGljdGlvbmFyeTxOU1N0cmluZyosIE5TT2JqZWN0
Kj4gKiBzdWJ0aXR1dGlvbkRpY3Rpb25hcnkgPSBAe30pOwogICAgIC8vIENhbGxzIHRoaXMgYmVm
b3JlIGRyYXdpbmcsIGNoYW5nZWRQaXBlbGluZURlc2MgaXMgcGFzc2VkIHdoZW4gdmVydGV4IGF0
dHJpYnV0ZXMgZGVzYyBhbmQvb3IKICAgICAvLyBzaGFkZXIgcHJvZ3JhbSBjaGFuZ2VkLgogICAg
IGFuZ2xlOjpSZXN1bHQgc2V0dXBEcmF3KGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCkBA
IC0xNDksNyArMTUxLDggQEAgY2xhc3MgUHJvZ3JhbU10bCA6IHB1YmxpYyBQcm9ncmFtSW1wbCwg
cHVibGljIG10bDo6UmVuZGVyUGlwZWxpbmVDYWNoZVNwZWNpYWxpemUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVuaWZvcm1CdWZmZXJzRGlydHksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB0cmFuc2Zvcm1GZWVkYmFja0RyYXcpOwogCi0gICAgc3RkOjpzdHJp
bmcgZ2V0WGZiTXNsU291cmNlKCkgY29uc3QgeyByZXR1cm4gbVhmYk1zbFNvdXJjZTsgfQorICAg
IHN0ZDo6YXJyYXk8dWludDMyX3QsIG10bDo6a01heFNoYWRlclhGQnM+IGdldFhmYkJpbmRpbmdz
KCkgY29uc3QgeyByZXR1cm4gbVhmYkJpbmRpbmdzOyB9CisgICAgc3RkOjpzdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZShjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBjb25z
dCB7IHJldHVybiBtTXNsU2hhZGVyVHJhbnNsYXRlSW5mb1tzaGFkZXJUeXBlXS5tZXRhbFNoYWRl
clNvdXJjZTsgfQogCiAgICAgbXRsOjpSZW5kZXJQaXBlbGluZUNhY2hlICptTWV0YWxYZmJSZW5k
ZXJQaXBlbGluZUNhY2hlOwogCkBAIC0xOTEsNyArMTk0LDcgQEAgY2xhc3MgUHJvZ3JhbU10bCA6
IHB1YmxpYyBQcm9ncmFtSW1wbCwgcHVibGljIG10bDo6UmVuZGVyUGlwZWxpbmVDYWNoZVNwZWNp
YWxpemUKICAgICAgICAgbXRsOjpSZW5kZXJDb21tYW5kRW5jb2RlciAqY21kRW5jb2RlciwKICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFjZUJsb2NrPiAmYmxvY2tzLAogICAg
ICAgICBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKTsKLQorICAgIAogICAgIHZvaWQgcmVzZXQo
Q29udGV4dE10bCAqY29udGV4dCk7CiAKICAgICB2b2lkIHNhdmVUcmFuc2xhdGVkU2hhZGVycyhn
bDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pOwpAQCAtMjE5LDcgKzIyMiw5IEBAIGNsYXNz
IFByb2dyYW1NdGwgOiBwdWJsaWMgUHJvZ3JhbUltcGwsIHB1YmxpYyBtdGw6OlJlbmRlclBpcGVs
aW5lQ2FjaGVTcGVjaWFsaXplCiAgICAgYW5nbGU6OlJlc3VsdCBsaW5rVHJhbnNsYXRlZFNoYWRl
cnMoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZyk7Ci0K
KyAgICAKKyAgICBtdGw6OkJ1ZmZlclBvb2wgKiBnZXRCdWZmZXJQb29sKENvbnRleHRNdGwgKiBj
b250ZXh0KTsKKyAgICAKICAgICAvLyBTdGF0ZSBmb3IgdGhlIGRlZmF1bHQgdW5pZm9ybSBibG9j
a3MuCiAgICAgc3RydWN0IERlZmF1bHRVbmlmb3JtQmxvY2sgZmluYWwgOiBwcml2YXRlIGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgIHsKQEAgLTI2OSw3ICsyNzQsOSBAQCBjbGFzcyBQcm9ncmFtTXRs
IDogcHVibGljIFByb2dyYW1JbXBsLCBwdWJsaWMgbXRsOjpSZW5kZXJQaXBlbGluZUNhY2hlU3Bl
Y2lhbGl6ZQogICAgIHVpbnQzMl90IG1TaGFkb3dDb21wYXJlTW9kZXNbbXRsOjprTWF4U2hhZGVy
U2FtcGxlcnNdID0gezB9OwogCiAgICAgbXRsOjpSZW5kZXJQaXBlbGluZUNhY2hlIG1NZXRhbFJl
bmRlclBpcGVsaW5lQ2FjaGU7Ci0gICAgc3RkOjpzdHJpbmcgbVhmYk1zbFNvdXJjZTsKKyAgICBz
dGQ6OmFycmF5PHVpbnQzMl90LCBtdGw6OmtNYXhTaGFkZXJYRkJzPiBtWGZiQmluZGluZ3M7Cisg
ICAgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TT2JqZWN0ICo+ICogbURlZmF1bHRTdWJzdGl0
dXRpb25EaWN0aW9uYXJ5OworICAgIG10bDo6QnVmZmVyUG9vbCAqIG1BdXhCdWZmZXJQb29sOwog
fTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLm1t
CmluZGV4IDZkYTg2NjQxY2FhODUzNTY4YzA4NWE2YTA4YmM0Y2Y2NWY1MDAyNzguLjhlZTA5MDMz
YWYwYmQ4YjMzYzkwYTRkYzY2NGE4YmQ1MGU4NzMxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Q
cm9ncmFtTXRsLm1tCkBAIC0yMzYsOSArMjM2LDIwIEBAIFByb2dyYW1NdGw6OkRlZmF1bHRVbmlm
b3JtQmxvY2s6OkRlZmF1bHRVbmlmb3JtQmxvY2soKSB7fQogUHJvZ3JhbU10bDo6RGVmYXVsdFVu
aWZvcm1CbG9jazo6fkRlZmF1bHRVbmlmb3JtQmxvY2soKSA9IGRlZmF1bHQ7CiAKIFByb2dyYW1N
dGw6OlByb2dyYW1NdGwoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpIDogUHJvZ3JhbUlt
cGwoc3RhdGUpLAotICAgIG1NZXRhbFJlbmRlclBpcGVsaW5lQ2FjaGUodGhpcykKKyAgICBtTWV0
YWxSZW5kZXJQaXBlbGluZUNhY2hlKHRoaXMpLAorICAgIG1BdXhCdWZmZXJQb29sKG51bGxwdHIp
CiB7Ci0gICAgbU1ldGFsWGZiUmVuZGVyUGlwZWxpbmVDYWNoZSA9IG5ldyBtdGw6OlJlbmRlclBp
cGVsaW5lQ2FjaGUoKTsKKyAgICBtTWV0YWxYZmJSZW5kZXJQaXBlbGluZUNhY2hlID0gbmV3IG10
bDo6UmVuZGVyUGlwZWxpbmVDYWNoZSh0aGlzKTsKKyNpZiBBTkdMRV9FTkFCTEVfTUVUQUxfU1BJ
UlYKKyAgICBpZiAoc2g6OnJlYWRCb29sRW52VmFyKCJBTkdMRV9HRU5fTVRMX1dJVEhfU1BJUlYi
KSkKKyAgICB7CisgICAgICAgIG1EZWZhdWx0U3Vic3RpdHV0aW9uRGljdGlvbmFyeSA9IEB7fTsK
KyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBtRGVmYXVsdFN1YnN0aXR1
dGlvbkRpY3Rpb25hcnkgPSBAe0AiVFJBTlNGT1JNX0ZFRURCQUNLX0VOQUJMRUQiOiBAIjAifTsK
KyAgICB9CiB9CiAKIFByb2dyYW1NdGw6On5Qcm9ncmFtTXRsKCkKQEAgLTI0OSw3ICsyNjAsMTIg
QEAgUHJvZ3JhbU10bDo6flByb2dyYW1NdGwoKQogdm9pZCBQcm9ncmFtTXRsOjpkZXN0cm95KGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogewogICAgIGF1dG8gY29udGV4dE10bCA9IG10bDo6
R2V0SW1wbChjb250ZXh0KTsKLQorICAgIGlmKG1BdXhCdWZmZXJQb29sKQorICAgIHsKKyAgICAg
ICAgbUF1eEJ1ZmZlclBvb2wtPmRlc3Ryb3koY29udGV4dE10bCk7CisgICAgICAgIGRlbGV0ZSBt
QXV4QnVmZmVyUG9vbDsKKyAgICAgICAgbUF1eEJ1ZmZlclBvb2wgPSBudWxscHRyOworICAgIH0K
ICAgICByZXNldChjb250ZXh0TXRsKTsKIH0KIApAQCAtMjc0LDYgKzI5MCwxNSBAQCB2b2lkIFBy
b2dyYW1NdGw6OnJlc2V0KENvbnRleHRNdGwgKmNvbnRleHQpCiAgICAgewogICAgICAgICB2YXIu
cmVzZXQoY29udGV4dCk7CiAgICAgfQorICAgIGlmKG1BdXhCdWZmZXJQb29sKQorICAgIHsKKyAg
ICAgICAgaWYobUF1eEJ1ZmZlclBvb2wtPnJlc2V0KGNvbnRleHQsIG10bDo6a0RlZmF1bHRVbmlm
b3Jtc01heFNpemUqMiwgbXRsOjprVW5pZm9ybUJ1ZmZlclNldHRpbmdPZmZzZXRNaW5BbGlnbm1l
bnQsMykgIT0gYW5nbGU6OlJlc3VsdDo6Q29udGludWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1BdXhCdWZmZXJQb29sLT5kZXN0cm95KGNvbnRleHQpOworICAgICAgICAgICAgZGVsZXRlIG1B
dXhCdWZmZXJQb29sOworICAgICAgICAgICAgbUF1eEJ1ZmZlclBvb2wgPSBudWxscHRyOworICAg
ICAgICB9CisgICAgfQogICAgIG1NZXRhbFJlbmRlclBpcGVsaW5lQ2FjaGUuY2xlYXIoKTsKICAg
ICBtTWV0YWxYZmJSZW5kZXJQaXBlbGluZUNhY2hlLT5jbGVhcigpOwogfQpAQCAtMjg1LDcgKzMx
MCwxMCBAQCB2b2lkIFByb2dyYW1NdGw6OnNhdmVUcmFuc2xhdGVkU2hhZGVycyhnbDo6QmluYXJ5
T3V0cHV0U3RyZWFtICpzdHJlYW0pCiAgICAgewogICAgICAgICBzdHJlYW0tPndyaXRlU3RyaW5n
KG1Nc2xTaGFkZXJUcmFuc2xhdGVJbmZvW3NoYWRlclR5cGVdLm1ldGFsU2hhZGVyU291cmNlKTsK
ICAgICB9Ci0gICAgc3RyZWFtLT53cml0ZVN0cmluZyhtWGZiTXNsU291cmNlKTsKKyAgICBmb3Ig
KHNpemVfdCB4ZmJCaW5kSW5kZXggPSAwOyB4ZmJCaW5kSW5kZXggPCBtdGw6OmtNYXhTaGFkZXJY
RkJzOyB4ZmJCaW5kSW5kZXgrKykKKyAgICB7CisgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQobVhm
YkJpbmRpbmdzW3hmYkJpbmRJbmRleF0pOworICAgIH0KIH0KIAogdm9pZCBQcm9ncmFtTXRsOjps
b2FkVHJhbnNsYXRlZFNoYWRlcnMoZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCkBAIC0y
OTUsNyArMzIzLDEwIEBAIHZvaWQgUHJvZ3JhbU10bDo6bG9hZFRyYW5zbGF0ZWRTaGFkZXJzKGds
OjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQogICAgIHsKICAgICAgICAgbU1zbFNoYWRlclRy
YW5zbGF0ZUluZm9bc2hhZGVyVHlwZV0ubWV0YWxTaGFkZXJTb3VyY2UgPSBzdHJlYW0tPnJlYWRT
dHJpbmcoKTsKICAgICB9Ci0gICAgbVhmYk1zbFNvdXJjZSA9IHN0cmVhbS0+cmVhZFN0cmluZygp
OworICAgIGZvciAoc2l6ZV90IHhmYkJpbmRJbmRleCA9IDA7IHhmYkJpbmRJbmRleCA8IG10bDo6
a01heFNoYWRlclhGQnM7IHhmYkJpbmRJbmRleCsrKQorICAgIHsKKyAgICAgICAgc3RyZWFtLT5y
ZWFkSW50KCZtWGZiQmluZGluZ3NbeGZiQmluZEluZGV4XSk7CisgICAgfQogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8cng6OkxpbmtFdmVudD4gUHJvZ3JhbU10bDo6bG9hZChjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwKQEAgLTM4NCw3ICs0MTUsNyBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6
OmxpbmtJbXBsU3BpcnYoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICB7CiAgICAg
ICAgIC8vIENyZWF0ZSBhY3R1YWwgTWV0YWwgc2hhZGVyIGxpYnJhcnkKICAgICAgICAgQU5HTEVf
VFJZKGNyZWF0ZU1zbFNoYWRlckxpYihjb250ZXh0TXRsLCBzaGFkZXJUeXBlLCBpbmZvTG9nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtTXNsU2hhZGVyVHJhbnNsYXRl
SW5mb1tzaGFkZXJUeXBlXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZtTXNsU2hhZGVyVHJhbnNsYXRlSW5mb1tzaGFkZXJUeXBlXSwgbURlZmF1bHRTdWJzdGl0dXRp
b25EaWN0aW9uYXJ5KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwpAQCAtNDEwLDEzICs0NDEsMTUgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtTXRsOjpsaW5r
SW1wbERpcmVjdChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnRyYW5zbGF0ZWRNc2xTaGFkZXJzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldEV4ZWN1dGFibGUoKS5nZXRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlckNvdW50KCkpKTsKIAotCiAgICAgZm9yIChnbDo6U2hhZGVyVHlwZSBzaGFkZXJU
eXBlIDogZ2w6OkFsbEdMRVMyU2hhZGVyVHlwZXMoKSkKICAgICB7CiAgICAgICAgIC8vIENyZWF0
ZSBhY3R1YWwgTWV0YWwgc2hhZGVyCiAgICAgICAgIEFOR0xFX1RSWSgKLSAgICAgICAgICAgIGNy
ZWF0ZU1zbFNoYWRlckxpYihjb250ZXh0TXRsLCBzaGFkZXJUeXBlLCBpbmZvTG9nLCAmbU1zbFNo
YWRlclRyYW5zbGF0ZUluZm9bc2hhZGVyVHlwZV0pKTsKKyAgICAgICAgICAgICAgICAgIGNyZWF0
ZU1zbFNoYWRlckxpYihjb250ZXh0TXRsLCBzaGFkZXJUeXBlLCBpbmZvTG9nLCAmbU1zbFNoYWRl
clRyYW5zbGF0ZUluZm9bc2hhZGVyVHlwZV0sIG1EZWZhdWx0U3Vic3RpdHV0aW9uRGljdGlvbmFy
eSkpOwogICAgIH0KKyAgICAvLyBTYXZlIHRoaXMsIGNvdWxkIGJlIHJlc2V0IG9uIHNoYWRlciBk
ZXN0cnVjdGlvbi4gVGhlc2UgdmFsdWVzIHdpbGwgZXZlbnR1YWxseSBiZSB3cml0dGVuIG91dCBh
bmQgcmVzdG9yZWQgaW4KKyAgICAvLyBzYXZlVHJhbnNsYXRlZFNoYWRlcnMvbG9hZFRyYW5zbGF0
ZWRTaGFkZXJzCisgICAgbVhmYkJpbmRpbmdzID0gbU1zbFNoYWRlclRyYW5zbGF0ZUluZm9bZ2w6
OlNoYWRlclR5cGU6OlZlcnRleF0uYWN0dWFsWEZCQmluZGluZ3M7CiAgICAgcmV0dXJuIGFuZ2xl
OjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCkBAIC00MjQsNyArNDU3LDYgQEAgYW5nbGU6OlJlc3Vs
dCBQcm9ncmFtTXRsOjpsaW5rSW1wbChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUxpbmtlZFJl
c291cmNlcyAmcmVzb3VyY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6SW5mb0xvZyAmaW5mb0xvZykKIHsKLSAgICAvLyBUT0RPOiBXZSBuZWVkIHNvbWUgd2F5IG9m
IHRvZ2dsaW5nIHRoaXMuCiAjaWYgQU5HTEVfRU5BQkxFX01FVEFMX1NQSVJWCiAgICAgaWYgKHNo
OjpyZWFkQm9vbEVudlZhcigiQU5HTEVfR0VOX01UTF9XSVRIX1NQSVJWIikpCiAgICAgewpAQCAt
NDUyLDEzICs0ODQsMjMgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtTXRsOjpsaW5rVHJhbnNsYXRl
ZFNoYWRlcnMoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICBBTkdMRV9UUlkobG9h
ZERlZmF1bHRVbmlmb3JtQmxvY2tzSW5mbyhnbENvbnRleHQsIHN0cmVhbSkpOwogCiAgICAgQU5H
TEVfVFJZKGNyZWF0ZU1zbFNoYWRlckxpYihjb250ZXh0TXRsLCBnbDo6U2hhZGVyVHlwZTo6VmVy
dGV4LCBpbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Nc2xTaGFkZXJU
cmFuc2xhdGVJbmZvW2dsOjpTaGFkZXJUeXBlOjpWZXJ0ZXhdKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbU1zbFNoYWRlclRyYW5zbGF0ZUluZm9bZ2w6OlNoYWRlclR5cGU6OlZl
cnRleF0sIG1EZWZhdWx0U3Vic3RpdHV0aW9uRGljdGlvbmFyeSkpOwogICAgIEFOR0xFX1RSWShj
cmVhdGVNc2xTaGFkZXJMaWIoY29udGV4dE10bCwgZ2w6OlNoYWRlclR5cGU6OkZyYWdtZW50LCBp
bmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Nc2xTaGFkZXJUcmFuc2xh
dGVJbmZvW2dsOjpTaGFkZXJUeXBlOjpGcmFnbWVudF0pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZtTXNsU2hhZGVyVHJhbnNsYXRlSW5mb1tnbDo6U2hhZGVyVHlwZTo6RnJhZ21l
bnRdLCBtRGVmYXVsdFN1YnN0aXR1dGlvbkRpY3Rpb25hcnkpKTsKIAogICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAorCittdGw6OkJ1ZmZlclBvb2wgKiBQcm9ncmFtTXRs
OjpnZXRCdWZmZXJQb29sKENvbnRleHRNdGwgKiBjb250ZXh0KQoreworICAgIGlmKG1BdXhCdWZm
ZXJQb29sID09IG51bGxwdHIpCisgICAgeworICAgICAgICBtQXV4QnVmZmVyUG9vbCA9IG5ldyBt
dGw6OkJ1ZmZlclBvb2wodHJ1ZSk7CisgICAgICAgIG1BdXhCdWZmZXJQb29sLT5pbml0aWFsaXpl
KGNvbnRleHQsIG10bDo6a0RlZmF1bHRVbmlmb3Jtc01heFNpemUqMiwgbXRsOjprVW5pZm9ybUJ1
ZmZlclNldHRpbmdPZmZzZXRNaW5BbGlnbm1lbnQsIDMpOworICAgIH0KKyAgICByZXR1cm4gbUF1
eEJ1ZmZlclBvb2w7Cit9CiB2b2lkIFByb2dyYW1NdGw6OmxpbmtSZXNvdXJjZXMoY29uc3QgZ2w6
OlByb2dyYW1MaW5rZWRSZXNvdXJjZXMgJnJlc291cmNlcykKIHsKICAgICBTdGQxNDBCbG9ja0xh
eW91dEVuY29kZXJGYWN0b3J5IHN0ZDE0MEVuY29kZXJGYWN0b3J5OwpAQCAtNTQwLDggKzU4Miw2
IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6cmVzaXplRGVmYXVsdFVuaWZvcm1CbG9ja3NN
ZW1vcnkoCiAgICAgewogICAgICAgICBpZiAocmVxdWlyZWRCdWZmZXJTaXplW3NoYWRlclR5cGVd
ID4gMCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJlcXVpcmVkQnVmZmVyU2l6ZVtz
aGFkZXJUeXBlXSA8PSBtdGw6OmtEZWZhdWx0VW5pZm9ybXNNYXhTaXplKTsKLQogICAgICAgICAg
ICAgaWYgKCFtRGVmYXVsdFVuaWZvcm1CbG9ja3Nbc2hhZGVyVHlwZV0udW5pZm9ybURhdGEucmVz
aXplKAogICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEJ1ZmZlclNpemVbc2hhZGVyVHlwZV0p
KQogICAgICAgICAgICAgewpAQCAtNTgzLDIxICs2MjMsNiBAQCBhbmdsZTo6UmVzdWx0IFByb2dy
YW1NdGw6OmdldFNwZWNpYWxpemVkU2hhZGVyKG10bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmIChyZW5kZXJQaXBlbGluZURlc2MucmFzdGVyaXphdGlvblR5cGUgPT0gbXRsOjpSZW5k
ZXJQaXBlbGluZVJhc3Rlcml6YXRpb246OkRpc2FibGVkKQotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBTcGVjaWFsIGNhc2U6IFhGQiBvdXRwdXQgb25seSB2ZXJ0ZXggc2hhZGVyLgotICAgICAg
ICAgICAgQVNTRVJUKCFtU3RhdGUuZ2V0TGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncygp
LmVtcHR5KCkpOwotICAgICAgICAgICAgdHJhbnNsYXRlZE1zbEluZm8gPSAmbU1zbFhmYk9ubHlW
ZXJ0ZXhTaGFkZXJJbmZvOwotICAgICAgICAgICAgaWYgKCF0cmFuc2xhdGVkTXNsSW5mby0+bWV0
YWxMaWJyYXJ5KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIExhemlseSBjb21w
aWxlIFhGQiBvbmx5IHNoYWRlcgotICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nIGluZm9Mb2c7
Ci0gICAgICAgICAgICAgICAgQU5HTEVfVFJZKAotICAgICAgICAgICAgICAgICAgICBjcmVhdGVN
c2xTaGFkZXJMaWIoY29udGV4dCwgc2hhZGVyVHlwZSwgaW5mb0xvZywgJm1Nc2xYZmJPbmx5VmVy
dGV4U2hhZGVySW5mbykpOwotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRh
bExpYnJhcnkuZ2V0KCkubGFiZWwgPSBAIlRyYW5zZm9ybUZlZWRiYWNrIjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCiAgICAgICAgIEFOR0xFX01UTF9PQkpDX1NDT1BFCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEJPT0wgZW11bGF0ZURpc2NhcmQgPSByZW5kZXJQaXBlbGluZURlc2MucmFz
dGVyaXphdGlvblR5cGUgPT0KQEAgLTY2Miw2ICs2ODcsNyBAQCBhbmdsZTo6UmVzdWx0IFByb2dy
YW1NdGw6OmdldFNwZWNpYWxpemVkU2hhZGVyKG10bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgIFtmdW5jQ29uc3RhbnRzIHNldENvbnN0YW50VmFsdWU6JmVtdWxhdGVDb3ZlcmFnZU1h
c2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6TVRMRGF0YVR5
cGVCb29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhOYW1lOmNvdmVy
YWdlTWFza0VuYWJsZWRTdHJdOworCiAgICAgICAgIH0KIAogICAgIH0gIC8vIGdsOjpTaGFkZXJU
eXBlOjpGcmFnbWVudApAQCAtNjcwLDEzICs2OTYsMTggQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFt
TXRsOjpnZXRTcGVjaWFsaXplZFNoYWRlcihtdGw6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpTdG9wOwogICAg
IH0KLQorICAgIFtmdW5jQ29uc3RhbnRzIHNldENvbnN0YW50VmFsdWU6Jihjb250ZXh0LT5nZXRE
aXNwbGF5KCktPmdldEZlYXR1cmVzKCkuYWxsb3dTYW1wbGVyQ29tcGFyZUdyYWRpZW50LmVuYWJs
ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOk1UTERhdGFUeXBlQm9vbAorICAg
ICAgICAgICAgICAgICAgICAgICB3aXRoTmFtZTpAIkFOR0xFX1VzZVNhbXBsZUNvbXBhcmVHcmFk
aWVudCJdOworICAgIFtmdW5jQ29uc3RhbnRzIHNldENvbnN0YW50VmFsdWU6Jihjb250ZXh0LT5n
ZXREaXNwbGF5KCktPmdldEZlYXR1cmVzKCkuYWxsb3dTYW1wbGVyQ29tcGFyZUxvZC5lbmFibGVk
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTpNVExEYXRhVHlwZUJvb2wKKyAgICAg
ICAgICAgICAgICAgICAgICAgd2l0aE5hbWU6QCJBTkdMRV9Vc2VTYW1wbGVDb21wYXJlTG9kIl07
CiAgICAgLy8gQ3JlYXRlIE1ldGFsIHNoYWRlciBvYmplY3QKICAgICBBTkdMRV9NVExfT0JKQ19T
Q09QRQogICAgIHsKLSAgICAgICAgW2Z1bmNDb25zdGFudHMgQU5HTEVfTVRMX0FVVE9SRUxFQVNF
XTsKICAgICAgICAgQU5HTEVfVFJZKENyZWF0ZU1zbFNoYWRlcihjb250ZXh0LCB0cmFuc2xhdGVk
TXNsSW5mby0+bWV0YWxMaWJyYXJ5LCBmdW5jQ29uc3RhbnRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZzaGFkZXJWYXJpYW50LT5tZXRhbFNoYWRlcikpOworICAgICAgICBb
ZnVuY0NvbnN0YW50cyBBTkdMRV9NVExfQVVUT1JFTEVBU0VdOwogICAgIH0KIAogICAgIC8vIFN0
b3JlIHJlZmVyZW5jZSB0byB0aGUgdHJhbnNsYXRlZCBzb3VyY2UgZm9yIGVhc2lseSBxdWVyeWlu
ZyBtYXBwZWQgYmluZGluZ3MgbGF0ZXIuCkBAIC03MDQsNyArNzM1LDggQEAgYm9vbCBQcm9ncmFt
TXRsOjpoYXNTcGVjaWFsaXplZFNoYWRlcihnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAogYW5n
bGU6OlJlc3VsdCBQcm9ncmFtTXRsOjpjcmVhdGVNc2xTaGFkZXJMaWIobXRsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXRsOjpUcmFuc2xhdGVkU2hhZGVySW5mbyAqdHJhbnNs
YXRlZE1zbEluZm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtdGw6OlRyYW5zbGF0ZWRTaGFkZXJJbmZvICp0cmFuc2xhdGVkTXNsSW5mbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBOU09iamVjdCAqPiAqIHN1YnN0aXR1dGlvbk1hY3JvcykKIHsKICAgICBBTkdMRV9NVExf
T0JKQ19TQ09QRQogICAgIHsKQEAgLTcxNCwxMyArNzQ2LDE2IEBAIGFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbU10bDo6Y3JlYXRlTXNsU2hhZGVyTGliKG10bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgLy8gQ29udmVydCB0byBhY3R1YWwgYmluYXJ5IHNoYWRlcgogICAgICAgICBtdGw6OkF1dG9P
YmpDUHRyPE5TRXJyb3IgKj4gZXJyID0gbmlsOwogICAgICAgICB0cmFuc2xhdGVkTXNsSW5mby0+
bWV0YWxMaWJyYXJ5ID0KLSAgICAgICAgICAgIG10bDo6Q3JlYXRlU2hhZGVyTGlicmFyeShtdGxE
ZXZpY2UsIHRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRhbFNoYWRlclNvdXJjZSwgJmVycik7CisgICAg
ICAgICAgICBtdGw6OkNyZWF0ZVNoYWRlckxpYnJhcnkobXRsRGV2aWNlLCB0cmFuc2xhdGVkTXNs
SW5mby0+bWV0YWxTaGFkZXJTb3VyY2UsIHN1YnN0aXR1dGlvbk1hY3JvcywgJmVycik7CiAgICAg
ICAgIGlmIChlcnIgJiYgIXRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRhbExpYnJhcnkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzczsKLSAgICAgICAgICAgIHNzIDw8
ICJJbnRlcm5hbCBlcnJvciBjb21waWxpbmcgTWV0YWwgc2hhZGVyOlxuIgotICAgICAgICAgICAg
ICAgPDwgZXJyLmdldCgpLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcgPDwgIlxuIjsK
LQorICAgICAgICAgICAgc3MgPDwgIkludGVybmFsIGVycm9yIGNvbXBpbGluZyBzaGFkZXIgd2l0
aCBNZXRhbCBiYWNrZW5kLlxuIjsKKyAgICAgICAgICAgICNpZiAhZGVmaW5lZChOREVCVUcpCisg
ICAgICAgICAgICBzcyA8PCBlcnIuZ2V0KCkubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmlu
ZyA8PCAiXG4iOworICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIHNzIDw8ICJQbGVhc2Ug
c3VibWl0IHRoaXMgc2hhZGVyLCBvciB3ZWJzaXRlIGFzIGEgYnVnIHRvIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnXG4iOworICAgICAgICAgICAgI2VuZGlmCiAgICAgICAgICAgICBFUlIoKSA8PCBz
cy5zdHIoKTsKIAogICAgICAgICAgICAgaW5mb0xvZyA8PCBzcy5zdHIoKTsKQEAgLTExNjgsOCAr
MTIwMyw0MCBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6OmNvbW1pdFVuaWZvcm1zKENvbnRl
eHRNdGwgKmNvbnRleHQsIG10bDo6UmVuZGVyQ29tbWFuZAogICAgICAgICB7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBjbWRFbmNvZGVyLT5zZXRCeXRlcyhzaGFk
ZXJUeXBlLCB1bmlmb3JtQmxvY2sudW5pZm9ybURhdGEuZGF0YSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bmlmb3JtQmxvY2sudW5pZm9ybURhdGEuc2l6ZSgpLCBtdGw6OmtEZWZh
dWx0VW5pZm9ybXNCaW5kaW5nSW5kZXgpOworICAgICAgICAvL0lmIHdlIGV4Y2VlZCB0aGUgZGVm
YXVsdCB1bmlmb3JtIG1heCBzaXplLCB0cnkgdG8gYWxsb2NhdGUgYSBidWZmZXIuIFdvcnN0IGNh
c2UKKyAgICAgICAgLy9zY2VuYXJpbywgZmFsbCBiYWNrIG9uIGEgbGFyZ2Ugc2V0Qnl0ZXMuCisg
ICAgICAgIGJvb2wgbmVlZHNDb21taXRVbmlmb3JtID0gdHJ1ZTsKKyAgICAgICAgaWYodW5pZm9y
bUJsb2NrLnVuaWZvcm1EYXRhLnNpemUoKSA+IG10bDo6a0RlZmF1bHRVbmlmb3Jtc01heFNpemUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vQWxsb2NhdGUgYSBuZXcgYnVmZmVyIHBvb2wgaWYg
Zmlyc3QgdGltZSB0aHJvdWdoLgorICAgICAgICAgICAgbXRsOjpCdWZmZXJQb29sICogcG9vbCA9
IGdldEJ1ZmZlclBvb2woY29udGV4dCk7CisgICAgICAgICAgICBpZighcG9vbCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoISJDb3VsZCBub3QgYWxsb2NhdGUgYSBidWZm
ZXIgcG9vbCB0byBob2xkIGEgbGFyZ2UgdW5pZm9ybSBncm91cC4iKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwb29sLT5y
ZWxlYXNlSW5GbGlnaHRCdWZmZXJzKGNvbnRleHQpOworICAgICAgICAgICAgICAgIC8vQ3JlYXRl
IGEgbmV3IHJlZiBhbmQgY29weSB1bmlmb3JtIGRhdGEuCisgICAgICAgICAgICAgICAgbXRsOjpC
dWZmZXJSZWYgcmVmT3V0OworICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRPdXQ7CisgICAg
ICAgICAgICAgICAgdWludDhfdCAqIHB0ck91dDsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlko
cG9vbC0+YWxsb2NhdGUoY29udGV4dCwgdW5pZm9ybUJsb2NrLnVuaWZvcm1EYXRhLnNpemUoKSwg
JnB0ck91dCwgJnJlZk91dCwgJm9mZnNldE91dCkpOworICAgICAgICAgICAgICAgIG1lbWNweShw
dHJPdXQsIHVuaWZvcm1CbG9jay51bmlmb3JtRGF0YS5kYXRhKCksIHVuaWZvcm1CbG9jay51bmlm
b3JtRGF0YS5zaXplKCkpOworICAgICAgICAgICAgICAgIC8vU2VuZCBkYXRhIHRvIHRoZSBzaGFk
ZXIuCisgICAgICAgICAgICAgICAgY21kRW5jb2Rlci0+c2V0QnVmZmVyKHNoYWRlclR5cGUsIHJl
Zk91dCwgKHVpbnQzMl90KW9mZnNldE91dCwgbXRsOjprRGVmYXVsdFVuaWZvcm1zQmluZGluZ0lu
ZGV4KTsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkocG9vbC0+Y29tbWl0KGNvbnRleHQpKTsK
KyAgICAgICAgICAgICAgICBuZWVkc0NvbW1pdFVuaWZvcm0gPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGlm
KG5lZWRzQ29tbWl0VW5pZm9ybSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHVuaWZv
cm1CbG9jay51bmlmb3JtRGF0YS5zaXplKCkgPD0gbXRsOjprRGVmYXVsdFVuaWZvcm1zTWF4U2l6
ZSk7CisgICAgICAgICAgICBjbWRFbmNvZGVyLT5zZXRCeXRlcyhzaGFkZXJUeXBlLCB1bmlmb3Jt
QmxvY2sudW5pZm9ybURhdGEuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pZm9ybUJsb2NrLnVuaWZvcm1EYXRhLnNpemUoKSwgbXRsOjprRGVmYXVsdFVuaWZvcm1z
QmluZGluZ0luZGV4KTsKKyAgICAgICAgfQogCiAgICAgICAgIG1EZWZhdWx0VW5pZm9ybUJsb2Nr
c0RpcnR5LnJlc2V0KHNoYWRlclR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9RdWVyeU10bC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1F1ZXJ5TXRs
LmgKaW5kZXggMjc4ZjFkZjE2YmVmMDQxZDg2ZTE1NjVmYzQ5OGRmOTg0NjMyMWExMS4uNGVhYTg3
NjhmM2MwZTBlMTQ0NjcxZjJmMDllMGM4ODY3OWU4NzA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1F1ZXJ5TXRsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1F1
ZXJ5TXRsLmgKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1F1ZXJ5SW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21t
b24uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29uc3RhbnRzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5oIgogCiBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9SZW5kZXJCdWZmZXJNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVyQnVmZmVyTXRsLm1tCmlu
ZGV4IDZjNWM5NTE2Yzc1NjRlMmI0MDgzNGFhZjM2OTk3ZDhkNTYyNmI3ZTUuLmZlYjhhMDBhM2I2
YWNhNmE1ZTNkNjA4ODcyMmUyYzAyODU0NTQyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9SZW5kZXJCdWZmZXJNdGwubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L1JlbmRlckJ1ZmZlck10bC5tbQpAQCAtNzksNyArNzksNyBAQCBhbmdsZTo6UmVzdWx0IFJlbmRl
cmJ1ZmZlck10bDo6c2V0U3RvcmFnZUltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICBBTkdMRV9UUlkobXRsOjpUZXh0dXJlOjpNYWtlMkRUZXh0dXJlKGNvbnRleHRN
dGwsIG1Gb3JtYXQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aWR0aCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90
PihoZWlnaHQpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiByZW5kZXJUYXJnZXRPbmx5ICovIGZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbGxvd0Zvcm1hdFZpZXcgKi8gZmFs
c2UsICZtVGV4dHVyZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBhbGxvd0Zvcm1hdFZpZXcgKi8gbUZvcm1hdC5oYXNEZXB0aEFuZFN0ZW5j
aWxCaXRzKCksICZtVGV4dHVyZSkpOwogCiAgICAgICAgICAgICAvLyBVc2UgaW1wbGljaXQgcmVz
b2x2ZSBmb3IgZGVwdGggc3RlbmNpbCB0ZXh0dXJlIHdoZW5ldmVyIHBvc3NpYmxlLiBUaGlzIGlz
IGJlY2F1c2UKICAgICAgICAgICAgIC8vIGZvciBkZXB0aCBzdGVuY2lsIHRleHR1cmUsIGlmIHN0
ZW5jaWwgbmVlZHMgdG8gYmUgYmxpdHRlZCwgYSBmb3JtYXR0ZWQgY2xvbmUgaGFzCkBAIC05Myw3
ICs5Myw3IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyYnVmZmVyTXRsOjpzZXRTdG9yYWdlSW1wbChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgY29udGV4dE10
bCwgbUZvcm1hdCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdpZHRoKSwKICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlaWdodCksIGFjdHVhbFNhbXBsZXMsCiAgICAg
ICAgICAgICAgICAgICAgIC8qIHJlbmRlclRhcmdldE9ubHkgKi8gdHJ1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgLyogYWxsb3dGb3JtYXRWaWV3ICovIGZhbHNlLCAmbUltcGxpY2l0TVNUZXh0dXJl
KSk7CisgICAgICAgICAgICAgICAgICAgIC8qIGFsbG93Rm9ybWF0VmlldyAqLyBtRm9ybWF0Lmhh
c0RlcHRoQW5kU3RlbmNpbEJpdHMoKSwgJm1JbXBsaWNpdE1TVGV4dHVyZSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTEwMiw3ICsxMDIsNyBAQCBhbmdsZTo6
UmVzdWx0IFJlbmRlcmJ1ZmZlck10bDo6c2V0U3RvcmFnZUltcGwoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdpZHRoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaGVp
Z2h0KSwgYWN0dWFsU2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiByZW5kZXJUYXJnZXRPbmx5ICovIGZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFsbG93Rm9ybWF0
VmlldyAqLyBmYWxzZSwgJm1UZXh0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxsb3dGb3JtYXRWaWV3ICovIG1Gb3JtYXQuaGFz
RGVwdGhBbmRTdGVuY2lsQml0cygpLCAmbVRleHR1cmUpKTsKICAgICAgICAgfQogCiAgICAgICAg
IG1SZW5kZXJUYXJnZXQuc2V0V2l0aEltcGxpY2l0TVNUZXh0dXJlKG1UZXh0dXJlLCBtSW1wbGlj
aXRNU1RleHR1cmUsIG10bDo6a1plcm9OYXRpdmVNaXBMZXZlbCwgMCwgbUZvcm1hdCk7CkBAIC0x
MTAsNyArMTEwLDYgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJidWZmZXJNdGw6OnNldFN0b3JhZ2VJ
bXBsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAvLyBGb3IgZW11bGF0ZWQg
Y2hhbm5lbHMgdGhhdCBHTCB0ZXh0dXJlIGludGVuZHMgdG8gbm90IGhhdmUsCiAgICAgICAgIC8v
IHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGVpciBjb250ZW50LgogICAgICAgICBib29sIGVtdWxh
dGVkQ2hhbm5lbHMgPSBtdGw6OklzRm9ybWF0RW11bGF0ZWQobUZvcm1hdCk7Ci0gICAgICAgIGJv
b2wgaXNEZXB0aFN0ZW5jaWwgPSBtRm9ybWF0Lmhhc0RlcHRoT3JTdGVuY2lsQml0cygpOwogICAg
ICAgICBpZiAoZW11bGF0ZWRDaGFubmVscykKICAgICAgICAgewogICAgICAgICAgICAgZ2w6Oklt
YWdlSW5kZXggaW5kZXg7CkBAIC0xMzEsMTAgKzEzMCwxMCBAQCBhbmdsZTo6UmVzdWx0IFJlbmRl
cmJ1ZmZlck10bDo6c2V0U3RvcmFnZUltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
dGw6OkltYWdlTmF0aXZlSW5kZXgoZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRE11bHRpc2FtcGxlKCks
IDApKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gIC8vIGlmIChlbXVsYXRlZENoYW5uZWxz
KQorICAgICAgICBib29sIGlzRGVwdGhTdGVuY2lsID0gbUZvcm1hdC5oYXNEZXB0aE9yU3RlbmNp
bEJpdHMoKTsKICAgICAgICAgaWYoaXNEZXB0aFN0ZW5jaWwpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGdsOjpJbWFnZUluZGV4IGluZGV4OwotCiAgICAgICAgICAgICBpZiAoYWN0dWFsU2FtcGxl
cyA+IDEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaW5kZXggPSBnbDo6SW1hZ2VJ
bmRleDo6TWFrZTJETXVsdGlzYW1wbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9SZW5kZXJUYXJnZXRNdGwubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVy
VGFyZ2V0TXRsLm1tCmluZGV4IGUxMjZkYmI2YmVlMDExOWExNjY5YTAxZTdlMDk2YzJkODRhN2Q4
MjAuLmNhOWNlNTJlNzEyYmVhNzQwOWQ5N2IwNjRkMjMwYWRkNTM5ZGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9SZW5k
ZXJUYXJnZXRNdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL1JlbmRlclRhcmdldE10bC5tbQpAQCAtNDEsOCArNDEsOSBAQCB2b2lk
IFJlbmRlclRhcmdldE10bDo6c2V0V2l0aEltcGxpY2l0TVNUZXh0dXJlKGNvbnN0IG10bDo6VGV4
dHVyZVJlZiAmdGV4dHVyZSwKIHsKICAgICBtVGV4dHVyZVJlbmRlclRhcmdldEluZm8tPnRleHR1
cmUgICAgICAgICAgID0gdGV4dHVyZTsKICAgICBtVGV4dHVyZVJlbmRlclRhcmdldEluZm8tPmlt
cGxpY2l0TVNUZXh0dXJlID0gaW1wbGljaXRNU1RleHR1cmU7Ci0gICAgbVRleHR1cmVSZW5kZXJU
YXJnZXRJbmZvLT5sZXZlbCAgICAgICAgPSBsZXZlbDsKLSAgICBtVGV4dHVyZVJlbmRlclRhcmdl
dEluZm8tPnNsaWNlT3JEZXB0aCAgICAgICAgPSBsYXllcjsKKyAgICBtVGV4dHVyZVJlbmRlclRh
cmdldEluZm8tPmxldmVsICAgICAgICAgICAgID0gbGV2ZWw7CisgICAgbVRleHR1cmVSZW5kZXJU
YXJnZXRJbmZvLT5zbGljZU9yRGVwdGggICAgICA9IGxheWVyOworICAgIG1UZXh0dXJlUmVuZGVy
VGFyZ2V0SW5mby0+YmxlbmRhYmxlICAgICAgICAgPSAgZm9ybWF0LmdldENhcHMoKS5ibGVuZGFi
bGU7CiAgICAgbUZvcm1hdCAgICAgICAgICAgID0gJmZvcm1hdDsKIH0KIApAQCAtNjgsNiArNjks
NyBAQCB2b2lkIFJlbmRlclRhcmdldE10bDo6cmVzZXQoKQogICAgIG1UZXh0dXJlUmVuZGVyVGFy
Z2V0SW5mby0+aW1wbGljaXRNU1RleHR1cmUucmVzZXQoKTsKICAgICBtVGV4dHVyZVJlbmRlclRh
cmdldEluZm8tPmxldmVsICAgICAgICA9IG10bDo6a1plcm9OYXRpdmVNaXBMZXZlbDsKICAgICBt
VGV4dHVyZVJlbmRlclRhcmdldEluZm8tPnNsaWNlT3JEZXB0aCA9IDA7CisgICAgbVRleHR1cmVS
ZW5kZXJUYXJnZXRJbmZvLT5ibGVuZGFibGUgICAgPSBmYWxzZTsKICAgICBtRm9ybWF0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TaGFkZXJN
dGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvU2hhZGVyTXRsLm1tCmluZGV4IGFkMDFkYmY0NWZiOGY0NzkwNGJmZGIxZDRiODQ2ODY2ZmVi
OTg4YTYuLjc2MmY2N2Q2MDNlNWFkN2EyNzlhY2Y4OWEwODc0NzkxOTBiYWJiMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9T
aGFkZXJNdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL1NoYWRlck10bC5tbQpAQCAtMTMyLDYgKzEzMiwxMSBAQCBzdGQ6OnNoYXJl
ZF9wdHI8V2FpdGFibGVDb21waWxlRXZlbnQ+IFNoYWRlck10bDo6Y29tcGlsZShjb25zdCBnbDo6
Q29udGV4dCAqY29udAogICAgIGNvbXBpbGVPcHRpb25zIHw9IFNIX0NMQU1QX0ZSQUdfREVQVEg7
CiAjZW5kaWYKIAorICAgIGlmIChjb250ZXh0TXRsLT5nZXREaXNwbGF5KCktPmdldEZlYXR1cmVz
KCkucmV3cml0ZVJvd01ham9yTWF0cmljZXMuZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGNvbXBp
bGVPcHRpb25zIHw9IFNIX1JFV1JJVEVfUk9XX01BSk9SX01BVFJJQ0VTOworICAgIH0KKwogICAg
IHJldHVybiBjb21waWxlSW1wbE10bChjb250ZXh0LCBjb21waWxlckluc3RhbmNlLCBnZXRTdGF0
ZSgpLmdldFNvdXJjZSgpLCBjb21waWxlT3B0aW9ucyB8IG9wdGlvbnMpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
U3VyZmFjZU10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1tCmluZGV4IGQxMzEzOTAwZGFlNjNlNWY0MjA0NWFjOGJk
ODFhZTVhY2U0M2Y3ZGMuLjI3ZWY1MDlmZjg2NWM2NDdhZjMxZGNlNDJlZmM0MGI3MTQzMjQyYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9TdXJmYWNlTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1tCkBAIC02MDcsMTUgKzYwNywxNSBA
QCBlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VNdGw6OmluaXRpYWxpemUoY29uc3QgZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KQogICAgICAgICBtTWV0YWxMYXllci5nZXQoKS5hdXRvcmVzaXppbmdNYXNr
ID0ga0NBTGF5ZXJXaWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFibGU7CiAjZW5kaWYK
IAotICAgICAgICAvLyBlbnN1cmUgZHJhd2FibGVTaXplIGlzIHNldCB0byBjb3JyZWN0IHZhbHVl
OgotICAgICAgICBtTWV0YWxMYXllci5nZXQoKS5kcmF3YWJsZVNpemUgPSBtQ3VycmVudEtub3du
RHJhd2FibGVTaXplID0gY2FsY0V4cGVjdGVkRHJhd2FibGVTaXplKCk7Ci0KICAgICAgICAgaWYg
KG1NZXRhbExheWVyLmdldCgpICE9IG1MYXllcikKICAgICAgICAgewogICAgICAgICAgICAgbU1l
dGFsTGF5ZXIuZ2V0KCkuY29udGVudHNTY2FsZSA9IG1MYXllci5jb250ZW50c1NjYWxlOwogCiAg
ICAgICAgICAgICBbbUxheWVyIGFkZFN1YmxheWVyOm1NZXRhbExheWVyLmdldCgpXTsKICAgICAg
ICAgfQorCisgICAgICAgIC8vIGVuc3VyZSBkcmF3YWJsZVNpemUgaXMgc2V0IHRvIGNvcnJlY3Qg
dmFsdWU6CisgICAgICAgIG1NZXRhbExheWVyLmdldCgpLmRyYXdhYmxlU2l6ZSA9IG1DdXJyZW50
S25vd25EcmF3YWJsZVNpemUgPSBjYWxjRXhwZWN0ZWREcmF3YWJsZVNpemUoKTsKICAgICB9CiAK
ICAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRs
Lm1tCmluZGV4IDRmZDliMWZkZDQyMTYyMGY1MzIyZWQxMmM0ZDg2MjE4M2U3Njk5YmIuLmYyNWQ2
OGFlOWI1M2ZiM2IxNzk3Njc5YzVkNDBjZDkxZTg4OTk2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRsLm1t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9UZXh0dXJlTXRsLm1tCkBAIC02NjQsOSArNjY0LDEyIEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVy
ZU10bDo6ZW5zdXJlU2FtcGxlclN0YXRlQ3JlYXRlZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkKIAogICAgICAgICBzYW1wbGVyRGVzYy5tYXhBbmlzb3Ryb3B5ID0gMTsKICAgICB9Ci0gICAg
aWYobVN0YXRlLmdldFR5cGUoKSA9PSBnbDo6VGV4dHVyZVR5cGU6OlJlY3RhbmdsZSkKKyAgICBp
ZiAobVN0YXRlLmdldFR5cGUoKSA9PSBnbDo6VGV4dHVyZVR5cGU6OlJlY3RhbmdsZSkKICAgICB7
CiAgICAgICAgIHNhbXBsZXJEZXNjLm5vcm1hbGl6ZWRDb29yZGluYXRlcyA9IE5POworICAgICAg
ICBzYW1wbGVyRGVzYy5yQWRkcmVzc01vZGUgICAgICAgICAgPSBNVExTYW1wbGVyQWRkcmVzc01v
ZGVDbGFtcFRvRWRnZTsKKyAgICAgICAgc2FtcGxlckRlc2Muc0FkZHJlc3NNb2RlICAgICAgICAg
ID0gTVRMU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0VkZ2U7CisgICAgICAgIHNhbXBsZXJEZXNj
LnRBZGRyZXNzTW9kZSAgICAgICAgICA9IE1UTFNhbXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdl
OwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTYxMCw3ICsxNjEzLDcgQEAgYW5nbGU6OlJl
c3VsdCBUZXh0dXJlTXRsOjpzZXRQZXJTbGljZVN1YkltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IG10bDo6VGV4dHVyZVJlZiAmaW1hZ2UpCiB7CiAgICAgLy8gSWYgc291cmNlIHBpeGVscyBh
cmUgbHVtaW5hbmNlIG9yIFJHQjgsIHdlIG5lZWQgdG8gY29udmVydCB0aGVtIHRvIFJHQkEKLSAg
IAorCiAgICAgaWYgKG1Gb3JtYXQubmVlZENvbnZlcnNpb24ocGl4ZWxzQW5nbGVGb3JtYXQuaWQp
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRBbmRTZXRQZXJTbGljZVN1YkltYWdlKGNv
bnRleHQsIHNsaWNlLCBtdGxBcmVhLCBpbnRlcm5hbEZvcm1hdCwgdHlwZSwKQEAgLTE4ODAsNyAr
MTg4Myw3IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZU10bDo6aW5pdGlhbGl6ZUNvbnRlbnRzKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIGNvbnN0IG10bDo6VGV4dHVyZVJlZiAmaW1h
Z2UgPSBpbWFnZURlZi5pbWFnZTsKICAgICBjb25zdCBtdGw6OkZvcm1hdCAmZm9ybWF0ICAgID0g
Y29udGV4dE10bC0+Z2V0UGl4ZWxGb3JtYXQoaW1hZ2VEZWYuZm9ybWF0SUQpOwogICAgIC8vIEZv
ciBUZXh0dXJlJ3MgaW1hZ2UgZGVmaW5pdGlvbiwgd2UgYWx3YXlzIHVzZSB6ZXJvIG1pcCBsZXZl
bC4KLSAgICBpZihmb3JtYXQubWV0YWxGb3JtYXQgPT0gTVRMUGl4ZWxGb3JtYXRJbnZhbGlkKQor
ICAgIGlmIChmb3JtYXQubWV0YWxGb3JtYXQgPT0gTVRMUGl4ZWxGb3JtYXRJbnZhbGlkKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Ry
YW5zZm9ybUZlZWRiYWNrTXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL1RyYW5zZm9ybUZlZWRiYWNrTXRsLm1tCmluZGV4IGRlN2E5MDkz
NTdiNjkyNGY5ZDBlYjViYzAyZDIyN2UyZjYzNDIwNDIuLmFjZjljY2FhMGY4YTZlMWU4ZDA4OTZi
NjhmMDQzNWExZWY0YWNlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9UcmFuc2Zvcm1GZWVkYmFja010bC5tbQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVHJhbnNm
b3JtRmVlZGJhY2tNdGwubW0KQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvUHJvZ3JhbU10bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1F1
ZXJ5TXRsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbnN0YW50
cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaCIKIAog
I2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0ZXhBcnJheU10bC5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0
ZXhBcnJheU10bC5tbQppbmRleCBkNjQ1OGIyMWFiYTA2MGM1YmNlZmZmZDY1MDc5YjQ1YmE3NGRk
MWZkLi45NDYyN2I4MTJjODAxY2UyYjVjNmNmNjFjM2RiYmZkM2UxMzJiM2EzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVmVy
dGV4QXJyYXlNdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tCkBAIC03MjYsNyArNzI2LDYgQEAgYW5n
bGU6OlJlc3VsdCBWZXJ0ZXhBcnJheU10bDo6Z2V0SW5kZXhCdWZmZXIoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICBCdWZmZXJNdGwgKmJ1ZmZlck10bCA9IG10bDo6R2V0
SW1wbChnbEVsZW1lbnRBcnJheUJ1ZmZlcik7CiAgICAgICAgICAgICAqaWR4QnVmZmVyT3V0ICAg
ICAgICA9IGJ1ZmZlck10bC0+Z2V0Q3VycmVudEJ1ZmZlcigpOwogICAgICAgICAgICAgKmlkeEJ1
ZmZlck9mZnNldE91dCAgPSBjb252ZXJ0ZWRPZmZzZXQ7Ci0gICAgICAgICAgICAKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmgKaW5kZXggMDY1MTQ2NTEx
YmQ1MWY0OWFjNTgxYzI1M2Q3ZTc0MjZjYmRlYWRmMC4uY2ZmNWNkZjlhNGNlMWFhMDc5ZTIzMzU0
YTM0OGQyZTE5MjZkMTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oCkBAIC0x
MzEsNiArMTMxLDcgQEAgY29uc3RleHByIE1UTEJsaXRPcHRpb24ga0JsaXRPcHRpb25Sb3dMaW5l
YXJQVlJUQyAgICAgICAgICA9IE1UTEJsaXRPcHRpb25Sb3dMaW4KICNlbmRpZgogCiAjaWYgZGVm
aW5lZChfX0lQSE9ORV8xM18wKSB8fCBkZWZpbmVkKF9fTUFDXzEwXzE1KQorIyAgICBkZWZpbmUg
QU5HTEVfTVRMX1NXSVpaTEVfQVZBSUxBQkxFIDEKIHVzaW5nIFRleHR1cmVTd2l6emxlQ2hhbm5l
bHMgICAgICAgICAgICAgICAgICAgPSBNVExUZXh0dXJlU3dpenpsZUNoYW5uZWxzOwogdXNpbmcg
UmVuZGVyU3RhZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IE1UTFJlbmRlclN0YWdl
czsKIGNvbnN0ZXhwciBNVExSZW5kZXJTdGFnZXMga1JlbmRlclN0YWdlVmVydGV4ICAgPSBNVExS
ZW5kZXJTdGFnZVZlcnRleDsKQEAgLTI5Niw4ICsyOTcsMTAgQEAgdXNpbmcgQXV0b09iakNPYmog
PSBBdXRvT2JqQ1B0cjxUICo+OwogLy8gTk9URTogU2hhcmVkRXZlbnQgaXMgb25seSBkZWNsYXJl
ZCBvbiBpT1MgMTIuMCsgb3IgbWFjIDEwLjE0KwogI2lmIGRlZmluZWQoX19JUEhPTkVfMTJfMCkg
fHwgZGVmaW5lZChfX01BQ18xMF8xNCkKIHVzaW5nIFNoYXJlZEV2ZW50UmVmID0gQXV0b09iakNQ
dHI8aWQ8TVRMU2hhcmVkRXZlbnQ+PjsKKyNkZWZpbmUgQU5HTEVfTVRMX0VWRU5UX0FWQUlMQUJM
RSAxCiAjZWxzZQogdXNpbmcgU2hhcmVkRXZlbnRSZWYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEF1dG9PYmpDT2JqPE5TT2JqZWN0PjsKKyNkZWZpbmUgQU5HTEVfTVRM
X0VWRU5UX0FWQUlMQUJMRSAwCiAjZW5kaWYKIAogLy8gVGhlIG5hdGl2ZSBpbWFnZSBpbmRleCB1
c2VkIGJ5IE1ldGFsIGJhY2stZW5kLCAgdGhlIGltYWdlIGluZGV4IHVzZXMgbmF0aXZlIG1pcG1h
cCBsZXZlbCBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbnN0YW50cy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb25zdGFudHMuaAppbmRl
eCAzYjRjYjIzZmZiZmFhOWI1ODhlYzdjYjg1N2QzMDI5MmM2MzlmNjc4Li45NjA3ZmQyNDM5OGUz
OTBhZjQ3NDZiZjhjNjk4MzhkZjRkMmQ2M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbnN0YW50cy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxf
Y29uc3RhbnRzLmgKQEAgLTMsOSArMyw4IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KLS8vIG10bF9jb21tb24uaDoKLS8vICAgICAgRGVjbGFy
ZXMgbnVtZXJpY2FsIGNvbnN0YW50cyB1c2VkIGluIE1ldGFsLgotLy8gICAgICBlcnJvciBoYW5k
bGVyIGJhc2UgY2xhc3MuCisvLyBtdGxfY29uc3RuYXRzLmg6CisvLyAgICAgIERlY2xhcmVzIG51
bWVyaWNhbCBhbmQgc3RyaW5nIGNvbnN0YW50cyB1c2VkIGluIE1ldGFsCiAvLwogCiAjaWZuZGVm
IExJQkFOR0xFX1JFTkRFUkVSX01FVEFMX01UTF9DT05TVEFOVFNfSApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3Jt
YXRfbWFwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvbXRsX2Zvcm1hdF9tYXAuanNvbgppbmRleCA3MTY5Njc1NTA0NjhmM2JiOWNhOGNm
OWQ0Mjc5M2JmMWVjYzBjNjg5Li44M2E3MjkxOTVjODA2YzQ3ZjQzZDk2ZTBkOTFlMDFkYjc3YTgy
ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF9tYXAuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF9tYXAuanNvbgpAQCAt
MjEzLDggKzIxMyw4IEBACiAgICAgICAgICAib3ZlcnJpZGVfc2ltIjogewogICAgICAgICAgICAg
IlI1RzZCNV9VTk9STSI6ICJSOEc4QjhBOF9VTk9STSIsCiAgICAgICAgICAgICAiUjVHNUI1QTFf
VU5PUk0iOiAiUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAgICAgIlI0RzRCNEE0X1VOT1JNIjog
IlI4RzhCOEE4X1VOT1JNIiwKLSAgICAgICAgICAgICJEMjRfVU5PUk1fUzhfVUlOVCI6ICJEMzJf
RkxPQVRfUzhYMjRfVUlOVCIKKyAgICAgICAgICAgICJEMjRfVU5PUk1fUzhfVUlOVCI6ICJEMzJf
RkxPQVRfUzhYMjRfVUlOVCIsCisgICAgICAgICAgICAiUjRHNEI0QTRfVU5PUk0iOiAiUjhHOEI4
QThfVU5PUk0iCiAgICAgICAgIH0sCiAgICAgICAgICJvdmVycmlkZV9tYWMiOiB7CiAgICAgICAg
ICAgICAiUjVHNkI1X1VOT1JNIjogIlI4RzhCOEE4X1VOT1JNIiwKQEAgLTI0MSw3ICsyNDEsNiBA
QAogICAgICAgICAgICAgIkVBQ19SMTFHMTFfU05PUk1fQkxPQ0siOiAiUjE2RzE2X1NOT1JNIgog
ICAgICAgICB9LAogICAgICAgICAiZmFsbGJhY2tzX21hYyI6IHsKLSAgICAgICAgICAgICJCOEc4
UjhBOF9VTk9STSI6ICJSOEc4QjhBOF9VTk9STSIsCiAgICAgICAgICAgICAiRDI0X1VOT1JNX1M4
X1VJTlQiOiAiRDMyX0ZMT0FUX1M4WDI0X1VJTlQiCiAgICAgICAgIH0sCiAgICAgICAgICJmYWxs
YmFja3NfaW9zIjogewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFibGVfYXV0b2dlbi5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0
X3RhYmxlX2F1dG9nZW4ubW0KaW5kZXggN2JhZjg0YzFlYzFkYjE3NzA2OGIxZTQxNWJjYzE2MjRi
NWY4ZTk5Mi4uOTFmOTllNDFhZTcyZGFkNDM3NjZlZDBjNDRhYjVmYzIzZGRlODYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L210bF9mb3JtYXRfdGFibGVfYXV0b2dlbi5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLm1t
CkBAIC00NSwyNyArNDUsNiBAQCB2b2lkIEZvcm1hdDo6aW5pdChjb25zdCBEaXNwbGF5TXRsICpk
aXNwbGF5LCBhbmdsZTo6Rm9ybWF0SUQgaW50ZW5kZWRGb3JtYXRJZF8pCiAgICAgICAgICAgICB0
aGlzLT5zd2l6emxlZCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAKLSNpZiBUQVJHRVRf
T1NfT1NYIHx8IFRBUkdFVF9PU19NQUNDQVRBTFlTVAotICAgICAgICBjYXNlIGFuZ2xlOjpGb3Jt
YXRJRDo6QjhHOFI4QThfVU5PUk06Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtZXRh
bERldmljZS5kZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZCAmJgotICAgICAgICAg
ICAgICAgIWRpc3BsYXktPmdldEZlYXR1cmVzKCkuZm9yY2VEMjRTOEFzVW5zdXBwb3J0ZWQuZW5h
YmxlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5tZXRhbEZvcm1hdCA9
IE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybTsKLSAgICAgICAgICAgICAgICB0aGlzLT5hY3R1YWxG
b3JtYXRJZCA9IGFuZ2xlOjpGb3JtYXRJRDo6QjhHOFI4QThfVU5PUk07Ci0gICAgICAgICAgICAg
ICAgdGhpcy0+aW5pdEZ1bmN0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5tZXRhbEZvcm1h
dCA9IE1UTFBpeGVsRm9ybWF0UkdCQThVbm9ybTsKLSAgICAgICAgICAgICAgICB0aGlzLT5hY3R1
YWxGb3JtYXRJZCA9IGFuZ2xlOjpGb3JtYXRJRDo6UjhHOEI4QThfVU5PUk07Ci0gICAgICAgICAg
ICAgICAgdGhpcy0+aW5pdEZ1bmN0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdGhpcy0+c3dpenpsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0j
ZWxzZSAgLy8gVEFSR0VUX09TX09TWCB8fCBUQVJHRVRfT1NfTUFDQ0FUQUxZU1QKICAgICAgICAg
Y2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkI4RzhSOEE4X1VOT1JNOgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICB0aGlzLT5tZXRhbEZvcm1hdCA9IE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybTsKQEAg
LTc1LDcgKzU0LDYgQEAgdm9pZCBGb3JtYXQ6OmluaXQoY29uc3QgRGlzcGxheU10bCAqZGlzcGxh
eSwgYW5nbGU6OkZvcm1hdElEIGludGVuZGVkRm9ybWF0SWRfKQogICAgICAgICAgICAgdGhpcy0+
c3dpenpsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogCi0jZW5kaWYgIC8vIFRBUkdF
VF9PU19PU1ggfHwgVEFSR0VUX09TX01BQ0NBVEFMWVNUCiAgICAgICAgIGNhc2UgYW5nbGU6OkZv
cm1hdElEOjpCOEc4UjhBOF9VTk9STV9TUkdCOgogICAgICAgICAgICAgCiAgICAgICAgICAgICB0
aGlzLT5tZXRhbEZvcm1hdCA9IE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCOwpAQCAtMTM3
OCwxNSArMTM1Niw2IEBAIHZvaWQgRm9ybWF0Ojppbml0KGNvbnN0IERpc3BsYXlNdGwgKmRpc3Bs
YXksIGFuZ2xlOjpGb3JtYXRJRCBpbnRlbmRlZEZvcm1hdElkXykKICAgICAgICAgICAgIHRoaXMt
PnN3aXp6bGVkID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIGFu
Z2xlOjpGb3JtYXRJRDo6RDI0X1VOT1JNX1M4X1VJTlQ6Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIHRoaXMtPm1ldGFsRm9ybWF0ID0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNp
bDg7Ci0gICAgICAgICAgICB0aGlzLT5hY3R1YWxGb3JtYXRJZCA9IGFuZ2xlOjpGb3JtYXRJRDo6
RDMyX0ZMT0FUX1M4WDI0X1VJTlQ7Ci0gICAgICAgICAgICB0aGlzLT5pbml0RnVuY3Rpb24gPSBu
dWxscHRyOwotCi0gICAgICAgICAgICB0aGlzLT5zd2l6emxlZCA9IGZhbHNlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OlI0RzRCNEE0X1VOT1JN
OgogICAgICAgICAgICAgCiAgICAgICAgICAgICB0aGlzLT5tZXRhbEZvcm1hdCA9IE1UTFBpeGVs
Rm9ybWF0UkdCQThVbm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X3V0aWxzLm1tIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdXRp
bHMubW0KaW5kZXggNDE2YWQ1YzdmZjE0MTY4ZTA5NzhiYmM3YjdlMWM4ODY5ZjZlN2EzZi4uMjkx
OWYyNzhlNjMxZWExM2ViZTY1ZmM2NmIwMTljOGIxYmY4ZmNkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRf
dXRpbHMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9mb3JtYXRfdXRpbHMubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBhbmdsZTo6
UmVzdWx0IEZvcm1hdFRhYmxlOjppbml0aWFsaXplKGNvbnN0IERpc3BsYXlNdGwgKmRpc3BsYXkp
CiAgICAgbU1heFNhbXBsZXMgPSAwOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBuYXRpdmUgZm9ybWF0
IGNhcHMKLSAgICBpbml0TmF0aXZlRm9ybWF0Q2FwcyhkaXNwbGF5KTsKKyAgICAgaW5pdE5hdGl2
ZUZvcm1hdENhcHMoZGlzcGxheSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuZ2xl
OjprTnVtQU5HTEVGb3JtYXRzOyArK2kpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91
dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL210bF9nbHNsYW5nX210bF91dGlscy5oCmluZGV4IGRiYzEwOTk3MzhkOWM1NjgyMjExNjdl
MmUxNWM2NDU3MDExMjIzYTkuLmI2ZTJlY2MzODY4MmRjZTk4NDdhZTNjYzIzNWE3M2MwNzVhNjNk
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxz
LmgKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9tdGxfY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvbXRsX2NvbW1vbi5oIgogCiBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFu
Z19tdGxfdXRpbHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxzLm1tCmluZGV4IDFmOWFkM2YxNmQzNWNl
NDJhNTIyNGNlYjY1MTRmZGRhNTRkYjAxNzYuLmNlMGEzYmUzODViYWEwZWQzNGZmYzU1MGViZGE1
NmJiMzczYjU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMubW0KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5n
X210bF91dGlscy5tbQpAQCAtMTEsOSArMTEsMzAgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9TaGFkZXJNdGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgi
Ci0KIG5hbWVzcGFjZSByeAogeworbmFtZXNwYWNlCit7CisgICAgY29uc3RleHByIGNoYXIga1hm
YkJpbmRpbmdzTWFya2VyW10gICAgPSAiQEBYRkItQmluZGluZ3NAQCI7CisgICAgY29uc3RleHBy
IGNoYXIga1hmYk91dE1hcmtlcltdICAgICA9ICJBTkdMRV9AQFhGQi1PVVRAQCI7CisKK3RlbXBs
YXRlIDxzaXplX3QgTj4KK2NvbnN0ZXhwciBzaXplX3QgQ29uc3RTdHJMZW4oY29uc3QgY2hhciAo
JilbTl0pCit7CisgICAgc3RhdGljX2Fzc2VydChOID4gMCwgIkMrKyBzaG91bGRuJ3QgYWxsb3cg
TiB0byBiZSB6ZXJvIik7CisKKyAgICAvLyBUaGUgbGVuZ3RoIG9mIGEgc3RyaW5nIGRlZmluZWQg
YXMgYSBjaGFyIGFycmF5IGlzIHRoZSBzaXplIG9mIHRoZSBhcnJheSBtaW51cyAxICh0aGUKKyAg
ICAvLyB0ZXJtaW5hdGluZyAnXDAnKS4KKyAgICByZXR1cm4gTiAtIDE7Cit9CisKK3N0ZDo6c3Ry
aW5nIEdldFhmYkJ1ZmZlck5hbWVNdGwoY29uc3QgdWludDMyX3QgYnVmZmVySW5kZXgpCit7Cisg
ICAgcmV0dXJuICJ4ZmJCdWZmZXIiICsgU3RyKGJ1ZmZlckluZGV4KTsKK30KKworfSAgIC8vCisK
IG5hbWVzcGFjZSBtdGwKIHsKIApAQCAtMTM2LDE2ICsxNTcsNiBAQCBzaDo6VHJhbnNsYXRvck1l
dGFsUmVmbGVjdGlvbiAqZ2V0UmVmbGVjdGlvbkZyb21TaGFkZXIoZ2w6OlNoYWRlciAqc2hhZGVy
KQogICAgIHJldHVybiBzaGFkZXJJbnN0YW5jZS0+Z2V0VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlv
bigpOwogfQogCi1zaDo6VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbiAqZ2V0UmVmbGVjdGlvbkZy
b21Db21waWxlcihnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlclR5cGUgdHlwZSkK
LXsKLSAgICBhdXRvIGNvbXBpbGVySW5zdGFuY2UgICAgICA9IGNvbXBpbGVyLT5nZXRJbnN0YW5j
ZSh0eXBlKTsKLSAgICBzaDo6VFNoSGFuZGxlQmFzZSAqYmFzZSAgICA9IHN0YXRpY19jYXN0PHNo
OjpUU2hIYW5kbGVCYXNlICo+KGNvbXBpbGVySW5zdGFuY2UuZ2V0SGFuZGxlKCkpOwotICAgIGF1
dG8gdHJhbnNsYXRvck1ldGFsRGlyZWN0ID0gYmFzZS0+Z2V0QXNUcmFuc2xhdG9yTWV0YWxEaXJl
Y3QoKTsKLSAgICBjb21waWxlci0+cHV0SW5zdGFuY2Uoc3RkOjptb3ZlKGNvbXBpbGVySW5zdGFu
Y2UpKTsKLSAgICByZXR1cm4gdHJhbnNsYXRvck1ldGFsRGlyZWN0LT5nZXRUcmFuc2xhdG9yTWV0
YWxSZWZsZWN0aW9uKCk7Ci19Ci0KIHN0ZDo6c3RyaW5nIHVwZGF0ZVNoYWRlckF0dHJpYnV0ZXMo
c3RkOjpzdHJpbmcgc2hhZGVyU291cmNlSW4sIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dy
YW1TdGF0ZSkKIHsKICAgICAvLyBCdWlsZCBzdHJpbmcgdG8gYXR0cmliIG1hcC4KQEAgLTE2MCwx
OCArMTcxLDE3IEBAIHN0ZDo6c3RyaW5nIHVwZGF0ZVNoYWRlckF0dHJpYnV0ZXMoc3RkOjpzdHJp
bmcgc2hhZGVyU291cmNlSW4sIGNvbnN0IGdsOjpQcm9ncmFtCiAgICAgICAgICAgICBmb3IoaW50
IGkgPSAwOyBpIDwgcmVnczsgaSsrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0
cmVhbS5zdHIoIiIpOwotICAgICAgICAgICAgICAgIHN0cmVhbSA8PCBhdHRyaWJ1dGUubmFtZSA8
PCAiXyIgPDwgc3RkOjp0b19zdHJpbmcoaSkgPDwga1VuYXNzaWduZWRBdHRyaWJ1dGVTdHJpbmc7
CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8IGF0dHJpYnV0ZS5uYW1lIDw8ICJfIiA8PCBzdGQ6
OnRvX3N0cmluZyhpKSA8PCBzaDo6a1VuYXNzaWduZWRBdHRyaWJ1dGVTdHJpbmc7CiAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlQmluZGluZ3MuaW5zZXJ0KHtzdGQ6OnN0cmluZyhzdHJlYW0uc3Ry
KCkpLCBpK2F0dHJpYnV0ZS5sb2NhdGlvbn0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgc3RyZWFtLnN0cigiIik7Ci0gICAg
ICAgICAgICBzdHJlYW0gPDwgYXR0cmlidXRlLm5hbWUgPDwga1VuYXNzaWduZWRBdHRyaWJ1dGVT
dHJpbmc7CisgICAgICAgICAgICBzdHJlYW0gPDwgYXR0cmlidXRlLm5hbWUgPDwgc2g6OmtVbmFz
c2lnbmVkQXR0cmlidXRlU3RyaW5nOwogICAgICAgICAgICAgYXR0cmlidXRlQmluZGluZ3MuaW5z
ZXJ0KHtzdGQ6OnN0cmluZyhzdHJlYW0uc3RyKCkpLGF0dHJpYnV0ZS5sb2NhdGlvbn0pOwogICAg
ICAgICB9CiAgICAgfQotCiAgICAgLy9SZXdyaXRlIGF0dHJpYnV0ZXMKICAgICBzdGQ6OnN0cmlu
ZyBvdXRwdXRTb3VyY2UgPSBzaGFkZXJTb3VyY2VJbjsKICAgICBmb3IoYXV0byBpdCA9IGF0dHJp
YnV0ZUJpbmRpbmdzLmJlZ2luKCk7IGl0IT1hdHRyaWJ1dGVCaW5kaW5ncy5lbmQoKTsgKytpdCkK
QEAgLTE4MSwxMiArMTkxLDE2OSBAQCBzdGQ6OnN0cmluZyB1cGRhdGVTaGFkZXJBdHRyaWJ1dGVz
KHN0ZDo6c3RyaW5nIHNoYWRlclNvdXJjZUluLCBjb25zdCBnbDo6UHJvZ3JhbQogICAgICAgICB7
CiAgICAgICAgICAgICBzdHJlYW0uc3RyKCIiKTsKICAgICAgICAgICAgIHN0cmVhbSA8PCAiW1th
dHRyaWJ1dGUoIiA8PCBpdC0+c2Vjb25kIDw8ICIpXV0iOwotICAgICAgICAgICAgb3V0cHV0U291
cmNlID0gb3V0cHV0U291cmNlLnJlcGxhY2UoYXR0cmliRm91bmQraXQtPmZpcnN0Lmxlbmd0aCgp
LXN0cmxlbihrVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZyksIHN0cmxlbihrVW5hc3NpZ25lZEF0
dHJpYnV0ZVN0cmluZyksIHN0cmVhbS5zdHIoKSk7CisgICAgICAgICAgICBvdXRwdXRTb3VyY2Ug
PSBvdXRwdXRTb3VyY2UucmVwbGFjZShhdHRyaWJGb3VuZCtpdC0+Zmlyc3QubGVuZ3RoKCktc3Ry
bGVuKHNoOjprVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZyksIHN0cmxlbihzaDo6a1VuYXNzaWdu
ZWRBdHRyaWJ1dGVTdHJpbmcpLCBzdHJlYW0uc3RyKCkpOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiBvdXRwdXRTb3VyY2U7CiB9CiAKK3N0ZDo6c3RyaW5nIFN1YnN0aXR1dGVUcmFuc2Zv
cm1GZWVkYmFja01hcmtlcnMoY29uc3Qgc3RkOjpzdHJpbmcgJm9yaWdpbmFsU291cmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmeGZiQmluZGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ4ZmJPdXQpCit7CisgICAgY29uc3Qgc2l6ZV90
IHhmYkJpbmRpbmdzTWFya2VyU3RhcnQgPSBvcmlnaW5hbFNvdXJjZS5maW5kKGtYZmJCaW5kaW5n
c01hcmtlcik7CisgICAgYm9vbCBoYXNCaW5kaW5nc01hcmtlciA9IHhmYkJpbmRpbmdzTWFya2Vy
U3RhcnQgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisgICAgY29uc3Qgc2l6ZV90IHhmYkJpbmRpbmdz
TWFya2VyRW5kID0geGZiQmluZGluZ3NNYXJrZXJTdGFydCArIENvbnN0U3RyTGVuKGtYZmJCaW5k
aW5nc01hcmtlcik7CisKKyAgICBjb25zdCBzaXplX3QgeGZiT3V0TWFya2VyU3RhcnQgPSBvcmln
aW5hbFNvdXJjZS5maW5kKGtYZmJPdXRNYXJrZXIsIHhmYkJpbmRpbmdzTWFya2VyU3RhcnQpOwor
ICAgIGJvb2wgaGFzT3V0TWFya2VyID0geGZiT3V0TWFya2VyU3RhcnQgIT0gc3RkOjpzdHJpbmc6
Om5wb3M7CisgICAgY29uc3Qgc2l6ZV90IHhmYk91dE1hcmtlckVuZCA9IHhmYk91dE1hcmtlclN0
YXJ0ICsgQ29uc3RTdHJMZW4oa1hmYk91dE1hcmtlcik7CisKKyAgICAvLyBUaGUgc2hhZGVyIGlz
IHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAvLworICAgIC8vIC4ucGFydDEuLgorICAgIC8vIEBA
IFhGQi1CSU5ESU5HUyBAQAorICAgIC8vIC4ucGFydDIuLgorICAgIC8vIEBAIFhGQi1PVVQgQEA7
CisgICAgLy8gLi5wYXJ0My4uCisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3QgdGhlIHN0cmluZyBi
eSBjb25jYXRlbmF0aW5nIHRoZXNlIGZpdmUgcGllY2VzLCByZXBsYWNpbmcgdGhlIG1hcmtlcnMg
d2l0aCB0aGUgZ2l2ZW4KKyAgICAvLyB2YWx1ZXMuCisgICAgc3RkOjpzdHJpbmcgcmVzdWx0Owor
ICAgIGlmKGhhc0JpbmRpbmdzTWFya2VyICYmIGhhc091dE1hcmtlcikKKyAgICB7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoJm9yaWdpbmFsU291cmNlWzBdLCAmb3JpZ2luYWxTb3VyY2VbeGZiQmlu
ZGluZ3NNYXJrZXJTdGFydF0pOworICAgICAgICByZXN1bHQuYXBwZW5kKHhmYkJpbmRpbmdzKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgmb3JpZ2luYWxTb3VyY2VbeGZiQmluZGluZ3NNYXJrZXJF
bmRdLCAmb3JpZ2luYWxTb3VyY2VbeGZiT3V0TWFya2VyU3RhcnRdKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCh4ZmJPdXQpOworICAgICAgICByZXN1bHQuYXBwZW5kKCZvcmlnaW5hbFNvdXJjZVt4
ZmJPdXRNYXJrZXJFbmRdLCAmb3JpZ2luYWxTb3VyY2Vbb3JpZ2luYWxTb3VyY2Uuc2l6ZSgpXSk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5hbFNvdXJj
ZTsKK30KKworc3RkOjpzdHJpbmcgR2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdPdXRw
dXQoY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyAmdmFyeWluZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpVbmlm
b3JtVHlwZUluZm8gJmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc3RyaWRlQnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmJ1ZmZlckluZGV4KQoreworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSByZXN1bHQ7CisKKyAgICBB
U1NFUlQoc3RyaWRlQnl0ZXMgJSA0ID09IDApOworICAgIHNpemVfdCBzdHJpZGUgPSBzdHJpZGVC
eXRlcyAvIDQ7CisKKyAgICBjb25zdCBzaXplX3QgYXJyYXlJbmRleFN0YXJ0ID0gdmFyeWluZy5h
cnJheUluZGV4ID09IEdMX0lOVkFMSURfSU5ERVggPyAwIDogdmFyeWluZy5hcnJheUluZGV4Owor
ICAgIGNvbnN0IHNpemVfdCBhcnJheUluZGV4RW5kICAgPSBhcnJheUluZGV4U3RhcnQgKyB2YXJ5
aW5nLnNpemUoKTsKKworICAgIGZvciAoc2l6ZV90IGFycmF5SW5kZXggPSBhcnJheUluZGV4U3Rh
cnQ7IGFycmF5SW5kZXggPCBhcnJheUluZGV4RW5kOyArK2FycmF5SW5kZXgpCisgICAgeworICAg
ICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBpbmZvLmNvbHVtbkNvdW50OyArK2NvbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaW5mby5yb3dDb3Vu
dDsgKytyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0IDw8ICIgICAg
ICAgICI7CisgICAgICAgICAgICAgICAgcmVzdWx0IDw8ICJBTkdMRV8iIDw8ICJ4ZmJCdWZmZXIi
IDw8IGJ1ZmZlckluZGV4IDw8ICJbIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAiQU5HTEVf
IiA8PCBzdGQ6OnN0cmluZyhzaDo6a1VuaWZvcm1zVmFyKTw8ICIuQU5HTEVfeGZiQnVmZmVyT2Zm
c2V0c1siIDw8IGJ1ZmZlckluZGV4CisgICAgICAgICAgICAgICAgICAgICAgIDw8ICJdICsgKGds
X1ZlcnRleElEICsgQU5HTEVfaW5zdGFuY2VJZE1vZCAqICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIkFOR0xFXyIgPDwgc3RkOjpzdHJpbmcoc2g6OmtVbmlmb3Jtc1ZhcikgPDwgIi5BTkdM
RV94ZmJWZXJ0aWNlc1BlckRyYXcpICogIiA8PCBzdHJpZGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiArICIgPDwgb2Zmc2V0IDw8ICJdID0gIiA8PCAiYXNfdHlwZTxmbG9hdD4iIDw8ICIo
IgorICAgICAgICAgICAgICAgICAgICAgICA8PCAiQU5HTEVfdmVydGV4T3V0LiIgPDwgdmFyeWlu
Zy5uYW1lOworCisgICAgICAgICAgICAgICAgaWYgKHZhcnlpbmcuaXNBcnJheSgpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0IDw8ICJbIiA8PCBhcnJheUlu
ZGV4IDw8ICJdIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaW5m
by5jb2x1bW5Db3VudCA+IDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPDwgIlsiIDw8IGNvbCA8PCAiXSI7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKGluZm8ucm93Q291bnQgPiAxKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0IDw8ICJbIiA8PCByb3cgPDwgIl0iOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJlc3VsdCA8PCAiKTtcbiI7CisgICAgICAgICAg
ICAgICAgKytvZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0LnN0cigpOworfQorCit2b2lkIEdlbmVyYXRlVHJhbnNmb3JtRmVlZGJhY2tF
bXVsYXRpb25PdXRwdXRzKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJv
Z3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICp2ZXJ0ZXhTaGFkZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZWFybHlSZXR1cm4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWlu
dDMyX3QsIGtNYXhTaGFkZXJYRkJzPiAqeGZiQmluZGluZ1JlbWFwT3V0KQoreworICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPGdsOjpUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc+ICZ2YXJ5aW5ncyA9Cisg
ICAgICAgIHByb2dyYW1TdGF0ZS5nZXRMaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKCk7
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xzaXplaT4gJmJ1ZmZlclN0cmlkZXMgPSBwcm9ncmFt
U3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tTdHJpZGVzKCk7CisgICAgY29uc3QgYm9vbCBpc0lu
dGVybGVhdmVkID0KKyAgICAgICAgcHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyTW9kZSgpID09IEdMX0lOVEVSTEVBVkVEX0FUVFJJQlM7CisgICAgY29uc3Qgc2l6ZV90IGJ1
ZmZlckNvdW50ID0gaXNJbnRlcmxlYXZlZCA/IDEgOiB2YXJ5aW5ncy5zaXplKCk7CisKKyAgICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4geGZiSW5kaWNlcyhidWZmZXJDb3VudCk7CisKKyAgICBz
dGQ6OnN0cmluZyB4ZmJCaW5kaW5nczsKKworICAgIGZvciAodWludDMyX3QgYnVmZmVySW5kZXgg
PSAwOyBidWZmZXJJbmRleCA8IGJ1ZmZlckNvdW50OyArK2J1ZmZlckluZGV4KQorICAgIHsKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgeGZiQmluZGluZyA9IFN0cigwKTsKKyAgICAgICAgeGZi
SW5kaWNlc1tidWZmZXJJbmRleF0gICAgICA9IFN0cihidWZmZXJJbmRleCk7CisKKyAgICAgICAg
c3RkOjpzdHJpbmcgYnVmZmVyTmFtZSA9IEdldFhmYkJ1ZmZlck5hbWVNdGwoYnVmZmVySW5kZXgp
OworCisgICAgICAgIHhmYkJpbmRpbmdzICs9ICIsICI7CisgICAgICAgIC8vIFRPRE86IG9mZnNl
dCBmcm9tIGxhc3QgdXNlZCBidWZmZXIgYmluZGluZyBmcm9tIGZyb250IGVuZAorICAgICAgICAv
LyBYRkIgYnVmZmVyIGlzIGFsbG9jYXRlZCBzbG90IHN0YXJ0aW5nIGZyb20gbGFzdCBkaXNjcmV0
ZSBNZXRhbCBidWZmZXIgc2xvdC4KKyAgICAgICAgdWludDMyX3QgYmluZGluZ1BvaW50ID0ga01h
eFNoYWRlckJ1ZmZlcnMgLSAxIC0gYnVmZmVySW5kZXg7CisgICAgICAgIHhmYkJpbmRpbmdSZW1h
cE91dC0+YXQoYnVmZmVySW5kZXgpID0gYmluZGluZ1BvaW50OworICAgICAgICB4ZmJCaW5kaW5n
cyArPSAiZGV2aWNlIGZsb2F0KiBBTkdMRV8iICsgYnVmZmVyTmFtZSArICIgW1tidWZmZXIoIiAr
IFN0cihiaW5kaW5nUG9pbnQpICsgIildXSI7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgeGZi
T3V0ID0gIiNpZiBUUkFOU0ZPUk1fRkVFREJBQ0tfRU5BQkxFRFxuICAgIGlmIChBTkdMRV8iICsg
c3RkOjpzdHJpbmcoc2g6OmtVbmlmb3Jtc1ZhcikgKyAiLkFOR0xFX3hmYkFjdGl2ZVVucGF1c2Vk
ICE9IDApXG4gICAge1xuIjsKKyAgICBzaXplX3Qgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBmb3Ig
KHNpemVfdCB2YXJ5aW5nSW5kZXggPSAwOyB2YXJ5aW5nSW5kZXggPCB2YXJ5aW5ncy5zaXplKCk7
ICsrdmFyeWluZ0luZGV4KQorICAgIHsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGJ1ZmZlckluZGV4
ICAgICAgICAgICAgICAgICAgICA9IGlzSW50ZXJsZWF2ZWQgPyAwIDogdmFyeWluZ0luZGV4Owor
ICAgICAgICBjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nICZ2YXJ5aW5nID0gdmFy
eWluZ3NbdmFyeWluZ0luZGV4XTsKKworICAgICAgICAvLyBGb3IgZXZlcnkgdmFyeWluZywgb3V0
cHV0IHRvIHRoZSByZXNwZWN0aXZlIGJ1ZmZlciBwYWNrZWQuICBJZiBpbnRlcmxlYXZlZCwgdGhl
IG91dHB1dCBpcworICAgICAgICAvLyBhbHdheXMgdG8gdGhlIHNhbWUgYnVmZmVyLCBidXQgYXQg
ZGlmZmVyZW50IG9mZnNldHMuCisgICAgICAgIGNvbnN0IGdsOjpVbmlmb3JtVHlwZUluZm8gJmlu
Zm8gPSBnbDo6R2V0VW5pZm9ybVR5cGVJbmZvKHZhcnlpbmcudHlwZSk7CisgICAgICAgIHhmYk91
dCArPSBHZW5lcmF0ZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ091dHB1dCh2YXJ5aW5nLCBpbmZv
LCBidWZmZXJTdHJpZGVzW2J1ZmZlckluZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dE9mZnNldCwgeGZiSW5kaWNlc1ti
dWZmZXJJbmRleF0pOworCisgICAgICAgIGlmIChpc0ludGVybGVhdmVkKQorICAgICAgICB7Cisg
ICAgICAgICAgICBvdXRwdXRPZmZzZXQgKz0gaW5mby5jb2x1bW5Db3VudCAqIGluZm8ucm93Q291
bnQgKiB2YXJ5aW5nLnNpemUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZWFybHlSZXR1
cm4pCisgICAgeworICAgICAgICB4ZmJPdXQgKz0gInJldHVybjsiOworICAgIH0KKyAgICB4ZmJP
dXQgKz0gIiAgICB9XG4jZW5kaWZcbiI7CisKKyAgICAqdmVydGV4U2hhZGVyID0gU3Vic3RpdHV0
ZVRyYW5zZm9ybUZlZWRiYWNrTWFya2VycygqdmVydGV4U2hhZGVyLCB4ZmJCaW5kaW5ncywgeGZi
T3V0KTsKK30KKworCitzaDo6VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbiAqZ2V0UmVmbGVjdGlv
bkZyb21Db21waWxlcihnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlclR5cGUgdHlw
ZSkKK3sKKyAgICBhdXRvIGNvbXBpbGVySW5zdGFuY2UgICAgICA9IGNvbXBpbGVyLT5nZXRJbnN0
YW5jZSh0eXBlKTsKKyAgICBzaDo6VFNoSGFuZGxlQmFzZSAqYmFzZSAgICA9IHN0YXRpY19jYXN0
PHNoOjpUU2hIYW5kbGVCYXNlICo+KGNvbXBpbGVySW5zdGFuY2UuZ2V0SGFuZGxlKCkpOworICAg
IGF1dG8gdHJhbnNsYXRvck1ldGFsRGlyZWN0ID0gYmFzZS0+Z2V0QXNUcmFuc2xhdG9yTWV0YWxE
aXJlY3QoKTsKKyAgICBjb21waWxlci0+cHV0SW5zdGFuY2Uoc3RkOjptb3ZlKGNvbXBpbGVySW5z
dGFuY2UpKTsKKyAgICByZXR1cm4gdHJhbnNsYXRvck1ldGFsRGlyZWN0LT5nZXRUcmFuc2xhdG9y
TWV0YWxSZWZsZWN0aW9uKCk7Cit9CisKIGFuZ2xlOjpSZXN1bHQgR2xzbGFuZ0dldE1TTChjb25z
dCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Q2FwcyAmZ2xDYXBzLApAQCAtMTk2LDE1ICszNjMsMTYgQEAgYW5n
bGU6OlJlc3VsdCBHbHNsYW5nR2V0TVNMKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gKm1z
bENvZGVPdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhmYkJ1ZmZlckNv
dW50KQogeworICAgIGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zIG9wdGlvbnM7CiAgICAgLy8g
UmV0cmlldmUgb3JpZ2luYWwgdW5pZm9ybSBidWZmZXIgYmluZGluZ3MgZ2VuZXJhdGVkIGJ5IGZy
b250IGVuZC4gV2Ugd2lsbCBuZWVkIHRvIGRvIGEgcmVtYXAuCiAgICAgc3RkOjp1bm9yZGVyZWRf
bWFwPHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4gdWJvT3JpZ2luYWxCaW5kaW5nczsKICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6SW50ZXJmYWNlQmxvY2s+ICZibG9ja3MgPSBwcm9ncmFtU3RhdGUu
Z2V0VW5pZm9ybUJsb2NrcygpOwogICAgIGZvciAodWludDMyX3QgYnVmZmVySWR4ID0gMDsgYnVm
ZmVySWR4IDwgYmxvY2tzLnNpemUoKTsgKytidWZmZXJJZHgpCiAgICAgewogICAgICAgICBjb25z
dCBnbDo6SW50ZXJmYWNlQmxvY2sgJmJsb2NrID0gYmxvY2tzW2J1ZmZlcklkeF07Ci0gICAgICAg
IGlmICghdWJvT3JpZ2luYWxCaW5kaW5ncy5jb3VudChibG9jay5tYXBwZWROYW1lKSkKKyAgICAg
ICAgaWYgKCF1Ym9PcmlnaW5hbEJpbmRpbmdzLmNvdW50KGJsb2NrLm5hbWUpKQogICAgICAgICB7
Ci0gICAgICAgICAgICB1Ym9PcmlnaW5hbEJpbmRpbmdzW2Jsb2NrLm1hcHBlZE5hbWVdID0gYnVm
ZmVySWR4OworICAgICAgICAgICAgdWJvT3JpZ2luYWxCaW5kaW5nc1tibG9jay5uYW1lXSA9IGJ1
ZmZlcklkeDsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBSZXRyaWV2ZSBvcmlnaW5hbCBzYW1w
bGVyIGJpbmRpbmdzIHByb2R1Y2VkIGJ5IGZyb250IGVuZC4KQEAgLTIzMSwxMiArMzk5LDI3IEBA
IGFuZ2xlOjpSZXN1bHQgR2xzbGFuZ0dldE1TTChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0
LAogICAgIH0KICAgICBmb3IgKGdsOjpTaGFkZXJUeXBlIHR5cGUgOiB7Z2w6OlNoYWRlclR5cGU6
OlZlcnRleCwgZ2w6OlNoYWRlclR5cGU6OkZyYWdtZW50fSkKICAgICB7Ci0gICAgICAgICgqbXNs
Q29kZU91dClbdHlwZV0gICAgICAgICAgICAgICAgICAgICAgICAgPSBzaGFkZXJTb3VyY2VzW3R5
cGVdOwotICAgICAgICAoKm1zbFNoYWRlckluZm9PdXQpW3R5cGVdLm1ldGFsU2hhZGVyU291cmNl
ID0gc2hhZGVyU291cmNlc1t0eXBlXTsKICAgICAgICAgc3RkOjpzdHJpbmcgc291cmNlOwogICAg
ICAgICBpZih0eXBlID09IGdsOjpTaGFkZXJUeXBlOjpWZXJ0ZXgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHNvdXJjZSA9IHVwZGF0ZVNoYWRlckF0dHJpYnV0ZXMoc2hhZGVyU291cmNlc1t0eXBl
XSwgcHJvZ3JhbVN0YXRlKTsKKyAgICAgICAgICAgIC8vIFdyaXRlIHRyYW5zZm9ybSBmZWVkYmFj
ayBvdXRwdXQgY29kZS4KKyAgICAgICAgICAgIGlmICghc291cmNlLmVtcHR5KCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHByb2dyYW1TdGF0ZS5nZXRMaW5rZWRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKCkuZW1wdHkoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSA9IFN1YnN0aXR1dGVUcmFuc2Zvcm1GZWVkYmFja01hcmtlcnMo
c291cmNlLCAiIiwgIiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZVRyYW5zZm9y
bUZlZWRiYWNrRW11bGF0aW9uT3V0cHV0cygKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMsIHByb2dyYW1TdGF0ZSwgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMudHJhbnNmb3JtRmVlZGJhY2tFYXJseVJldHVybiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICYoKm1zbFNoYWRlckluZm9PdXQpW3R5cGVdLmFjdHVhbFhGQkJpbmRpbmdzKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg
ICAgICAgewpAQCAtMjQ2LDYgKzQyOSwyNSBAQCBhbmdsZTo6UmVzdWx0IEdsc2xhbmdHZXRNU0wo
Y29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICAgICAgKCptc2xTaGFkZXJJbmZvT3V0
KVt0eXBlXS5tZXRhbFNoYWRlclNvdXJjZSA9IHNvdXJjZTsKICAgICAgICAgZ2w6OlNoYWRlciAq
c2hhZGVyICAgICAgICAgICAgICAgICAgICAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0QXR0YWNoZWRT
aGFkZXIodHlwZSk7CiAgICAgICAgIHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uICpyZWZs
ZWN0aW9uID0gZ2V0UmVmbGVjdGlvbkZyb21TaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgaWYocmVm
bGVjdGlvbi0+aGFzVUJPcykKKyAgICAgICAgeworICAgICAgICAgICAgKCptc2xTaGFkZXJJbmZv
T3V0KVt0eXBlXS5oYXNVQk9Bcmd1bWVudEJ1ZmZlciA9IHRydWU7CisKKyAgICAgICAgICAgIGZv
ciAoYXV0byAmdWJvQmluZGluZyA6IHJlZmxlY3Rpb24tPmdldFVuaWZvcm1CdWZmZXJCaW5kaW5n
cygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1
Ym9OYW1lICAgICAgICAgPSB1Ym9CaW5kaW5nLmZpcnN0OworICAgICAgICAgICAgICAgIGNvbnN0
IHNoOjpVQk9CaW5kaW5nSW5mbyAmYmluZEluZm8gPSB1Ym9CaW5kaW5nLnNlY29uZDsKKyAgICAg
ICAgICAgICAgICBjb25zdCB1aW50MzJfdCB1Ym9CaW5kSW5kZXggICAgICAgID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGJpbmRJbmZvLmJpbmRJbmRleCk7CisgICAgICAgICAgICAgICAgY29uc3Qg
dWludDMyX3QgdWJvQXJyYXlTaXplICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihiaW5k
SW5mby5hcnJheVNpemUpOworICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IG9yaWdpbmFs
QmluZGluZyAgICAgPSB1Ym9PcmlnaW5hbEJpbmRpbmdzLmF0KHVib05hbWUpOworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGN1cnJlbnRTbG90ID0gc3RhdGljX2Nhc3Q8dWludD4odWJvQmluZElu
ZGV4KTsKKyAgICAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgdWJvQXJyYXlT
aXplOyArK2kpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBVc2Ug
Y29uc2VjdXRpdmUgc2xvdCBmb3IgbWVtYmVyIGluIGFycmF5CisgICAgICAgICAgICAgICAgICAg
ICgqbXNsU2hhZGVySW5mb091dClbdHlwZV0uYWN0dWFsVUJPQmluZGluZ3Nbb3JpZ2luYWxCaW5k
aW5nICsgaV0gPSBjdXJyZW50U2xvdCArIGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgICAgIC8vIFJldHJpZXZlIGF1dG9tYXRpYyB0ZXh0dXJlIHNs
b3QgYXNzaWdubWVudHMKICAgICAgICAgaWYgKG9yaWdpbmFsU2FtcGxlckJpbmRpbmdzLnNpemUo
KSA+IDApCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfcmVuZGVyX3V0aWxzLm1tIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZW5kZXJfdXRp
bHMubW0KaW5kZXggMzJiMzNjYWI4ZmJlOTExYmIyNmE4MDIzZjlmZWIzMWM1N2M5MTY3Yi4uNGUz
OTIyMGFlYzhmMDNhODYwYzc0ZjFlZDM2YWZlN2EzNDMxNmU3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZW5kZXJf
dXRpbHMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9yZW5kZXJfdXRpbHMubW0KQEAgLTU1LDEyICs1NSwxMCBAQCBzdHJ1Y3Qg
QmxpdFBhcmFtc1VuaWZvcm0KICAgICBmbG9hdCBzcmNUZXhDb29yZHNbM11bMl07CiAgICAgaW50
IHNyY0xldmVsICAgICAgICAgPSAwOwogICAgIGludCBzcmNMYXllciAgICAgICAgID0gMDsKLSAg
ICBpbnQgc3JjTGV2ZWwyICAgICAgICA9IDA7Ci0gICAgaW50IHNyY0xheWVyMiAgICAgICAgPSAw
OwogICAgIHVpbnQ4X3QgZHN0RmxpcFggICAgID0gMDsKICAgICB1aW50OF90IGRzdEZsaXBZICAg
ICA9IDA7CiAgICAgdWludDhfdCBkc3RMdW1pbmFuY2UgPSAwOyAgLy8gZGVzdCB0ZXh0dXJlIGlz
IGx1bWluYWNlCi0gICAgdWludDhfdCBwYWRkaW5nWzldOworICAgIHVpbnQ4X3QgcGFkZGluZ1sx
M107CiB9OwogCiBzdHJ1Y3QgQmxpdFN0ZW5jaWxUb0J1ZmZlclBhcmFtc1VuaWZvcm0KQEAgLTc3
NCwxNCArNzcyLDggQEAgdm9pZCBTZXR1cEJsaXRXaXRoRHJhd1VuaWZvcm1EYXRhKFJlbmRlckNv
bW1hbmRFbmNvZGVyICpjbWRFbmNvZGVyLAogICAgIHVuaWZvcm1QYXJhbXMuc3JjTGF5ZXIgPSBw
YXJhbXMuc3JjTGF5ZXI7CiAgICAgaWYgKGlzQ29sb3JCbGl0KQogICAgIHsKLSAgICAgICAgY29u
c3QgYXV0byBjb2xvclBhcmFtcyAgICAgPSBzdGF0aWNfY2FzdDxjb25zdCBDb2xvckJsaXRQYXJh
bXMgKj4oJnBhcmFtcyk7Ci0gICAgICAgIHVuaWZvcm1QYXJhbXMuZHN0THVtaW5hbmNlID0gY29s
b3JQYXJhbXMtPmRzdEx1bWluYW5jZSA/IDEgOiAwOwotICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICBjb25zdCBhdXRvIGRzUGFyYW1zICAgICA9IHN0YXRpY19jYXN0PGNvbnN0IERlcHRo
U3RlbmNpbEJsaXRQYXJhbXMgKj4oJnBhcmFtcyk7Ci0gICAgICAgIHVuaWZvcm1QYXJhbXMuc3Jj
TGV2ZWwyID0gZHNQYXJhbXMtPnNyY1N0ZW5jaWxMZXZlbDsKLSAgICAgICAgdW5pZm9ybVBhcmFt
cy5zcmNMYXllcjIgPSBkc1BhcmFtcy0+c3JjU3RlbmNpbExheWVyOworICAgICAgICBjb25zdCBD
b2xvckJsaXRQYXJhbXMgKmNvbG9yUGFyYW1zID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ29sb3JCbGl0
UGFyYW1zICo+KCZwYXJhbXMpOworICAgICAgICB1bmlmb3JtUGFyYW1zLmRzdEx1bWluYW5jZSAg
ICAgICAgID0gY29sb3JQYXJhbXMtPmRzdEx1bWluYW5jZSA/IDEgOiAwOwogICAgIH0KIAogICAg
IC8vIENvbXB1dGUgc291cmNlIHRleENvb3JkcwpAQCAtNzk1LDggKzc4Nyw4IEBAIHZvaWQgU2V0
dXBCbGl0V2l0aERyYXdVbmlmb3JtRGF0YShSZW5kZXJDb21tYW5kRW5jb2RlciAqY21kRW5jb2Rl
ciwKICAgICB7CiAgICAgICAgIGNvbnN0IERlcHRoU3RlbmNpbEJsaXRQYXJhbXMgKmRzUGFyYW1z
ID0KICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IERlcHRoU3RlbmNpbEJsaXRQYXJhbXMg
Kj4oJnBhcmFtcyk7Ci0gICAgICAgIHNyY1dpZHRoICA9IGRzUGFyYW1zLT5zcmNTdGVuY2lsLT53
aWR0aChtdGw6Ok1pcG1hcE5hdGl2ZUxldmVsKGRzUGFyYW1zLT5zcmNTdGVuY2lsTGV2ZWwpKTsK
LSAgICAgICAgc3JjSGVpZ2h0ID0gZHNQYXJhbXMtPnNyY1N0ZW5jaWwtPmhlaWdodChtdGw6Ok1p
cG1hcE5hdGl2ZUxldmVsKGRzUGFyYW1zLT5zcmNTdGVuY2lsTGV2ZWwpKTsKKyAgICAgICAgc3Jj
V2lkdGggID0gZHNQYXJhbXMtPnNyY1N0ZW5jaWwtPndpZHRoKGRzUGFyYW1zLT5zcmNMZXZlbCk7
CisgICAgICAgIHNyY0hlaWdodCA9IGRzUGFyYW1zLT5zcmNTdGVuY2lsLT5oZWlnaHQoZHNQYXJh
bXMtPnNyY0xldmVsKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTgwNyw4ICs3OTksOCBA
QCB2b2lkIFNldHVwQmxpdFdpdGhEcmF3VW5pZm9ybURhdGEoUmVuZGVyQ29tbWFuZEVuY29kZXIg
KmNtZEVuY29kZXIsCiAgICAgR2V0QmxpdFRleENvb3JkcyhzcmNXaWR0aCwgc3JjSGVpZ2h0LCBw
YXJhbXMuc3JjUmVjdCwgcGFyYW1zLnNyY1lGbGlwcGVkLCBwYXJhbXMudW5wYWNrRmxpcFgsCiAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5wYWNrRmxpcFksICZ1MCwgJnYwLCAmdTEsICZ2
MSk7CiAKLSAgICBhdXRvIGR1ID0gdTEgLSB1MDsKLSAgICBhdXRvIGR2ID0gdjEgLSB2MDsKKyAg
ICBmbG9hdCBkdSA9IHUxIC0gdTA7CisgICAgZmxvYXQgZHYgPSB2MSAtIHYwOwogCiAgICAgLy8g
bG93ZXIgbGVmdAogICAgIHVuaWZvcm1QYXJhbXMuc3JjVGV4Q29vcmRzWzBdWzBdID0gdTA7CkBA
IC0zMDM1LDEyICszMDI3LDEzIEBAIEF1dG9PYmpDUHRyPGlkPE1UTExpYnJhcnk+PiBUcmFuc2Zv
cm1GZWVkYmFja1V0aWxzOjpjcmVhdGVNc2xYZmJMaWJyYXJ5KAogICAgICAgICAvLyBDb252ZXJ0
IHRvIGFjdHVhbCBiaW5hcnkgc2hhZGVyCiAgICAgICAgIG10bDo6QXV0b09iakNQdHI8TlNFcnJv
ciAqPiBlcnIgPSBuaWw7CiAgICAgICAgIG10bDo6QXV0b09iakNQdHI8aWQ8TVRMTGlicmFyeT4+
IG10bFNoYWRlckxpYiA9Ci0gICAgICAgICAgICBtdGw6OkNyZWF0ZVNoYWRlckxpYnJhcnkobXRs
RGV2aWNlLCB0cmFuc2xhdGVkTXNsLCAmZXJyKTsKKyAgICAgICAgbXRsOjpDcmVhdGVTaGFkZXJM
aWJyYXJ5KG10bERldmljZSwgdHJhbnNsYXRlZE1zbCwgQHtAIlRSQU5TRk9STV9GRUVEQkFDS19F
TkFCTEVEIjogQCIxIn0sICZlcnIpOwogICAgICAgICBpZiAoZXJyICYmICFtdGxTaGFkZXJMaWIp
CiAgICAgICAgIHsKICAgICAgICAgICAgIE5TTG9nKEAiJUAiLCBlcnIuZ2V0KCkpOwogICAgICAg
ICAgICAgYXNzZXJ0KDApOwogICAgICAgICB9CisgICAgICAgIG10bFNoYWRlckxpYi5nZXQoKS5s
YWJlbCA9IEAiVHJhbnNmb3JtRmVlZGJhY2siOwogICAgICAgICByZXR1cm4gbXRsU2hhZGVyTGli
OwogICAgIH0KIH0KQEAgLTMwNTgsNyArMzA1MSw3IEBAIEF1dG9PYmpDUHRyPGlkPE1UTFJlbmRl
clBpcGVsaW5lU3RhdGU+PiBUcmFuc2Zvcm1GZWVkYmFja1V0aWxzOjpnZXRUcmFuc2Zvcm1GZWVk
CiAgICAgICAgIC8vIFBpcGVsaW5lIGNhY2hlIG5vdCBpbnRpYWxpemVkLCBkbyBpdCBub3c6CiAg
ICAgICAgIEFOR0xFX01UTF9PQkpDX1NDT1BFCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8g
c2hhZGVyTGliID0gY3JlYXRlTXNsWGZiTGlicmFyeShjb250ZXh0TXRsLCBwcm9ncmFtTXRsLT5n
ZXRYZmJNc2xTb3VyY2UoKSk7CisgICAgICAgICAgICBhdXRvIHNoYWRlckxpYiA9IGNyZWF0ZU1z
bFhmYkxpYnJhcnkoY29udGV4dE10bCwgcHJvZ3JhbU10bC0+Z2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZShnbDo6U2hhZGVyVHlwZTo6VmVydGV4KSk7CiAgICAgICAgICAgICAvLyBOb24gc3BlY2lh
bGl6ZWQgY29uc3RhbnRzIHByb3ZpZGVkLCB1c2UgZGVmYXVsdCBjcmVhdGlvbiBmdW5jdGlvbi4K
ICAgICAgICAgICAgIEVuc3VyZVZlcnRleFNoYWRlck9ubHlQaXBlbGluZUNhY2hlSW5pdGlhbGl6
ZWQoY29udGV4dE10bCwgU0hBREVSX0VOVFJZX05BTUUsIHNoYWRlckxpYiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNhY2hlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfcmVzb3VyY2VzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5oCmluZGV4IDJlMzMzNGRmZTI1MmJi
ZjEwOWQzMWJlZWQ2ODZiNTkzZDY5MmNiNzYuLjRhMjAzYWFjMGI2OWNlYTgxODYyMzhiOGE0NDdm
ZTQxMDI3NmQ1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfcmVzb3VyY2VzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZXNvdXJjZXMuaApAQCAt
MjUxLDcgKzI1MSw3IEBAIGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2UsCiAK
ICAgICAvLyBHZXQgc3RlbmNpbCB2aWV3CiAgICAgVGV4dHVyZVJlZiBnZXRTdGVuY2lsVmlldygp
OwotICAgIC8vR2V0IGxpbmVhciBjb2xvcgorICAgIC8vIEdldCBsaW5lYXIgY29sb3IKICAgICBU
ZXh0dXJlUmVmIGdldExpbmVhckNvbG9yVmlldygpOwogCiAgICAgLy8gQ2hhbmdlIHRoZSB3cmFw
cGVkIG1ldGFsIG9iamVjdC4gU3BlY2lhbCBjYXNlIGZvciBzd2FwY2hhaW4gaW1hZ2UKQEAgLTMy
Myw5ICszMjMsOCBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVibGljIFJlc291cmNlLAogICAg
IFRleHR1cmVSZWYgbUxpbmVhckNvbG9yVmlldzsKIAogICAgIFRleHR1cmVSZWYgbVN0ZW5jaWxW
aWV3OwotICAgIC8vUmVhZGFibGUgY29weSBvZiB0ZXh0dXJlCisgICAgLy8gUmVhZGFibGUgY29w
eSBvZiB0ZXh0dXJlCiAgICAgVGV4dHVyZVJlZiBtUmVhZENvcHk7Ci0KIH07CiAKIGNsYXNzIEJ1
ZmZlciBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfcmVzb3VyY2VzLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9y
ZXNvdXJjZXMubW0KaW5kZXggZjc1ZTcyNWZhYzdiMjkzNzMzMGYwNWRkYzcyMDRmYWRkYmE2ZjNm
Ni4uZDc3MWJjMTA2NDM2MDljOTI2OWM5NDE4MzhjYjMzZjE3YmJkMDhkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9y
ZXNvdXJjZXMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL210bF9yZXNvdXJjZXMubW0KQEAgLTM5MCw2ICszOTAsOSBAQCBUZXh0dXJl
OjpUZXh0dXJlKENvbnRleHRNdGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgZGVzYy51c2Fn
ZSA9IGRlc2MudXNhZ2UgfCBNVExUZXh0dXJlVXNhZ2VTaGFkZXJXcml0ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQorICAgICAgICBpZihkZXNjLnBpeGVsRm9ybWF0ID09IE1UTFBpeGVsRm9y
bWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4KXsKKyAgICAgICAgICBBU1NFUlQoYWxsb3dGb3JtYXRW
aWV3KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChhbGxvd0Zvcm1hdFZpZXcpCiAgICAgICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9tdGxfc3RhdGVfY2FjaGUubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3N0YXRlX2NhY2hlLm1tCmluZGV4IGJkN2U0
YTk5NGNjMmU5ZDNkMjZlMWZiYTI0Y2VkYzk3NThkYzMwMWQuLmQ5ZmE1NzJlNGJlZWE5NmQyOTcx
YWIwMjcwM2JhNGM3NDg3M2IyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfc3RhdGVfY2FjaGUubW0KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9zdGF0
ZV9jYWNoZS5tbQpAQCAtNDY0LDcgKzQ2NCw3IEBAIFNhbXBsZXJEZXNjOjpTYW1wbGVyRGVzYyhj
b25zdCBnbDo6U2FtcGxlclN0YXRlICZnbFN0YXRlKSA6IFNhbXBsZXJEZXNjKCkKICAgICBtYXhB
bmlzb3Ryb3B5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdsU3RhdGUuZ2V0TWF4QW5pc290cm9w
eSgpKTsKIAogICAgIGNvbXBhcmVGdW5jdGlvbiA9IEdldENvbXBhcmVGdW5jKGdsU3RhdGUuZ2V0
Q29tcGFyZUZ1bmMoKSk7Ci0gICAgCisKICAgICBub3JtYWxpemVkQ29vcmRpbmF0ZXMgPSBZRVM7
CiB9CiAKQEAgLTQ4MywxMSArNDgzLDExIEBAIHZvaWQgU2FtcGxlckRlc2M6OnJlc2V0KCkKICAg
ICBtaW5GaWx0ZXIgPSBNVExTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVzdDsKICAgICBtYWdGaWx0
ZXIgPSBNVExTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVzdDsKICAgICBtaXBGaWx0ZXIgPSBNVExT
YW1wbGVyTWlwRmlsdGVyTmVhcmVzdDsKLSAgICAKKwogICAgIG1heEFuaXNvdHJvcHkgPSAxOwog
CiAgICAgY29tcGFyZUZ1bmN0aW9uID0gTVRMQ29tcGFyZUZ1bmN0aW9uTmV2ZXI7Ci0gICAgCisK
ICAgICBub3JtYWxpemVkQ29vcmRpbmF0ZXMgPSBZRVM7CiB9CiAKQEAgLTg2NSw5ICs4NjUsNyBA
QCBSZW5kZXJQaXBlbGluZUNhY2hlOjpSZW5kZXJQaXBlbGluZUNhY2hlKCkgOiBSZW5kZXJQaXBl
bGluZUNhY2hlKG51bGxwdHIpIHsKIFJlbmRlclBpcGVsaW5lQ2FjaGU6OlJlbmRlclBpcGVsaW5l
Q2FjaGUoCiAgICAgUmVuZGVyUGlwZWxpbmVDYWNoZVNwZWNpYWxpemVTaGFkZXJGYWN0b3J5ICpz
cGVjaWFsaXplZFNoYWRlckZhY3RvcnkpCiAgICAgOiBtU3BlY2lhbGl6ZWRTaGFkZXJGYWN0b3J5
KHNwZWNpYWxpemVkU2hhZGVyRmFjdG9yeSkKLXsKLQotfQore30KIAogUmVuZGVyUGlwZWxpbmVD
YWNoZTo6flJlbmRlclBpcGVsaW5lQ2FjaGUoKSB7fQogCkBAIC05NjYsNyArOTY0LDkgQEAgQXV0
b09iakNQdHI8aWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4+IFJlbmRlclBpcGVsaW5lQ2FjaGU6
OmNyZWF0ZVJlbmRlclBpcGVsaW4KICAgICAgICAgLy8gQ2hvb3NlIHNoYWRlciB2YXJpYW50CiAg
ICAgICAgIGlkPE1UTEZ1bmN0aW9uPiB2ZXJ0U2hhZGVyID0gbmlsOwogICAgICAgICBpZDxNVExG
dW5jdGlvbj4gZnJhZ1NoYWRlciA9IG5pbDsKLSAgICAgICAgaWYgKG1TcGVjaWFsaXplZFNoYWRl
ckZhY3RvcnkgJiYKKyAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciB0cmFuc2Zvcm0gZmVlZGJh
Y2sgc2hhZGVyLCB3ZSd2ZSBhbHJlYWR5IGNyZWF0ZWQgaXQhIFNlZSBnZXRUcmFuc2Zvcm1GZWVk
YmFja1JlbmRlclBpcGVsaW5lCisgICAgICAgIGlmIChkZXNjLnJhc3Rlcml6YXRpb25UeXBlICE9
IG10bDo6UmVuZGVyUGlwZWxpbmVSYXN0ZXJpemF0aW9uOjpEaXNhYmxlZCAmJgorICAgICAgICAg
ICAgbVNwZWNpYWxpemVkU2hhZGVyRmFjdG9yeSAmJgogICAgICAgICAgICAgbVNwZWNpYWxpemVk
U2hhZGVyRmFjdG9yeS0+aGFzU3BlY2lhbGl6ZWRTaGFkZXIoZ2w6OlNoYWRlclR5cGU6OlZlcnRl
eCwgZGVzYykpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChJc0Vycm9yKG1TcGVjaWFsaXpl
ZFNoYWRlckZhY3RvcnktPmdldFNwZWNpYWxpemVkU2hhZGVyKApAQCAtMTA1Myw3ICsxMDUzLDYg
QEAgQXV0b09iakNQdHI8aWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4+IFJlbmRlclBpcGVsaW5l
Q2FjaGU6OmNyZWF0ZVJlbmRlclBpcGVsaW4KICAgICB9CiB9CiAKLQogdm9pZCBSZW5kZXJQaXBl
bGluZUNhY2hlOjpyZWNyZWF0ZVBpcGVsaW5lU3RhdGVzKENvbnRleHQgKmNvbnRleHQpCiB7CiAg
ICAgZm9yIChpbnQgaGFzRGVmYXVsdEF0dHJpYiA9IDA7IGhhc0RlZmF1bHRBdHRyaWIgPD0gMTsg
KytoYXNEZWZhdWx0QXR0cmliKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF91dGlscy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF91dGlscy5oCmluZGV4IDQ5
MDBlY2JiZThlYjdlNTdmYmU2ODMxNmIzMWU2ZTVjMWYwMTc2YWIuLjEwYTU0YWEyNmQxZWFlYzMx
MTJmMjdmNzcwOTVkMWJjMzk4N2JkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfdXRpbHMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3V0aWxzLmgK
QEAgLTg0LDYgKzg0LDEyIEBAIE1UTFNjaXNzb3JSZWN0IEdldFNjaXNzb3JSZWN0KGNvbnN0IGds
OjpSZWN0YW5nbGUgJnJlY3QsCiAKIHVpbnQzMl90IEdldERldmljZVZlbmRvcklkKGlkPE1UTERl
dmljZT4gbWV0YWxEZXZpY2UpOwogCisKK0F1dG9PYmpDUHRyPGlkPE1UTExpYnJhcnk+PiBDcmVh
dGVTaGFkZXJMaWJyYXJ5KGlkPE1UTERldmljZT4gbWV0YWxEZXZpY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc291
cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TT2JqZWN0ICo+ICogc3Vic3RpdHV0aW9uRGljdGlvbmFy
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9P
YmpDUHRyPE5TRXJyb3IgKj4gKmVycm9yKTsKKwogQXV0b09iakNQdHI8aWQ8TVRMTGlicmFyeT4+
IENyZWF0ZVNoYWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBdXRvT2JqQ1B0cjxOU0Vycm9yICo+ICplcnJvcik7CkBAIC05MSwxMSArOTcsMTMgQEAgQXV0
b09iakNQdHI8aWQ8TVRMTGlicmFyeT4+IENyZWF0ZVNoYWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNl
PiBtZXRhbERldmljZSwKIEF1dG9PYmpDUHRyPGlkPE1UTExpYnJhcnk+PiBDcmVhdGVTaGFkZXJM
aWJyYXJ5KGlkPE1UTERldmljZT4gbWV0YWxEZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzb3VyY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGVuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIE5TT2JqZWN0ICo+ICogc3Vic3RpdHV0aW9uRGljdGlvbmFyeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9PYmpDUHRy
PE5TRXJyb3IgKj4gKmVycm9yKTsKIAogQXV0b09iakNQdHI8aWQ8TVRMTGlicmFyeT4+IENyZWF0
ZVNoYWRlckxpYnJhcnlGcm9tQmluYXJ5KGlkPE1UTERldmljZT4gbWV0YWxEZXZpY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqYmluYXJ5U291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBiaW5hcnlTb3VyY2VMZW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TT2JqZWN0ICo+ICogc3Vic3RpdHV0aW9uRGljdGlvbmFy
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBdXRvT2JqQ1B0cjxOU0Vycm9yICo+ICplcnJvcik7CiAKIGJvb2wgU3VwcG9ydHNJT1NH
UFVGYW1pbHkoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIHVpbnQ4X3QgaU9TRmFtaWx5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9tdGxfdXRpbHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX3V0aWxzLm1tCmluZGV4IDBlY2NiY2U2ZDRhMDA5ZWNjODE4YmI4ZDI5
MTliZGIyOTBiNTQ5ZDAuLjQwZGNmMzEzNDg5MmQ3ZmQxMTU0NTFjMGMzNjkyNGFmYzBjZDk0OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfdXRpbHMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF91dGlscy5tbQpAQCAtMjcsNiArMjcsOCBAQCBuYW1l
c3BhY2UgbXRsCiB7CiAKIGNvbnN0ZXhwciBjaGFyIGtBTkdMRVByaW50TVNMRW52W10gPSAiQU5H
TEVfTUVUQUxfUFJJTlRfTVNMX0VOQUJMRSI7Citjb25zdGV4cHIgY2hhciBrQU5HTEVNU0xWZXJz
aW9uTWFqb3JFbnZbXSA9ICJBTkdMRV9NU0xfVkVSU0lPTl9NQUpPUiI7Citjb25zdGV4cHIgY2hh
ciBrQU5HTEVNU0xWZXJzaW9uTWlub3JFbnZbXSA9ICJBTkdMRV9NU0xfVkVSU0lPTl9NSU5PUiI7
CiAKIG5hbWVzcGFjZQogewpAQCAtNDc0LDQwICs0NzYsOTIgQEAgdWludDMyX3QgR2V0RGV2aWNl
VmVuZG9ySWQoaWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSkKICAgICByZXR1cm4gdmVuZG9ySWQ7
CiB9CiAKK3N0YXRpYyBNVExMYW5ndWFnZVZlcnNpb24gR2V0VXNlclNldE9ySGlnaGVzdE1TTFZl
cnNpb24oY29uc3QgTVRMTGFuZ3VhZ2VWZXJzaW9uIGN1cnJlbnRWZXJzaW9uKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIG1ham9yX3N0ciA9IGFuZ2xlOjpHZXRFbnZpcm9ubWVudFZhcihrQU5H
TEVNU0xWZXJzaW9uTWFqb3JFbnYpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG1pbm9yX3N0ciA9
IGFuZ2xlOjpHZXRFbnZpcm9ubWVudFZhcihrQU5HTEVNU0xWZXJzaW9uTWlub3JFbnYpOworICAg
IGlmIChtYWpvcl9zdHIgIT0gIiIgJiYgbWlub3Jfc3RyICE9ICIiKQorICAgIHsKKyAgICAgICAg
Y29uc3QgaW50IG1ham9yID0gc3RkOjpzdG9pKG1ham9yX3N0cik7CisgICAgICAgIGNvbnN0IGlu
dCBtaW5vciA9IHN0ZDo6c3RvaShtaW5vcl9zdHIpOworI2lmICFkZWZpbmVkKE5ERUJVRykKKyAg
ICAgICAgTlNMb2coQCJGb3JjaW5nIE1TTCBWZXJzaW9uOiBNVExMYW5ndWFnZVZlcnNpb24lZF8l
ZFxuIiwgbWFqb3IsIG1pbm9yKTsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKG1ham9yKQorICAg
ICAgICB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgc3dpdGNoIChtaW5v
cikKKyAgICAgICAgICAgICAgICB7CisjaWYgKGRlZmluZWQoX19JUEhPTkVfOV8wKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX0lQSE9ORV85XzApCisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMDogcmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjFfMDsKKyNlbmRpZgor
I2lmIChkZWZpbmVkKF9fTUFDXzEwXzExKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IF9fTUFDXzEwXzExKSB8fFwKKyAgICAoZGVmaW5lZChfX0lQSE9ORV85XzApICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fSVBIT05FXzlfMCkgfHxcCisgICAg
KGRlZmluZWQoX19UVk9TXzlfMCkgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBf
X1RWT1NfOV8wKQorICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBNVExMYW5ndWFn
ZVZlcnNpb24xXzE7CisjZW5kaWYKKyNpZiAoZGVmaW5lZChfX01BQ18xMF8xMikgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX01BQ18xMF8xMikgfHxcCisgICAgKGRlZmlu
ZWQoX19JUEhPTkVfMTBfMCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
X19JUEhPTkVfMTBfMCkgfHxcCisgICAgKGRlZmluZWQoX19UVk9TXzEwXzApICYmIF9fVFZfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19UVk9TXzEwXzApCisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjogcmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjFfMjsKKyNlbmRpZgorICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYg
IlVuc3VwcG9ydGVkIE1TTCBNaW5vciBMYW5ndWFnZSBWZXJzaW9uLiIpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG1pbm9yKQorICAgICAgICAgICAgICAgIHsKKyNpZiAoZGVmaW5l
ZChfX01BQ18xMF8xMykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX01B
Q18xMF8xMykgfHxcCisgICAgKGRlZmluZWQoX19JUEhPTkVfMTFfMCkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19JUEhPTkVfMTFfMCkgfHxcCisgICAgKGRlZmluZWQo
X19UVk9TXzExXzApICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19UVk9TXzEx
XzApCisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIE1UTExhbmd1YWdlVmVyc2lv
bjJfMDsKKyNlbmRpZgorI2lmIChkZWZpbmVkKF9fTUFDXzEwXzE0KSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IF9fTUFDXzEwXzE0KSB8fFwKKyAgICAoZGVmaW5lZChfX0lQ
SE9ORV8xMl8wKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX0lQSE9O
RV8xMl8wKSB8fFwKKyAgICAoZGVmaW5lZChfX1RWT1NfMTJfMCkgJiYgX19UVl9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSBfX1RWT1NfMTJfMCkKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAx
OiByZXR1cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMl8xOworI2VuZGlmCisjaWYgKGRlZmluZWQoX19N
QUNfMTBfMTUpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gX19NQUNfMTBf
MTUpIHx8XAorICAgIChkZWZpbmVkKF9fSVBIT05FXzEzXzApICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IF9fSVBIT05FXzEzXzApIHx8XAorICAgIChkZWZpbmVkKF9fVFZP
U18xM18wKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fVFZPU18xM18wKQor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBNVExMYW5ndWFnZVZlcnNpb24yXzI7
CisjZW5kaWYKKyNpZiAoZGVmaW5lZChfX01BQ18xMV8wKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IF9fTUFDXzExXzApIHx8XAorICAgIChkZWZpbmVkKF9fSVBIT05FXzE0
XzApICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IF9fSVBIT05FXzE0XzAp
IHx8XAorICAgIChkZWZpbmVkKF9fVFZPU18xNF8wKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IF9fVFZPU18xNF8wKQorICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVy
biBNVExMYW5ndWFnZVZlcnNpb24yXzM7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJVbnN1cHBvcnRlZCBN
U0wgTWlub3IgTGFuZ3VhZ2UgVmVyc2lvbi4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFz
c2VydCgwICYmICJVbnN1cHBvcnRlZCBNU0wgTWFqb3IgTGFuZ3VhZ2UgVmVyc2lvbi4iKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY3VycmVudFZlcnNpb247Cit9CisKIEF1dG9PYmpD
UHRyPGlkPE1UTExpYnJhcnk+PiBDcmVhdGVTaGFkZXJMaWJyYXJ5KGlkPE1UTERldmljZT4gbWV0
YWxEZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TT2JqZWN0ICo+
ICogc3Vic3RpdHV0aW9uTWFjcm9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQXV0b09iakNQdHI8TlNFcnJvciAqPiAqZXJyb3IpCiB7Ci0gICAgcmV0
dXJuIENyZWF0ZVNoYWRlckxpYnJhcnkobWV0YWxEZXZpY2UsIHNvdXJjZS5jX3N0cigpLCBzb3Vy
Y2Uuc2l6ZSgpLCBlcnJvcik7CisgICAgcmV0dXJuIENyZWF0ZVNoYWRlckxpYnJhcnkobWV0YWxE
ZXZpY2UsIHNvdXJjZS5jX3N0cigpLCBzb3VyY2Uuc2l6ZSgpLCBzdWJzdGl0dXRpb25NYWNyb3Ms
IGVycm9yKTsKIH0KIAotI2lmIDAKLXN0YXRpYyBNVExMYW5ndWFnZVZlcnNpb24gR2V0SGlnaGVz
dFN1cHBvcnRlZE1TTFZlcnNpb24oKQorQXV0b09iakNQdHI8aWQ8TVRMTGlicmFyeT4+IENyZWF0
ZVNoYWRlckxpYnJhcnkoaWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRv
T2JqQ1B0cjxOU0Vycm9yICo+ICplcnJvcikKIHsKLSAgICAvLyBodHRwczovL2RldmVsb3Blci5h
cHBsZS5jb20vZG9jdW1lbnRhdGlvbi9tZXRhbC9tdGxsYW5ndWFnZXZlcnNpb24/bGFuZ3VhZ2U9
b2JqYwotICAgIGlmIChBTkdMRV9BUFBMRV9BVkFJTEFCTEVfWENJKDExLjAsIDE0LjAsIDE0LjAp
KQotICAgICAgICByZXR1cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMl8zOwotICAgIGlmIChBTkdMRV9B
UFBMRV9BVkFJTEFCTEVfWENJKDEwLjE1LCAxMy4wLCAxMy4wKSkKLSAgICAgICAgcmV0dXJuIE1U
TExhbmd1YWdlVmVyc2lvbjJfMjsKLSAgICBpZiAoQU5HTEVfQVBQTEVfQVZBSUxBQkxFX1hDSSgx
MC4xNSwgMTMuMCwgMTIuMCkpCi0gICAgICAgIHJldHVybiBNVExMYW5ndWFnZVZlcnNpb24yXzE7
Ci0gICAgaWYgKEFOR0xFX0FQUExFX0FWQUlMQUJMRV9YQ0koMTAuMTMsIDEzLjAsIDExLjApKQot
ICAgICAgICByZXR1cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMl8wOwotICAgIGlmIChBTkdMRV9BUFBM
RV9BVkFJTEFCTEVfWENJKDEwLjEyLCAxMy4wLCAxMC4wKSkKLSAgICAgICAgcmV0dXJuIE1UTExh
bmd1YWdlVmVyc2lvbjFfMjsKLSAgICBpZiAoQU5HTEVfQVBQTEVfQVZBSUxBQkxFX1hDSSgxMC4x
MSwgMTMuMCwgOS4wKSkKLSAgICAgICAgcmV0dXJuIE1UTExhbmd1YWdlVmVyc2lvbjFfMTsKLSMg
ICAgaWYgVEFSR0VUX09TX0lPUwotICAgIGlmIChBTkdMRV9BUFBMRV9BVkFJTEFCTEVfSSg5LjAp
KQotICAgICAgICByZXR1cm4gTVRMTGFuZ3VhZ2VWZXJzaW9uMV8wOwotIyAgICBlbmRpZgotICAg
IHJldHVybiBNVExMYW5ndWFnZVZlcnNpb24xXzE7CisgICAgcmV0dXJuIENyZWF0ZVNoYWRlckxp
YnJhcnkobWV0YWxEZXZpY2UsIHNvdXJjZS5jX3N0cigpLCBzb3VyY2Uuc2l6ZSgpLEB7fSwgZXJy
b3IpOwogfQotI2VuZGlmCiAKIEF1dG9PYmpDUHRyPGlkPE1UTExpYnJhcnk+PiBDcmVhdGVTaGFk
ZXJMaWJyYXJ5KGlkPE1UTERldmljZT4gbWV0YWxEZXZpY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzb3VyY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGVu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIE5TT2JqZWN0ICo+ICogc3Vic3RpdHV0aW9uTWFjcm9zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b09iakNQdHI8
TlNFcnJvciAqPiAqZXJyb3JPdXQpCiB7CiAgICAgQU5HTEVfTVRMX09CSkNfU0NPUEUKQEAgLTUx
OSwxOSArNTczLDIyIEBAIEF1dG9PYmpDUHRyPGlkPE1UTExpYnJhcnk+PiBDcmVhdGVTaGFkZXJM
aWJyYXJ5KGlkPE1UTERldmljZT4gbWV0YWxEZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZVdoZW5Eb25lOk5PXTsKICAgICAgICAgYXV0
byBvcHRpb25zICAgICA9IFtbW01UTENvbXBpbGVPcHRpb25zIGFsbG9jXSBpbml0XSBBTkdMRV9N
VExfQVVUT1JFTEVBU0VdOwogICAgICAgICAvLyBNYXJrIGFsbCBwb3NpdGlvbnMgaW4gVlMgd2l0
aCBhdHRyaWJ1dGUgaW52YXJpYW50IGFzIG5vbi1vcHRpbWl6YWJsZQotI2lmIChkZWZpbmVkKF9f
TUFDXzExXzApICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBfX01BQ18xMV8w
KSB8fCAgICAgICAgXAotICAgIChkZWZpbmVkKF9fSVBIT05FXzE0XzApICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gX19JUEhPTkVfMTRfMCkgfHwgXAotICAgIChkZWZpbmVk
KF9fVFZPU18xNF8wKSAmJiBfX1RWX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gX19UVk9TXzE0
XzApCisjaWYgKGRlZmluZWQoX19NQUNfMTFfMCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSBfX01BQ18xMV8wKSB8fFwKKyAgICAoZGVmaW5lZChfX0lQSE9ORV8xNF8wKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBfX0lQSE9ORV8xNF8wKSB8fFwK
KyAgICAoZGVmaW5lZChfX1RWT1NfMTRfMCkgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSBfX1RWT1NfMTRfMCkKICAgICAgICAgb3B0aW9ucy5wcmVzZXJ2ZUludmFyaWFuY2UgPSB0
cnVlOwogI2Vsc2UKICAgICAgICAgLy8gTm8gcHJlc2VydmVJbnZhcmlhbmNlIGF2YWlsYWJsZSBj
b21waWxpbmcgZnJvbSBzb3VyY2UsIHNvIGp1c3QgZGlzYWJsZSBmYXN0bWF0aC4KICAgICAgICAg
b3B0aW9ucy5mYXN0TWF0aEVuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgorICAgICAgICBvcHRpb25z
Lmxhbmd1YWdlVmVyc2lvbiA9IEdldFVzZXJTZXRPckhpZ2hlc3RNU0xWZXJzaW9uKG9wdGlvbnMu
bGFuZ3VhZ2VWZXJzaW9uKTsKICAgICAgICAgLy8gVE9ETyhqY3VubmluZ2hhbSk6IHdvcmthcm91
bmQgZm9yIGludGVsIGRyaXZlciBub3QgcHJlc2VydmluZyBpbnZhcmlhbmNlIG9uIGFsbCBzaGFk
ZXJzCi0gICAgICAgIGlmIChbbWV0YWxEZXZpY2UubmFtZSByYW5nZU9mU3RyaW5nOkAiSW50ZWwi
XS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQorICAgICAgICBjb25zdCB1aW50MzJfdCB2ZW5kb3Jf
aWQgPSBHZXREZXZpY2VWZW5kb3JJZChtZXRhbERldmljZSk7CisgICAgICAgIGlmICh2ZW5kb3Jf
aWQgPT0gYW5nbGU6OmtWZW5kb3JJRF9JbnRlbCkKICAgICAgICAgewogICAgICAgICAgICAgb3B0
aW9ucy5mYXN0TWF0aEVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBvcHRpb25z
LnByZXByb2Nlc3Nvck1hY3JvcyA9IHN1YnN0aXR1dGlvbk1hY3JvczsKICAgICAgICAgYXV0byBs
aWJyYXJ5ID0gW21ldGFsRGV2aWNlIG5ld0xpYnJhcnlXaXRoU291cmNlOm5zU291cmNlIG9wdGlv
bnM6b3B0aW9ucyBlcnJvcjombnNFcnJvcl07CiAgICAgICAgIGlmIChhbmdsZTo6R2V0RW52aXJv
bm1lbnRWYXIoa0FOR0xFUHJpbnRNU0xFbnYpWzBdID09ICcxJykKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L3NoYWRlcnMvYmxpdC5tZXRhbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9zaGFkZXJzL2JsaXQubWV0YWwKaW5kZXggYWJiMGFjNjNjM2Q2Mzlm
YzQ3ODdmNDQ2YzVmNjYzN2YzZGIzODNlOS4uZTAyYTliOTkwNGY2MGQwODI1ZWZmMmUzY2EyNTM2
ZjA0N2Q2OWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL3NoYWRlcnMvYmxpdC5tZXRhbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9ibGl0Lm1ldGFs
CkBAIC0zMiwxMiArMzIsMTAgQEAgc3RydWN0IEJsaXRQYXJhbXMKICAgICBmbG9hdDIgc3JjVGV4
Q29vcmRzWzNdOwogICAgIGludCBzcmNMZXZlbDsgIC8vIFNvdXJjZSB0ZXh0dXJlIGxldmVsLgog
ICAgIGludCBzcmNMYXllcjsgIC8vIFNvdXJjZSB0ZXh0dXJlIGxheWVyLgotICAgIGludCBzcmNM
ZXZlbDI7ICAvLyBTb3VyY2UgdGV4dHVyZSBsZXZlbC4KLSAgICBpbnQgc3JjTGF5ZXIyOyAgLy8g
U291cmNlIHRleHR1cmUgbGF5ZXIuCiAgICAgYm9vbCBkc3RGbGlwVmlld3BvcnRYOwogICAgIGJv
b2wgZHN0RmxpcFZpZXdwb3J0WTsKICAgICBib29sIGRzdEx1bWluYW5jZTsgIC8vIGRlc3RpbmF0
aW9uIHRleHR1cmUgaXMgbHVtaW5hbmNlLiBVbnVzZWQgYnkgZGVwdGggJiBzdGVuY2lsIGJsaXR0
aW5nLgotICAgIHVpbnQ4X3QgcGFkZGluZ1s5XTsKKyAgICB1aW50OF90IHBhZGRpbmdbMTNdOwog
fTsKIAogc3RydWN0IEJsaXRWU091dApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL3NoYWRlcnMvZm9ybWF0X2F1dG9nZW4uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9zaGFk
ZXJzL2Zvcm1hdF9hdXRvZ2VuLmgKaW5kZXggYjk5MWU0OGY2YTdkZmM0ZDI5ZTk0YzhhOWM2ODBk
Mjc1ZDBjZTM1ZS4uODI3OTczOGEzMTU4NzJlZTMxYTU5MTQ1OWJiNDU2NmYzNjA4OGZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL3NoYWRlcnMvZm9ybWF0X2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9mb3JtYXRfYXV0b2dlbi5oCkBA
IC0xLDcgKzEsNyBAQAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVy
YXRlZCBieSBnZW5fbXRsX2ludGVybmFsX3NoYWRlcnMucHkKIC8vCi0vLyBDb3B5cmlnaHQgMjAy
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IDIwMjEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL3NoYWRlcnMvbXRsX2RlZmF1bHRfc2hhZGVyc19zcmNfYXV0b2dlbi5pbmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9t
dGxfZGVmYXVsdF9zaGFkZXJzX3NyY19hdXRvZ2VuLmluYwppbmRleCBjYTAyMGNlZWYwOWY1M2Vj
NDc0N2U2MTM1NzczN2YzZDc3YWFhYjhmLi4yMzFmZmNjYmQ1OTMxMjM3Mjk2YzkyNDBlYWQwMmQ3
YjQ2YTE5MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvc2hhZGVycy9tdGxfZGVmYXVsdF9zaGFkZXJzX3NyY19hdXRvZ2Vu
LmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvc2hhZGVycy9tdGxfZGVmYXVsdF9zaGFkZXJzX3NyY19hdXRvZ2VuLmluYwpAQCAtMzE5
LDggKzMxOSw2IEBAIHN0cnVjdCBCbGl0UGFyYW1zCiAgICAgZmxvYXQyIHNyY1RleENvb3Jkc1sz
XTsKICAgICBpbnQgc3JjTGV2ZWw7CiAgICAgaW50IHNyY0xheWVyOwotICAgIGludCBzcmNMZXZl
bDI7Ci0gICAgaW50IHNyY0xheWVyMjsKICAgICBib29sIGRzdEZsaXBWaWV3cG9ydFg7CiAgICAg
Ym9vbCBkc3RGbGlwVmlld3BvcnRZOwogICAgIGJvb2wgZHN0THVtaW5hbmNlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>