<?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>77269</bug_id>
          
          <creation_ts>2012-01-27 19:13:39 -0800</creation_ts>
          <short_desc>[chromium] Defer makeContextCurrent in compositor until first frame</short_desc>
          <delta_ts>2012-02-03 15:19:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>544593</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 19:13:39 -0800</bug_when>
    <thetext>[chromium] Defer makeContextCurrent in compositor until first frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544595</commentid>
    <comment_count>1</comment_count>
      <attachid>124424</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 19:21:34 -0800</bug_when>
    <thetext>Created attachment 124424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544801</commentid>
    <comment_count>2</comment_count>
      <attachid>124477</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-29 17:25:36 -0800</bug_when>
    <thetext>Created attachment 124477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544805</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-29 17:42:18 -0800</bug_when>
    <thetext>This is half of the fix for http://code.google.com/p/chromium/issues/detail?id=106815, which requires that we be able to initialize the compositor before we&apos;re ready to call makeContextCurrent on the compositor context.  This defers LayerRendererChromium::initialize() until we&apos;re ready to start making the first frame.

This depends on the scheduler not attempting to produce frames until the surface is ready, so it only fixes things for the single threaded scheduler.  The threaded scheduler needs a way to be notified of when it&apos;s safe to call makeContextCurrent().  Without that fix, it&apos;s possible (but I think very unlikely in practice) that window.open()&apos;d windows with --force-compositing-mode and the threaded compositor may fail to enter compositing mode correctly.

The single threaded scheduler is patched here: https://chromiumcodereview.appspot.com/9225050/ to avoid that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545651</commentid>
    <comment_count>4</comment_count>
      <attachid>124477</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-30 17:43:09 -0800</bug_when>
    <thetext>Comment on attachment 124477
Patch

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

Neat stuff! Unofficial LGTM.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:311
&gt; +    if (!m_layerRendererInitialized)

/me wonders how m_layerRendererInitialized and m_contentsTextureManager behave on context lost? Is m_layerRendererInitialized true and m_contentsTextureManager non-null? Wearingmy overddesign hat for a moment, it might be nice to put these inside some inner struct that is m_layerRendererState that was obviously null when layer renderer was lost.

But anyway, just thinking out loud.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:157
&gt;  

Can we make layerRendererCapabilities() pop if !m_layerRendererInitialized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545693</commentid>
    <comment_count>5</comment_count>
      <attachid>124477</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-30 18:27:45 -0800</bug_when>
    <thetext>Comment on attachment 124477
Patch

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

&gt; Source/WebCore/ChangeLog:78
&gt; +2012-01-27  James Robinson  &lt;jamesr@chromium.org&gt;

Nit: this entry is left over. Possible you&apos;ve got two bugs&apos; patches in this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545717</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-30 18:49:44 -0800</bug_when>
    <thetext>Ah yeah, I had http://trac.webkit.org/changeset/106306 merged into this branch. I can take care of cleaning ChangeLogs up when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546309</commentid>
    <comment_count>7</comment_count>
      <attachid>124477</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-31 11:45:44 -0800</bug_when>
    <thetext>Comment on attachment 124477
Patch

LGTM otherwise based on Nat&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546399</commentid>
    <comment_count>8</comment_count>
      <attachid>124803</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-31 12:59:08 -0800</bug_when>
    <thetext>Created attachment 124803
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546631</commentid>
    <comment_count>9</comment_count>
      <attachid>124803</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 16:43:00 -0800</bug_when>
    <thetext>Comment on attachment 124803
Patch for landing

Rejecting attachment 124803 from commit-queue.

New failing tests:
compositing/scroll-painted-composited-content.html
platform/chromium/compositing/layout-width-change.html
compositing/geometry/fixed-in-composited.html
compositing/masks/multiple-masks.html
compositing/iframes/overlapped-nested-iframes.html
compositing/geometry/vertical-scroll-composited.html
compositing/masks/masked-ancestor.html
compositing/geometry/ancestor-overflow-change.html
compositing/plugins/invalidate_rect.html
compositing/overflow/fixed-position-ancestor-clip.html
platform/chromium/compositing/img-layer-grow.html
compositing/direct-image-compositing.html
transforms/3d/point-mapping/3d-point-mapping-deep.html
compositing/geometry/tall-page-composited.html
compositing/geometry/horizontal-scroll-composited.html
compositing/masks/simple-composited-mask.html
compositing/geometry/fixed-position.html
compositing/iframes/become-composited-nested-iframes.html
transforms/3d/point-mapping/3d-point-mapping-origins.html
http/tests/inspector/inspect-element.html
compositing/scaling/tiled-layer-recursion.html
Full output: http://queues.webkit.org/results/11387219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546839</commentid>
    <comment_count>10</comment_count>
      <attachid>124803</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 23:50:05 -0800</bug_when>
    <thetext>Comment on attachment 124803
Patch for landing

Attachment 124803 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11387348

New failing tests:
compositing/scroll-painted-composited-content.html
platform/chromium/compositing/layout-width-change.html
compositing/geometry/fixed-in-composited.html
compositing/masks/multiple-masks.html
compositing/iframes/overlapped-nested-iframes.html
compositing/geometry/vertical-scroll-composited.html
compositing/masks/masked-ancestor.html
compositing/geometry/ancestor-overflow-change.html
compositing/plugins/invalidate_rect.html
compositing/overflow/fixed-position-ancestor-clip.html
platform/chromium/compositing/img-layer-grow.html
compositing/direct-image-compositing.html
transforms/3d/point-mapping/3d-point-mapping-deep.html
compositing/geometry/tall-page-composited.html
compositing/geometry/horizontal-scroll-composited.html
compositing/masks/simple-composited-mask.html
compositing/geometry/fixed-position.html
compositing/iframes/become-composited-nested-iframes.html
transforms/3d/point-mapping/3d-point-mapping-origins.html
http/tests/inspector/inspect-element.html
compositing/scaling/tiled-layer-recursion.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549154</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-03 15:19:09 -0800</bug_when>
    <thetext>Committed r106700: &lt;http://trac.webkit.org/changeset/106700&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124424</attachid>
            <date>2012-01-27 19:21:34 -0800</date>
            <delta_ts>2012-01-29 17:25:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77269-20120127192133.patch</filename>
            <type>text/plain</type>
            <size>37705</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA5NGZiOTk1NzJiMDI2
MzRhNWEwZTRhZDA0OGE4MDQ1YTU0ZGRkZi4uNjljNWJhYmFjZGYyOTc0YzgwYzc3ZDMyOTcxZmY5
ZjIzZjdlYThmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgyIEBACiAyMDEyLTAxLTI3ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBE
ZWZlciBtYWtlQ29udGV4dEN1cnJlbnQgaW4gY29tcG9zaXRvciB1bnRpbCBmaXJzdCBmcmFtZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUg
c2l0dWF0aW9ucyB3aGVyZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGEgY29tcG9zaXRvciwgYnV0
IGNhbid0IGNhbGwgbWFrZUNvbnRleHRDdXJyZW50KCkgdW50aWwgc29tZQorICAgICAgICBpbml0
aWFsaXphdGlvbiB3b3JrIGNvbXBsZXRlcyBvbiBhbm90aGVyIHRocmVhZCB0aGF0IHdlIGNhbm5v
dCBibG9jayBmb3IuIFRoaXMgZGVmZXJzIHRoZSBmaXJzdAorICAgICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKSBjYWxsIHVudGlsIHdlIG5lZWQgdG8gcHJvZHVjZSB0aGUgZmlyc3QgZnJhbWUgYXQg
d2hpY2ggcG9pbnQgd2Uga25vdyB0aGUgY2FsbCBjYW4gc3VjY2VlZCwKKyAgICAgICAgYXNzdW1p
bmcgdGhhdCB0aGUgc2NoZWR1bGVyIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgorCisgICAgICAgIFRo
aXMgaXMgYWNjb21wbGlzaGVkIGJ5IHNwbGl0dGluZyB1cCBwcm94eSBpbml0aWFsaXphdGlvbiBp
bnRvIHR3byBwaWVjZXM6CisgICAgICAgICopIGluaXRpYWxpemVDb250ZXh0KCkgd2hpY2ggYXR0
ZW1wdHMgdG8gaW5zdGFudGlhdGUgYSBHcmFwaGljc0NvbnRleHQzRC4gVGhpcyBjYW4gZmFpbCBp
ZiB3ZSBjYW4ndCBtYWtlIGEKKyAgICAgICAgY29udGV4dCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ug
d2UgYWJvcnQgY29tcGxldGVseSBhbmQgcmV0dXJuIE5VTEwgZnJvbSBDQ0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZSgpLgorCisgICAgICAgICopIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgd2hpY2gg
dXNlcyB0aGUgcHJldmlvdXNseS1jcmVhdGVkIGNvbnRleHQgdG8gaW5zdGFudGlhdGUgb3VyIGNv
bXBvc2l0b3Igb2JqZWN0cyBhbmQKKyAgICAgICAgICAgIGdyYWIgb3VyIHJlbmRlcmVyIGNhcGFi
aWxpdGllcy4gVGhpcyBjYW4gZmFpbCBpZiB0aGUgY29udGV4dCBpcyBub3QgdXNhYmxlIGZvciBj
b21wb3NpdGluZywgd2hpY2ggd2UgcmVwb3J0CisgICAgICAgICAgICB0byB0aGUgY2xpZW50IGFz
IGEgbG9zdCBjb250ZXh0IGV2ZW50LgorCisgICAgICAgIEludGVybmFsbHkgdGhpcyBpbnRyb2R1
Y2VzIGEgbmV3IHN0YXRlIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3RJbXBsIHdoZXJlIGl0IGhhcyBh
IGNvbnRleHQgYnV0IGRvZXMgbm90IHlldCBoYXZlIGEKKyAgICAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtLCB3aGljaCBoYXMgZmFpcmx5IG1pbmltYWwgaW1wYWN0LiBPbmUgb3RoZXIgY2hhbmdl
IGlzIHRoYXQgd2UgZG9uJ3QgaW5zdGFudGlhdGUgdGhlCisgICAgICAgIFRleHR1cmVNYW5hZ2Vy
cyB1bnRpbCB3ZSBoYXZlIHRoZSByZW5kZXJlciBjYXBhYmlsaXRpZXMsIGJ1dCB0aGlzIGlzbid0
IG5lY2Vzc2FyeSB1bnRpbCB3ZSB3YW50IHRvIHN0YXJ0CisgICAgICAgIHBhaW50aW5nIHNvIGl0
IGRvZXNuJ3QgaGF2ZSBhbnkgaW1wYWN0IG91dHNpZGUgb2Ygc29tZSBvdmVybHkgaW50cnVzdGl2
ZSB1bml0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRl
bnRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgIChJbWFnZUxheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNldFNh
bXBsZWRUZXhlbEZvcm1hdCk6CisgICAgICAgIChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db21t
aXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpjb21w
b3NpdGVBbmRSZWFkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmZp
bmlzaEFsbFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNl
dFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZp
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjppc0NvbnRleHRMb3N0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAg
IChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OkNDU2luZ2xlVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJl
YWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5n
bGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4
dE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6
CisKKzIwMTItMDEtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB1bm5lY2Vzc2FyeSByZXRyeSBsb2dpYyBpbiBMYXll
clJlbmRlcmVyQ2hyb21pdW0gaW5pdGlhbGl6YXRpb24gZm9yIGFjY2VsZXJhdGVkIHBhaW50aW5n
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0Nwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNiZWNjMGNlMGFiODUxY2E4Yjc3YTVhZjYy
OTFhNjA5ZjZlMDEzNjguLjVjNmRhYjdjMjEzYjEyOWZiZjcwZjgzMjdiYzkwNGExNjhiNmQyOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjcg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIERlZmVyIG1ha2VDb250ZXh0Q3VycmVudCBpbiBjb21wb3NpdG9yIHVudGlsIGZpcnN0IGZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3RTZXRWaWV3cG9ydFNpemU6OmJlZ2luVGVzdCk6CisgICAgICAgICogdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAyMDEyLTAxLTI0
ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUG9pbnRl
ciBMb2NrOiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcAppbmRleCA1MjlmY2UwMzY0YTgyODU1YWE0MDYzOTcxNTZlMGZiYjRlM2E5
NTBlLi4wNTMxZGJjMmQzYWViOWZmMWNjODViYTcwZjBmZGY1YmY1N2U1YzY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05Niw2ICs5Niw4IEBAIGJvb2wgQ29udGVu
dExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiB2b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRU
aWxpbmdPcHRpb24oKTsKKyAgICBpZiAoIW1fdGV4dHVyZVVwZGF0ZXIpCisgICAgICAgIGNyZWF0
ZVRleHR1cmVVcGRhdGVyKCk7CiAKICAgICBJbnRSZWN0IGxheWVyUmVjdDsKIApAQCAtMTIyLDE3
ICsxMjQsMjEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KCkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBo
b3N0KQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoKQog
ewogI2lmIFVTRShTS0lBKQotICAgIGlmIChob3N0LT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWlu
dGluZykKKyAgICBpZiAobGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWlu
dGluZykKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0
ZShtX2RlbGVnYXRlKSk7Ci0gICAgZWxzZSBpZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFp
bnRpbmcpCi0gICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1f
ZGVsZWdhdGUpLCBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIp
OworICAgIGVsc2UgaWYgKGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRp
bmcpCisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUpLCBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2lu
Z01hcFN1Yik7CiAgICAgZWxzZQogI2VuZGlmIC8vIFVTRShTS0lBKQotICAgICAgICBtX3RleHR1
cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRl
bnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVy
OjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLnVzaW5nTWFwU3ViKTsKICAgICBtX3RleHR1cmVVcGRhdGVyLT5zZXRPcGFxdWUo
b3BhcXVlKCkpOworCisgICAgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCA9IGxheWVyVHJlZUhvc3Qo
KS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLmJlc3RUZXh0dXJlRm9ybWF0OworICAgIHNl
dFRleHR1cmVGb3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAgc2V0U2FtcGxlZFRleGVsRm9ybWF0
KHRleHR1cmVVcGRhdGVyKCktPnNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KSk7CiB9
CiAKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDQyNjY3OWNhZmFiYjczOTRjMDJlNzkw
MWJlMzMyZDdiY2I1ZTA4MWEuLmM5OWM4NWY5NmU3ZGU3MzA4NTczNzM5N2IwMzc1ZDZhM2U3ZWU2
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNjgsNyArNjgsNyBAQCBw
cm90ZWN0ZWQ6CiAKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVw
ZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0Kik7CisgICAgdm9pZCBjcmVhdGVUZXh0dXJlVXBk
YXRlcigpOwogICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyLmdldCgpOyB9CiAKICAgICBDb250ZW50
TGF5ZXJEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDAxNTRmYjI4MzE0ZjNlNmM5MjQwNDdiYjQ4MzY3MzY5MmRmY2ZhYjcuLmRiYWQ5OGQ5
MjAyNWEzZTM3MTQ5MjlhNzhlNTU1YmM2Zjg5YTVkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcApAQCAtMTYwLDYgKzE2MCwxMiBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogCiB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkoKQogeworICAgIGlmICghbV90ZXh0dXJlVXBkYXRlcikgewor
ICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUobGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBT
dWIpOworICAgICAgICBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0ID0gbGF5ZXJUcmVlSG9zdCgpLT5s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuYmVzdFRleHR1cmVGb3JtYXQ7CisgICAgICAgIHNl
dFRleHR1cmVGb3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAgICAgIHNldFNhbXBsZWRUZXhlbEZv
cm1hdCh0ZXh0dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCkp
OworICAgIH0KICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAgICAgICAgbV90ZXh0dXJlVXBk
YXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkpOwogICAgICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwpAQCAtMTg3
LDEzICsxOTMsNiBAQCBib29sIEltYWdlTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29u
c3QKICAgICByZXR1cm4gbV9jb250ZW50cyAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0
ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQotewotICAgIC8vIEF2b2lkIGNyZWF0aW5n
IGEgbmV3IHRleHR1cmUgdXBkYXRlciB3aGljaCB3b3VsZCBub3QgaGF2ZSBhIHZhbGlkIGNvcHkg
b2YgdGhlIGN1cnJlbnQgaW1hZ2UuCi0gICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyKQotICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyID0gSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoaG9z
dC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKLX0KLQogYm9vbCBJ
bWFnZUxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0CiB7CiAgICAgLy8g
Q29udGVudHMgc2NhbGUgaXMgbm90IG5lZWQgZm9yIGltYWdlIGxheWVyIGJlY2F1c2UgdGhpcyBj
YW4gYmUgZG9uZSBpbiBjb21wb3NpdG9yIG1vcmUgZWZmaWNpZW50bHkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGQ3MTI5MjQ1MWMzNTU1ZWFmMGMxNmNmOWYyYzNmMzk1YmUwNzUz
MDQuLjM2NzRmOWY3MjAyNTY2M2E0NTc4YjUyMjAwMGI4NmZlZWM1MTNkYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSW1hZ2VMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVy
ZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0Kik7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRp
b24oVGlsaW5nT3B0aW9uKTsKIAogICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4
dHVyZVVwZGF0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IGYyZTMxMjJmOTc4Mjc5YzI3ZWUzMTcyMWUxZWMwMDYwMDJmMTJjZjAuLmJmYTRlNDAxMGMxZjM4
ZTQ0ZjA0YTUzNzkzYWNiYmNlMzYwOTZiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtMTczLDIxICsxNzMsNiBAQCBJbnRTaXplIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y29u
dGVudEJvdW5kcygpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUobHJvdW5kZihib3VuZHMoKS53
aWR0aCgpICogY29udGVudHNTY2FsZSgpKSwgbHJvdW5kZihib3VuZHMoKS5oZWlnaHQoKSAqIGNv
bnRlbnRzU2NhbGUoKSkpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCi17Ci0gICAgaWYgKGhvc3QgPT0gbGF5ZXJU
cmVlSG9zdCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMYXllckNocm9taXVtOjpzZXRMYXll
clRyZWVIb3N0KGhvc3QpOwotCi0gICAgaWYgKCFob3N0KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBjcmVhdGVUZXh0dXJlVXBkYXRlcihob3N0KTsKLSAgICBzZXRUZXh0dXJlRm9ybWF0KGhvc3Qt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdCk7Ci0gICAgbV9z
YW1wbGVkVGV4ZWxGb3JtYXQgPSB0ZXh0dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxGb3JtYXQo
bV90ZXh0dXJlRm9ybWF0KTsKLX0KLQogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1
cGRhdGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRvIGdl
dCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZhbGlk
YXRlZCBtaWQtdXBkYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCAxZjlmNjk1
OTM0NjI3NTQzYTg1MDk2Mjk2N2Y2Mzk2MmQzN2RmYzg1Li5iNzZhODMxMDMzOTZmNjYzZTBmMzJh
YWZkNjM4ODAyMjMyY2M1MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNzIs
OCArNzIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXpl
Jik7CiAgICAgdm9pZCBzZXRUZXh0dXJlRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpIHsg
bV90ZXh0dXJlRm9ybWF0ID0gdGV4dHVyZUZvcm1hdDsgfQogICAgIHZvaWQgc2V0Qm9yZGVyVGV4
ZWxPcHRpb24oQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uKTsKKyAgICB2b2lk
IHNldFNhbXBsZWRUZXhlbEZvcm1hdChMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KSB7IG1fc2FtcGxlZFRleGVsRm9ybWF0ID0gc2FtcGxl
ZFRleGVsRm9ybWF0OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIo
Y29uc3QgQ0NMYXllclRyZWVIb3N0KikgPSAwOwogICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBk
YXRlciogdGV4dHVyZVVwZGF0ZXIoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTZXQgaW52YWxpZGF0
aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgpLgpAQCAtOTcs
OCArOTcsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwotCiAgICAgdm9pZCBjcmVhdGVUaWxlcklm
TmVlZGVkKCk7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYjk5MjM2MDJiYzk5YWQ0NWQwYWI1OWYx
M2I2MWNiYWQ4YTcxYTY4NS4uOWNhNDMzMWYxYjVjZDc4OWFlYTcyZTAwMDJiNWY5NjUxOTdhODc5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC02Miw2ICs2Miw3IEBAIEND
TGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xp
ZW50LCBjb25zdCBDQ1NldHRpbmdzCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1f
Y2xpZW50KGNsaWVudCkKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKKyAgICAsIG1fbGF5ZXJSZW5k
ZXJlckluaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAs
IG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKGZhbHNlKQpA
QCAtODcsMjAgKzg4LDEwIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAg
ICAgICAgbV9wcm94eSA9IENDU2luZ2xlVGhyZWFkUHJveHk6OmNyZWF0ZSh0aGlzKTsKICAgICBt
X3Byb3h5LT5zdGFydCgpOwogCi0gICAgaWYgKCFtX3Byb3h5LT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcigpKQorICAgIGlmICghbV9wcm94eS0+aW5pdGlhbGl6ZUNvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgbV9jb21wb3NpdG9ySWRlbnRpZmllciA9IG1fcHJveHktPmNv
bXBvc2l0b3JJZGVudGlmaWVyKCk7Ci0KLSAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBv
biBjYXBhYmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5kZXJlci4KLSAgICBt
X3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7Ci0KLSAgICAvLyBVcGRhdGUgbV9z
ZXR0aW5ncyBiYXNlZCBvbiBwYXJ0aWFsIHVwZGF0ZSBjYXBhYmlsaXR5LgotICAgIG1fc2V0dGlu
Z3MucGFydGlhbFRleHR1cmVVcGRhdGVzID0gbV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMgJiYgbV9wcm94eS0+cGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCk7Ci0KLSAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVN
YW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVj
bGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE1
LDYgKzEwNiwyOSBAQCBDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QoKQogICAgIG51
bUxheWVyVHJlZUluc3RhbmNlcy0tOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyIiwgdGhpcywgMCk7CisgICAgaWYgKCFtX3Byb3h5LT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcigpKSB7CisgICAgICAgIC8vIFVoIG9oLCBiZXR0ZXIgdGVs
bCB0aGUgY2xpZW50IHRoYXQgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGlzIGNvbnRleHQu
CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChmYWxzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBv
biBjYXBhYmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5kZXJlci4KKyAgICBt
X3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7CisKKyAgICAvLyBVcGRhdGUgbV9z
ZXR0aW5ncyBiYXNlZCBvbiBwYXJ0aWFsIHVwZGF0ZSBjYXBhYmlsaXR5LgorICAgIG1fc2V0dGlu
Z3MucGFydGlhbFRleHR1cmVVcGRhdGVzID0gbV9zZXR0aW5ncy5wYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMgJiYgbV9wcm94eS0+cGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCk7CisKKyAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVN
YW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVj
bGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKworICAgIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxp
emVkID0gdHJ1ZTsKK30KKworCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNU
ZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKQEAgLTEzOSw4ICsxNTMsOCBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaG9zdEltcGwpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojpjb21taXRUbyIsIHRoaXMsIDApOwogCi0g
ICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSkpOwotICAgIGNvbnRlbnRz
VGV4dHVyZU1hbmFnZXIoKS0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1
Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9y
dFNpemUoKSkpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRl
eHR1cmVzKGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiB9CiAKIC8vIFRo
aXMgZnVuY3Rpb24gY29tbWl0cyB0aGUgQ0NMYXllclRyZWVIb3N0IHRvIGFuIGltcGwgdHJlZS4g
V2hlbiBtb2RpZnlpbmcKQEAgLTE5Nyw2ICsyMTEsMTEgQEAgR3JhcGhpY3NDb250ZXh0M0QqIEND
TGF5ZXJUcmVlSG9zdDo6Y29udGV4dCgpCiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3Np
dGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisgICAg
aWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlcigpOworICAgICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBtX3RyaWdnZXJJZGxlUGFpbnRz
ID0gZmFsc2U7CiAgICAgYm9vbCByZXQgPSBtX3Byb3h5LT5jb21wb3NpdGVBbmRSZWFkYmFjayhw
aXhlbHMsIHJlY3QpOwogICAgIG1fdHJpZ2dlcklkbGVQYWludHMgPSB0cnVlOwpAQCAtMjA1LDYg
KzIyNCw4IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lk
ICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpm
aW5pc2hBbGxSZW5kZXJpbmcoKQogeworICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6
ZWQpCisgICAgICAgIHJldHVybjsKICAgICBtX3Byb3h5LT5maW5pc2hBbGxSZW5kZXJpbmcoKTsK
IH0KIApAQCAtMjUzLDggKzI3NCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3Bv
cnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKICAgICBpZiAodmlld3BvcnRTaXpl
ID09IG1fdmlld3BvcnRTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZW50c1RleHR1
cmVNYW5hZ2VyKCktPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hM
aW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOwotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+
c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0
Qnl0ZXModmlld3BvcnRTaXplKSk7CisgICAgaWYgKG1fY29udGVudHNUZXh0dXJlTWFuYWdlcikg
eworICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0
ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOworICAgICAg
ICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMo
VGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOworICAgIH0K
ICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBzZXROZWVkc0NvbW1pdCgp
OwogfQpAQCAtMjg0LDYgKzMwNywxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJs
ZShib29sIHZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmlzaWJsZSA9IHZpc2li
bGU7CisKKyAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAoIXZpc2libGUpIHsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5h
Z2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpsb3dMaW1pdEJ5dGVzKHZp
ZXdwb3J0U2l6ZSgpKSk7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0QWxsVGV4dHVyZXMoKTsKQEAgLTM0NSw2ICszNzIsMTMgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmNvbXBvc2l0ZSgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQog
eworICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoKTsKKyAgICAgICAgLy8gSWYgd2UgY291bGRuJ3QgaW5pdGlhbGl6
ZSwgdGhlbiBiYWlsIHNpbmNlIHdlJ3JlIHJldHVybmluZyB0byBzb2Z0d2FyZSBtb2RlLgorICAg
ICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
Mzg1LDggKzQxOSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJD
aHJvbWl1bSogcm9vdExheWVyKQogCiAgICAgc2l6ZV90IHByZWZlcnJlZExpbWl0Qnl0ZXMgPSBU
ZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUpOwogICAgIHNp
emVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmll
d3BvcnRTaXplKTsKLSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRv
TGltaXQocHJlZmVycmVkTGltaXRCeXRlcyk7Ci0gICAgaWYgKGNvbnRlbnRzVGV4dHVyZU1hbmFn
ZXIoKS0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgPj0gcHJlZmVycmVkTGltaXRCeXRlcykKKyAg
ICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVk
TGltaXRCeXRlcyk7CisgICAgaWYgKG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y3VycmVudE1l
bW9yeVVzZUJ5dGVzKCkgPj0gcHJlZmVycmVkTGltaXRCeXRlcykKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gSWRsZSBwYWludGluZyBzaG91bGQgZmFpbCB3aGVuIHdlIGhpdCB0aGUgcHJlZmVy
cmVkIG1lbW9yeSBsaW1pdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZDkyYWRj
MTY2YWU2N2UzYWYwNTQyOTUxMGM5N2QzZmUzNjgzNTA5Zi4uNjlkM2MyN2FmNWQ2YjMwZDU3MzY2
YTQ1MDRjNzFmZjMxMDdlODU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAKLSAgICAvLyBUZXN0LW9u
bHkgaG9vaworICAgIC8vIFRlc3Qgb25seSBob29rCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNv
bnRleHQoaW50IG51bVRpbWVzKTsKIAogICAgIHZvaWQgc2V0TmVlZHNBbmltYXRlKCk7CkBAIC0y
MDQsNiArMjA0LDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBMYXllckxpc3Q7CiAgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCisgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJl
cigpOworCiAgICAgZW51bSBQYWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50SWRsZSB9Owog
ICAgIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWlu
dFR5cGUpOwogICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBh
aW50VHlwZSk7CkBAIC0yMjEsNiArMjIzLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9mcmFtZU51
bWJlcjsKIAogICAgIE93blB0cjxDQ1Byb3h5PiBtX3Byb3h5OworICAgIGJvb2wgbV9sYXllclJl
bmRlcmVySW5pdGlhbGl6ZWQ7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5
ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGNkOTQxZWNlZDdm
Y2EzMWJlNTFkYjNkZTZhMDI1MThkMWJjNjcyMTQuLmU0NmMxZDI2MzU0MjVlYTVhMDI0YTlkNzc5
NDViZjVkMDg5ZmY0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CkBAIC0yNzUsOCArMjc1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpmaW5pc2hBbGxS
ZW5kZXJpbmcoKQogCiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmlzQ29udGV4dExvc3QoKQog
ewotICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwotICAgIHJldHVybiBtX2xheWVyUmVuZGVy
ZXItPmlzQ29udGV4dExvc3QoKTsKKyAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyICYmIG1fbGF5
ZXJSZW5kZXJlci0+aXNDb250ZXh0TG9zdCgpOwogfQogCiBjb25zdCBMYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaAppbmRleCA5MzdjMTU0ZmY2OWJhODUzYmJmYzkzNDU2ZDc3NjY3
MTBjNzBhMjI0Li5mY2U3NmQ0MmVlZGM3NjM3NDFkNmFhMzA4NDQ5YjNjYWZjMGYxNzEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oCkBAIC02NSw2ICs2NSwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTdGFydGVkKCkgY29uc3QgPSAwOwogCisgICAgLy8gQXR0ZW1wdHMgdG8gaW5pdGlhbGl6ZSBh
IGNvbnRleHQgdG8gdXNlIGZvciByZW5kZXJpbmcuIFJldHVybnMgZmFsc2UgaWYgdGhlIGNvbnRl
eHQgY291bGQgbm90IGJlIGNyZWF0ZWQuCisgICAgLy8gVGhlIGNvbnRleHQgd2lsbCBub3QgYmUg
dXNlZCBhbmQgbm8gZnJhbWVzIG1heSBiZSBwcm9kdWNlZCB1bnRpbCBpbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcigpIGlzIGNhbGxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZUNvbnRleHQo
KSA9IDA7CisKKyAgICAvLyBBdHRlbXB0cyB0byBpbml0aWFsaXplIHRoZSBsYXllciByZW5kZXJl
ci4gUmV0dXJucyBmYWxzZSBpZiB0aGUgY29udGV4dCBpc24ndCB1c2FibGUgZm9yIGNvbXBvc2l0
aW5nLgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpID0gMDsKIAog
ICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA3MmJlYzJhNzE2NjRhZjQzY2Q2
NGQwMTRkMjhiODQyNjUwOTViMjAzLi43MGRlYzA1NGM1MjUyMTYzZDNkZjBkN2Y5MzQ1ZjM3NDE2
OGRmZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtNDUs
NiArNDUsNyBAQCBQYXNzT3duUHRyPENDUHJveHk+IENDU2luZ2xlVGhyZWFkUHJveHk6OmNyZWF0
ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiBDQ1NpbmdsZVRocmVhZFByb3h5OjpD
Q1NpbmdsZVRocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICA6
IG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0KQogICAgICwgbV9jb21wb3NpdG9ySWRlbnRp
ZmllcigtMSkKKyAgICAsIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKGZhbHNlKQogICAgICwg
bV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKDApCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dExv
c3QoZmFsc2UpCiAgICAgLCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsKDApCkBAIC02OSwxMCAr
NzAsMTMgQEAgQ0NTaW5nbGVUaHJlYWRQcm94eTo6fkNDU2luZ2xlVGhyZWFkUHJveHkoKQogCiBi
b29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVs
cywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKKyAgICBUUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJl
YWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2siLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFyZWNyZWF0ZUNvbnRleHRJZk5lZWRl
ZCgpKQorICAgIGlmICghcmVjcmVhdGVDb250ZXh0SWZOZWVkZWQoKSkgeworICAgICAgICBUUkFD
RV9FVkVOVCgiY29tcG9zaXRlQW5kUmVhZGJhY2tfRWFybHlPdXRfQ29udGV4dExvc3QiLCB0aGlz
LCAwKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGNvbW1pdElmTmVlZGVk
KCk7CiAKQEAgLTEwOSwyNSArMTEzLDM1IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aXNT
dGFydGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0SW1wbDsKIH0KIAotYm9v
bCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCitib29sIEND
U2luZ2xlVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0KCkKIHsKICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpOwog
ICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEFTU0VSVChjb250
ZXh0LT5oYXNPbmVSZWYoKSk7CisgICAgbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24gPSBj
b250ZXh0OworICAgIHJldHVybiB0cnVlOworfQogCitib29sIENDU2luZ2xlVGhyZWFkUHJveHk6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbik7CiAg
ICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgICAgYm9v
bCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRl
eHQpOwotICAgICAgICBpZiAob2spCisgICAgICAgIGJvb2wgb2sgPSBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlv
bi5yZWxlYXNlKCkpOworICAgICAgICBpZiAob2spIHsKKyAgICAgICAgICAgIG1fbGF5ZXJSZW5k
ZXJlckluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG9rOwogICAgIH0KIH0K
IAogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKTsKICAgICAvLyBOb3RlOiB0aGlzIGdldHMgY2FsbGVkIGR1cmlu
ZyB0aGUgY29tbWl0IGJ5IHRoZSAiaW1wbCIgdGhyZWFkCiAgICAgcmV0dXJuIG1fbGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKaW5kZXggNGZhYTIyOTk5MTJhZWM5YzRlNmFiNGJhNzAyN2Q4MWM4MDZkNDVl
ZS4uNDM0NWVkNjJmNjA0YjdiYzBiOGUxYjYxNzFlYjg0MmIyZGZmNmQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVDb250ZXh0KCk7CiAgICAgdmlydHVhbCBib29s
IGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9CiAgICAg
dmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkgY29uc3Q7CkBAIC03NSw4ICs3NiwxMyBAQCBwcml2YXRlOgogICAgIENDTGF5
ZXJUcmVlSG9zdCogbV9sYXllclRyZWVIb3N0OwogICAgIGludCBtX2NvbXBvc2l0b3JJZGVudGlm
aWVyOwogCisgICAgLy8gSG9sZHMgb24gdG8gdGhlIGNvbnRleHQgYmV0d2VlbiBpbml0aWFsaXpl
Q29udGV4dCgpIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLiBTaG91bGRuJ3QK
KyAgICAvLyBiZSB1c2VkIGZvciBhbnl0aGluZyBlbHNlLgorICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb247CisKICAgICAvLyBVc2VkIG9u
IHRoZSBDQ1RocmVhZCwgYnV0IGNoZWNrZWQgb24gbWFpbiB0aHJlYWQgZHVyaW5nIGluaXRpYWxp
emF0aW9uL3NodXRkb3duLgogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBtX2xheWVy
VHJlZUhvc3RJbXBsOworICAgIGJvb2wgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQ7CiAgICAg
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JN
YWluVGhyZWFkOwogCiAgICAgaW50IG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNWU2YThmODYyNjJkZjYyNDQ5NDJlNWI0MmI0MmVi
YWE4ODgzM2EyZC4uNGIyMDNmMzU0Yjk5M2Y2MzMxMzA2YmVjMmMwZWFlYWJkODNmNDhmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgQ0NUaHJlYWRQcm94
eTo6Q0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBt
X2NvbW1pdFJlcXVlc3RlZChmYWxzZSkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVI
b3N0KQogICAgICwgbV9jb21wb3NpdG9ySWRlbnRpZmllcigtMSkKKyAgICAsIG1fbGF5ZXJSZW5k
ZXJlckluaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV9zdGFydGVkKGZhbHNlKQogICAgICwgbV9s
YXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIoLTEpCiAgICAgLCBt
X251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNzdWVkT25JbXBsVGhyZWFkKDApCkBAIC04NSw2ICs4
NiwxMSBAQCBib29sIENDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBp
eGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwogCisgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJ
bml0aWFsaXplZCkgeworICAgICAgICBUUkFDRV9FVkVOVCgiY29tcG9zaXRlQW5kUmVhZGJhY2tf
RWFybHlPdXRfTFJfVW5pbml0aWFsaXplZCIsIHRoaXMsIDApOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgLy8gSWYgYSBjb21taXQgaXMgcGVuZGluZywgcGVyZm9ybSB0aGUg
Y29tbWl0IGZpcnN0LgogICAgIGlmIChtX2NvbW1pdFJlcXVlc3RlZCkgIHsKICAgICAgICAgLy8g
VGhpcyBiaXQgb2YgY29kZSBpcyB1Z2xpZXIgdGhhbiBpdCBzaG91bGQgYmUgYmVjYXVzZSByZXR1
cm5pbmcKQEAgLTE0Niw5ICsxNTIsOSBAQCBib29sIENDVGhyZWFkUHJveHk6OmlzU3RhcnRlZCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhcnRlZDsKIH0KIAotYm9vbCBDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCitib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVD
b250ZXh0KCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
aW5pdGlhbGl6ZUNvbnRleHQiLCB0aGlzLCAwKTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0
M0QoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1OCwx
OSArMTY0LDI5IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
KQogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0UHRyID0gY29udGV4dC5yZWxlYXNlKCku
bGVha1JlZigpOwogICAgIEFTU0VSVChjb250ZXh0UHRyLT5oYXNPbmVSZWYoKSk7CiAKKyAgICBD
Q1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyhjb250ZXh0UHRyKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEND
VGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKK3sKKyAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIiLCB0aGlzLCAwKTsKICAg
ICAvLyBNYWtlIGEgYmxvY2tpbmcgY2FsbCB0byBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1w
bFRocmVhZC4gVGhlIHJlc3VsdHMgb2YgdGhhdCBjYWxsCiAgICAgLy8gYXJlIHB1c2hlZCBpbnRv
IHRoZSBpbml0aWFsaXplU3VjY2VlZGVkIGFuZCBjYXBhYmlsaXRpZXMgbG9jYWwgdmFyaWFibGVz
LgogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CiAgICAgYm9vbCBpbml0aWFsaXpl
U3VjY2VlZGVkID0gZmFsc2U7CiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBhYmls
aXRpZXM7CiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBs
VGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyhjb250ZXh0UHRyKSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29t
cGxldGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKCZpbml0aWFsaXplU3VjY2VlZGVkKSwgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcygmY2FwYWJpbGl0aWVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJm1fY29tcG9zaXRvcklkZW50aWZpZXIp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3Nz
VGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmluaXRpYWxpemVTdWNjZWVkZWQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmY2FwYWJpbGl0aWVzKSkpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwogCi0g
ICAgaWYgKGluaXRpYWxpemVTdWNjZWVkZWQpCisgICAgaWYgKGluaXRpYWxpemVTdWNjZWVkZWQp
IHsKKyAgICAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAgICBt
X2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNNYWluVGhyZWFkQ29weSA9IGNhcGFiaWxpdGllczsK
KyAgICB9CiAgICAgcmV0dXJuIGluaXRpYWxpemVTdWNjZWVkZWQ7CiB9CiAKQEAgLTE4Miw2ICsx
OTgsNyBAQCBpbnQgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAog
CiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ1RocmVhZFByb3h5OjpsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9sYXllclJlbmRlcmVy
SW5pdGlhbGl6ZWQpOwogICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNNYWlu
VGhyZWFkQ29weTsKIH0KIApAQCAtNTM3LDIyICs1NTQsMzAgQEAgdm9pZCBDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
bikKICAgICBPd25QdHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPiBmcmFtZVJhdGVDb250cm9sbGVy
ID0gYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcihDQ0RlbGF5QmFzZWRUaW1lU291
cmNlOjpjcmVhdGUoZGlzcGxheVJlZnJlc2hJbnRlcnZhbE1zLCBDQ1Byb3h5OjppbXBsVGhyZWFk
KCkpKSk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRl
KHRoaXMsIGZyYW1lUmF0ZUNvbnRyb2xsZXIucmVsZWFzZSgpKTsKICAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3RJbXBsLT52aXNpYmxlKCkpOwor
CisgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQgPSBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRl
KG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworICAgIG1fY29tcG9zaXRvcklkZW50aWZpZXIg
PSBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+aWRlbnRpZmllcigpOworCiAgICAgY29tcGxl
dGlvbi0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXJPbkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHRQdHIsIENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sKiBpbml0aWFsaXplU3VjY2VlZGVkLCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMsIGludCogY29tcG9zaXRvcklkZW50
aWZpZXIpCit2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFk
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOworICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25P
bkltcGxUaHJlYWQgPSBhZG9wdFJlZihjb250ZXh0KTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyogY2FwYWJpbGl0aWVzKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0KGFkb3B0UmVmKGNvbnRleHRQdHIpKTsKLSAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOworICAg
IEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZCk7CisgICAg
KmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZC5yZWxl
YXNlKCkpOwogICAgIGlmICgqaW5pdGlhbGl6ZVN1Y2NlZWRlZCkgewogICAgICAgICAqY2FwYWJp
bGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
OwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLT51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrKQog
ICAgICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE1heEZyYW1lc1BlbmRpbmco
Mik7Ci0KLSAgICAgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQgPSBDQ0lucHV0SGFuZGxl
cjo6Y3JlYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICAqY29tcG9zaXRv
cklkZW50aWZpZXIgPSBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC0+aWRlbnRpZmllcigpOwog
ICAgIH0KIAogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CmluZGV4IGExMWI1Mjc4NTk5MzFjZmI5OGY4NzI0YTUxMjQzYTA5YjRlY2MzYjkuLmI2NWE2YzYw
NGUyOTIzZmM4ZjA5Y2Y5YWM3ZjU1OTZkMGFiMGNkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAg
ICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpbml0
aWFsaXplQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJl
cigpOwogICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkgY29uc3Q7CkBAIC05OCw3ICs5OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBm
aW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAg
dm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQz
RCosIENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcyosIGludCogY29tcG9zaXRvcklkZW50aWZpZXIpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAg
ICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyopOwogICAgIHZvaWQgc2V0VmlzaWJsZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCos
IGJvb2wgdmlzaWJsZSk7CiAgICAgdm9pZCBsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50Kik7CiAKQEAgLTEwNyw2ICsxMDksNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9jb21taXRSZXF1ZXN0ZWQ7CiAgICAgQ0NMYXllclRyZWVIb3N0KiBtX2xheWVyVHJl
ZUhvc3Q7CiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CisgICAgYm9vbCBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZDsKICAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIG1fbGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllc01haW5UaHJlYWRDb3B5OwogICAgIGJvb2wgbV9zdGFydGVk
OwogICAgIGludCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJl
cjsKQEAgLTEyMSw2ICsxMjQsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxDQ1Njb3BlZFRo
cmVhZFByb3h5PiBtX21haW5UaHJlYWRQcm94eTsKIAorICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBH
cmFwaGljc0NvbnRleHQzRCB3ZSBtaWdodCB1c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJldHdlZW4g
aW5pdGlhbGl6ZUNvbnRleHQoKQorICAgIC8vIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigp
IGNhbGxzLgorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5p
dGlhbGl6YXRpb25PbkltcGxUaHJlYWQ7CisKICAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJl
YWQgaXMgd2FpaW5nIG9uIGEgcmVhZGJhY2suCiAgICAgUmVhZGJhY2tSZXF1ZXN0KiBtX3JlYWRi
YWNrUmVxdWVzdE9uSW1wbFRocmVhZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMGNiMjYwNWU4YTZkM2QzMjJm
Y2ViMGZjNzNhYTdhZmU2OTQ5MjA5MC4uNDM4NGFjOTI0N2FkZWM5MzA0OWM1MDBhMjEzMjMzMTcw
MmQ0MWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMTAxLDYgKzExMDEsOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgxMCwgMTApOwogICAgICAgICBsYXllclRyZWVI
b3N0KCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOworCisgICAgICAgIGxheWVyVHJl
ZUhvc3QoKS0+dXBkYXRlTGF5ZXJzKCk7CisKICAgICAgICAgRVhQRUNUX0VRKHZpZXdwb3J0U2l6
ZSwgbGF5ZXJUcmVlSG9zdCgpLT52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSwgbGF5ZXJUcmVlSG9z
dCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUShUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3Bv
cnRTaXplKSwgbGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnByZWZl
cnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBiODUwZjgyNDFjYzA4
MDE0MTM4ZTM4MDhjMDYxNGNhNjEwNGU2MzIxLi5iMmVkNWQ5M2JhZmU0ZGUyMTE3NWJlMmIyZWI3
YTU3ZjA0NzUwZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTQxOCw4ICs0MTgsMTIgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgSW50U2l6ZSBj
b250ZW50Qm91bmRzKDMwMCwgMzAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMpOwogCi0gICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IHJvb3RMYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKGNj
TGF5ZXJUcmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKSk7Ci0gICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGNoaWxkTGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bShjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSkp
OworICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSBvbmUgb2YgdGhlIHR3byBs
YXllcnMuCisgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDMwMCAqIDMwMDsgLy8gNCBieXRlcyBw
ZXIgcGl4ZWwuCisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUobWVtb3J5TGltaXQsIG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1p
dCk7CisKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gYWRv
cHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsK
KyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gY2hpbGRMYXllciA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAg
cm9vdExheWVyLT5hZGRDaGlsZChjaGlsZExheWVyKTsKIAogICAgIHJvb3RMYXllci0+c2V0Qm91
bmRzKGNvbnRlbnRCb3VuZHMpOwpAQCAtNDI5LDE1ICs0MzMsMTIgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgcm9vdExheWVyLT5pbnZhbGlk
YXRlUmVjdChjb250ZW50UmVjdCk7CiAgICAgY2hpbGRMYXllci0+aW52YWxpZGF0ZVJlY3QoY29u
dGVudFJlY3QpOwogCi0gICAgLy8gV2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBvbmx5IG9uZSBv
ZiB0aGUgdHdvIGxheWVycy4KLSAgICBpbnQgbWVtb3J5TGltaXQgPSA0ICogMzAwICogMzAwOyAv
LyA0IGJ5dGVzIHBlciBwaXhlbC4KLQogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVB
bGxvY2F0b3I7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9y
KTsKIAogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAg
Y2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkpOwotICAg
IGNjTGF5ZXJUcmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhNZW1vcnlM
aW1pdEJ5dGVzKG1lbW9yeUxpbWl0KTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5
TGltaXRCeXRlcyhtZW1vcnlMaW1pdCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMoKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NM
YXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOwogCkBAIC00NTAsOCArNDUxLDYgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgLy8g
UmVtb3ZlIHRoZSBjaGlsZCBsYXllci4KICAgICByb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVu
KCk7CiAKLSAgICAvLyBOZWVkIHRvIHNldCB0aGUgbWF4IGxpbWl0IGFnYWluIGFzIGl0IGdldHMg
b3ZlcndyaXR0ZW4gYnkgdXBkYXRlTGF5ZXJzKCkuCi0gICAgY2NMYXllclRyZWVIb3N0LT5jb250
ZW50c1RleHR1cmVNYW5hZ2VyKCktPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXQp
OwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgRVhQRUNUX0ZBTFNF
KHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124477</attachid>
            <date>2012-01-29 17:25:36 -0800</date>
            <delta_ts>2012-01-31 12:59:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77269-20120129172535.patch</filename>
            <type>text/plain</type>
            <size>41408</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAzYjYwODY3YzYyOGM3
OTUxMjEzZGY4MWQ1Mzk0NGQzNzMxNTg1My4uNjljNWJhYmFjZGYyOTc0YzgwYzc3ZDMyOTcxZmY5
ZjIzZjdlYThmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTAxLTI3ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBE
ZWZlciBtYWtlQ29udGV4dEN1cnJlbnQgaW4gY29tcG9zaXRvciB1bnRpbCBmaXJzdCBmcmFtZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUg
c2l0dWF0aW9ucyB3aGVyZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGEgY29tcG9zaXRvciwgYnV0
IGNhbid0IGNhbGwgbWFrZUNvbnRleHRDdXJyZW50KCkgdW50aWwgc29tZQorICAgICAgICBpbml0
aWFsaXphdGlvbiB3b3JrIGNvbXBsZXRlcyBvbiBhbm90aGVyIHRocmVhZCB0aGF0IHdlIGNhbm5v
dCBibG9jayBmb3IuIFRoaXMgZGVmZXJzIHRoZSBmaXJzdAorICAgICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKSBjYWxsIHVudGlsIHdlIG5lZWQgdG8gcHJvZHVjZSB0aGUgZmlyc3QgZnJhbWUgYXQg
d2hpY2ggcG9pbnQgd2Uga25vdyB0aGUgY2FsbCBjYW4gc3VjY2VlZCwKKyAgICAgICAgYXNzdW1p
bmcgdGhhdCB0aGUgc2NoZWR1bGVyIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgorCisgICAgICAgIFRo
aXMgaXMgYWNjb21wbGlzaGVkIGJ5IHNwbGl0dGluZyB1cCBwcm94eSBpbml0aWFsaXphdGlvbiBp
bnRvIHR3byBwaWVjZXM6CisgICAgICAgICopIGluaXRpYWxpemVDb250ZXh0KCkgd2hpY2ggYXR0
ZW1wdHMgdG8gaW5zdGFudGlhdGUgYSBHcmFwaGljc0NvbnRleHQzRC4gVGhpcyBjYW4gZmFpbCBp
ZiB3ZSBjYW4ndCBtYWtlIGEKKyAgICAgICAgY29udGV4dCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ug
d2UgYWJvcnQgY29tcGxldGVseSBhbmQgcmV0dXJuIE5VTEwgZnJvbSBDQ0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZSgpLgorCisgICAgICAgICopIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgd2hpY2gg
dXNlcyB0aGUgcHJldmlvdXNseS1jcmVhdGVkIGNvbnRleHQgdG8gaW5zdGFudGlhdGUgb3VyIGNv
bXBvc2l0b3Igb2JqZWN0cyBhbmQKKyAgICAgICAgICAgIGdyYWIgb3VyIHJlbmRlcmVyIGNhcGFi
aWxpdGllcy4gVGhpcyBjYW4gZmFpbCBpZiB0aGUgY29udGV4dCBpcyBub3QgdXNhYmxlIGZvciBj
b21wb3NpdGluZywgd2hpY2ggd2UgcmVwb3J0CisgICAgICAgICAgICB0byB0aGUgY2xpZW50IGFz
IGEgbG9zdCBjb250ZXh0IGV2ZW50LgorCisgICAgICAgIEludGVybmFsbHkgdGhpcyBpbnRyb2R1
Y2VzIGEgbmV3IHN0YXRlIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3RJbXBsIHdoZXJlIGl0IGhhcyBh
IGNvbnRleHQgYnV0IGRvZXMgbm90IHlldCBoYXZlIGEKKyAgICAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtLCB3aGljaCBoYXMgZmFpcmx5IG1pbmltYWwgaW1wYWN0LiBPbmUgb3RoZXIgY2hhbmdl
IGlzIHRoYXQgd2UgZG9uJ3QgaW5zdGFudGlhdGUgdGhlCisgICAgICAgIFRleHR1cmVNYW5hZ2Vy
cyB1bnRpbCB3ZSBoYXZlIHRoZSByZW5kZXJlciBjYXBhYmlsaXRpZXMsIGJ1dCB0aGlzIGlzbid0
IG5lY2Vzc2FyeSB1bnRpbCB3ZSB3YW50IHRvIHN0YXJ0CisgICAgICAgIHBhaW50aW5nIHNvIGl0
IGRvZXNuJ3QgaGF2ZSBhbnkgaW1wYWN0IG91dHNpZGUgb2Ygc29tZSBvdmVybHkgaW50cnVzdGl2
ZSB1bml0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRl
bnRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgIChJbWFnZUxheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNldFNh
bXBsZWRUZXhlbEZvcm1hdCk6CisgICAgICAgIChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db21t
aXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpjb21w
b3NpdGVBbmRSZWFkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmZp
bmlzaEFsbFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNl
dFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZp
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjppc0NvbnRleHRMb3N0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAg
IChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OkNDU2luZ2xlVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJl
YWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5n
bGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4
dE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6
CisKKzIwMTItMDEtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB1bm5lY2Vzc2FyeSByZXRyeSBsb2dpYyBpbiBMYXll
clJlbmRlcmVyQ2hyb21pdW0gaW5pdGlhbGl6YXRpb24gZm9yIGFjY2VsZXJhdGVkIHBhaW50aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBhY2Nl
bGVyYXRlIHBhaW50aW5nIHNldHRpbmcgaXMgZG9uZSBkaWZmZXJlbnRseSBmcm9tIG90aGVyIGNh
cGFiaWxpdHktZGVwZW5kZW50IHNldHRpbmdzIGZvciBubyBnb29kIHJlYXNvbiwKKyAgICAgICAg
cmVxdWlyaW5nIHRoYXQgd2UgcmV0cnkgaW5pdGlhbGl6YXRpb24gd2l0aCBkaWZmZXJlbnQgc2V0
dGluZ3MuIEZvciBhbGwgb3RoZXIgc2V0dGluZ3Mgd2Ugc2V0IHRoZSBjYXBhYmlsaXRpZXMKKyAg
ICAgICAgYml0IHRvIHRydWUgaWYgdGhlIHNldHRpbmcgaXMgcmVxdWVzdGVkIGFuZCBpZiB0aGUg
cmVxdWlyZWQgY2FwYWJpbGl0aWVzIGV4aXN0IG9uIHRoZSB1bmRlcmx5aW5nIGNvbnRleHQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyKToKKwogMjAxMi0wMS0yNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3VwcG9ydCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIGZv
ciBjb25zdGFudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2JlY2MwY2UwYWI4NTFj
YThiNzdhNWFmNjI5MWE2MDlmNmUwMTM2OC4uNWM2ZGFiN2MyMTNiMTI5ZmJmNzBmODMyN2JjOTA0
YTE2OGI2ZDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wMS0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gRGVmZXIgbWFrZUNvbnRleHRDdXJyZW50IGluIGNvbXBvc2l0b3IgdW50
aWwgZmlyc3QgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc3MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdFNldFZpZXdwb3J0U2l6ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKiB0
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVCk6CisK
IDIwMTItMDEtMjQgIFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBQb2ludGVyIExvY2s6IEltcGxlbWVudCBwb2ludGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDUyOWZjZTAzNjRhODI4NTVhYTQwNjM5NzE1
NmUwZmJiNGUzYTk1MGUuLjA1MzFkYmMyZDNhZWI5ZmYxY2M4NWJhNzBmMGZkZjViZjU3ZTVjNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTk2LDYgKzk2LDggQEAg
Ym9vbCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKIHsKICAgICB1cGRhdGVU
aWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOworICAgIGlmICghbV90ZXh0dXJlVXBkYXRlcikKKyAg
ICAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoKTsKIAogICAgIEludFJlY3QgbGF5ZXJSZWN0Owog
CkBAIC0xMjIsMTcgKzEyNCwyMSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoKQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCi12b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVy
VHJlZUhvc3QqIGhvc3QpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJl
VXBkYXRlcigpCiB7CiAjaWYgVVNFKFNLSUEpCi0gICAgaWYgKGhvc3QtPnNldHRpbmdzKCkuYWNj
ZWxlcmF0ZVBhaW50aW5nKQorICAgIGlmIChsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCkuYWNj
ZWxlcmF0ZVBhaW50aW5nKQogICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFp
bnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsKLSAgICBlbHNlIGlmIChob3N0LT5zZXR0aW5ncygp
LnBlclRpbGVQYWludGluZykKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVy
OjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51
c2luZ01hcFN1Yik7CisgICAgZWxzZSBpZiAobGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLnBl
clRpbGVQYWludGluZykKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpj
cmVhdGUobV9kZWxlZ2F0ZSksIGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcygpLnVzaW5nTWFwU3ViKTsKICAgICBlbHNlCiAjZW5kaWYgLy8gVVNFKFNLSUEpCi0gICAg
ICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgICAgICBtX3RleHR1cmVV
cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwogICAgIG1fdGV4dHVyZVVwZGF0ZXIt
PnNldE9wYXF1ZShvcGFxdWUoKSk7CisKKyAgICBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0ID0gbGF5
ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuYmVzdFRleHR1cmVGb3Jt
YXQ7CisgICAgc2V0VGV4dHVyZUZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICBzZXRTYW1wbGVk
VGV4ZWxGb3JtYXQodGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KHRleHR1cmVG
b3JtYXQpKTsKIH0KIAogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlKGJvb2wg
b3BhcXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggNDI2Njc5Y2FmYWJi
NzM5NGMwMmU3OTAxYmUzMzJkN2JjYjVlMDgxYS4uYzk5Yzg1Zjk2ZTdkZTczMDg1NzM3Mzk3YjAz
NzVkNmEzZTdlZTZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC02OCw3
ICs2OCw3IEBAIHByb3RlY3RlZDoKIAogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKTsKKyAgICB2b2lkIGNyZWF0
ZVRleHR1cmVVcGRhdGVyKCk7CiAgICAgdmlydHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0
dXJlVXBkYXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0KIAog
ICAgIENvbnRlbnRMYXllckRlbGVnYXRlKiBtX2RlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggMDE1NGZiMjgzMTRmM2U2YzkyNDA0N2JiNDgzNjczNjkyZGZjZmFi
Ny4uZGJhZDk4ZDkyMDI1YTNlMzcxNDkyOWE3OGU1NTViYzZmODlhNWQ4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC0xNjAsNiArMTYwLDEyIEBAIHZvaWQgSW1hZ2VMYXll
ckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAKIHZvaWQgSW1hZ2VMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiB7CisgICAgaWYgKCFtX3RleHR1cmVV
cGRhdGVyKSB7CisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJbWFnZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZShsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KS51c2luZ01hcFN1Yik7CisgICAgICAgIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBsYXllclRy
ZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsK
KyAgICAgICAgc2V0VGV4dHVyZUZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICAgICAgc2V0U2Ft
cGxlZFRleGVsRm9ybWF0KHRleHR1cmVVcGRhdGVyKCktPnNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0
dXJlRm9ybWF0KSk7CisgICAgfQogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewogICAgICAgICBt
X3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSk7CiAgICAgICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9u
KCk7CkBAIC0xODcsMTMgKzE5Myw2IEBAIGJvb2wgSW1hZ2VMYXllckNocm9taXVtOjpkcmF3c0Nv
bnRlbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzICYmIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGVU
ZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCi17Ci0gICAgLy8gQXZv
aWQgY3JlYXRpbmcgYSBuZXcgdGV4dHVyZSB1cGRhdGVyIHdoaWNoIHdvdWxkIG5vdCBoYXZlIGEg
dmFsaWQgY29weSBvZiB0aGUgY3VycmVudCBpbWFnZS4KLSAgICBpZiAoIW1fdGV4dHVyZVVwZGF0
ZXIpCi0gICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZShob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwot
fQotCiBib29sIEltYWdlTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QK
IHsKICAgICAvLyBDb250ZW50cyBzY2FsZSBpcyBub3QgbmVlZCBmb3IgaW1hZ2UgbGF5ZXIgYmVj
YXVzZSB0aGlzIGNhbiBiZSBkb25lIGluIGNvbXBvc2l0b3IgbW9yZSBlZmZpY2llbnRseS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggZDcxMjkyNDUxYzM1NTVlYWYwYzE2Y2Y5ZjJj
M2YzOTViZTA3NTMwNC4uMzY3NGY5ZjcyMDI1NjYzYTQ1NzhiNTIyMDAwYjg2ZmVlYzUxM2RiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBJbWFnZUxheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKTsKICAgICB2b2lkIHNl
dFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwogCiAgICAgdmlydHVhbCBMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKaW5kZXggZjM2N2VmOWU3ODA3MjE0NGUyYjA1YTMxMWEyZjk4OWViNzBjMTE4
Yy4uNGY3NmRkOWE5ZjI2ZjQ2N2Y5MmJmYTgzODdlYmNlY2I0MjU3NzAzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xNjMsMTAgKzE2Myw2IEBAIHByaXZhdGU6
CiAKIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwgUGFzc1JlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCkKIHsKLSNpZiBVU0UoU0tJQSkKLSAgICBpZiAob3duZXItPnNl
dHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nICYmICFjb250ZXh0U3VwcG9ydHNBY2NlbGVyYXRl
ZFBhaW50aW5nKGNvbnRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRp
ZgogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQ
dHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShvd25lciwgY29udGV4dCkpKTsKICAgICBpZiAo
IWxheWVyUmVuZGVyZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xOTEsOCArMTg3LDEwIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXpl
KCkKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChzZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZykKKyNp
ZiBVU0UoU0tJQSkKKyAgICBpZiAoc2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcgJiYgY29u
dGV4dFN1cHBvcnRzQWNjZWxlcmF0ZWRQYWludGluZyhtX2NvbnRleHQuZ2V0KCkpKQogICAgICAg
ICBtX2NhcGFiaWxpdGllcy51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmcgPSB0cnVlOworI2VuZGlm
CiAKICAgICBXZWJDb3JlOjpFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKTsKICAgICBtX2NhcGFiaWxpdGllcy5jb250ZXh0SGFzQ2FjaGVkRnJvbnRC
dWZmZXIgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fZnJvbnRfYnVmZmVyX2Nh
Y2hlZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjJlMzEyMmY5Nzgy
NzljMjdlZTMxNzIxZTFlYzAwNjAwMmYxMmNmMC4uYmZhNGU0MDEwYzFmMzhlNDRmMDRhNTM3OTNh
Y2JiY2UzNjA5NmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xNzMs
MjEgKzE3Myw2IEBAIEludFNpemUgVGlsZWRMYXllckNocm9taXVtOjpjb250ZW50Qm91bmRzKCkg
Y29uc3QKICAgICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRoKCkgKiBjb250
ZW50c1NjYWxlKCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICogY29udGVudHNTY2FsZSgp
KSk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5
ZXJUcmVlSG9zdCogaG9zdCkKLXsKLSAgICBpZiAoaG9zdCA9PSBsYXllclRyZWVIb3N0KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoaG9z
dCk7Ci0KLSAgICBpZiAoIWhvc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNyZWF0ZVRleHR1
cmVVcGRhdGVyKGhvc3QpOwotICAgIHNldFRleHR1cmVGb3JtYXQoaG9zdC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLmJlc3RUZXh0dXJlRm9ybWF0KTsKLSAgICBtX3NhbXBsZWRUZXhlbEZv
cm1hdCA9IHRleHR1cmVVcGRhdGVyKCktPnNhbXBsZWRUZXhlbEZvcm1hdChtX3RleHR1cmVGb3Jt
YXQpOwotfQotCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAg
ICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYs
IHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRh
dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFmOWY2OTU5MzQ2Mjc1NDNhODUw
OTYyOTY3ZjYzOTYyZDM3ZGZjODUuLmI3NmE4MzEwMzM5NmY2NjNlMGYzMmFhZmQ2Mzg4MDIyMzJj
YzUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC03Miw4ICs3Miw4IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHNldFRpbGVTaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lk
IHNldFRleHR1cmVGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgeyBtX3RleHR1cmVGb3Jt
YXQgPSB0ZXh0dXJlRm9ybWF0OyB9CiAgICAgdm9pZCBzZXRCb3JkZXJUZXhlbE9wdGlvbihDQ0xh
eWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24pOworICAgIHZvaWQgc2V0U2FtcGxlZFRl
eGVsRm9ybWF0KExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVk
VGV4ZWxGb3JtYXQpIHsgbV9zYW1wbGVkVGV4ZWxGb3JtYXQgPSBzYW1wbGVkVGV4ZWxGb3JtYXQ7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVy
VHJlZUhvc3QqKSA9IDA7CiAgICAgdmlydHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlcigpIGNvbnN0ID0gMDsKIAogICAgIC8vIFNldCBpbnZhbGlkYXRpb25zIHRvIGJlIHBv
dGVudGlhbGx5IHJlcGFpbnRlZCBkdXJpbmcgdXBkYXRlKCkuCkBAIC05Nyw4ICs5Nyw2IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBj
cmVhdGVDQ0xheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhvc3Qo
Q0NMYXllclRyZWVIb3N0Kik7Ci0KICAgICB2b2lkIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsKICAg
ICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCBiOTkyMzYwMmJjOTlhZDQ1ZDBhYjU5ZjEzYjYxY2JhZDhhNzFh
Njg1Li45Y2E0MzMxZjFiNWNkNzg5YWVhNzJlMDAwMmI1Zjk2NTE5N2E4Nzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAgQ0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IEND
U2V0dGluZ3MKICAgICAsIG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9mcmFtZU51bWJlcigwKQorICAgICwgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6
ZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV92aXNpYmxlKHRy
dWUpCiAgICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCkBAIC04NywyMCArODgs
MTAgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogICAgICAgICBtX3Byb3h5
ID0gQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y3JlYXRlKHRoaXMpOwogICAgIG1fcHJveHktPnN0YXJ0
KCk7CiAKLSAgICBpZiAoIW1fcHJveHktPmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkpCisgICAg
aWYgKCFtX3Byb3h5LT5pbml0aWFsaXplQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBtX2NvbXBvc2l0b3JJZGVudGlmaWVyID0gbV9wcm94eS0+Y29tcG9zaXRvcklkZW50
aWZpZXIoKTsKLQotICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIGNhcGFiaWxpdGll
cyB0aGF0IHdlIGdvdCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgotICAgIG1fc2V0dGluZ3MuYWNj
ZWxlcmF0ZVBhaW50aW5nID0gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVz
aW5nQWNjZWxlcmF0ZWRQYWludGluZzsKLQotICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2Vk
IG9uIHBhcnRpYWwgdXBkYXRlIGNhcGFiaWxpdHkuCi0gICAgbV9zZXR0aW5ncy5wYXJ0aWFsVGV4
dHVyZVVwZGF0ZXMgPSBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyAmJiBtX3Byb3h5
LT5wYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKTsKLQotICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hM
aW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4
VGV4dHVyZVNpemUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTUsNiArMTA2LDI5IEBA
IENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCgpCiAgICAgbnVtTGF5ZXJUcmVlSW5z
dGFuY2VzLS07CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcigpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIiLCB0aGlzLCAwKTsKKyAgICBpZiAoIW1fcHJveHktPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKCkpIHsKKyAgICAgICAgLy8gVWggb2gsIGJldHRlciB0ZWxsIHRoZSBjbGllbnQg
dGhhdCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoaXMgY29udGV4dC4KKyAgICAgICAgbV9j
bGllbnQtPmRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGZhbHNlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIGNhcGFiaWxpdGll
cyB0aGF0IHdlIGdvdCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgorICAgIG1fc2V0dGluZ3MuYWNj
ZWxlcmF0ZVBhaW50aW5nID0gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVz
aW5nQWNjZWxlcmF0ZWRQYWludGluZzsKKworICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2Vk
IG9uIHBhcnRpYWwgdXBkYXRlIGNhcGFiaWxpdHkuCisgICAgbV9zZXR0aW5ncy5wYXJ0aWFsVGV4
dHVyZVVwZGF0ZXMgPSBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyAmJiBtX3Byb3h5
LT5wYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKTsKKworICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hM
aW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4
VGV4dHVyZVNpemUpOworCisgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwor
fQorCisKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBs
VGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwpAQCAtMTM5LDggKzE1Myw4IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpiZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1w
bCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFRSQUNFX0VWRU5U
KCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIiwgdGhpcywgMCk7CiAKLSAgICBjb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xh
aW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7Ci0gICAgY29udGVudHNUZXh0dXJlTWFuYWdl
cigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcigpKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGlt
aXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7Cisg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBj
b21taXRzIHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8gYW4gaW1wbCB0cmVlLiBXaGVuIG1vZGlmeWlu
ZwpAQCAtMTk3LDYgKzIxMSwxMSBAQCBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0
Ojpjb250ZXh0KCkKIAogYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZUFuZFJlYWRiYWNr
KHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKKyAgICBpZiAoIW1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7
CisgICAgICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIG1fdHJpZ2dlcklkbGVQYWludHMgPSBmYWxzZTsKICAg
ICBib29sIHJldCA9IG1fcHJveHktPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHBpeGVscywgcmVjdCk7
CiAgICAgbV90cmlnZ2VySWRsZVBhaW50cyA9IHRydWU7CkBAIC0yMDUsNiArMjI0LDggQEAgYm9v
bCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29u
c3QgSW50UmVjdCYgcmVjdCkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaEFsbFJlbmRl
cmluZygpCiB7CisgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkKKyAgICAgICAg
cmV0dXJuOwogICAgIG1fcHJveHktPmZpbmlzaEFsbFJlbmRlcmluZygpOwogfQogCkBAIC0yNTMs
OCArMjc0LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplKQogICAgIGlmICh2aWV3cG9ydFNpemUgPT0gbV92aWV3cG9y
dFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+
c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmll
d3BvcnRTaXplKSk7Ci0gICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRQcmVmZXJyZWRN
ZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9y
dFNpemUpKTsKKyAgICBpZiAobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyKSB7CisgICAgICAgIG1f
Y29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFu
YWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7CisgICAgICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdl
cjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7CisgICAgfQogICAgIG1fdmlld3Bv
cnRTaXplID0gdmlld3BvcnRTaXplOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CkBAIC0yODQs
NiArMzA3LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV92aXNpYmxlID0gdmlzaWJsZTsKKworICAgIGlm
ICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIGlm
ICghdmlzaWJsZSkgewogICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1l
bW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6Omxvd0xpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkp
KTsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJl
cygpOwpAQCAtMzQ1LDYgKzM3MiwxMyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRl
KCkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCiB7CisgICAgaWYgKCFt
X2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcigpOworICAgICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBpbml0aWFsaXplLCB0aGVuIGJhaWwg
c2luY2Ugd2UncmUgcmV0dXJuaW5nIHRvIHNvZnR3YXJlIG1vZGUuCisgICAgICAgIGlmICghbV9s
YXllclJlbmRlcmVySW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zODUsOCArNDE5LDgg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290
TGF5ZXIpCiAKICAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2Vy
OjpyZWNsYWltTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7CiAgICAgc2l6ZV90IG1heExpbWl0
Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUpOwot
ICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJy
ZWRMaW1pdEJ5dGVzKTsKLSAgICBpZiAoY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jdXJyZW50
TWVtb3J5VXNlQnl0ZXMoKSA+PSBwcmVmZXJyZWRMaW1pdEJ5dGVzKQorICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdEJ5dGVzKTsK
KyAgICBpZiAobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMo
KSA+PSBwcmVmZXJyZWRMaW1pdEJ5dGVzKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZGxl
IHBhaW50aW5nIHNob3VsZCBmYWlsIHdoZW4gd2UgaGl0IHRoZSBwcmVmZXJyZWQgbWVtb3J5IGxp
bWl0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBkOTJhZGMxNjZhZTY3ZTNhZjA1
NDI5NTEwYzk3ZDNmZTM2ODM1MDlmLi42OWQzYzI3YWY1ZDZiMzBkNTczNjZhNDUwNGM3MWZmMzEw
N2U4NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTU3LDcgKzE1Nyw3IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKIAotICAgIC8vIFRlc3Qtb25seSBob29rCisgICAg
Ly8gVGVzdCBvbmx5IGhvb2sKICAgICB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVt
VGltZXMpOwogCiAgICAgdm9pZCBzZXROZWVkc0FuaW1hdGUoKTsKQEAgLTIwNCw2ICsyMDQsOCBA
QCBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IExh
eWVyTGlzdDsKICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8TWFuYWdlZFRleHR1cmU+ID4gVGV4
dHVyZUxpc3Q7CiAKKyAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CisKICAgICBl
bnVtIFBhaW50VHlwZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07CiAgICAgc3RhdGljIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSk7CiAgICAg
dm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKQEAg
LTIyMSw2ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIGludCBtX2ZyYW1lTnVtYmVyOwogCiAgICAg
T3duUHRyPENDUHJveHk+IG1fcHJveHk7CisgICAgYm9vbCBtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZDsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNmMyYzc0MjZmYzBiOTUwMDFkZWVlOGE3
MDk0ZWM5Y2Q4ZjUwYzk1Zi4uZTQ2YzFkMjYzNTQyNWVhNWEwMjRhOWQ3Nzk0NWJmNWQwODlmZjQz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI3NSw4ICsy
NzUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAK
IGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aXNDb250ZXh0TG9zdCgpCiB7Ci0gICAgQVNTRVJU
KG1fbGF5ZXJSZW5kZXJlcik7Ci0gICAgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci0+aXNDb250ZXh0
TG9zdCgpOworICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgJiYgbV9sYXllclJlbmRlcmVyLT5p
c0NvbnRleHRMb3N0KCk7CiB9CiAKIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdApAQCAt
MzQ2LDE0ICszNDUsNiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXll
clJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+CiAgICAgT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsKICAgICBsYXllclJlbmRlcmVyID0gTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dCk7CiAKLSAgICAvLyBJZiBj
cmVhdGlvbiBmYWlsZWQsIGFuZCB3ZSBoYWQgYXNrZWQgZm9yIGFjY2VsZXJhdGVkIHBhaW50aW5n
LCBkaXNhYmxlIGFjY2VsZXJhdGVkIHBhaW50aW5nCi0gICAgLy8gYW5kIHRyeSBjcmVhdGluZyB0
aGUgcmVuZGVyZXIgYWdhaW4uCi0gICAgaWYgKCFsYXllclJlbmRlcmVyICYmIG1fc2V0dGluZ3Mu
YWNjZWxlcmF0ZVBhaW50aW5nKSB7Ci0gICAgICAgIG1fc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50
aW5nID0gZmFsc2U7Ci0KLSAgICAgICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y3JlYXRlKHRoaXMsIGNvbnRleHQpOwotICAgIH0KLQogICAgIGlmIChtX2xheWVyUmVu
ZGVyZXIpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y2xvc2UoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmlu
ZGV4IDkzN2MxNTRmZjY5YmE4NTNiYmZjOTM0NTZkNzc2NjcxMGM3MGEyMjQuLmZjZTc2ZDQyZWVk
Yzc2Mzc0MWQ2YWEzMDg0NDliM2NhZmMwZjE3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTY1LDYgKzY1
LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdCA9IDA7
CiAKKyAgICAvLyBBdHRlbXB0cyB0byBpbml0aWFsaXplIGEgY29udGV4dCB0byB1c2UgZm9yIHJl
bmRlcmluZy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgY29udGV4dCBjb3VsZCBub3QgYmUgY3JlYXRl
ZC4KKyAgICAvLyBUaGUgY29udGV4dCB3aWxsIG5vdCBiZSB1c2VkIGFuZCBubyBmcmFtZXMgbWF5
IGJlIHByb2R1Y2VkIHVudGlsIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgaXMgY2FsbGVkLgor
ICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplQ29udGV4dCgpID0gMDsKKworICAgIC8vIEF0dGVt
cHRzIHRvIGluaXRpYWxpemUgdGhlIGxheWVyIHJlbmRlcmVyLiBSZXR1cm5zIGZhbHNlIGlmIHRo
ZSBjb250ZXh0IGlzbid0IHVzYWJsZSBmb3IgY29tcG9zaXRpbmcuCiAgICAgdmlydHVhbCBib29s
IGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgPSAwOwogCiAgICAgdmlydHVhbCBpbnQgY29tcG9z
aXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCmluZGV4IDcyYmVjMmE3MTY2NGFmNDNjZDY0ZDAxNGQyOGI4NDI2NTA5NWIyMDMu
LjcwZGVjMDU0YzUyNTIxNjNkM2RmMGQ3ZjkzNDVmMzc0MTY4ZGZmMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBAIFBhc3NPd25QdHI8
Q0NQcm94eT4gQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5
ZXJUcmVlSG9zdCkKIENDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkoQ0NM
YXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgIDogbV9sYXllclRyZWVIb3N0KGxheWVy
VHJlZUhvc3QpCiAgICAgLCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyKC0xKQorICAgICwgbV9sYXll
clJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX251bUZhaWxlZFJlY3JlYXRlQXR0
ZW1wdHMoMCkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fdGlt
ZXNSZWNyZWF0ZVNob3VsZEZhaWwoMCkKQEAgLTY5LDEwICs3MCwxMyBAQCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojp+Q0NTaW5nbGVUaHJlYWRQcm94eSgpCiAKIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0
KQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRS
ZWFkYmFjayIsIHRoaXMsIDApOwogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CiAKLSAgICBpZiAoIXJlY3JlYXRlQ29udGV4dElmTmVlZGVkKCkpCisgICAgaWYgKCFyZWNyZWF0
ZUNvbnRleHRJZk5lZWRlZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJjb21wb3NpdGVBbmRS
ZWFkYmFja19FYXJseU91dF9Db250ZXh0TG9zdCIsIHRoaXMsIDApOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogCiAgICAgY29tbWl0SWZOZWVkZWQoKTsKIApAQCAtMTA5LDI1ICsxMTMs
MzUgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppc1N0YXJ0ZWQoKSBjb25zdAogICAgIHJl
dHVybiBtX2xheWVyVHJlZUhvc3RJbXBsOwogfQogCi1ib29sIENDU2luZ2xlVGhyZWFkUHJveHk6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKK2Jvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUNvbnRleHQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0
LT5jcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKGNvbnRleHQtPmhhc09uZVJlZigpKTsKKyAg
ICBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbiA9IGNvbnRleHQ7CisgICAgcmV0dXJuIHRy
dWU7Cit9CiAKK2Jvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uKTsKICAgICB7CiAgICAgICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAgICBib29sIG9rID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7Ci0gICAgICAgIGlmIChvaykK
KyAgICAgICAgYm9vbCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSk7CisgICAgICAg
IGlmIChvaykgeworICAgICAgICAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVl
OwogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKKyAgICAg
ICAgfQogICAgICAgICByZXR1cm4gb2s7CiAgICAgfQogfQogCiBjb25zdCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzJiBDQ1NpbmdsZVRocmVhZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpOwog
ICAgIC8vIE5vdGU6IHRoaXMgZ2V0cyBjYWxsZWQgZHVyaW5nIHRoZSBjb21taXQgYnkgdGhlICJp
bXBsIiB0aHJlYWQKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFp
blRocmVhZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCA0ZmFh
MjI5OTkxMmFlYzljNGU2YWI0YmE3MDI3ZDgxYzgwNmQ0NWVlLi40MzQ1ZWQ2MmY2MDRiN2JjMGI4
ZTFiNjE3MWViODQyYjJkZmY2ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaW5p
dGlhbGl6ZUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoKTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7IH0KICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKQEAg
LTc1LDggKzc2LDEzIEBAIHByaXZhdGU6CiAgICAgQ0NMYXllclRyZWVIb3N0KiBtX2xheWVyVHJl
ZUhvc3Q7CiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CiAKKyAgICAvLyBIb2xkcyBv
biB0byB0aGUgY29udGV4dCBiZXR3ZWVuIGluaXRpYWxpemVDb250ZXh0KCkgYW5kIGluaXRpYWxp
emVMYXllclJlbmRlcmVyKCkgY2FsbHMuIFNob3VsZG4ndAorICAgIC8vIGJlIHVzZWQgZm9yIGFu
eXRoaW5nIGVsc2UuCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHRCZWZv
cmVJbml0aWFsaXphdGlvbjsKKwogICAgIC8vIFVzZWQgb24gdGhlIENDVGhyZWFkLCBidXQgY2hl
Y2tlZCBvbiBtYWluIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24vc2h1dGRvd24uCiAgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG1fbGF5ZXJUcmVlSG9zdEltcGw7CisgICAgYm9v
bCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZDsKICAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQ7CiAKICAgICBpbnQg
bV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCA1ZTZhOGY4NjI2MmRmNjI0NDk0MmU1YjQyYjQyZWJhYTg4ODMzYTJkLi40YjIwM2YzNTRi
OTkzZjYzMzEzMDZiZWMyYzBlYWVhYmQ4M2Y0OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcApAQCAtNTksNiArNTksNyBAQCBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5
ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fY29tbWl0UmVxdWVzdGVkKGZhbHNl
KQogICAgICwgbV9sYXllclRyZWVIb3N0KGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX2NvbXBvc2l0
b3JJZGVudGlmaWVyKC0xKQorICAgICwgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2Up
CiAgICAgLCBtX3N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVB
bmRDb21taXRTZXF1ZW5jZU51bWJlcigtMSkKICAgICAsIG1fbnVtQmVnaW5GcmFtZUFuZENvbW1p
dHNJc3N1ZWRPbkltcGxUaHJlYWQoMCkKQEAgLTg1LDYgKzg2LDExIEBAIGJvb2wgQ0NUaHJlYWRQ
cm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVl
SG9zdCk7CiAKKyAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKSB7CisgICAgICAg
IFRSQUNFX0VWRU5UKCJjb21wb3NpdGVBbmRSZWFkYmFja19FYXJseU91dF9MUl9VbmluaXRpYWxp
emVkIiwgdGhpcywgMCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBJ
ZiBhIGNvbW1pdCBpcyBwZW5kaW5nLCBwZXJmb3JtIHRoZSBjb21taXQgZmlyc3QuCiAgICAgaWYg
KG1fY29tbWl0UmVxdWVzdGVkKSAgewogICAgICAgICAvLyBUaGlzIGJpdCBvZiBjb2RlIGlzIHVn
bGllciB0aGFuIGl0IHNob3VsZCBiZSBiZWNhdXNlIHJldHVybmluZwpAQCAtMTQ2LDkgKzE1Miw5
IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aXNTdGFydGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9z
dGFydGVkOwogfQogCi1ib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVy
KCkKK2Jvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHQoKQogewotICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlciIsIHRoaXMsIDAp
OworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCIsIHRo
aXMsIDApOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fbGF5ZXJU
cmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpOwogICAgIGlmICghY29udGV4
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU4LDE5ICsxNjQsMjkgQEAgYm9vbCBDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHRQdHIgPSBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgQVNTRVJU
KGNvbnRleHRQdHItPmhhc09uZVJlZigpKTsKIAorICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplQ29udGV4dE9uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGNvbnRleHRQdHIp
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplTGF5ZXJSZW5kZXJlciIsIHRoaXMsIDApOwogICAgIC8vIE1ha2UgYSBibG9ja2luZyBj
YWxsIHRvIGluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkLiBUaGUgcmVzdWx0cyBv
ZiB0aGF0IGNhbGwKICAgICAvLyBhcmUgcHVzaGVkIGludG8gdGhlIGluaXRpYWxpemVTdWNjZWVk
ZWQgYW5kIGNhcGFiaWxpdGllcyBsb2NhbCB2YXJpYWJsZXMuCiAgICAgQ0NDb21wbGV0aW9uRXZl
bnQgY29tcGxldGlvbjsKICAgICBib29sIGluaXRpYWxpemVTdWNjZWVkZWQgPSBmYWxzZTsKICAg
ICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKICAgICBDQ1Byb3h5Ojpp
bXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQ
cm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGNvbnRl
eHRQdHIpLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmlu
aXRpYWxpemVTdWNjZWVkZWQpLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjYXBhYmlsaXRpZXMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmbV9jb21wb3NpdG9ySWRlbnRpZmllcikpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRp
b24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcygmaW5pdGlhbGl6ZVN1Y2NlZWRlZCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjYXBhYmlsaXRp
ZXMpKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiAKLSAgICBpZiAoaW5pdGlhbGl6ZVN1Y2Nl
ZWRlZCkKKyAgICBpZiAoaW5pdGlhbGl6ZVN1Y2NlZWRlZCkgeworICAgICAgICBtX2xheWVyUmVu
ZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllc01haW5UaHJlYWRDb3B5ID0gY2FwYWJpbGl0aWVzOworICAgIH0KICAgICByZXR1cm4gaW5p
dGlhbGl6ZVN1Y2NlZWRlZDsKIH0KIApAQCAtMTgyLDYgKzE5OCw3IEBAIGludCBDQ1RocmVhZFBy
b3h5Ojpjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0CiAKIGNvbnN0IExheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMmIENDVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBj
b25zdAogeworICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCk7CiAgICAgcmV0
dXJuIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc01haW5UaHJlYWRDb3B5OwogfQogCkBAIC01
MzcsMjIgKzU1NCwzMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogICAgIE93blB0cjxDQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXI+IGZyYW1lUmF0ZUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQ0NGcmFt
ZVJhdGVDb250cm9sbGVyKENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6OmNyZWF0ZShkaXNwbGF5UmVm
cmVzaEludGVydmFsTXMsIENDUHJveHk6OmltcGxUaHJlYWQoKSkpKTsKICAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZCA9IENDU2NoZWR1bGVyOjpjcmVhdGUodGhpcywgZnJhbWVSYXRlQ29udHJv
bGxlci5yZWxlYXNlKCkpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRWaXNpYmxl
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPnZpc2libGUoKSk7CisKKyAgICBtX2lucHV0SGFuZGxlck9u
SW1wbFRocmVhZCA9IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9sYXllclRyZWVIb3N0SW1wbC5n
ZXQoKSk7CisgICAgbV9jb21wb3NpdG9ySWRlbnRpZmllciA9IG1faW5wdXRIYW5kbGVyT25JbXBs
VGhyZWFkLT5pZGVudGlmaWVyKCk7CisKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAot
dm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dFB0ciwgQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24sIGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMq
IGNhcGFiaWxpdGllcywgaW50KiBjb21wb3NpdG9ySWRlbnRpZmllcikKK3ZvaWQgQ0NUaHJlYWRQ
cm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250
ZXh0T25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
KyAgICBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZCA9IGFkb3B0UmVm
KGNvbnRleHQpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRl
cmVyT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sKiBpbml0
aWFsaXplU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMp
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRl
cmVyT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
LSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoYWRvcHRSZWYoY29udGV4dFB0
cikpOwotICAgICppbml0aWFsaXplU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CisgICAgQVNTRVJUKG1fY29udGV4dEJlZm9y
ZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkKTsKKyAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJl
Zm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkLnJlbGVhc2UoKSk7CiAgICAgaWYgKCppbml0
aWFsaXplU3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIGlmIChjYXBhYmls
aXRpZXMtPnVzaW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spCiAgICAgICAgICAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+c2V0TWF4RnJhbWVzUGVuZGluZygyKTsKLQotICAgICAgICBtX2lucHV0
SGFuZGxlck9uSW1wbFRocmVhZCA9IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9sYXllclRyZWVI
b3N0SW1wbC5nZXQoKSk7Ci0gICAgICAgICpjb21wb3NpdG9ySWRlbnRpZmllciA9IG1faW5wdXRI
YW5kbGVyT25JbXBsVGhyZWFkLT5pZGVudGlmaWVyKCk7CiAgICAgfQogCiAgICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYTExYjUyNzg1OTkzMWNm
Yjk4Zjg3MjRhNTEyNDNhMDliNGVjYzNiOS4uYjY1YTZjNjA0ZTI5MjNmYzhmMDljZjlhYzdmNTU5
NmQwYWIwY2RkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwogICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFy
dGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVDb250ZXh0KCk7CiAgICAg
dmlydHVhbCBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CiAgICAgdmlydHVhbCBpbnQg
Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKQEAg
LTk4LDcgKzk5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRo
cmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKLSAgICB2b2lkIGluaXRpYWxpemVMYXllclJl
bmRlcmVyT25JbXBsVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NDb21wbGV0aW9uRXZlbnQq
LCBib29sKiBpbml0aWFsaXplU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiwg
aW50KiBjb21wb3NpdG9ySWRlbnRpZmllcik7CisgICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE9u
SW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZvaWQgaW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXJPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sKiBpbml0aWFsaXpl
U3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CiAgICAgdm9pZCBzZXRWaXNp
YmxlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCB2aXNpYmxlKTsKICAgICB2
b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsK
IApAQCAtMTA3LDYgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbW1pdFJlcXVlc3Rl
ZDsKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVlSG9zdDsKICAgICBpbnQgbV9jb21w
b3NpdG9ySWRlbnRpZmllcjsKKyAgICBib29sIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkOwog
ICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
TWFpblRocmVhZENvcHk7CiAgICAgYm9vbCBtX3N0YXJ0ZWQ7CiAgICAgaW50IG1fbGFzdEV4ZWN1
dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyOwpAQCAtMTIxLDYgKzEyNCwxMCBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPENDU2NvcGVkVGhyZWFkUHJveHk+IG1fbWFpblRocmVh
ZFByb3h5OwogCisgICAgLy8gSG9sZHMgb24gdG8gdGhlIEdyYXBoaWNzQ29udGV4dDNEIHdlIG1p
Z2h0IHVzZSBmb3IgY29tcG9zaXRpbmcgaW4gYmV0d2VlbiBpbml0aWFsaXplQ29udGV4dCgpCisg
ICAgLy8gYW5kIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgY2FsbHMuCisgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVh
ZDsKKwogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyB3YWlpbmcgb24gYSByZWFk
YmFjay4KICAgICBSZWFkYmFja1JlcXVlc3QqIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29u
dGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IGJlZWI5NGI2NThjMDVkYmM4ZDEyZGFjNTJlZDY5ZmVm
MzQ5ZWZlNmQuLjQwMzcwMDNhYTkyZGUyZGJkZWE4ODJiNWI4NTUwMzc1YmYxMzU0NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCkBAIC0xMjIsOSArMTIyLDYgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm8K
ICAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOwog
ICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nh
c3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAw
OwogCi0gICAgaWYgKHRocmVhZFVzYWdlID09IEZvclVzZU9uVGhpc1RocmVhZCAmJiAhd2ViQ29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gcHJpdiA9IEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y3JlYXRlKHdlYlZpZXdJbXBsLCB3ZWJDb250ZXh0LCBhdHRycyk7CiAgICAgaWYgKCFw
cml2KQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDBjYjI2MDVlOGE2ZDNkMzIyZmNl
YjBmYzczYWE3YWZlNjk0OTIwOTAuLjQzODRhYzkyNDdhZGVjOTMwNDljNTAwYTIxMzIzMzE3MDJk
NDFjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcApAQCAtMTEwMSw2ICsxMTAxLDkgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoMTAsIDEwKTsKICAgICAgICAgbGF5ZXJUcmVlSG9z
dCgpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKworICAgICAgICBsYXllclRyZWVI
b3N0KCktPnVwZGF0ZUxheWVycygpOworCiAgICAgICAgIEVYUEVDVF9FUSh2aWV3cG9ydFNpemUs
IGxheWVyVHJlZUhvc3QoKS0+dmlld3BvcnRTaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEoVGV4
dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSksIGxheWVyVHJlZUhvc3Qo
KS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0
U2l6ZSksIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5wcmVmZXJy
ZWRNZW1vcnlMaW1pdEJ5dGVzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjg1MGY4MjQxY2MwODAx
NDEzOGUzODA4YzA2MTRjYTYxMDRlNjMyMS4uYjJlZDVkOTNiYWZlNGRlMjExNzViZTJiMmViN2E1
N2YwNDc1MGRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC00MTgsOCArNDE4LDEyIEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIEludFNpemUgY29u
dGVudEJvdW5kcygzMDAsIDMwMCk7CiAgICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6
emVybygpLCBjb250ZW50Qm91bmRzKTsKIAotICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiByb290TGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShjY0xh
eWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSkpOwotICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBjaGlsZExheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0oY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpKTsK
KyAgICAvLyBXZSBoYXZlIGVub3VnaCBtZW1vcnkgZm9yIG9ubHkgb25lIG9mIHRoZSB0d28gbGF5
ZXJzLgorICAgIGludCBtZW1vcnlMaW1pdCA9IDQgKiAzMDAgKiAzMDA7IC8vIDQgYnl0ZXMgcGVy
IHBpeGVsLgorICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCwgbWVtb3J5TGltaXQp
OworCisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Cisg
ICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGNoaWxkTGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIHJv
b3RMYXllci0+YWRkQ2hpbGQoY2hpbGRMYXllcik7CiAKICAgICByb290TGF5ZXItPnNldEJvdW5k
cyhjb250ZW50Qm91bmRzKTsKQEAgLTQyOSwxNSArNDMzLDEyIEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIHJvb3RMYXllci0+aW52YWxpZGF0
ZVJlY3QoY29udGVudFJlY3QpOwogICAgIGNoaWxkTGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRl
bnRSZWN0KTsKIAotICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSBvbmUgb2Yg
dGhlIHR3byBsYXllcnMuCi0gICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDMwMCAqIDMwMDsgLy8g
NCBieXRlcyBwZXIgcGl4ZWwuCi0KICAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxs
b2NhdG9yOwogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7
CiAKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAzMDApKTsKLSAgICBj
Y0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+c2V0TWF4TWVtb3J5TGlt
aXRCeXRlcyhtZW1vcnlMaW1pdCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMobWVtb3J5TGltaXQpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5
ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKIApAQCAtNDUwLDggKzQ1MSw2IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFJl
bW92ZSB0aGUgY2hpbGQgbGF5ZXIuCiAgICAgcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigp
OwogCi0gICAgLy8gTmVlZCB0byBzZXQgdGhlIG1heCBsaW1pdCBhZ2FpbiBhcyBpdCBnZXRzIG92
ZXJ3cml0dGVuIGJ5IHVwZGF0ZUxheWVycygpLgotICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29udGVu
dHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0KTsK
ICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAgIEVYUEVDVF9GQUxTRShy
b290TGF5ZXItPnNraXBzRHJhdygpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124803</attachid>
            <date>2012-01-31 12:59:08 -0800</date>
            <delta_ts>2012-01-31 23:50:05 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77269-20120131125906.patch</filename>
            <type>text/plain</type>
            <size>38548</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNiNWU0NWZjMDAyNDkx
MWM3NDg2MWFiMWU3ZTczOTM2Zjc1NDgzZS4uNzlhNDNhNmNkNmYxNjY4OWE1ZTIwNGYwYWQ3OTM3
MmJmODYzMDE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTAxLTMxICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBE
ZWZlciBtYWtlQ29udGV4dEN1cnJlbnQgaW4gY29tcG9zaXRvciB1bnRpbCBmaXJzdCBmcmFtZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgVGhlcmUgYXJl
IHNpdHVhdGlvbnMgd2hlcmUgd2UgbmVlZCB0byBpbnN0YW50aWF0ZSBhIGNvbXBvc2l0b3IsIGJ1
dCBjYW4ndCBjYWxsIG1ha2VDb250ZXh0Q3VycmVudCgpIHVudGlsIHNvbWUKKyAgICAgICAgaW5p
dGlhbGl6YXRpb24gd29yayBjb21wbGV0ZXMgb24gYW5vdGhlciB0aHJlYWQgdGhhdCB3ZSBjYW5u
b3QgYmxvY2sgZm9yLiBUaGlzIGRlZmVycyB0aGUgZmlyc3QKKyAgICAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCkgY2FsbCB1bnRpbCB3ZSBuZWVkIHRvIHByb2R1Y2UgdGhlIGZpcnN0IGZyYW1lIGF0
IHdoaWNoIHBvaW50IHdlIGtub3cgdGhlIGNhbGwgY2FuIHN1Y2NlZWQsCisgICAgICAgIGFzc3Vt
aW5nIHRoYXQgdGhlIHNjaGVkdWxlciBkb2VzIHRoZSByaWdodCB0aGluZy4KKworICAgICAgICBU
aGlzIGlzIGFjY29tcGxpc2hlZCBieSBzcGxpdHRpbmcgdXAgcHJveHkgaW5pdGlhbGl6YXRpb24g
aW50byB0d28gcGllY2VzOgorICAgICAgICAqKSBpbml0aWFsaXplQ29udGV4dCgpIHdoaWNoIGF0
dGVtcHRzIHRvIGluc3RhbnRpYXRlIGEgR3JhcGhpY3NDb250ZXh0M0QuIFRoaXMgY2FuIGZhaWwg
aWYgd2UgY2FuJ3QgbWFrZSBhCisgICAgICAgIGNvbnRleHQgYXQgYWxsLCBpbiB3aGljaCBjYXNl
IHdlIGFib3J0IGNvbXBsZXRlbHkgYW5kIHJldHVybiBOVUxMIGZyb20gQ0NMYXllclRyZWVIb3N0
OjpjcmVhdGUoKS4KKworICAgICAgICAqKSBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIHdoaWNo
IHVzZXMgdGhlIHByZXZpb3VzbHktY3JlYXRlZCBjb250ZXh0IHRvIGluc3RhbnRpYXRlIG91ciBj
b21wb3NpdG9yIG9iamVjdHMgYW5kCisgICAgICAgICAgICBncmFiIG91ciByZW5kZXJlciBjYXBh
YmlsaXRpZXMuIFRoaXMgY2FuIGZhaWwgaWYgdGhlIGNvbnRleHQgaXMgbm90IHVzYWJsZSBmb3Ig
Y29tcG9zaXRpbmcsIHdoaWNoIHdlIHJlcG9ydAorICAgICAgICAgICAgdG8gdGhlIGNsaWVudCBh
cyBhIGxvc3QgY29udGV4dCBldmVudC4KKworICAgICAgICBJbnRlcm5hbGx5IHRoaXMgaW50cm9k
dWNlcyBhIG5ldyBzdGF0ZSB0byB0aGUgQ0NMYXllclRyZWVIb3N0SW1wbCB3aGVyZSBpdCBoYXMg
YSBjb250ZXh0IGJ1dCBkb2VzIG5vdCB5ZXQgaGF2ZSBhCisgICAgICAgIExheWVyUmVuZGVyZXJD
aHJvbWl1bSwgd2hpY2ggaGFzIGZhaXJseSBtaW5pbWFsIGltcGFjdC4gT25lIG90aGVyIGNoYW5n
ZSBpcyB0aGF0IHdlIGRvbid0IGluc3RhbnRpYXRlIHRoZQorICAgICAgICBUZXh0dXJlTWFuYWdl
cnMgdW50aWwgd2UgaGF2ZSB0aGUgcmVuZGVyZXIgY2FwYWJpbGl0aWVzLCBidXQgdGhpcyBpc24n
dCBuZWNlc3NhcnkgdW50aWwgd2Ugd2FudCB0byBzdGFydAorICAgICAgICBwYWludGluZyBzbyBp
dCBkb2Vzbid0IGhhdmUgYW55IGltcGFjdCBvdXRzaWRlIG9mIHNvbWUgb3Zlcmx5IGludHJ1c3Rp
dmUgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoSW1hZ2VMYXllckNocm9t
aXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpzZXRT
YW1wbGVkVGV4ZWxGb3JtYXQpOgorICAgICAgICAoVGlsZWRMYXllckNocm9taXVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29t
bWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29t
cG9zaXRlQW5kUmVhZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpm
aW5pc2hBbGxSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpz
ZXRWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRW
aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICgpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aXNDb250ZXh0TG9zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAg
ICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFBy
b3h5OjpDQ1NpbmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2lu
Z2xlVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
U2luZ2xlVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDU2luZ2xlVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRl
eHRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkp
OgorCiAyMDEyLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIENyYXNoIGluIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUg
d2hlbiBhdHRlbXB0aW5nIHRvIGRlbGV0ZSB0aGUgc3RhcnQgYmxvY2sKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMzMwZTdjMGI3OTZhMDFhMDk1MjNjMjAyNzFlMGUwNzQ4N2JjMTlmOC4u
M2IyZGY3ZjdkNWYxOTQwZjU0ZjNhYjA2MzhkYzI0YWUwZjhjYTczNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0zMSAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRGVmZXIgbWFrZUNv
bnRleHRDdXJyZW50IGluIGNvbXBvc2l0b3IgdW50aWwgZmlyc3QgZnJhbWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaWV3cG9y
dFNpemU6OmJlZ2luVGVzdCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAyMDEyLTAxLTMxICBBbnRvaW5lIExhYm91
ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYmFjayB0ZW1wb3JhcmlseSBX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKCkgdG8gZml4IGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNTI5ZmNlMDM2NGE4
Mjg1NWFhNDA2Mzk3MTU2ZTBmYmI0ZTNhOTUwZS4uMDUzMWRiYzJkM2FlYjlmZjFjYzg1YmE3MGYw
ZmRmNWJmNTdlNWM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAt
OTYsNiArOTYsOCBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBj
b25zdAogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQog
ewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CisgICAgaWYgKCFtX3RleHR1
cmVVcGRhdGVyKQorICAgICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcigpOwogCiAgICAgSW50UmVj
dCBsYXllclJlY3Q7CiAKQEAgLTEyMiwxNyArMTI0LDIxIEBAIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0
KCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVy
KGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmNyZWF0ZVRleHR1cmVVcGRhdGVyKCkKIHsKICNpZiBVU0UoU0tJQSkKLSAgICBpZiAoaG9zdC0+
c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCisgICAgaWYgKGxheWVyVHJlZUhvc3QoKS0+
c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIg
PSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShD
b250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwotICAgIGVsc2UgaWYgKGhv
c3QtPnNldHRpbmdzKCkucGVyVGlsZVBhaW50aW5nKQotICAgICAgICBtX3RleHR1cmVVcGRhdGVy
ID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRl
bnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICBlbHNlIGlmIChsYXllclRyZWVIb3N0KCkt
PnNldHRpbmdzKCkucGVyVGlsZVBhaW50aW5nKQorICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0g
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwogICAgIGVsc2UKICNlbmRpZiAvLyBV
U0UoU0tJQSkKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0
ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CisgICAg
ICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBsYXllclRyZWVI
b3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CiAgICAgbV90
ZXh0dXJlVXBkYXRlci0+c2V0T3BhcXVlKG9wYXF1ZSgpKTsKKworICAgIEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5i
ZXN0VGV4dHVyZUZvcm1hdDsKKyAgICBzZXRUZXh0dXJlRm9ybWF0KHRleHR1cmVGb3JtYXQpOwor
ICAgIHNldFNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxG
b3JtYXQodGV4dHVyZUZvcm1hdCkpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpz
ZXRPcGFxdWUoYm9vbCBvcGFxdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRl
eCA0MjY2NzljYWZhYmI3Mzk0YzAyZTc5MDFiZTMzMmQ3YmNiNWUwODFhLi5jOTljODVmOTZlN2Rl
NzMwODU3MzczOTdiMDM3NWQ2YTNlN2VlNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogCiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopOwor
ICAgIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoKTsKICAgICB2aXJ0dWFsIExheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRl
ci5nZXQoKTsgfQogCiAgICAgQ29udGVudExheWVyRGVsZWdhdGUqIG1fZGVsZWdhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAwMTU0ZmIyODMxNGYzZTZjOTI0MDQ3YmI0
ODM2NzM2OTJkZmNmYWI3Li5kYmFkOThkOTIwMjVhM2UzNzE0OTI5YTc4ZTU1NWJjNmY4OWE1ZDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE2MCw2ICsxNjAsMTIgQEAg
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykKIAog
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKIHsKKyAgICBp
ZiAoIW1fdGV4dHVyZVVwZGF0ZXIpIHsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEltYWdl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICAgICAgR0MzRGVudW0gdGV4dHVyZUZv
cm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLmJlc3RU
ZXh0dXJlRm9ybWF0OworICAgICAgICBzZXRUZXh0dXJlRm9ybWF0KHRleHR1cmVGb3JtYXQpOwor
ICAgICAgICBzZXRTYW1wbGVkVGV4ZWxGb3JtYXQodGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRl
eGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpKTsKKyAgICB9CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5
KSB7CiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRz
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKICAgICAgICAgdXBkYXRlVGlsZVNpemVB
bmRUaWxpbmdPcHRpb24oKTsKQEAgLTE4NywxMyArMTkzLDYgQEAgYm9vbCBJbWFnZUxheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMgJiYgVGls
ZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkK
LXsKLSAgICAvLyBBdm9pZCBjcmVhdGluZyBhIG5ldyB0ZXh0dXJlIHVwZGF0ZXIgd2hpY2ggd291
bGQgbm90IGhhdmUgYSB2YWxpZCBjb3B5IG9mIHRoZSBjdXJyZW50IGltYWdlLgotICAgIGlmICgh
bV90ZXh0dXJlVXBkYXRlcikKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51
c2luZ01hcFN1Yik7Ci19Ci0KIGJvb2wgSW1hZ2VMYXllckNocm9taXVtOjpuZWVkc0NvbnRlbnRz
U2NhbGUoKSBjb25zdAogewogICAgIC8vIENvbnRlbnRzIHNjYWxlIGlzIG5vdCBuZWVkIGZvciBp
bWFnZSBsYXllciBiZWNhdXNlIHRoaXMgY2FuIGJlIGRvbmUgaW4gY29tcG9zaXRvciBtb3JlIGVm
ZmljaWVudGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCBkNzEyOTI0NTFjMzU1
NWVhZjBjMTZjZjlmMmMzZjM5NWJlMDc1MzA0Li4zNjc0ZjlmNzIwMjU2NjNhNDU3OGI1MjIwMDBi
ODZmZWVjNTEzZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNjEsNyArNjEs
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCop
OwogICAgIHZvaWQgc2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbik7CiAKICAgICB2aXJ0dWFs
IExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcAppbmRleCAwYjBjOWJmNGU3NjFhY2NmOWZhYWU0MGNjZmU0MjI0
YWQwZmYzNTYwLi45OTBhNDk4MmVlNzdiOWIzMmRkOTQ0MWYzZDllYzk1MjUxZjI1YTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE3NCwyMSArMTc0LDYgQEAgSW50U2l6
ZSBUaWxlZExheWVyQ2hyb21pdW06OmNvbnRlbnRCb3VuZHMoKSBjb25zdAogICAgIHJldHVybiBJ
bnRTaXplKGxyb3VuZGYoYm91bmRzKCkud2lkdGgoKSAqIGNvbnRlbnRzU2NhbGUoKSksIGxyb3Vu
ZGYoYm91bmRzKCkuaGVpZ2h0KCkgKiBjb250ZW50c1NjYWxlKCkpKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQot
ewotICAgIGlmIChob3N0ID09IGxheWVyVHJlZUhvc3QoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChob3N0KTsKLQotICAgIGlmICghaG9z
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoaG9zdCk7Ci0g
ICAgc2V0VGV4dHVyZUZvcm1hdChob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuYmVz
dFRleHR1cmVGb3JtYXQpOwotICAgIG1fc2FtcGxlZFRleGVsRm9ybWF0ID0gdGV4dHVyZVVwZGF0
ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KG1fdGV4dHVyZUZvcm1hdCk7Ci19Ci0KIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAvLyBQYWludGluZyBjb3Vs
ZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRo
ZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmgKaW5kZXggMThlMDI5YzBkYzg3ZmNlNThiNzM2ZWE5ODVkOTNhNGJjOGQ3MjY4
YS4uZWJkMDYzZGY2YWVlNTcxNzY4ZDE1NzQ2MzA2N2EyNTMxZjM2NWFjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmgKQEAgLTc0LDggKzc0LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgc2V0VGV4dHVyZUZvcm1hdChH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KSB7IG1fdGV4dHVyZUZvcm1hdCA9IHRleHR1cmVGb3JtYXQ7
IH0KICAgICB2b2lkIHNldEJvcmRlclRleGVsT3B0aW9uKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3Jk
ZXJUZXhlbE9wdGlvbik7CisgICAgdm9pZCBzZXRTYW1wbGVkVGV4ZWxGb3JtYXQoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdCkgeyBtX3Nh
bXBsZWRUZXhlbEZvcm1hdCA9IHNhbXBsZWRUZXhlbEZvcm1hdDsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopID0gMDsKICAg
ICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgPSAw
OwogCiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVk
IGR1cmluZyB1cGRhdGUoKS4KQEAgLTk5LDggKzk5LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsK
LQogICAgIHZvaWQgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgc2V0VGlsaW5nT3B0
aW9uKFRpbGluZ09wdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDYyZDZjZTIzMGZkMGYxYmM2YmFiZTI0NDA2MTU0ZjY3OTZjNGUxYmQuLmNlY2I4OWYzOWFlZTlh
NmQ4N2EyYjFlMjYyNGRhNTMyMTliZmE4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcApAQCAtNjIsNiArNjIsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChD
Q0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9h
bmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2ZyYW1lTnVt
YmVyKDApCisgICAgLCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1f
c2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAsIG1faGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKQEAgLTg3LDIwICs4OCwxMCBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1fcHJveHkgPSBDQ1NpbmdsZVRocmVhZFBy
b3h5OjpjcmVhdGUodGhpcyk7CiAgICAgbV9wcm94eS0+c3RhcnQoKTsKIAotICAgIGlmICghbV9w
cm94eS0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSkKKyAgICBpZiAoIW1fcHJveHktPmluaXRp
YWxpemVDb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fY29tcG9zaXRv
cklkZW50aWZpZXIgPSBtX3Byb3h5LT5jb21wb3NpdG9ySWRlbnRpZmllcigpOwotCi0gICAgLy8g
VXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sg
ZnJvbSB0aGUgcmVuZGVyZXIuCi0gICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBt
X3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50
aW5nOwotCi0gICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUg
Y2FwYWJpbGl0eS4KLSAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1fc2V0
dGluZ3MucGFydGlhbFRleHR1cmVVcGRhdGVzICYmIG1fcHJveHktPnBhcnRpYWxUZXh0dXJlVXBk
YXRlQ2FwYWJpbGl0eSgpOwotCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNSw2ICsxMDYsMjkgQEAgQ0NMYXllclRyZWVIb3N0Ojp+
Q0NMYXllclRyZWVIb3N0KCkKICAgICBudW1MYXllclRyZWVJbnN0YW5jZXMtLTsKIH0KIAordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKK3sKKyAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlciIsIHRoaXMs
IDApOworICAgIGlmICghbV9wcm94eS0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSkgeworICAg
ICAgICAvLyBVaCBvaCwgYmV0dGVyIHRlbGwgdGhlIGNsaWVudCB0aGF0IHdlIGNhbid0IGRvIGFu
eXRoaW5nIHdpdGggdGhpcyBjb250ZXh0LgorICAgICAgICBtX2NsaWVudC0+ZGlkUmVjcmVhdGVH
cmFwaGljc0NvbnRleHQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
VXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sg
ZnJvbSB0aGUgcmVuZGVyZXIuCisgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBt
X3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50
aW5nOworCisgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUg
Y2FwYWJpbGl0eS4KKyAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1fc2V0
dGluZ3MucGFydGlhbFRleHR1cmVVcGRhdGVzICYmIG1fcHJveHktPnBhcnRpYWxUZXh0dXJlVXBk
YXRlQ2FwYWJpbGl0eSgpOworCisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisKKyAg
ICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7Cit9CisKKwogdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CkBAIC0xMzksOCArMTUzLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25J
bXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6
Y29tbWl0VG8iLCB0aGlzLCAwKTsKIAotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVk
dWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3Bv
cnRTaXplKCkpKTsKLSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmRlbGV0ZUV2aWN0ZWRU
ZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6
cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgdGhlIENDTGF5ZXJU
cmVlSG9zdCB0byBhbiBpbXBsIHRyZWUuIFdoZW4gbW9kaWZ5aW5nCkBAIC0xOTcsNiArMjExLDEx
IEBAIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3Q6OmNvbnRleHQoKQogCiBib29s
IENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25z
dCBJbnRSZWN0JiByZWN0KQogeworICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKCFtX2xh
eWVyUmVuZGVyZXJJbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CiAgICAgbV90cmlnZ2VySWRsZVBhaW50cyA9IGZhbHNlOwogICAgIGJvb2wgcmV0ID0gbV9wcm94
eS0+Y29tcG9zaXRlQW5kUmVhZGJhY2socGl4ZWxzLCByZWN0KTsKICAgICBtX3RyaWdnZXJJZGxl
UGFpbnRzID0gdHJ1ZTsKQEAgLTIwNSw2ICsyMjQsOCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6
Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKIHsKKyAgICBpZiAo
IW1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CiAgICAgbV9wcm94
eS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKQEAgLTI1Myw4ICsyNzQsMTAgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhNZW1vcnlMaW1pdEJ5
dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKLSAgICBj
b250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoVGV4
dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOworICAgIGlmICht
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIpIHsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5h
Z2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUpKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRQ
cmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUpKTsKKyAgICB9CiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNp
emU7CiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KQEAgLTI4NCw2ICszMDcsMTAgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3Zpc2libGUgPSB2aXNpYmxlOworCisgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJ
bml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCF2aXNpYmxlKSB7CiAgICAg
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJl
TWFuYWdlcjo6bG93TGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSkpOwogICAgICAgICBtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CkBAIC0zNDUsNiArMzcy
LDEzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogCiB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKIHsKKyAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRp
YWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CisgICAgICAgIC8v
IElmIHdlIGNvdWxkbid0IGluaXRpYWxpemUsIHRoZW4gYmFpbCBzaW5jZSB3ZSdyZSByZXR1cm5p
bmcgdG8gc29mdHdhcmUgbW9kZS4KKyAgICAgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIXJvb3RMYXllcigp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTM4Nyw4ICs0MjEsOCBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIAogICAgIHNpemVf
dCBwcmVmZXJyZWRMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVz
KG1fdmlld3BvcnRTaXplKTsKICAgICBzaXplX3QgbWF4TGltaXRCeXRlcyA9IFRleHR1cmVNYW5h
Z2VyOjpoaWdoTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7Ci0gICAgY29udGVudHNUZXh0dXJl
TWFuYWdlcigpLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOwotICAg
IGlmIChjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpID49
IHByZWZlcnJlZExpbWl0Qnl0ZXMpCisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1
Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOworICAgIGlmIChtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpID49IHByZWZlcnJlZExpbWl0
Qnl0ZXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElkbGUgcGFpbnRpbmcgc2hvdWxkIGZh
aWwgd2hlbiB3ZSBoaXQgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCmluZGV4IDgxYjVmMjUwNWYxYjg0NTBjNmRhZDEzY2YxYzVlODNjMDFmMDgw
Y2MuLjdiMjdjNjEyMDVlODlhNTZhMzJhMTM4Y2Y1YWRlODg2NzNlMzY5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0OwogCi0gICAgLy8gVGVzdC1vbmx5IGhvb2sKKyAgICAvLyBUZXN0IG9ubHkgaG9vawog
ICAgIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKICAgICB2b2lk
IHNldE5lZWRzQW5pbWF0ZSgpOwpAQCAtMjA0LDYgKzIwNCw4IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0OwogICAgIHR5cGVk
ZWYgVmVjdG9yPE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gPiBUZXh0dXJlTGlzdDsKIAorICAgIHZv
aWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKKwogICAgIGVudW0gUGFpbnRUeXBlIHsgUGFp
bnRWaXNpYmxlLCBQYWludElkbGUgfTsKICAgICBzdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKICAgICB2b2lkIHBhaW50TGF5ZXJDb250
ZW50cyhjb25zdCBMYXllckxpc3QmLCBQYWludFR5cGUpOwpAQCAtMjIzLDYgKzIyNSw3IEBAIHBy
aXZhdGU6CiAgICAgaW50IG1fZnJhbWVOdW1iZXI7CiAKICAgICBPd25QdHI8Q0NQcm94eT4gbV9w
cm94eTsKKyAgICBib29sIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkOwogCiAgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCAxODQ2ZDZjMmVmNWI3NGNlYzcxMTUyNmM4ZTRkZTJlMTg3NzE3YTU0Li42
NzNlNWE2ZjE1Nzc0MDQ5ODdjMmU0NGI1ZjVlYTA2M2M3MzkxZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjg0LDggKzI4NCw3IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKIAogYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjppc0NvbnRleHRMb3N0KCkKIHsKLSAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsK
LSAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyLT5pc0NvbnRleHRMb3N0KCk7CisgICAgcmV0dXJu
IG1fbGF5ZXJSZW5kZXJlciAmJiBtX2xheWVyUmVuZGVyZXItPmlzQ29udGV4dExvc3QoKTsKIH0K
IAogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0SW1wbDo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggOTM3YzE1
NGZmNjliYTg1M2JiZmM5MzQ1NmQ3NzY2NzEwYzcwYTIyNC4uZmNlNzZkNDJlZWRjNzYzNzQxZDZh
YTMwODQ0OWIzY2FmYzBmMTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNjUsNiArNjUsMTEgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBib29sIGlzU3RhcnRlZCgpIGNvbnN0ID0gMDsKIAorICAgIC8v
IEF0dGVtcHRzIHRvIGluaXRpYWxpemUgYSBjb250ZXh0IHRvIHVzZSBmb3IgcmVuZGVyaW5nLiBS
ZXR1cm5zIGZhbHNlIGlmIHRoZSBjb250ZXh0IGNvdWxkIG5vdCBiZSBjcmVhdGVkLgorICAgIC8v
IFRoZSBjb250ZXh0IHdpbGwgbm90IGJlIHVzZWQgYW5kIG5vIGZyYW1lcyBtYXkgYmUgcHJvZHVj
ZWQgdW50aWwgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBpcyBjYWxsZWQuCisgICAgdmlydHVh
bCBib29sIGluaXRpYWxpemVDb250ZXh0KCkgPSAwOworCisgICAgLy8gQXR0ZW1wdHMgdG8gaW5p
dGlhbGl6ZSB0aGUgbGF5ZXIgcmVuZGVyZXIuIFJldHVybnMgZmFsc2UgaWYgdGhlIGNvbnRleHQg
aXNuJ3QgdXNhYmxlIGZvciBjb21wb3NpdGluZy4KICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoKSA9IDA7CiAKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRp
ZmllcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
aW5kZXggNzJiZWMyYTcxNjY0YWY0M2NkNjRkMDE0ZDI4Yjg0MjY1MDk1YjIwMy4uNzBkZWMwNTRj
NTI1MjE2M2QzZGYwZDdmOTM0NWYzNzQxNjhkZmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgUGFzc093blB0cjxDQ1Byb3h5PiBD
Q1NpbmdsZVRocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0
KQogQ0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhv
c3QqIGxheWVyVHJlZUhvc3QpCiAgICAgOiBtX2xheWVyVHJlZUhvc3QobGF5ZXJUcmVlSG9zdCkK
ICAgICAsIG1fY29tcG9zaXRvcklkZW50aWZpZXIoLTEpCisgICAgLCBtX2xheWVyUmVuZGVyZXJJ
bml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cygwKQog
ICAgICwgbV9ncmFwaGljc0NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV90aW1lc1JlY3JlYXRl
U2hvdWxkRmFpbCgwKQpAQCAtNjksMTAgKzcwLDEzIEBAIENDU2luZ2xlVGhyZWFkUHJveHk6On5D
Q1NpbmdsZVRocmVhZFByb3h5KCkKIAogYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3Np
dGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisgICAg
VFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrIiwg
dGhpcywgMCk7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIGlm
ICghcmVjcmVhdGVDb250ZXh0SWZOZWVkZWQoKSkKKyAgICBpZiAoIXJlY3JlYXRlQ29udGV4dElm
TmVlZGVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoImNvbXBvc2l0ZUFuZFJlYWRiYWNrX0Vh
cmx5T3V0X0NvbnRleHRMb3N0IiwgdGhpcywgMCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAKICAgICBjb21taXRJZk5lZWRlZCgpOwogCkBAIC0xMDksMjUgKzExMywzNSBAQCBib29s
IENDU2luZ2xlVGhyZWFkUHJveHk6OmlzU3RhcnRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5
ZXJUcmVlSG9zdEltcGw7CiB9CiAKLWJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoKQorYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplQ29u
dGV4dCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUxh
eWVyVHJlZUhvc3RDb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBBU1NFUlQoY29udGV4dC0+aGFzT25lUmVmKCkpOworICAgIG1fY29udGV4
dEJlZm9yZUluaXRpYWxpemF0aW9uID0gY29udGV4dDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAor
Ym9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCit7Cisg
ICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jb250ZXh0
QmVmb3JlSW5pdGlhbGl6YXRpb24pOwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGw7Ci0gICAgICAgIGJvb2wgb2sgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKLSAgICAgICAgaWYgKG9rKQorICAgICAgICBi
b29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9j
b250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24ucmVsZWFzZSgpKTsKKyAgICAgICAgaWYgKG9rKSB7
CisgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAg
ICAgICBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBvazsKICAgICB9CiB9CiAKIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMmIENDU2luZ2xlVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25z
dAogeworICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCk7CiAgICAgLy8gTm90
ZTogdGhpcyBnZXRzIGNhbGxlZCBkdXJpbmcgdGhlIGNvbW1pdCBieSB0aGUgImltcGwiIHRocmVh
ZAogICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDRmYWEyMjk5OTEyYWVj
OWM0ZTZhYjRiYTcwMjdkODFjODA2ZDQ1ZWUuLjQzNDVlZDYyZjYwNGI3YmMwYjhlMWI2MTcxZWI4
NDJiMmRmZjZkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgdmlydHVh
bCBib29sIGlzU3RhcnRlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplQ29u
dGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpOwogICAg
IHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21w
b3NpdG9ySWRlbnRpZmllcjsgfQogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwpAQCAtNzUsOCArNzYs
MTMgQEAgcHJpdmF0ZToKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVlSG9zdDsKICAg
ICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKIAorICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBj
b250ZXh0IGJldHdlZW4gaW5pdGlhbGl6ZUNvbnRleHQoKSBhbmQgaW5pdGlhbGl6ZUxheWVyUmVu
ZGVyZXIoKSBjYWxscy4gU2hvdWxkbid0CisgICAgLy8gYmUgdXNlZCBmb3IgYW55dGhpbmcgZWxz
ZS4KKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dEJlZm9yZUluaXRpYWxp
emF0aW9uOworCiAgICAgLy8gVXNlZCBvbiB0aGUgQ0NUaHJlYWQsIGJ1dCBjaGVja2VkIG9uIG1h
aW4gdGhyZWFkIGR1cmluZyBpbml0aWFsaXphdGlvbi9zaHV0ZG93bi4KICAgICBPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gbV9sYXllclRyZWVIb3N0SW1wbDsKKyAgICBib29sIG1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkOwogICAgIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZDsKIAogICAgIGludCBtX251bUZhaWxl
ZFJlY3JlYXRlQXR0ZW1wdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDVlNmE4
Zjg2MjYyZGY2MjQ0OTQyZTViNDJiNDJlYmFhODg4MzNhMmQuLjRiMjAzZjM1NGI5OTNmNjMzMTMw
NmJlYzJjMGVhZWFiZDgzZjQ4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01
OSw2ICs1OSw3IEBAIENDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0
KiBsYXllclRyZWVIb3N0KQogICAgICwgbV9jb21taXRSZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBt
X2xheWVyVHJlZUhvc3QobGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fY29tcG9zaXRvcklkZW50aWZp
ZXIoLTEpCisgICAgLCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1f
c3RhcnRlZChmYWxzZSkKICAgICAsIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNl
cXVlbmNlTnVtYmVyKC0xKQogICAgICwgbV9udW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3VlZE9u
SW1wbFRocmVhZCgwKQpAQCAtODUsNiArODYsMTEgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojpjb21w
b3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKIAor
ICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgVFJBQ0VfRVZF
TlQoImNvbXBvc2l0ZUFuZFJlYWRiYWNrX0Vhcmx5T3V0X0xSX1VuaW5pdGlhbGl6ZWQiLCB0aGlz
LCAwKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIElmIGEgY29tbWl0
IGlzIHBlbmRpbmcsIHBlcmZvcm0gdGhlIGNvbW1pdCBmaXJzdC4KICAgICBpZiAobV9jb21taXRS
ZXF1ZXN0ZWQpICB7CiAgICAgICAgIC8vIFRoaXMgYml0IG9mIGNvZGUgaXMgdWdsaWVyIHRoYW4g
aXQgc2hvdWxkIGJlIGJlY2F1c2UgcmV0dXJuaW5nCkBAIC0xNDYsOSArMTUyLDkgQEAgYm9vbCBD
Q1RocmVhZFByb3h5Ojppc1N0YXJ0ZWQoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXJ0ZWQ7CiB9
CiAKLWJvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQorYm9vbCBD
Q1RocmVhZFByb3h5Ojppbml0aWFsaXplQ29udGV4dCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyIiwgdGhpcywgMCk7CisgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0IiwgdGhpcywgMCk7CiAg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5j
cmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNTgsMTkgKzE2NCwyOSBAQCBib29sIENDVGhyZWFkUHJveHk6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dFB0ciA9IGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICBBU1NFUlQoY29udGV4dFB0
ci0+aGFzT25lUmVmKCkpOwogCisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVDb250ZXh0
T25JbXBsVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0cikpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcigpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXll
clJlbmRlcmVyIiwgdGhpcywgMCk7CiAgICAgLy8gTWFrZSBhIGJsb2NraW5nIGNhbGwgdG8gaW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQuIFRoZSByZXN1bHRzIG9mIHRoYXQgY2Fs
bAogICAgIC8vIGFyZSBwdXNoZWQgaW50byB0aGUgaW5pdGlhbGl6ZVN1Y2NlZWRlZCBhbmQgY2Fw
YWJpbGl0aWVzIGxvY2FsIHZhcmlhYmxlcy4KICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0
aW9uOwogICAgIGJvb2wgaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IGZhbHNlOwogICAgIExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzOwogICAgIENDUHJveHk6OmltcGxUaHJlYWQo
KS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0ciksIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmaW5pdGlhbGl6ZVN1
Y2NlZWRlZCksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZtX2NvbXBvc2l0b3JJZGVudGlmaWVyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKCZpbml0aWFsaXplU3VjY2VlZGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcykpKTsKICAg
ICBjb21wbGV0aW9uLndhaXQoKTsKIAotICAgIGlmIChpbml0aWFsaXplU3VjY2VlZGVkKQorICAg
IGlmIChpbml0aWFsaXplU3VjY2VlZGVkKSB7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlckluaXRp
YWxpemVkID0gdHJ1ZTsKICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzTWFpblRo
cmVhZENvcHkgPSBjYXBhYmlsaXRpZXM7CisgICAgfQogICAgIHJldHVybiBpbml0aWFsaXplU3Vj
Y2VlZGVkOwogfQogCkBAIC0xODIsNiArMTk4LDcgQEAgaW50IENDVGhyZWFkUHJveHk6OmNvbXBv
c2l0b3JJZGVudGlmaWVyKCkgY29uc3QKIAogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyYgQ0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7Cisg
ICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKICAgICByZXR1cm4gbV9sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzTWFpblRocmVhZENvcHk7CiB9CiAKQEAgLTUzNywyMiArNTU0
LDMwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiAgICAgT3duUHRyPENDRnJhbWVSYXRlQ29udHJv
bGxlcj4gZnJhbWVSYXRlQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXIoQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6Y3JlYXRlKGRpc3BsYXlSZWZyZXNoSW50ZXJ2
YWxNcywgQ0NQcm94eTo6aW1wbFRocmVhZCgpKSkpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSh0aGlzLCBmcmFtZVJhdGVDb250cm9sbGVyLnJlbGVh
c2UoKSk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldFZpc2libGUobV9sYXllclRy
ZWVIb3N0SW1wbC0+dmlzaWJsZSgpKTsKKworICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFk
ID0gQ0NJbnB1dEhhbmRsZXI6OmNyZWF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKyAg
ICBtX2NvbXBvc2l0b3JJZGVudGlmaWVyID0gbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmlk
ZW50aWZpZXIoKTsKKwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCi12b2lkIENDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0UHRyLCBDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgYm9vbCog
aW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0
aWVzLCBpbnQqIGNvbXBvc2l0b3JJZGVudGlmaWVyKQordm9pZCBDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplQ29udGV4dE9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3sK
KyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRPbkltcGxU
aHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIG1fY29u
dGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkID0gYWRvcHRSZWYoY29udGV4dCk7
Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIGJvb2wqIGluaXRpYWxpemVTdWNj
ZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqIGNhcGFiaWxpdGllcykKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxU
aHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChhZG9wdFJlZihjb250ZXh0UHRyKSk7Ci0gICAg
KmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjb250ZXh0KTsKKyAgICBBU1NFUlQobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6
YXRpb25PbkltcGxUaHJlYWQpOworICAgICppbml0aWFsaXplU3VjY2VlZGVkID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3JlSW5pdGlh
bGl6YXRpb25PbkltcGxUaHJlYWQucmVsZWFzZSgpKTsKICAgICBpZiAoKmluaXRpYWxpemVTdWNj
ZWVkZWQpIHsKICAgICAgICAgKmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy0+dXNp
bmdTd2FwQ29tcGxldGVDYWxsYmFjaykKICAgICAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkLT5zZXRNYXhGcmFtZXNQZW5kaW5nKDIpOwotCi0gICAgICAgIG1faW5wdXRIYW5kbGVyT25J
bXBsVGhyZWFkID0gQ0NJbnB1dEhhbmRsZXI6OmNyZWF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLmdl
dCgpKTsKLSAgICAgICAgKmNvbXBvc2l0b3JJZGVudGlmaWVyID0gbV9pbnB1dEhhbmRsZXJPbklt
cGxUaHJlYWQtPmlkZW50aWZpZXIoKTsKICAgICB9CiAKICAgICBjb21wbGV0aW9uLT5zaWduYWwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBhMTFiNTI3ODU5OTMxY2ZiOThmODcyNGE1
MTI0M2EwOWI0ZWNjM2I5Li5iNjVhNmM2MDRlMjkyM2ZjOGYwOWNmOWFjN2Y1NTk2ZDBhYjBjZGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIGJv
b2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9y
SWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwpAQCAtOTgsNyArOTks
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRi
YWNrUmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwotICAgIHZvaWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbklt
cGxUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wqIGlu
aXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqLCBpbnQqIGNvbXBv
c2l0b3JJZGVudGlmaWVyKTsKKyAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0T25JbXBsVGhyZWFk
KEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQs
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKICAgICB2b2lkIHNldFZpc2libGVPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sIHZpc2libGUpOwogICAgIHZvaWQgbGF5ZXJU
cmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogCkBAIC0xMDcs
NiArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29tbWl0UmVxdWVzdGVkOwogICAgIEND
TGF5ZXJUcmVlSG9zdCogbV9sYXllclRyZWVIb3N0OwogICAgIGludCBtX2NvbXBvc2l0b3JJZGVu
dGlmaWVyOworICAgIGJvb2wgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQ7CiAgICAgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcyBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNNYWluVGhyZWFk
Q29weTsKICAgICBib29sIG1fc3RhcnRlZDsKICAgICBpbnQgbV9sYXN0RXhlY3V0ZWRCZWdpbkZy
YW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXI7CkBAIC0xMjEsNiArMTI0LDEwIEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8Q0NTY29wZWRUaHJlYWRQcm94eT4gbV9tYWluVGhyZWFkUHJveHk7CiAK
KyAgICAvLyBIb2xkcyBvbiB0byB0aGUgR3JhcGhpY3NDb250ZXh0M0Qgd2UgbWlnaHQgdXNlIGZv
ciBjb21wb3NpdGluZyBpbiBiZXR3ZWVuIGluaXRpYWxpemVDb250ZXh0KCkKKyAgICAvLyBhbmQg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBjYWxscy4KKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkOworCiAgICAg
Ly8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaWluZyBvbiBhIHJlYWRiYWNrLgogICAg
IFJlYWRiYWNrUmVxdWVzdCogbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHAKaW5kZXggOTQ5NThjOTRlMzBkNTE3MTU0ZGM4OTZkYmY1MTllYzU0OGQ1ZTNmZC4u
Y2JiZjVjNTgxYWRmYzNiZWI1OTA5NjMwMmEzMGUwYTFiN2VjY2E0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAKQEAgLTEyMyw5ICsxMjMsNiBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZybwogICAgIENocm9t
ZSogY2hyb21lID0gc3RhdGljX2Nhc3Q8Q2hyb21lKj4oaG9zdFdpbmRvdyk7CiAgICAgV2ViS2l0
OjpXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBjaHJvbWUgPyBzdGF0aWNfY2FzdDxXZWJLaXQ6
OldlYlZpZXdJbXBsKj4oY2hyb21lLT5jbGllbnQoKS0+d2ViVmlldygpKSA6IDA7CiAKLSAgICBp
ZiAodGhyZWFkVXNhZ2UgPT0gRm9yVXNlT25UaGlzVGhyZWFkICYmICF3ZWJDb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlPiBwcml2ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGUod2ViVmlld0ltcGwsIHdlYkNvbnRleHQsIGF0dHJzKTsKICAgICBpZiAoIXByaXYpCiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMGNiMjYwNWU4YTZkM2QzMjJmY2ViMGZjNzNhYTdh
ZmU2OTQ5MjA5MC4uNDM4NGFjOTI0N2FkZWM5MzA0OWM1MDBhMjEzMjMzMTcwMmQ0MWM2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCkBAIC0xMTAxLDYgKzExMDEsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBJbnRT
aXplIHZpZXdwb3J0U2l6ZSgxMCwgMTApOwogICAgICAgICBsYXllclRyZWVIb3N0KCktPnNldFZp
ZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOworCisgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+dXBk
YXRlTGF5ZXJzKCk7CisKICAgICAgICAgRVhQRUNUX0VRKHZpZXdwb3J0U2l6ZSwgbGF5ZXJUcmVl
SG9zdCgpLT52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShUZXh0dXJlTWFuYWdl
cjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSwgbGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50
c1RleHR1cmVNYW5hZ2VyKCktPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CiAgICAgICAgIEVYUEVD
VF9FUShUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKSwgbGF5
ZXJUcmVlSG9zdCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnByZWZlcnJlZE1lbW9yeUxp
bWl0Qnl0ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBiODUwZjgyNDFjYzA4MDE0MTM4ZTM4MDhj
MDYxNGNhNjEwNGU2MzIxLi5iMmVkNWQ5M2JhZmU0ZGUyMTE3NWJlMmIyZWI3YTU3ZjA0NzUwZGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTQxOCw4ICs0MTgsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRz
KDMwMCwgMzAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNv
bnRlbnRCb3VuZHMpOwogCi0gICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IHJvb3RM
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKGNjTGF5ZXJUcmVlSG9z
dC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKSk7Ci0gICAgUmVmUHRyPEZha2VUaWxlZExheWVy
Q2hyb21pdW0+IGNoaWxkTGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bShjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSkpOworICAgIC8vIFdl
IGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSBvbmUgb2YgdGhlIHR3byBsYXllcnMuCisgICAg
aW50IG1lbW9yeUxpbWl0ID0gNCAqIDMwMCAqIDMwMDsgLy8gNCBieXRlcyBwZXIgcGl4ZWwuCisg
ICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUobWVtb3J5TGltaXQsIG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCk7CisKKyAgICBS
ZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBSZWZQdHI8
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gY2hpbGRMYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgcm9vdExheWVyLT5h
ZGRDaGlsZChjaGlsZExheWVyKTsKIAogICAgIHJvb3RMYXllci0+c2V0Qm91bmRzKGNvbnRlbnRC
b3VuZHMpOwpAQCAtNDI5LDE1ICs0MzMsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgcm9vdExheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50UmVjdCk7CiAgICAgY2hpbGRMYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwog
Ci0gICAgLy8gV2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBvbmx5IG9uZSBvZiB0aGUgdHdvIGxh
eWVycy4KLSAgICBpbnQgbWVtb3J5TGltaXQgPSA0ICogMzAwICogMzAwOyAvLyA0IGJ5dGVzIHBl
ciBwaXhlbC4KLQogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7CiAg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKIAogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgY2NMYXllclRyZWVI
b3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIGNjTGF5ZXJUcmVl
SG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1l
bW9yeUxpbWl0KTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyht
ZW1vcnlMaW1pdCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKICAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0
LT5jb250ZXh0KCksIHVwZGF0ZXIpOwogCkBAIC00NTAsOCArNDUxLDYgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgLy8gUmVtb3ZlIHRoZSBj
aGlsZCBsYXllci4KICAgICByb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICAv
LyBOZWVkIHRvIHNldCB0aGUgbWF4IGxpbWl0IGFnYWluIGFzIGl0IGdldHMgb3ZlcndyaXR0ZW4g
YnkgdXBkYXRlTGF5ZXJzKCkuCi0gICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVN
YW5hZ2VyKCktPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXQpOwogICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3RMYXllci0+
c2tpcHNEcmF3KCkpOwogCg==
</data>
<flag name="commit-queue"
          id="126159"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>