<?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>109333</bug_id>
          
          <creation_ts>2013-02-08 16:40:19 -0800</creation_ts>
          <short_desc>[TexMap] Separate classes per file in TextureMapperBackingStore.h</short_desc>
          <delta_ts>2013-02-09 10:17: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="Rafael Brandao">rafael.lobo</reporter>
          <assigned_to name="Rafael Brandao">rafael.lobo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828833</commentid>
    <comment_count>0</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2013-02-08 16:40:19 -0800</bug_when>
    <thetext>[TexMap] Separate classes per file in TextureMapperBackingStore.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828834</commentid>
    <comment_count>1</comment_count>
      <attachid>187386</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2013-02-08 16:44:23 -0800</bug_when>
    <thetext>Created attachment 187386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828901</commentid>
    <comment_count>2</comment_count>
      <attachid>187403</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2013-02-08 20:31:07 -0800</bug_when>
    <thetext>Created attachment 187403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828999</commentid>
    <comment_count>3</comment_count>
      <attachid>187403</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-09 04:22:57 -0800</bug_when>
    <thetext>Comment on attachment 187403
Patch

Attachment 187403 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16465413

New failing tests:
compositing/checkerboard.html
accessibility/anchor-linked-anonymous-block-crash.html
compositing/absolute-inside-out-of-view-fixed.html
animations/3d/matrix-transform-type-animation.html
http/tests/cache/cancel-multiple-post-xhrs.html
animations/3d/state-at-end-event-transform.html
animations/animation-add-events-in-handler.html
animations/additive-transform-animations.html
animations/3d/replace-filling-transform.html
http/tests/cache/history-only-cached-subresource-loads.html
compositing/bounds-in-flipped-writing-mode.html
accessibility/accessibility-node-reparent.html
animations/animation-border-overflow.html
accessibility/accessibility-object-detached.html
accessibility/anonymous-render-block-in-continuation-causes-crash.html
animations/animation-controller-drt-api.html
compositing/absolute-position-changed-with-composited-parent-layer.html
compositing/absolute-position-changed-in-composited-layer.html
http/tests/cache/iframe-304-crash.html
animations/3d/transform-perspective.html
http/tests/cache/cancel-during-failure-crash.html
canvas/philip/tests/2d.canvas.reference.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.5.html
canvas/philip/tests/2d.clearRect.basic.html
animations/3d/transform-origin-vs-functions.html
accessibility/accessibility-node-memory-management.html
animations/animation-css-rule-types.html
canvas/philip/tests/2d.clearRect+fillRect.basic.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829032</commentid>
    <comment_count>4</comment_count>
      <attachid>187403</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-09 08:29:00 -0800</bug_when>
    <thetext>Comment on attachment 187403
Patch

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

I&apos;m pretty sure the EWS redness has nothing to do with the patch. Please make sure before submitting.

&gt; Source/WebCore/ChangeLog:10
&gt; +        TextureMapperTile which was quite confusing. Now each one has its own header.

... and its own source file.

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests needed, just refactor.

refactoring only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829060</commentid>
    <comment_count>5</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2013-02-09 10:17:09 -0800</bug_when>
    <thetext>Committed r142366: &lt;http://trac.webkit.org/changeset/142366&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187386</attachid>
            <date>2013-02-08 16:44:23 -0800</date>
            <delta_ts>2013-02-08 20:31:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109333-20130208214056.patch</filename>
            <type>text/plain</type>
            <size>43639</size>
            <attacher name="Rafael Brandao">rafael.lobo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJhOWE0NGI5YmYyYmJh
Y2JkOGExYzEyNDFmYWMxZWM4OWEzZTA1Yy4uN2ZhYTRhNDFmNDhmZDE1ODlkZTVjN2U1ODU2Yjhj
ZmIwYTk0Yjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEzLTAyLTA4ICBSYWZh
ZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1RleE1h
cF0gU2VwYXJhdGUgY2xhc3NlcyBwZXIgZmlsZSBpbiBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTMz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBoYWQgdGhlIGNsYXNzZXMgVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZSwKKyAgICAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLCBUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSBhbmQKKyAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUg
d2hpY2ggd2FzIHF1aXRlIGNvbmZ1c2luZy4gTm93IGVhY2ggb25lIGhhcyBpdHMgb3duIGhlYWRl
ci4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLCBqdXN0IHJlZmFjdG9yLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3Rv
cmU6On5UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJUaWxlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxl
OjpyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjpzZXRUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjpzZXRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp+VGV4dHVyZU1hcHBlclRpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OlRleHR1cmVNYXBwZXJUaWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjphZGp1c3Rl
ZFRyYW5zZm9ybUZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVh
dGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjp+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHNUb0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oOgorCiAyMDEzLTAyLTA3ICBSb2dl
ciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVlMyMDEwIFdlYkNvcmUg
VGVzdFN1cHBvcnQgcHJvamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2E0OWY2ZjJjNjJi
YmM5MzQ1MDViOGQ0NWEyMzg0OWQzMGY1MjdjNi4uZWYzYWMwNGM3NzNiNzVmYWJhNDNjYmU4MTUw
YTc4ZmJkMGZmNmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMTYsNiArMjAxNiw5IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IGRkMzEzYWE2NDg2MWZlMzlkMjNlZDQxZGY1YzYyYmE2ODQ2YmYyMTIuLjQzMDVmMmMzMjY5YThm
ZWM2Mzg4MzcxYWNiYmU4NWFjYWQ4MzhjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzAsNyArMzAsNiBA
QCBTT1VSQ0VTICs9IFwKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBc
CiAgICAgTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKICAg
ICBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBcCi0gICAgXAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIFwKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIFwKQEAgLTM5LDcgKzM4LDYgQEAgU09VUkNFUyArPSBc
CiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHAgXAogICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwIFwKLSAgICBcCiAgICAgYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAgXAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0LmNwcCBcCkBAIC0yMjcwLDYgKzIyNjgsOSBAQCBIRUFERVJTICs9IFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggXAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdT
dG9yZS5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
aCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlQ2xpZW50LmggXApAQCAtMjkwNCw2ICsyOTA1LDkgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jl
c29sdmVRdWV1ZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmNwcCBc
CiAgICAgcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGExMmU3NmQwYjQxZGRmMGVlNzFkOGQyNmFmNDc2NzVhNmZjNDgzMDMuLjZmMzNhODA2
MjUzYTZmZDZhZGQ3ZmY4MjY3MGQ4YTI1ODAzNTBjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQx
OTAsNiArNDE5MCwxMiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
SWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb24uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDY5
NGI1YTMyZGU2MTJiNDc3YTcwNTlkMDIyOTBjYzAwYmYyMDJkMmMuLjVlZTUzNzFkZmYwMzI0ZGQz
MDFhMjY0YzdiM2FiNzE0MThhZmRhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVu
dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgi
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDZlYzU1NjU4MGYxMmM3YWFiNDZjNjdmM2ZjOWE1YzYwYjFk
ZjIxMjIuLmNiODczNTgxYTU0NWQ2NjExMTkzNDI4NDM5YzcwZTUyMTJjNGI5NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTMzLDkxICszMyw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotdm9pZCBU
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKFBhc3NS
ZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQotewotICAgIG1fZ3JhcGhpY3NTdXJmYWNl
ID0gc3VyZmFjZTsKLX0KLQotdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCkKLXsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZh
Y2UpCi0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5zd2FwQnVmZmVycygpOwotfQotCi1QYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjp0
ZXh0dXJlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBqdXN0IHJldHVybmlu
ZyBhbiBlbXB0eSB0ZXh0dXJlLCB3ZSBzaG91bGQgd3JhcCB0aGUgdGV4dHVyZSBjb250ZW50cyBp
bnRvIGEgQml0bWFwVGV4dHVyZS4KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gZW1wdHlUZXh0
dXJlOwotICAgIHJldHVybiBlbXB0eVRleHR1cmU7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFz
aykKLXsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZhY2UpCi0gICAgICAgIG1fZ3JhcGhpY3NTdXJm
YWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFu
c2Zvcm0sIG9wYWNpdHksIG1hc2spOwotfQotI2VuZGlmCi0KLXZvaWQgVGV4dHVyZU1hcHBlclRp
bGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBp
bWFnZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250
ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQotewotICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QobV9yZWN0KTsKLSAgICB0YXJnZXRSZWN0LmludGVyc2VjdChkaXJ0
eVJlY3QpOwotICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIEludFBvaW50IHNvdXJjZU9mZnNldCA9IHRhcmdldFJlY3QubG9jYXRpb24oKTsKLQotICAg
IC8vIE5vcm1hbGl6ZSBzb3VyY2VSZWN0IHRvIHRoZSBidWZmZXIncyBjb29yZGluYXRlcy4KLSAg
ICBzb3VyY2VPZmZzZXQubW92ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkpOwotCi0g
ICAgLy8gTm9ybWFsaXplIHRhcmdldFJlY3QgdG8gdGhlIHRleHR1cmUncyBjb29yZGluYXRlcy4K
LSAgICB0YXJnZXRSZWN0Lm1vdmUoLW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsKLSAgICBpZiAo
IW1fdGV4dHVyZSkgewotICAgICAgICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5jcmVhdGVU
ZXh0dXJlKCk7Ci0gICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIGlt
YWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSA/IDAgOiBCaXRtYXBUZXh0dXJlOjpT
dXBwb3J0c0FscGhhKTsKLSAgICB9Ci0KLSAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGlt
YWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7Ci19Ci0K
LXZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50
c0ZsYWcpCi17Ci0gICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3Jl
Y3QpOwotICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7Ci0gICAgaWYgKHRhcmdl
dFJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgSW50UG9pbnQgc291cmNlT2Zm
c2V0ID0gdGFyZ2V0UmVjdC5sb2NhdGlvbigpOwotCi0gICAgLy8gTm9ybWFsaXplIHRhcmdldFJl
Y3QgdG8gdGhlIHRleHR1cmUncyBjb29yZGluYXRlcy4KLSAgICB0YXJnZXRSZWN0Lm1vdmUoLW1f
cmVjdC54KCksIC1tX3JlY3QueSgpKTsKLQotICAgIGlmICghbV90ZXh0dXJlKSB7Ci0gICAgICAg
IG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgbV90
ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNpemUoKSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNB
bHBoYSk7Ci0gICAgfQotCi0gICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFw
cGVyLCBzb3VyY2VMYXllciwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRhdGVDb250ZW50
c0ZsYWcpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlOjpwYWludChUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMpCi17Ci0gICAgaWYgKHRleHR1cmUoKS5nZXQoKSkKLSAgICAgICAgdGV4dHVyZU1hcHBl
ci0+ZHJhd1RleHR1cmUoKnRleHR1cmUoKS5nZXQoKSwgcmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNp
dHksIG1hc2ssIGV4cG9zZWRFZGdlcyk7Ci19Ci0KLVRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkKLXsKLX0KLQotdm9pZCBUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVk
ZWQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcikKLXsKLSAgICBpZiAoIW1faW1hZ2UpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIG1faW1h
Z2UuZ2V0KCksIG1faW1hZ2UtPnNpemUoKSwgbV9pbWFnZS0+cmVjdCgpLCBCaXRtYXBUZXh0dXJl
OjpVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAgbV9pbWFnZS5jbGVh
cigpOwotfQotCiB1bnNpZ25lZCBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlOjpjYWxjdWxhdGVF
eHBvc2VkVGlsZUVkZ2VzKGNvbnN0IEZsb2F0UmVjdCYgdG90YWxSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0KQogewogICAgIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IFRleHR1cmVNYXBw
ZXI6Ok5vRWRnZXM7CkBAIC0xMzIsMTIxICs0Nyw1IEBAIHVuc2lnbmVkIFRleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmU6OmNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMoY29uc3QgRmxvYXRSZWN0JiB0
CiAgICAgcmV0dXJuIGV4cG9zZWRFZGdlczsKIH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0KQotewotICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpOwotfQotCi12b2lkIFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJl
KiBtYXNrKQotewotICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1h
cHBlcik7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ld
LnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBj
YWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKLX0K
LQotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtKQotewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVz
dGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdl
dFJlY3QpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkK
LSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lk
dGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Ci19Ci0KLXZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRl
ckNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pCi17Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRU
cmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVj
dCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAg
ICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocmVwYWludENvdW50LCBib3Jk
ZXJDb2xvciwgbV90aWxlc1tpXS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0p
OwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlT3JEZXN0
cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBib29sIGhhc0FscGhhKQotewotICAgIGlmIChzaXplID09IG1fc2l6ZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9zaXplID0gc2l6ZTsKLQotICAgIFZlY3RvcjxGbG9hdFJlY3Q+
IHRpbGVSZWN0c1RvQWRkOwotICAgIFZlY3RvcjxpbnQ+IHRpbGVJbmRpY2VzVG9SZW1vdmU7Ci0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBUaWxlRXJhc2VUaHJlc2hvbGQgPSA2OwotCi0gICAgLy8g
VGhpcyBtZXRob2QgcmVjeWNsZXMgdGlsZXMuIFdlIGNoZWNrIHdoaWNoIHRpbGVzIHdlIG5lZWQg
dG8gYWRkLCB3aGljaCB0byByZW1vdmUsIGFuZCB1c2UgYXMgbWFueQotICAgIC8vIHJlbW92YWJs
ZSB0aWxlcyBhcyByZXBsYWNlbWVudCBmb3IgbmV3IHRpbGVzIHdoZW4gcG9zc2libGUuCi0gICAg
Zm9yIChmbG9hdCB5ID0gMDsgeSA8IG1fc2l6ZS5oZWlnaHQoKTsgeSArPSB0aWxlU2l6ZS5oZWln
aHQoKSkgewotICAgICAgICBmb3IgKGZsb2F0IHggPSAwOyB4IDwgbV9zaXplLndpZHRoKCk7IHgg
Kz0gdGlsZVNpemUud2lkdGgoKSkgewotICAgICAgICAgICAgRmxvYXRSZWN0IHRpbGVSZWN0KHgs
IHksIHRpbGVTaXplLndpZHRoKCksIHRpbGVTaXplLmhlaWdodCgpKTsKLSAgICAgICAgICAgIHRp
bGVSZWN0LmludGVyc2VjdChyZWN0KCkpOwotICAgICAgICAgICAgdGlsZVJlY3RzVG9BZGQuYXBw
ZW5kKHRpbGVSZWN0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIENoZWNrIHdoaWNoIHRp
bGVzIG5lZWQgdG8gYmUgcmVtb3ZlZCwgYW5kIHdoaWNoIGFscmVhZHkgZXhpc3QuCi0gICAgZm9y
IChpbnQgaSA9IG1fdGlsZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgRmxv
YXRSZWN0IG9sZFRpbGUgPSBtX3RpbGVzW2ldLnJlY3QoKTsKLSAgICAgICAgYm9vbCBleGlzdHNB
bHJlYWR5ID0gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChpbnQgaiA9IHRpbGVSZWN0c1RvQWRkLnNp
emUoKSAtIDE7IGogPj0gMDsgLS1qKSB7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgbmV3VGlsZSA9
IHRpbGVSZWN0c1RvQWRkW2pdOwotICAgICAgICAgICAgaWYgKG9sZFRpbGUgIT0gbmV3VGlsZSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgLy8gQSB0aWxlIHRoYXQg
d2Ugd2FudCB0byBhZGQgYWxyZWFkeSBleGlzdHMsIG5vIG5lZWQgdG8gYWRkIG9yIHJlbW92ZSBp
dC4KLSAgICAgICAgICAgIGV4aXN0c0FscmVhZHkgPSB0cnVlOwotICAgICAgICAgICAgdGlsZVJl
Y3RzVG9BZGQucmVtb3ZlKGopOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBUaGlzIHRpbGUgaXMgbm90IG5lZWRlZC4KLSAgICAgICAgaWYgKCFleGlzdHNBbHJl
YWR5KQotICAgICAgICAgICAgdGlsZUluZGljZXNUb1JlbW92ZS5hcHBlbmQoaSk7Ci0gICAgfQot
Ci0gICAgLy8gUmVjeWNsZSByZW1vdmFibGUgdGlsZXMgdG8gYmUgdXNlZCBmb3IgbmV3bHkgcmVx
dWVzdGVkIHRpbGVzLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZVJlY3RzVG9BZGQu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKCF0aWxlSW5kaWNlc1RvUmVtb3ZlLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgLy8gV2UgcmVjeWNsZSBhbiBleGlzdGluZyB0aWxlIGZvciB1c2Fn
ZSB3aXRoIGEgbmV3IHRpbGUgcmVjdC4KLSAgICAgICAgICAgIFRleHR1cmVNYXBwZXJUaWxlJiB0
aWxlID0gbV90aWxlc1t0aWxlSW5kaWNlc1RvUmVtb3ZlLmxhc3QoKV07Ci0gICAgICAgICAgICB0
aWxlSW5kaWNlc1RvUmVtb3ZlLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgIHRpbGUuc2V0UmVj
dCh0aWxlUmVjdHNUb0FkZFtpXSk7Ci0KLSAgICAgICAgICAgIGlmICh0aWxlLnRleHR1cmUoKSkK
LSAgICAgICAgICAgICAgICB0aWxlLnRleHR1cmUoKS0+cmVzZXQoZW5jbG9zaW5nSW50UmVjdCh0
aWxlLnJlY3QoKSkuc2l6ZSgpLCBoYXNBbHBoYSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxw
aGEgOiAwKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgbV90
aWxlcy5hcHBlbmQoVGV4dHVyZU1hcHBlclRpbGUodGlsZVJlY3RzVG9BZGRbaV0pKTsKLSAgICB9
Ci0KLSAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgdGlsZXMsIGlmIHRoZXkgd2VyZW4ndCByZWN5
Y2xlZC4KLSAgICAvLyBXZSB1c2UgYSB0aHJlc2hvbGQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNy
ZWF0ZS9kZXN0cm95IHRpbGVzIHRvbyBlYWdlcmx5LgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdGlsZUluZGljZXNUb1JlbW92ZS5zaXplKCkgJiYgbV90aWxlcy5zaXplKCkgPiBUaWxlRXJh
c2VUaHJlc2hvbGQ7ICsraSkKLSAgICAgICAgbV90aWxlcy5yZW1vdmUodGlsZUluZGljZXNUb1Jl
bW92ZVtpXSk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRh
dGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1h
cFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCi17Ci0gICAg
Y3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1h
eFRleHR1cmVTaXplKCksICFpbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKLSAgICAgICAg
bV90aWxlc1tpXS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZSwgZGlydHlSZWN0
LCB1cGRhdGVDb250ZW50c0ZsYWcpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3Jh
cGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1
cGRhdGVDb250ZW50c0ZsYWcpCi17Ci0gICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0
b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksIHRydWUpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV90aWxl
c1tpXS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0
LCB1cGRhdGVDb250ZW50c0ZsYWcpOwotfQotCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0Ci17Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gbV90aWxlc1tpXS50ZXh0dXJlKCk7Ci0gICAgICAg
IGlmICh0ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7Ci0gICAgfQotCi0gICAg
cmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKLX0KLQogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCBiNjFkMmQ4MzNjZDAxNGFmN2Ux
ZTQ2Yzk1NzQ0MzA2ZWE4N2YzYWNlLi42YmZiM2YxY2ZlNWIyZTE2NmM4MTNjMDMzZGFhZTY4YTE1
MWRlZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTQzLDc4
ICs0MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihU
ZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogICAgIHZpcnR1
YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIAotCiBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMoY29uc3QgRmxvYXRSZWN0
JiB0b3RhbFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QpOwogfTsKIAotI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQotY2xhc3MgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUg
OiBwdWJsaWMgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0K
LSAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4p
OwotICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRl
eHR1cmUqKTsKLSAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSgp
IHsgfQotCi1wcml2YXRlOgotICAgIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkK
LSAgICAgICAgOiBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkKLSAgICAgICAgeyB9Ci0KLSAg
ICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBtX2dyYXBoaWNzU3VyZmFjZTsKLX07Ci0jZW5kaWYK
LQotY2xhc3MgVGV4dHVyZU1hcHBlclRpbGUgewotcHVibGljOgotICAgIGlubGluZSBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmU7IH0K
LSAgICBpbmxpbmUgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLSAg
ICBpbmxpbmUgdm9pZCBzZXRUZXh0dXJlKEJpdG1hcFRleHR1cmUqIHRleHR1cmUpIHsgbV90ZXh0
dXJlID0gdGV4dHVyZTsgfQotICAgIGlubGluZSB2b2lkIHNldFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KSB7IG1fcmVjdCA9IHJlY3Q7IH0KLQotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0
ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAgdm9p
ZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IElu
dFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5
T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChUZXh0dXJlTWFwcGVy
KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNv
bnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7Ci0gICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRp
bGUoKSB7IH0KLQotICAgIGV4cGxpY2l0IFRleHR1cmVNYXBwZXJUaWxlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKLSAgICAgICAgOiBtX3JlY3QocmVjdCkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7Ci0gICAgRmxvYXRSZWN0IG1f
cmVjdDsKLX07Ci0KLWNsYXNzIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSA6IHB1Ymxp
YyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9Ci0gICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVy
ZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0IENv
bG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVS
UklERTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250
ZW50c0ZsYWcpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBo
aWNzTGF5ZXIqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVy
ZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKLQotICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKElt
YWdlKiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KLQotcHJpdmF0ZToKLSAgICBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKTsKLSAgICB2b2lkIGNyZWF0ZU9yRGVzdHJveVRpbGVz
SWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJbnRTaXpl
JiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBoYSk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c0Zyb21J
bWFnZUlmTmVlZGVkKFRleHR1cmVNYXBwZXIqKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBh
ZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgaW5saW5lIEZs
b2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8o
KSwgbV9zaXplKTsgfQotCi0gICAgVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlPiBtX3RpbGVzOwot
ICAgIEZsb2F0U2l6ZSBtX3NpemU7Ci0gICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwotfTsKLQog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3MTQyZDc1ZGQ1YTc2M2YwYjYyMmE1NjM2NWFkOWMyMmU4
MzllMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3Jl
LmgiCisKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1
cmZhY2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCit7CisgICAgbV9ncmFw
aGljc1N1cmZhY2UgPSBzdXJmYWNlOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKHVpbnQzMl90KQoreworICAgIGlmIChtX2dy
YXBoaWNzU3VyZmFjZSkKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZmZXJzKCk7
Cit9CisKK1Bhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIGp1
c3QgcmV0dXJuaW5nIGFuIGVtcHR5IHRleHR1cmUsIHdlIHNob3VsZCB3cmFwIHRoZSB0ZXh0dXJl
IGNvbnRlbnRzIGludG8gYSBCaXRtYXBUZXh0dXJlLgorICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiBlbXB0eVRleHR1cmU7CisgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKQoreworICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKKyAgICAgICAgbV9n
cmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdl
dFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40Y2QxMDE0ZmM4NWVhM2E3ZTk3MWM4ZGUwNWY0MWE0ZmQ0YmQy
NmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmVfaAorI2RlZmluZSBUZXh0dXJlTWFwcGVyU3VyZmFj
ZUJhY2tpbmdTdG9yZV9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVT
RShHUkFQSElDU19TVVJGQUNFKQorCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyOworY2xhc3Mg
RmxvYXRSZWN0OworCitjbGFzcyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSA6IHB1
YmxpYyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKTsgfQorICAg
IHZvaWQgc2V0R3JhcGhpY3NTdXJmYWNlKFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPik7Cisg
ICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVy
ZSopOworICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9
CisKK3ByaXZhdGU6CisgICAgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKQorICAg
ICAgICA6IFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKQorICAgICAgICB7IH0KKworICAgIFJl
ZlB0cjxHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhpY3NTdXJmYWNlOworfTsKKworfQorCisjZW5k
aWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjQwNTEz
MWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNw
cApAQCAtMCwwICsxLDc5IEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGlsZS5oIgorCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzTGF5ZXI7CisKK3ZvaWQgVGV4dHVyZU1h
cHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIElt
YWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRh
dGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQoreworICAgIEludFJlY3QgdGFyZ2V0
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobV9yZWN0KTsKKyAgICB0YXJnZXRSZWN0LmludGVyc2Vj
dChkaXJ0eVJlY3QpOworICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIEludFBvaW50IHNvdXJjZU9mZnNldCA9IHRhcmdldFJlY3QubG9jYXRpb24oKTsK
KworICAgIC8vIE5vcm1hbGl6ZSBzb3VyY2VSZWN0IHRvIHRoZSBidWZmZXIncyBjb29yZGluYXRl
cy4KKyAgICBzb3VyY2VPZmZzZXQubW92ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkp
OworCisgICAgLy8gTm9ybWFsaXplIHRhcmdldFJlY3QgdG8gdGhlIHRleHR1cmUncyBjb29yZGlu
YXRlcy4KKyAgICB0YXJnZXRSZWN0Lm1vdmUoLW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsKKyAg
ICBpZiAoIW1fdGV4dHVyZSkgeworICAgICAgICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5j
cmVhdGVUZXh0dXJlKCk7CisgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXpl
KCksIGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSA/IDAgOiBCaXRtYXBUZXh0
dXJlOjpTdXBwb3J0c0FscGhhKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRl
bnRzKGltYWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7
Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVD
b250ZW50c0ZsYWcpCit7CisgICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVj
dChtX3JlY3QpOworICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CisgICAgaWYg
KHRhcmdldFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgSW50UG9pbnQgc291
cmNlT2Zmc2V0ID0gdGFyZ2V0UmVjdC5sb2NhdGlvbigpOworCisgICAgLy8gTm9ybWFsaXplIHRh
cmdldFJlY3QgdG8gdGhlIHRleHR1cmUncyBjb29yZGluYXRlcy4KKyAgICB0YXJnZXRSZWN0Lm1v
dmUoLW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsKKworICAgIGlmICghbV90ZXh0dXJlKSB7Cisg
ICAgICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNpemUoKSwgQml0bWFwVGV4dHVyZTo6U3Vw
cG9ydHNBbHBoYSk7CisgICAgfQorCisgICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0ZXh0
dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRhdGVD
b250ZW50c0ZsYWcpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjpwYWludChUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCB1bnNpZ25lZCBl
eHBvc2VkRWRnZXMpCit7CisgICAgaWYgKHRleHR1cmUoKS5nZXQoKSkKKyAgICAgICAgdGV4dHVy
ZU1hcHBlci0+ZHJhd1RleHR1cmUoKnRleHR1cmUoKS5nZXQoKSwgcmVjdCgpLCB0cmFuc2Zvcm0s
IG9wYWNpdHksIG1hc2ssIGV4cG9zZWRFZGdlcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKyNlbmRpZiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNlZjYxOGVkM2Q2
MGUzMmE3NjNiZjQwZjE1ZmNmMmEzNDc3ZWU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFRleHR1cmVNYXBwZXJUaWxlX2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclRpbGVfaAorCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsKKworY2xhc3Mg
VGV4dHVyZU1hcHBlclRpbGUgeworcHVibGljOgorICAgIGlubGluZSBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmU7IH0KKyAgICBpbmxp
bmUgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBpbmxpbmUg
dm9pZCBzZXRUZXh0dXJlKEJpdG1hcFRleHR1cmUqIHRleHR1cmUpIHsgbV90ZXh0dXJlID0gdGV4
dHVyZTsgfQorICAgIGlubGluZSB2b2lkIHNldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7
IG1fcmVjdCA9IHJlY3Q7IH0KKworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBl
ciosIEltYWdlKiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRz
RmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEludFJlY3QmLCBC
aXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJ
bWFnZURhdGEpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IHVuc2ln
bmVkIGV4cG9zZWRFZGdlcyk7CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGUoKSB7IH0K
KworICAgIGV4cGxpY2l0IFRleHR1cmVNYXBwZXJUaWxlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
KyAgICAgICAgOiBtX3JlY3QocmVjdCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgRmxvYXRSZWN0IG1fcmVjdDsKK307
CisKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUxNmYwZjRhNTFiMDZmOTM0NDQ3NGU1N2Jm
ZDYwYzQ5NGFjN2MyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0w
LDAgKzEsMTYyIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIgorCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsKKworVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKQoreworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5l
ZWRlZChUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQoreworICAgIGlmICghbV9pbWFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgbV9p
bWFnZS5nZXQoKSwgbV9pbWFnZS0+c2l6ZSgpLCBtX2ltYWdlLT5yZWN0KCksIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICBtX2ltYWdlLmNs
ZWFyKCk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCkKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVj
dCgpLCB0YXJnZXRSZWN0KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3sKKyAgICB1cGRh
dGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOworICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFu
c2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVy
LCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVF
ZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5z
Zm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRleHR1cmVNYXBw
ZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCBtX3RpbGVzW2ldLnJlY3Qo
KSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQor
eworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+
ZHJhd1JlcGFpbnRDb3VudGVyKHJlcGFpbnRDb3VudCwgYm9yZGVyQ29sb3IsIG1fdGlsZXNbaV0u
cmVjdCgpLmxvY2F0aW9uKCksIGFkanVzdGVkVHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBo
YSkKK3sKKyAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c2l6ZSA9IHNpemU7CisKKyAgICBWZWN0b3I8RmxvYXRSZWN0PiB0aWxlUmVjdHNUb0FkZDsKKyAg
ICBWZWN0b3I8aW50PiB0aWxlSW5kaWNlc1RvUmVtb3ZlOworICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgVGlsZUVyYXNlVGhyZXNob2xkID0gNjsKKworICAgIC8vIFRoaXMgbWV0aG9kIHJlY3ljbGVz
IHRpbGVzLiBXZSBjaGVjayB3aGljaCB0aWxlcyB3ZSBuZWVkIHRvIGFkZCwgd2hpY2ggdG8gcmVt
b3ZlLCBhbmQgdXNlIGFzIG1hbnkKKyAgICAvLyByZW1vdmFibGUgdGlsZXMgYXMgcmVwbGFjZW1l
bnQgZm9yIG5ldyB0aWxlcyB3aGVuIHBvc3NpYmxlLgorICAgIGZvciAoZmxvYXQgeSA9IDA7IHkg
PCBtX3NpemUuaGVpZ2h0KCk7IHkgKz0gdGlsZVNpemUuaGVpZ2h0KCkpIHsKKyAgICAgICAgZm9y
IChmbG9hdCB4ID0gMDsgeCA8IG1fc2l6ZS53aWR0aCgpOyB4ICs9IHRpbGVTaXplLndpZHRoKCkp
IHsKKyAgICAgICAgICAgIEZsb2F0UmVjdCB0aWxlUmVjdCh4LCB5LCB0aWxlU2l6ZS53aWR0aCgp
LCB0aWxlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QocmVj
dCgpKTsKKyAgICAgICAgICAgIHRpbGVSZWN0c1RvQWRkLmFwcGVuZCh0aWxlUmVjdCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayB3aGljaCB0aWxlcyBuZWVkIHRvIGJlIHJlbW92
ZWQsIGFuZCB3aGljaCBhbHJlYWR5IGV4aXN0LgorICAgIGZvciAoaW50IGkgPSBtX3RpbGVzLnNp
emUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIEZsb2F0UmVjdCBvbGRUaWxlID0gbV90
aWxlc1tpXS5yZWN0KCk7CisgICAgICAgIGJvb2wgZXhpc3RzQWxyZWFkeSA9IGZhbHNlOworCisg
ICAgICAgIGZvciAoaW50IGogPSB0aWxlUmVjdHNUb0FkZC5zaXplKCkgLSAxOyBqID49IDA7IC0t
aikgeworICAgICAgICAgICAgRmxvYXRSZWN0IG5ld1RpbGUgPSB0aWxlUmVjdHNUb0FkZFtqXTsK
KyAgICAgICAgICAgIGlmIChvbGRUaWxlICE9IG5ld1RpbGUpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIC8vIEEgdGlsZSB0aGF0IHdlIHdhbnQgdG8gYWRkIGFscmVh
ZHkgZXhpc3RzLCBubyBuZWVkIHRvIGFkZCBvciByZW1vdmUgaXQuCisgICAgICAgICAgICBleGlz
dHNBbHJlYWR5ID0gdHJ1ZTsKKyAgICAgICAgICAgIHRpbGVSZWN0c1RvQWRkLnJlbW92ZShqKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhpcyB0aWxlIGlz
IG5vdCBuZWVkZWQuCisgICAgICAgIGlmICghZXhpc3RzQWxyZWFkeSkKKyAgICAgICAgICAgIHRp
bGVJbmRpY2VzVG9SZW1vdmUuYXBwZW5kKGkpOworICAgIH0KKworICAgIC8vIFJlY3ljbGUgcmVt
b3ZhYmxlIHRpbGVzIHRvIGJlIHVzZWQgZm9yIG5ld2x5IHJlcXVlc3RlZCB0aWxlcy4KKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVSZWN0c1RvQWRkLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmICghdGlsZUluZGljZXNUb1JlbW92ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8v
IFdlIHJlY3ljbGUgYW4gZXhpc3RpbmcgdGlsZSBmb3IgdXNhZ2Ugd2l0aCBhIG5ldyB0aWxlIHJl
Y3QuCisgICAgICAgICAgICBUZXh0dXJlTWFwcGVyVGlsZSYgdGlsZSA9IG1fdGlsZXNbdGlsZUlu
ZGljZXNUb1JlbW92ZS5sYXN0KCldOworICAgICAgICAgICAgdGlsZUluZGljZXNUb1JlbW92ZS5y
ZW1vdmVMYXN0KCk7CisgICAgICAgICAgICB0aWxlLnNldFJlY3QodGlsZVJlY3RzVG9BZGRbaV0p
OworCisgICAgICAgICAgICBpZiAodGlsZS50ZXh0dXJlKCkpCisgICAgICAgICAgICAgICAgdGls
ZS50ZXh0dXJlKCktPnJlc2V0KGVuY2xvc2luZ0ludFJlY3QodGlsZS5yZWN0KCkpLnNpemUoKSwg
aGFzQWxwaGEgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogMCk7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGlsZXMuYXBwZW5kKFRleHR1cmVN
YXBwZXJUaWxlKHRpbGVSZWN0c1RvQWRkW2ldKSk7CisgICAgfQorCisgICAgLy8gUmVtb3ZlIHVu
bmVjZXNzYXJ5IHRpbGVzLCBpZiB0aGV5IHdlcmVuJ3QgcmVjeWNsZWQuCisgICAgLy8gV2UgdXNl
IGEgdGhyZXNob2xkIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBjcmVhdGUvZGVzdHJveSB0aWxlcyB0
b28gZWFnZXJseS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVJbmRpY2VzVG9SZW1v
dmUuc2l6ZSgpICYmIG1fdGlsZXMuc2l6ZSgpID4gVGlsZUVyYXNlVGhyZXNob2xkOyArK2kpCisg
ICAgICAgIG1fdGlsZXMucmVtb3ZlKHRpbGVJbmRpY2VzVG9SZW1vdmVbaV0pOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIHRvdGFs
U2l6ZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250
ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQoreworICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVz
SWZOZWVkZWQodG90YWxTaXplLCB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLCAhaW1h
Z2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdGlsZXNbaV0udXBkYXRlQ29u
dGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNGbGFn
KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxh
eWVyLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQor
eworICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxTaXplLCB0ZXh0dXJlTWFw
cGVyLT5tYXhUZXh0dXJlU2l6ZSgpLCB0cnVlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdGlsZXNbaV0udXBkYXRlQ29udGVudHMo
dGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNGbGFn
KTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV90aWxlcy5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSA9IG1fdGlsZXNbaV0udGV4dHVyZSgpOworICAgICAgICBpZiAodGV4dHVyZSkKKyAgICAg
ICAgICAgIHJldHVybiB0ZXh0dXJlOworICAgIH0KKworICAgIHJldHVybiBQYXNzUmVmUHRyPEJp
dG1hcFRleHR1cmU+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkz
OWIxODVkN2VhMzU0ZjNiYjUzOTg1YjhhNTY3ZTkxNjc3NjRmZWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIw
MTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
X2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlX2gKKworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJUaWxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHR1cmVNYXBwZXI7CisKK2NsYXNzIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUpOyB9CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1h
cHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IElu
dFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOworICAgIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsK
KworICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBtX2ltYWdlID0g
aW1hZ2U7IH0KKworcHJpdmF0ZToKKyAgICBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUo
KTsKKyAgICB2b2lkIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRTaXpl
JiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBo
YSk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKFRleHR1cmVNYXBw
ZXIqKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3Qo
Y29uc3QgRmxvYXRSZWN0Jik7CisgICAgaW5saW5lIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyBy
ZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsgfQorCisgICAgVmVj
dG9yPFRleHR1cmVNYXBwZXJUaWxlPiBtX3RpbGVzOworICAgIEZsb2F0U2l6ZSBtX3NpemU7Cisg
ICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
I2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuaAppbmRleCBlMzM2ZDcxZmM4ZjM1OGVlOGNiMTJmNWZmMGRlMGM3ZmY3
ZjNhOTk3Li45MzEwZTM3ZGRmMjE3ZTE5ZjllZjQ5N2QxNmM5NjA2MzgzMThjYTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAt
MjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGlsZS5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
CmluZGV4IGNmYWIxNjYyZDFhYzVjNDIzZmQ1MDEwYjAxY2Q3ZTQwNjM2OTMzODMuLjNlNzZmMzhm
MDFkNWNmNGY3NGI0NGQ3MmI2OTllYTBjZWMwNTc2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTM4LDYgKzM4LDEwIEBA
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187403</attachid>
            <date>2013-02-08 20:31:07 -0800</date>
            <delta_ts>2013-02-09 08:29:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109333-20130209012740.patch</filename>
            <type>text/plain</type>
            <size>45750</size>
            <attacher name="Rafael Brandao">rafael.lobo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYxMjg0MTIyYmYxNTQ1
YmQ4NTIxMDM2YmU4YzU4NWZjYWE2NzE0Mi4uYTJkZjdjNmY2NzdiYzkxNzhjNjgwZmUzYjIzYWVm
YTg3ZTZiZGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEzLTAyLTA4ICBSYWZh
ZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1RleE1h
cF0gU2VwYXJhdGUgY2xhc3NlcyBwZXIgZmlsZSBpbiBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTMz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBoYWQgdGhlIGNsYXNzZXMgVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZSwKKyAgICAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLCBUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSBhbmQKKyAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUg
d2hpY2ggd2FzIHF1aXRlIGNvbmZ1c2luZy4gTm93IGVhY2ggb25lIGhhcyBpdHMgb3duIGhlYWRl
ci4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLCBqdXN0IHJlZmFjdG9yLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNl
dEdyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFj
ZUJhY2tpbmdTdG9yZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6flRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1
cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclRpbGU6OnNldFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclRpbGU6OnNldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6On5UZXh0dXJlTWFwcGVyVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyVGlsZTo6VGV4dHVyZU1hcHBlclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBk
YXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6ZHJhd0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRh
dGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6On5UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpyZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmg6CisKIDIwMTMtMDItMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFNuYXBzaG90dGVkIHBsdWctaW4gc2hvdWxkIHVzZSBzaGFkb3cgcm9vdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzYTQ5ZjZmMmM2MmJiYzkzNDUwNWI4ZDQ1YTIzODQ5ZDMw
ZjUyN2M2Li5lZjNhYzA0Yzc3M2I3NWZhYmE0M2NiZTgxNTBhNzhmYmQwZmY2YmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjAxNiw2ICsyMDE2LDkgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmUuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRy
YW5zZm9ybS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTk5
OTY3MWY4Yjk2ZjNiZjY3ZGY2ZDQyMDQzNmFiMzNjMzJmMjQ1Mi4uZWQzY2FkZjFiZjAzY2M0ODI4
OWYzYTg2NGYyMGEyMzhmZmQ5NWI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC02NDgzLDcgKzY0ODMsMTMgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tp
bmdTdG9yZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAogZW5kaWYgICMgRU5EIFVTRV9URVhU
VVJFX01BUFBFUl9DQUlSTwogCiBpZiBVU0VfVEVYVFVSRV9NQVBQRVJfR0wKQEAgLTY1MDgsNyAr
NjUxNCwxMyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyLmgKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCiBlbmRpZiAgIyBFTkQgVVNFX1RFWFRVUkVfTUFQUEVS
X0dMCiBlbmRpZiAgIyBVU0VfQUNDRUxFUkFURURfQ09NUE9TSVRJTkcKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggZGQzMTNhYTY0ODYxZmUzOWQyM2VkNDFkZjVjNjJiYTY4NDZiZjIxMi4uNDMwNWYyYzMyNjlh
OGZlYzYzODgzNzFhY2JiZTg1YWNhZDgzOGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMCw3ICszMCw2
IEBAIFNPVVJDRVMgKz0gXAogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
IFwKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXAog
ICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIFwKLSAgICBc
CiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgXAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAgXApAQCAtMzksNyArMzgsNiBAQCBTT1VSQ0VTICs9
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcCBcCiAgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFi
YXNlL1dvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHAgXAotICAgIFwKICAgICBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwIFwKICAgICBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuY3BwIFwKQEAgLTIyNzAsNiArMjI2OCw5IEBAIEhFQURFUlMgKz0gXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCBc
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBcCkBAIC0yOTA0LDYgKzI5MDUsOSBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1h
Z2VCdWZmZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJUaWxlLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3Bw
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggYTEyZTc2ZDBiNDFkZGYwZWU3MWQ4ZDI2YWY0NzY3NWE2ZmM0ODMwMy4uNmYzM2E4
MDYyNTNhNmZkNmFkZDdmZjgyNjcwZDhhMjU4MDM1MGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NDE5MCw2ICs0MTkwLDEyIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9w
ZXJhdGlvbi5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
Njk0YjVhMzJkZTYxMmI0NzdhNzA1OWQwMjI5MGNjMDBiZjIwMmQyYy4uNWVlNTM3MWRmZjAzMjRk
ZDMwMWEyNjRjN2IzYWI3MTQxOGFmZGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIu
aCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNmVjNTU2NTgwZjEyYzdhYWI0NmM2N2YzZmM5YTVjNjBi
MWRmMjEyMi4uY2I4NzM1ODFhNTQ1ZDY2MTExOTM0Mjg0MzljNzBlNTIxMmM0Yjk0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMzMsOTEgKzMzLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12b2lk
IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UoUGFz
c1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCi17Ci0gICAgbV9ncmFwaGljc1N1cmZh
Y2UgPSBzdXJmYWNlOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3Jl
Ojpzd2FwQnVmZmVyc0lmTmVlZGVkKHVpbnQzMl90KQotewotICAgIGlmIChtX2dyYXBoaWNzU3Vy
ZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZmZXJzKCk7Ci19Ci0KLVBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIGp1c3QgcmV0dXJu
aW5nIGFuIGVtcHR5IHRleHR1cmUsIHdlIHNob3VsZCB3cmFwIHRoZSB0ZXh0dXJlIGNvbnRlbnRz
IGludG8gYSBCaXRtYXBUZXh0dXJlLgotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBlbXB0eVRl
eHR1cmU7Ci0gICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKLX0KLQotdm9pZCBUZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBt
YXNrKQotewotICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1
cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7Ci19Ci0jZW5kaWYKLQotdm9pZCBUZXh0dXJlTWFwcGVy
VGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNv
bnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCi17Ci0gICAgSW50UmVjdCB0YXJnZXRSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChtX3JlY3QpOwotICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRp
cnR5UmVjdCk7Ci0gICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0gICAgSW50UG9pbnQgc291cmNlT2Zmc2V0ID0gdGFyZ2V0UmVjdC5sb2NhdGlvbigpOwotCi0g
ICAgLy8gTm9ybWFsaXplIHNvdXJjZVJlY3QgdG8gdGhlIGJ1ZmZlcidzIGNvb3JkaW5hdGVzLgot
ICAgIHNvdXJjZU9mZnNldC5tb3ZlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0K
LSAgICAvLyBOb3JtYWxpemUgdGFyZ2V0UmVjdCB0byB0aGUgdGV4dHVyZSdzIGNvb3JkaW5hdGVz
LgotICAgIHRhcmdldFJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwotICAgIGlm
ICghbV90ZXh0dXJlKSB7Ci0gICAgICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0
ZVRleHR1cmUoKTsKLSAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNpemUoKSwg
aW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEpOwotICAgIH0KLQotICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHMo
aW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKLX0K
LQotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRl
bnRzRmxhZykKLXsKLSAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1f
cmVjdCk7Ci0gICAgdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKLSAgICBpZiAodGFy
Z2V0UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBJbnRQb2ludCBzb3VyY2VP
ZmZzZXQgPSB0YXJnZXRSZWN0LmxvY2F0aW9uKCk7Ci0KLSAgICAvLyBOb3JtYWxpemUgdGFyZ2V0
UmVjdCB0byB0aGUgdGV4dHVyZSdzIGNvb3JkaW5hdGVzLgotICAgIHRhcmdldFJlY3QubW92ZSgt
bV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwotCi0gICAgaWYgKCFtX3RleHR1cmUpIHsKLSAgICAg
ICAgbV90ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBt
X3RleHR1cmUtPnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0
c0FscGhhKTsKLSAgICB9Ci0KLSAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVN
YXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRl
bnRzRmxhZyk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0s
IGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2ssIGNvbnN0IHVuc2lnbmVkIGV4cG9z
ZWRFZGdlcykKLXsKLSAgICBpZiAodGV4dHVyZSgpLmdldCgpKQotICAgICAgICB0ZXh0dXJlTWFw
cGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwgb3Bh
Y2l0eSwgbWFzaywgZXhwb3NlZEVkZ2VzKTsKLX0KLQotVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKQotewotfQotCi12b2lkIFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5l
ZWRlZChUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQotewotICAgIGlmICghbV9pbWFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgbV9p
bWFnZS5nZXQoKSwgbV9pbWFnZS0+c2l6ZSgpLCBtX2ltYWdlLT5yZWN0KCksIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICBtX2ltYWdlLmNs
ZWFyKCk7Ci19Ci0KIHVuc2lnbmVkIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU6OmNhbGN1bGF0
ZUV4cG9zZWRUaWxlRWRnZXMoY29uc3QgRmxvYXRSZWN0JiB0b3RhbFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QpCiB7CiAgICAgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gVGV4dHVyZU1h
cHBlcjo6Tm9FZGdlczsKQEAgLTEzMiwxMjEgKzQ3LDUgQEAgdW5zaWduZWQgVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZTo6Y2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhjb25zdCBGbG9hdFJlY3Qm
IHQKICAgICByZXR1cm4gZXhwb3NlZEVkZ2VzOwogfQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCi17Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9u
TWF0cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7Ci19Ci0KLXZvaWQgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spCi17Ci0gICAgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZCh0ZXh0dXJl
TWFwcGVyKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRy
YW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fdGlsZXNb
aV0ucGFpbnQodGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ss
IGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkpOwot
fQotCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0
IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCi17Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRq
dXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFy
Z2V0UmVjdCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytp
KQotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKGJvcmRlckNvbG9yLCBib3JkZXJX
aWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKLX0KLQotdm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgYm9y
ZGVyQ29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSkKLXsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3Rl
ZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRS
ZWN0KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihyZXBhaW50Q291bnQsIGJv
cmRlckNvbG9yLCBtX3RpbGVzW2ldLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9y
bSk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRl
c3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGJvb2wgaGFzQWxwaGEpCi17Ci0gICAgaWYgKHNpemUgPT0gbV9zaXplKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3NpemUgPSBzaXplOwotCi0gICAgVmVjdG9yPEZsb2F0UmVj
dD4gdGlsZVJlY3RzVG9BZGQ7Ci0gICAgVmVjdG9yPGludD4gdGlsZUluZGljZXNUb1JlbW92ZTsK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IFRpbGVFcmFzZVRocmVzaG9sZCA9IDY7Ci0KLSAgICAv
LyBUaGlzIG1ldGhvZCByZWN5Y2xlcyB0aWxlcy4gV2UgY2hlY2sgd2hpY2ggdGlsZXMgd2UgbmVl
ZCB0byBhZGQsIHdoaWNoIHRvIHJlbW92ZSwgYW5kIHVzZSBhcyBtYW55Ci0gICAgLy8gcmVtb3Zh
YmxlIHRpbGVzIGFzIHJlcGxhY2VtZW50IGZvciBuZXcgdGlsZXMgd2hlbiBwb3NzaWJsZS4KLSAg
ICBmb3IgKGZsb2F0IHkgPSAwOyB5IDwgbV9zaXplLmhlaWdodCgpOyB5ICs9IHRpbGVTaXplLmhl
aWdodCgpKSB7Ci0gICAgICAgIGZvciAoZmxvYXQgeCA9IDA7IHggPCBtX3NpemUud2lkdGgoKTsg
eCArPSB0aWxlU2l6ZS53aWR0aCgpKSB7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgdGlsZVJlY3Qo
eCwgeSwgdGlsZVNpemUud2lkdGgoKSwgdGlsZVNpemUuaGVpZ2h0KCkpOwotICAgICAgICAgICAg
dGlsZVJlY3QuaW50ZXJzZWN0KHJlY3QoKSk7Ci0gICAgICAgICAgICB0aWxlUmVjdHNUb0FkZC5h
cHBlbmQodGlsZVJlY3QpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgd2hpY2gg
dGlsZXMgbmVlZCB0byBiZSByZW1vdmVkLCBhbmQgd2hpY2ggYWxyZWFkeSBleGlzdC4KLSAgICBm
b3IgKGludCBpID0gbV90aWxlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBG
bG9hdFJlY3Qgb2xkVGlsZSA9IG1fdGlsZXNbaV0ucmVjdCgpOwotICAgICAgICBib29sIGV4aXN0
c0FscmVhZHkgPSBmYWxzZTsKLQotICAgICAgICBmb3IgKGludCBqID0gdGlsZVJlY3RzVG9BZGQu
c2l6ZSgpIC0gMTsgaiA+PSAwOyAtLWopIHsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBuZXdUaWxl
ID0gdGlsZVJlY3RzVG9BZGRbal07Ci0gICAgICAgICAgICBpZiAob2xkVGlsZSAhPSBuZXdUaWxl
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAvLyBBIHRpbGUgdGhh
dCB3ZSB3YW50IHRvIGFkZCBhbHJlYWR5IGV4aXN0cywgbm8gbmVlZCB0byBhZGQgb3IgcmVtb3Zl
IGl0LgotICAgICAgICAgICAgZXhpc3RzQWxyZWFkeSA9IHRydWU7Ci0gICAgICAgICAgICB0aWxl
UmVjdHNUb0FkZC5yZW1vdmUoaik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFRoaXMgdGlsZSBpcyBub3QgbmVlZGVkLgotICAgICAgICBpZiAoIWV4aXN0c0Fs
cmVhZHkpCi0gICAgICAgICAgICB0aWxlSW5kaWNlc1RvUmVtb3ZlLmFwcGVuZChpKTsKLSAgICB9
Ci0KLSAgICAvLyBSZWN5Y2xlIHJlbW92YWJsZSB0aWxlcyB0byBiZSB1c2VkIGZvciBuZXdseSBy
ZXF1ZXN0ZWQgdGlsZXMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aWxlUmVjdHNUb0Fk
ZC5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIXRpbGVJbmRpY2VzVG9SZW1vdmUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAvLyBXZSByZWN5Y2xlIGFuIGV4aXN0aW5nIHRpbGUgZm9yIHVz
YWdlIHdpdGggYSBuZXcgdGlsZSByZWN0LgotICAgICAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUm
IHRpbGUgPSBtX3RpbGVzW3RpbGVJbmRpY2VzVG9SZW1vdmUubGFzdCgpXTsKLSAgICAgICAgICAg
IHRpbGVJbmRpY2VzVG9SZW1vdmUucmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAgdGlsZS5zZXRS
ZWN0KHRpbGVSZWN0c1RvQWRkW2ldKTsKLQotICAgICAgICAgICAgaWYgKHRpbGUudGV4dHVyZSgp
KQotICAgICAgICAgICAgICAgIHRpbGUudGV4dHVyZSgpLT5yZXNldChlbmNsb3NpbmdJbnRSZWN0
KHRpbGUucmVjdCgpKS5zaXplKCksIGhhc0FscGhhID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNB
bHBoYSA6IDApOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBt
X3RpbGVzLmFwcGVuZChUZXh0dXJlTWFwcGVyVGlsZSh0aWxlUmVjdHNUb0FkZFtpXSkpOwotICAg
IH0KLQotICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSB0aWxlcywgaWYgdGhleSB3ZXJlbid0IHJl
Y3ljbGVkLgotICAgIC8vIFdlIHVzZSBhIHRocmVzaG9sZCB0byBtYWtlIHN1cmUgd2UgZG9uJ3Qg
Y3JlYXRlL2Rlc3Ryb3kgdGlsZXMgdG9vIGVhZ2VybHkuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0aWxlSW5kaWNlc1RvUmVtb3ZlLnNpemUoKSAmJiBtX3RpbGVzLnNpemUoKSA+IFRpbGVF
cmFzZVRocmVzaG9sZDsgKytpKQotICAgICAgICBtX3RpbGVzLnJlbW92ZSh0aWxlSW5kaWNlc1Rv
UmVtb3ZlW2ldKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0
bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKLXsKLSAg
ICBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+
bWF4VGV4dHVyZVNpemUoKSwgIWltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAg
ICBtX3RpbGVzW2ldLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLCBkaXJ0eVJl
Y3QsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBH
cmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IHVwZGF0ZUNvbnRlbnRzRmxhZykKLXsKLSAgICBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVk
KHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKSwgdHJ1ZSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3Rp
bGVzW2ldLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCBkaXJ0eVJl
Y3QsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7Ci19Ci0KLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKLXsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBtX3RpbGVzW2ldLnRleHR1cmUoKTsKLSAgICAg
ICAgaWYgKHRleHR1cmUpCi0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigpOwotfQotCiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IGI2MWQyZDgzM2NkMDE0YWY3
ZTFlNDZjOTU3NDQzMDZlYTg3ZjNhY2UuLjZiZmIzZjFjZmU1YjJlMTY2YzgxM2MwMzNkYWFlNjhh
MTUxZGVmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaApAQCAtNDMs
NzggKzQzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVy
KFRleHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xvciYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CiAgICAgdmly
dHVhbCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCi0KIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhjb25zdCBGbG9hdFJl
Y3QmIHRvdGFsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCk7CiB9OwogCi0jaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCi1jbGFzcyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKTsg
fQotICAgIHZvaWQgc2V0R3JhcGhpY3NTdXJmYWNlKFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNl
Pik7Ci0gICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKHVpbnQzMl90IGZyb250QnVmZmVyKTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFw
VGV4dHVyZSopOwotICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3Jl
KCkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUo
KQotICAgICAgICA6IFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKQotICAgICAgICB7IH0KLQot
ICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhpY3NTdXJmYWNlOwotfTsKLSNlbmRp
ZgotCi1jbGFzcyBUZXh0dXJlTWFwcGVyVGlsZSB7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsg
fQotICAgIGlubGluZSBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQot
ICAgIGlubGluZSB2b2lkIHNldFRleHR1cmUoQml0bWFwVGV4dHVyZSogdGV4dHVyZSkgeyBtX3Rl
eHR1cmUgPSB0ZXh0dXJlOyB9Ci0gICAgaW5saW5lIHZvaWQgc2V0UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsgfQotCi0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhU
ZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBk
YXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2
b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3Qg
SW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2Rp
ZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKiwg
Y29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKLSAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
VGlsZSgpIHsgfQotCi0gICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQotICAgICAgICA6IG1fcmVjdChyZWN0KQotICAgIHsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1fdGV4dHVyZTsKLSAgICBGbG9hdFJlY3Qg
bV9yZWN0OwotfTsKLQotY2xhc3MgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlIDogcHVi
bGljIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KLSAgICB2aXJ0
dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKSB7IH0KLQotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0
dXJlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBl
ciosIGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRy
YXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3Qg
Q29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9W
RVJSSURFOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNv
bnRlbnRzRmxhZyk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3Jh
cGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0
dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwotCi0gICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2Uo
SW1hZ2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotCi1wcml2YXRlOgotICAgIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpOwotICAgIHZvaWQgY3JlYXRlT3JEZXN0cm95VGls
ZXNJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGJhY2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNp
emUmIHRpbGVTaXplLCBib29sIGhhc0FscGhhKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzRnJv
bUltYWdlSWZOZWVkZWQoVGV4dHVyZU1hcHBlciopOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBpbmxpbmUg
RmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVy
bygpLCBtX3NpemUpOyB9Ci0KLSAgICBWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7
Ci0gICAgRmxvYXRTaXplIG1fc2l6ZTsKLSAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Ci19Owot
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tp
bmdTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzcxNDJkNzVkZDVhNzYzZjBiNjIyYTU2MzY1YWQ5YzIy
ZTgzOWUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3Rv
cmUuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNldEdyYXBoaWNz
U3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKK3sKKyAgICBtX2dy
YXBoaWNzU3VyZmFjZSA9IHN1cmZhY2U7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3QpCit7CisgICAgaWYgKG1f
Z3JhcGhpY3NTdXJmYWNlKQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+c3dhcEJ1ZmZlcnMo
KTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJh
Y2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
anVzdCByZXR1cm5pbmcgYW4gZW1wdHkgdGV4dHVyZSwgd2Ugc2hvdWxkIHdyYXAgdGhlIHRleHR1
cmUgY29udGVudHMgaW50byBhIEJpdG1hcFRleHR1cmUuCisgICAgUmVmUHRyPEJpdG1hcFRleHR1
cmU+IGVtcHR5VGV4dHVyZTsKKyAgICByZXR1cm4gZW1wdHlUZXh0dXJlOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2spCit7CisgICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlKQorICAgICAgICBt
X2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFy
Z2V0UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tp
bmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZDEwMTRmYzg1ZWEzYTdlOTcxYzhkZTA1ZjQxYTRmZDRi
ZDI2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaApAQCAtMCwwICsxLDU1
IEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIFRleHR1cmVNYXBwZXJTdXJm
YWNlQmFja2luZ1N0b3JlX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCisKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHR1cmVNYXBwZXI7CitjbGFz
cyBGbG9hdFJlY3Q7CisKK2NsYXNzIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlIDog
cHVibGljIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9Cisg
ICAgdm9pZCBzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsK
KyAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3QgZnJvbnRCdWZmZXIpOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0
dXJlKik7CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKSB7
IH0KKworcHJpdmF0ZToKKyAgICBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSgpCisg
ICAgICAgIDogVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpCisgICAgICAgIHsgfQorCisgICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7Cit9OworCit9CisKKyNl
bmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNDA1
MTMxYWIwZTc5MzJmZTljODdmZGJjMjU4NDRjZWI1MjQ0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJUaWxlLmgiCisKKyNpbmNsdWRlICJJbWFnZS5oIgor
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsKKwordm9pZCBUZXh0dXJl
TWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
SW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit7CisgICAgSW50UmVjdCB0YXJn
ZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JlY3QpOworICAgIHRhcmdldFJlY3QuaW50ZXJz
ZWN0KGRpcnR5UmVjdCk7CisgICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgSW50UG9pbnQgc291cmNlT2Zmc2V0ID0gdGFyZ2V0UmVjdC5sb2NhdGlvbigp
OworCisgICAgLy8gTm9ybWFsaXplIHNvdXJjZVJlY3QgdG8gdGhlIGJ1ZmZlcidzIGNvb3JkaW5h
dGVzLgorICAgIHNvdXJjZU9mZnNldC5tb3ZlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0Lnko
KSk7CisKKyAgICAvLyBOb3JtYWxpemUgdGFyZ2V0UmVjdCB0byB0aGUgdGV4dHVyZSdzIGNvb3Jk
aW5hdGVzLgorICAgIHRhcmdldFJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwor
ICAgIGlmICghbV90ZXh0dXJlKSB7CisgICAgICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXIt
PmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNp
emUoKSwgaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6IEJpdG1hcFRl
eHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIH0KKworICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFn
KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0
ZUNvbnRlbnRzRmxhZykKK3sKKyAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSBlbmNsb3NpbmdJbnRS
ZWN0KG1fcmVjdCk7CisgICAgdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKKyAgICBp
ZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBJbnRQb2ludCBz
b3VyY2VPZmZzZXQgPSB0YXJnZXRSZWN0LmxvY2F0aW9uKCk7CisKKyAgICAvLyBOb3JtYWxpemUg
dGFyZ2V0UmVjdCB0byB0aGUgdGV4dHVyZSdzIGNvb3JkaW5hdGVzLgorICAgIHRhcmdldFJlY3Qu
bW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOworCisgICAgaWYgKCFtX3RleHR1cmUpIHsK
KyAgICAgICAgbV90ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+Y3JlYXRlVGV4dHVyZSgpOworICAg
ICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCBCaXRtYXBUZXh0dXJlOjpT
dXBwb3J0c0FscGhhKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRl
eHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0
ZUNvbnRlbnRzRmxhZyk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2ssIGNvbnN0IHVuc2lnbmVk
IGV4cG9zZWRFZGdlcykKK3sKKyAgICBpZiAodGV4dHVyZSgpLmdldCgpKQorICAgICAgICB0ZXh0
dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9y
bSwgb3BhY2l0eSwgbWFzaywgZXhwb3NlZEVkZ2VzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorI2VuZGlmIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2VmNjE4ZWQz
ZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0NzdlZThkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
Zm5kZWYgVGV4dHVyZU1hcHBlclRpbGVfaAorI2RlZmluZSBUZXh0dXJlTWFwcGVyVGlsZV9oCisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0xheWVyOworCitjbGFz
cyBUZXh0dXJlTWFwcGVyVGlsZSB7CitwdWJsaWM6CisgICAgaW5saW5lIFBhc3NSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQorICAgIGlu
bGluZSBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIGlubGlu
ZSB2b2lkIHNldFRleHR1cmUoQml0bWFwVGV4dHVyZSogdGV4dHVyZSkgeyBtX3RleHR1cmUgPSB0
ZXh0dXJlOyB9CisgICAgaW5saW5lIHZvaWQgc2V0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IHsgbV9yZWN0ID0gcmVjdDsgfQorCisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFw
cGVyKiwgSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVu
dHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYs
IEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5h
bEltYWdlRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFRleHR1cmVNYXBwZXIqLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKiwgY29uc3QgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZSgpIHsg
fQorCisgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQorICAgICAgICA6IG1fcmVjdChyZWN0KQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPEJpdG1hcFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICBGbG9hdFJlY3QgbV9yZWN0Owor
fTsKKworfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTE2ZjBmNGE1MWIwNmY5MzQ0NDc0ZTU3
YmZkNjBjNDk0YWM3YzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAg
LTAsMCArMSwxNjIgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHcmFwaGljc0xheWVyOworCitUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpCit7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlm
TmVlZGVkKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCit7CisgICAgaWYgKCFtX2ltYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBt
X2ltYWdlLmdldCgpLCBtX2ltYWdlLT5zaXplKCksIG1faW1hZ2UtPnJlY3QoKSwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ2Fubm90TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIG1faW1hZ2Uu
Y2xlYXIoKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0KQoreworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChy
ZWN0KCksIHRhcmdldFJlY3QpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQoreworICAgIHVw
ZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1hcHBlcik7CisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRy
YW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3RpbGVzLnNpemUoKTsgKytpKQorICAgICAgICBtX3RpbGVzW2ldLnBhaW50KHRleHR1cmVNYXBw
ZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGls
ZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJh
bnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4dHVyZU1h
cHBlci0+ZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVj
dCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQorICAgICAgICB0ZXh0dXJlTWFwcGVy
LT5kcmF3UmVwYWludENvdW50ZXIocmVwYWludENvdW50LCBib3JkZXJDb2xvciwgbV90aWxlc1tp
XS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZChj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBib29sIGhhc0Fs
cGhhKQoreworICAgIGlmIChzaXplID09IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zaXplID0gc2l6ZTsKKworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHRpbGVSZWN0c1RvQWRkOwor
ICAgIFZlY3RvcjxpbnQ+IHRpbGVJbmRpY2VzVG9SZW1vdmU7CisgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBUaWxlRXJhc2VUaHJlc2hvbGQgPSA2OworCisgICAgLy8gVGhpcyBtZXRob2QgcmVjeWNs
ZXMgdGlsZXMuIFdlIGNoZWNrIHdoaWNoIHRpbGVzIHdlIG5lZWQgdG8gYWRkLCB3aGljaCB0byBy
ZW1vdmUsIGFuZCB1c2UgYXMgbWFueQorICAgIC8vIHJlbW92YWJsZSB0aWxlcyBhcyByZXBsYWNl
bWVudCBmb3IgbmV3IHRpbGVzIHdoZW4gcG9zc2libGUuCisgICAgZm9yIChmbG9hdCB5ID0gMDsg
eSA8IG1fc2l6ZS5oZWlnaHQoKTsgeSArPSB0aWxlU2l6ZS5oZWlnaHQoKSkgeworICAgICAgICBm
b3IgKGZsb2F0IHggPSAwOyB4IDwgbV9zaXplLndpZHRoKCk7IHggKz0gdGlsZVNpemUud2lkdGgo
KSkgeworICAgICAgICAgICAgRmxvYXRSZWN0IHRpbGVSZWN0KHgsIHksIHRpbGVTaXplLndpZHRo
KCksIHRpbGVTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChy
ZWN0KCkpOworICAgICAgICAgICAgdGlsZVJlY3RzVG9BZGQuYXBwZW5kKHRpbGVSZWN0KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIENoZWNrIHdoaWNoIHRpbGVzIG5lZWQgdG8gYmUgcmVt
b3ZlZCwgYW5kIHdoaWNoIGFscmVhZHkgZXhpc3QuCisgICAgZm9yIChpbnQgaSA9IG1fdGlsZXMu
c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgRmxvYXRSZWN0IG9sZFRpbGUgPSBt
X3RpbGVzW2ldLnJlY3QoKTsKKyAgICAgICAgYm9vbCBleGlzdHNBbHJlYWR5ID0gZmFsc2U7CisK
KyAgICAgICAgZm9yIChpbnQgaiA9IHRpbGVSZWN0c1RvQWRkLnNpemUoKSAtIDE7IGogPj0gMDsg
LS1qKSB7CisgICAgICAgICAgICBGbG9hdFJlY3QgbmV3VGlsZSA9IHRpbGVSZWN0c1RvQWRkW2pd
OworICAgICAgICAgICAgaWYgKG9sZFRpbGUgIT0gbmV3VGlsZSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgLy8gQSB0aWxlIHRoYXQgd2Ugd2FudCB0byBhZGQgYWxy
ZWFkeSBleGlzdHMsIG5vIG5lZWQgdG8gYWRkIG9yIHJlbW92ZSBpdC4KKyAgICAgICAgICAgIGV4
aXN0c0FscmVhZHkgPSB0cnVlOworICAgICAgICAgICAgdGlsZVJlY3RzVG9BZGQucmVtb3ZlKGop
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGlzIHRpbGUg
aXMgbm90IG5lZWRlZC4KKyAgICAgICAgaWYgKCFleGlzdHNBbHJlYWR5KQorICAgICAgICAgICAg
dGlsZUluZGljZXNUb1JlbW92ZS5hcHBlbmQoaSk7CisgICAgfQorCisgICAgLy8gUmVjeWNsZSBy
ZW1vdmFibGUgdGlsZXMgdG8gYmUgdXNlZCBmb3IgbmV3bHkgcmVxdWVzdGVkIHRpbGVzLgorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZVJlY3RzVG9BZGQuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKCF0aWxlSW5kaWNlc1RvUmVtb3ZlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
Ly8gV2UgcmVjeWNsZSBhbiBleGlzdGluZyB0aWxlIGZvciB1c2FnZSB3aXRoIGEgbmV3IHRpbGUg
cmVjdC4KKyAgICAgICAgICAgIFRleHR1cmVNYXBwZXJUaWxlJiB0aWxlID0gbV90aWxlc1t0aWxl
SW5kaWNlc1RvUmVtb3ZlLmxhc3QoKV07CisgICAgICAgICAgICB0aWxlSW5kaWNlc1RvUmVtb3Zl
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIHRpbGUuc2V0UmVjdCh0aWxlUmVjdHNUb0FkZFtp
XSk7CisKKyAgICAgICAgICAgIGlmICh0aWxlLnRleHR1cmUoKSkKKyAgICAgICAgICAgICAgICB0
aWxlLnRleHR1cmUoKS0+cmVzZXQoZW5jbG9zaW5nSW50UmVjdCh0aWxlLnJlY3QoKSkuc2l6ZSgp
LCBoYXNBbHBoYSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgbV90aWxlcy5hcHBlbmQoVGV4dHVy
ZU1hcHBlclRpbGUodGlsZVJlY3RzVG9BZGRbaV0pKTsKKyAgICB9CisKKyAgICAvLyBSZW1vdmUg
dW5uZWNlc3NhcnkgdGlsZXMsIGlmIHRoZXkgd2VyZW4ndCByZWN5Y2xlZC4KKyAgICAvLyBXZSB1
c2UgYSB0aHJlc2hvbGQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNyZWF0ZS9kZXN0cm95IHRpbGVz
IHRvbyBlYWdlcmx5LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZUluZGljZXNUb1Jl
bW92ZS5zaXplKCkgJiYgbV90aWxlcy5zaXplKCkgPiBUaWxlRXJhc2VUaHJlc2hvbGQ7ICsraSkK
KyAgICAgICAgbV90aWxlcy5yZW1vdmUodGlsZUluZGljZXNUb1JlbW92ZVtpXSk7Cit9CisKK3Zv
aWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgdG90
YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNv
bnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit7CisgICAgY3JlYXRlT3JEZXN0cm95VGls
ZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksICFp
bWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90aWxlc1tpXS51cGRhdGVD
b250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZSwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0Zs
YWcpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29u
dGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNl
TGF5ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcp
Cit7CisgICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVN
YXBwZXItPm1heFRleHR1cmVTaXplKCksIHRydWUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90aWxlc1tpXS51cGRhdGVDb250ZW50
cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0Zs
YWcpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3RpbGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0
ZXh0dXJlID0gbV90aWxlc1tpXS50ZXh0dXJlKCk7CisgICAgICAgIGlmICh0ZXh0dXJlKQorICAg
ICAgICAgICAgcmV0dXJuIHRleHR1cmU7CisgICAgfQorCisgICAgcmV0dXJuIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTM5YjE4NWQ3ZWEzNTRmM2JiNTM5ODViOGE1NjdlOTE2Nzc2NGZlYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUuaApAQCAtMCwwICsxLDY0IEBACisvKgorIENvcHlyaWdodCAoQykg
MjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmVfaAorI2RlZmluZSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmVfaAorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCisj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclRpbGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlcjsKKworY2xhc3MgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUoKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQg
Ym9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJl
TWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworICAgIHZvaWQgdXBkYXRl
Q29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgdm9pZCB1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcp
OworCisgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKSB7IG1faW1hZ2Ug
PSBpbWFnZTsgfQorCitwcml2YXRlOgorICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZSgpOworICAgIHZvaWQgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFNp
emUmIGJhY2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBib29sIGhhc0Fs
cGhhKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQoVGV4dHVyZU1h
cHBlciopOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtRm9yUmVj
dChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBpbmxpbmUgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7
IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9CisKKyAgICBW
ZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7CisgICAgRmxvYXRTaXplIG1fc2l6ZTsK
KyAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IGUzMzZkNzFmYzhmMzU4ZWU4Y2IxMmY1ZmYwZGUwYzdm
ZjdmM2E5OTcuLjkzMTBlMzdkZGYyMTdlMTlmOWVmNDk3ZDE2Yzk2MDYzODMxOGNhNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBA
IC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJUaWxl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmgKaW5kZXggY2ZhYjE2NjJkMWFjNWM0MjNmZDUwMTBiMDFjZDdlNDA2MzY5MzM4My4uM2U3NmYz
OGYwMWQ1Y2Y0Zjc0YjQ0ZDcyYjY5OWVhMGNlYzA1NzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtMzgsNiArMzgsMTAg
QEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsK
</data>
<flag name="review"
          id="207206"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="207226"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>