<?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>129669</bug_id>
          
          <creation_ts>2014-03-04 01:23:17 -0800</creation_ts>
          <short_desc>Move the rest of Source/WebCore/html/ code to std::unique_ptr</short_desc>
          <delta_ts>2014-03-31 03:46:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986727</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:23:17 -0800</bug_when>
    <thetext>Move the rest of Source/WebCore/html/ code to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986728</commentid>
    <comment_count>1</comment_count>
      <attachid>225753</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:24:02 -0800</bug_when>
    <thetext>Created attachment 225753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994313</commentid>
    <comment_count>2</comment_count>
      <attachid>227789</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-25 13:38:47 -0700</bug_when>
    <thetext>Created attachment 227789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995574</commentid>
    <comment_count>3</comment_count>
      <attachid>227789</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-29 09:03:41 -0700</bug_when>
    <thetext>Comment on attachment 227789
Patch

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

&gt; Source/WebCore/html/FormController.cpp:219
&gt; +    return std::move(savedFormState);

Is move really needed here?

&gt; Source/WebCore/html/FormController.cpp:289
&gt; +    FormKeyGenerator() = default;

Does this constructor even have to be defined?

&gt; Source/WebCore/html/FormController.cpp:399
&gt; +    auto keyGenerator = std::make_unique&lt;FormKeyGenerator&gt;();

Maybe FormKeyGenerator can just be allocated on the stack?

&gt; Source/WebCore/html/FormController.cpp:459
&gt; +        std::unique_ptr&lt;SavedFormState&gt; state = SavedFormState::deserialize(stateVector, i);

auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995816</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-31 03:46:53 -0700</bug_when>
    <thetext>Committed r166491: &lt;http://trac.webkit.org/changeset/166491&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225753</attachid>
            <date>2014-03-04 01:24:02 -0800</date>
            <delta_ts>2014-03-25 13:38:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129669-20140304012400.patch</filename>
            <type>text/plain</type>
            <size>29500</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI5MmE1OGExYTNlODhh
ZWJmZTg0ZGU5YjNiYzE4MzcxMjFhM2VmMy4uMGVhMTg3YjAzNTgxZjUzZjc2Yzk4OWI0MmM4OGVm
NTZjZDQ4YTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTAzLTA0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHRoZSByZXN0
IG9mIFNvdXJjZS9XZWJDb3JlL2h0bWwvIGNvZGUgdG8gc3RkOjp1bmlxdWVfcHRyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHRoZSByZW1h
aW5pbmcgdXNlcyBvZiBPd25QdHIsIFBhc3NPd25QdHIgdW5kZXIgU291cmNlL1dlYkNvcmUvaHRt
bC8gd2l0aCBzdGQ6OnVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpTYXZlZEZvcm1TdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpmb3JtRWxlbWVudHNTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0
b3IpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6Om1h
cE1vdXNlRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2Fu
dmFzRWxlbWVudDo6c2V0U3VyZmFjZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZh
c0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGh0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0
ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcCk6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aW1hZ2VMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFzSW1hZ2VMb2FkZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9i
amVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6c3RhcnRMb2FkaW5nSW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OlZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3Rh
cnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVzdFRv
SGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaDoKKwogMjAx
NC0wMy0wMyAgU2FuZ2h5dXAgTGVlICA8c2g1My5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
OmFjdGl2ZSBzdHlsZSBpcyBub3QgY2xlYXJlZCB3aGVuIGl0cyBkaXNwbGF5IHByb3BlcnR5IGlz
IHNldCB0byBub25lIGJlZm9yZSBtb3VzZSByZWxlYXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAKaW5kZXggOTc1MmQzNDc1ZTYwZjgyMDkyNTUzMjYwMzNmNWFkNGFiYmFl
ZDdiNi4uOTMzOTM4ZWNlZDE4ZTY3YTI4Mzg2ZjlmZWIwNDFiNmY5ZmE0YTE2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTE3Myw4ICsxNzMsMTIgQEAgY2xhc3Mg
U2F2ZWRGb3JtU3RhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6
Ci0gICAgc3RhdGljIE93blB0cjxTYXZlZEZvcm1TdGF0ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IE93blB0cjxTYXZlZEZvcm1TdGF0ZT4gZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBzaXplX3QmIGluZGV4KTsKKyAgICBTYXZlZEZvcm1TdGF0ZSgpCisgICAgICAgIDogbV9jb250
cm9sU3RhdGVDb3VudCgwKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNhdmVkRm9ybVN0YXRlPiBkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIHNp
emVfdCYgaW5kZXgpOwogICAgIHZvaWQgc2VyaWFsaXplVG8oVmVjdG9yPFN0cmluZz4mKSBjb25z
dDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlRm9yTmV3Rm9ybUVs
ZW1lbnRzLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgYXBwZW5kQ29udHJvbFN0YXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBGb3JtQ29u
dHJvbFN0YXRlJik7CkBAIC0xODMsMjQgKzE4NywxNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0
cmluZz4gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNh
dmVkRm9ybVN0YXRlKCkgOiBtX2NvbnRyb2xTdGF0ZUNvdW50KDApIHsgfQotCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPEZvcm1FbGVtZW50S2V5LCBEZXF1ZTxGb3JtQ29udHJvbFN0YXRlPiwgRm9ybUVs
ZW1lbnRLZXlIYXNoLCBGb3JtRWxlbWVudEtleUhhc2hUcmFpdHM+IEZvcm1FbGVtZW50U3RhdGVN
YXA7CiAgICAgRm9ybUVsZW1lbnRTdGF0ZU1hcCBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzOwog
ICAgIHNpemVfdCBtX2NvbnRyb2xTdGF0ZUNvdW50OwogfTsKIAotT3duUHRyPFNhdmVkRm9ybVN0
YXRlPiBTYXZlZEZvcm1TdGF0ZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFNhdmVkRm9ybVN0YXRlKTsKLX0KLQogc3RhdGljIGJvb2wgaXNOb3RGb3JtQ29udHJvbFR5cGVD
aGFyYWN0ZXIoVUNoYXIgY2gpCiB7CiAgICAgcmV0dXJuIGNoICE9ICctJyAmJiAoY2ggPiAneicg
fHwgY2ggPCAnYScpOwogfQogCi1Pd25QdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRl
OjpkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIHNpemVfdCYg
aW5kZXgpCitzdGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRlOjpk
ZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIHNpemVfdCYgaW5k
ZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yMDgsNyArMjA1LDcgQEAgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiBT
YXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmUK
ICAgICBzaXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5kZXgrK10udG9VSW50KCk7CiAg
ICAgaWYgKCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIE93blB0cjxT
YXZlZEZvcm1TdGF0ZT4gc2F2ZWRGb3JtU3RhdGUgPSBhZG9wdFB0cihuZXcgU2F2ZWRGb3JtU3Rh
dGUpOworICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9y
bVN0YXRlPigpOwogICAgIHdoaWxlIChpdGVtQ291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXgg
KyAxID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjE5LDcgKzIxNiw3IEBAIE93blB0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2ZWRGb3JtU3RhdGU6
OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgc2F2ZWRGb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0
ZShuYW1lLCB0eXBlLCBzdGF0ZSk7CiAgICAgfQotICAgIHJldHVybiBzYXZlZEZvcm1TdGF0ZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShzYXZlZEZvcm1TdGF0ZSk7CiB9CiAKIHZv
aWQgU2F2ZWRGb3JtU3RhdGU6OnNlcmlhbGl6ZVRvKFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rv
cikgY29uc3QKQEAgLTI4OSwxMyArMjg2LDExIEBAIGNsYXNzIEZvcm1LZXlHZW5lcmF0b3Igewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0
cjxGb3JtS2V5R2VuZXJhdG9yPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRm9ybUtl
eUdlbmVyYXRvcik7IH0KKyAgICBGb3JtS2V5R2VuZXJhdG9yKCkgPSBkZWZhdWx0OwogICAgIEF0
b21pY1N0cmluZyBmb3JtS2V5KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUm
KTsKICAgICB2b2lkIHdpbGxEZWxldGVGb3JtKEhUTUxGb3JtRWxlbWVudCopOwogCiBwcml2YXRl
OgotICAgIEZvcm1LZXlHZW5lcmF0b3IoKSB7IH0KLQogICAgIHR5cGVkZWYgSGFzaE1hcDxIVE1M
Rm9ybUVsZW1lbnQqLCBBdG9taWNTdHJpbmc+IEZvcm1Ub0tleU1hcDsKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gRm9ybVNpZ25hdHVyZVRvTmV4dEluZGV4TWFwOwogICAg
IEZvcm1Ub0tleU1hcCBtX2Zvcm1Ub0tleU1hcDsKQEAgLTM5OSwyNSArMzk0LDI1IEBAIHN0YXRp
YyBTdHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQog
Ci1Pd25QdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9ybVN0YXRlTWFwPiBGb3JtQ29udHJvbGxl
cjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYg
Y29udHJvbExpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9ybVN0
YXRlTWFwPiBGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9y
bUVsZW1lbnRMaXN0SGFzaFNldCYgY29udHJvbExpc3QpCiB7Ci0gICAgT3duUHRyPEZvcm1LZXlH
ZW5lcmF0b3I+IGtleUdlbmVyYXRvciA9IEZvcm1LZXlHZW5lcmF0b3I6OmNyZWF0ZSgpOwotICAg
IE93blB0cjxTYXZlZEZvcm1TdGF0ZU1hcD4gc3RhdGVNYXAgPSBhZG9wdFB0cihuZXcgU2F2ZWRG
b3JtU3RhdGVNYXApOworICAgIGF1dG8ga2V5R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxG
b3JtS2V5R2VuZXJhdG9yPigpOworICAgIGF1dG8gc3RhdGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNhdmVkRm9ybVN0YXRlTWFwPigpOwogICAgIGZvciAoRm9ybUVsZW1lbnRMaXN0SGFzaFNldDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBjb250cm9sTGlzdC5iZWdpbigpOyBpdCAhPSBjb250cm9sTGlz
dC5lbmQoKTsgKytpdCkgewogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
KiBjb250cm9sID0gaXQtPmdldCgpOwogICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3VsZFNhdmVB
bmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIFNhdmVkRm9ybVN0YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3RhdGVNYXAtPmFkZChr
ZXlHZW5lcmF0b3ItPmZvcm1LZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVsbHB0cik7Ci0gICAgICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBTYXZlZEZvcm1TdGF0ZTo6Y3JlYXRlKCk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCksIGNvbnRyb2wtPnR5cGUo
KSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CisgICAgICAgIGF1dG8mIGZvcm1T
dGF0ZSA9IHN0YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLT5mb3JtS2V5KCpjb250cm9sKS5pbXBs
KCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKCFmb3JtU3RhdGUpCisg
ICAgICAgICAgICBmb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigp
OworICAgICAgICBmb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCks
IGNvbnRyb2wtPnR5cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAgICAg
fQotICAgIHJldHVybiBzdGF0ZU1hcC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShz
dGF0ZU1hcCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpmb3JtRWxlbWVu
dHNTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgT3duUHRyPFNhdmVkRm9ybVN0YXRlTWFwPiBzdGF0ZU1h
cCA9IGNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGVNYXA+IHN0YXRlTWFwID0gY3JlYXRlU2F2
ZWRGb3JtU3RhdGVNYXAobV9mb3JtRWxlbWVudHNXaXRoU3RhdGUpOwogICAgIFZlY3RvcjxTdHJp
bmc+IHN0YXRlVmVjdG9yOwogICAgIHN0YXRlVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9mb3JtRWxlbWVudHNXaXRoU3RhdGUuc2l6ZSgpICogNCk7CiAgICAgc3RhdGVWZWN0b3IuYXBw
ZW5kKGZvcm1TdGF0ZVNpZ25hdHVyZSgpKTsKQEAgLTQ0MSw3ICs0MzYsNyBAQCBGb3JtQ29udHJv
bFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1M
Rm9ybUNvbnRyb2xFbAogICAgIGlmIChtX3NhdmVkRm9ybVN0YXRlTWFwLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKICAgICBpZiAoIW1fZm9ybUtleUdlbmVy
YXRvcikKLSAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gRm9ybUtleUdlbmVyYXRvcjo6Y3Jl
YXRlKCk7CisgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9y
bUtleUdlbmVyYXRvcj4oKTsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQobV9mb3JtS2V5R2VuZXJhdG9yLT5mb3JtS2V5KGNvbnRy
b2wpLmltcGwoKSk7CiAgICAgaWYgKGl0ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CkBAIC00NjEsMTIgKzQ1NiwxMiBAQCB2
b2lkIEZvcm1Db250cm9sbGVyOjpmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzdGF0ZVZlY3RvcgogCiAgICAgd2hpbGUgKGkgKyAxIDwgc3RhdGVWZWN0b3Iu
c2l6ZSgpKSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBmb3JtS2V5ID0gc3RhdGVWZWN0b3JbaSsr
XTsKLSAgICAgICAgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiBzdGF0ZSA9IFNhdmVkRm9ybVN0YXRl
OjpkZXNlcmlhbGl6ZShzdGF0ZVZlY3RvciwgaSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxT
YXZlZEZvcm1TdGF0ZT4gc3RhdGUgPSBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoc3RhdGVW
ZWN0b3IsIGkpOwogICAgICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAgICAgICBpID0gMDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIG1hcC5hZGQoZm9ybUtleS5pbXBs
KCksIHN0YXRlLnJlbGVhc2UoKSk7CisgICAgICAgIG1hcC5hZGQoZm9ybUtleS5pbXBsKCksIHN0
ZDo6bW92ZShzdGF0ZSkpOwogICAgIH0KICAgICBpZiAoaSAhPSBzdGF0ZVZlY3Rvci5zaXplKCkp
CiAgICAgICAgIG1hcC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCmlu
ZGV4IGI2MzU3YjQyNTk4M2JlNGUxYmUxNWQwMGU5OGEzYWJjNDNlMTQ3OWUuLmQ3MTg4ZDk4MjNm
MmE0MDFjY2M3M2EzZGI1Y2E3NDlhM2NkZmU2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmgKQEAgLTk2LDE2ICs5NiwxNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZT4s
IDY0PiBGb3JtRWxlbWVudExpc3RIYXNoU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
QXRvbWljU3RyaW5nSW1wbD4sIE93blB0cjxTYXZlZEZvcm1TdGF0ZT4+IFNhdmVkRm9ybVN0YXRl
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4sIHN0ZDo6
dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4+IFNhdmVkRm9ybVN0YXRlTWFwOwogCi0gICAgc3Rh
dGljIE93blB0cjxTYXZlZEZvcm1TdGF0ZU1hcD4gY3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29u
c3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2F2ZWRGb3JtU3RhdGVNYXA+IGNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVt
ZW50TGlzdEhhc2hTZXQmKTsKICAgICBGb3JtQ29udHJvbFN0YXRlIHRha2VTdGF0ZUZvckZvcm1F
bGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUmKTsKICAgICBzdGF0
aWMgdm9pZCBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
U2F2ZWRGb3JtU3RhdGVNYXAmKTsKIAogICAgIENoZWNrZWRSYWRpb0J1dHRvbnMgbV9jaGVja2Vk
UmFkaW9CdXR0b25zOwogICAgIEZvcm1FbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNX
aXRoU3RhdGU7CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXAgbV9zYXZlZEZvcm1TdGF0ZU1hcDsKLSAg
ICBPd25QdHI8Rm9ybUtleUdlbmVyYXRvcj4gbV9mb3JtS2V5R2VuZXJhdG9yOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxGb3JtS2V5R2VuZXJhdG9yPiBtX2Zvcm1LZXlHZW5lcmF0b3I7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5j
cHAKaW5kZXggNWVlYjMxZTQ2Zjg1MWY3NGI3Mzg1ZGNjMGJmYWM5OWM3NTkxNDIxNy4uNjVjNDMx
ZDdjNDg0MTRmMTM4Yjk3NWQxNzA3YjM0Yjk3ZTFlMTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVu
dDo6aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpCiBib29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91
c2VFdmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmIChtX2xhc3RTaXplICE9IHNpemUpIHsKLSAg
ICAgICAgbV9yZWdpb24gPSBhZG9wdFB0cihuZXcgUGF0aChnZXRSZWdpb24oc2l6ZSkpKTsKKyAg
ICAgICAgbV9yZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7
CiAgICAgICAgIG1fbGFzdFNpemUgPSBzaXplOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmgKaW5kZXggYWU2YzJhOGJiZDkzNjkzODI0YjdkOTQ1ZGI2NjVjZDcxYzc0
ODg4ZS4uYWMwN2U5ODZjY2M0OGE1YWY0YTIwMzMxMTY0ZjExZWRkZjk4YTFlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgUGF0aCBnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0OwogICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlZFJlZ2lvbigpOwogCi0gICAgT3duUHRyPFBhdGg+IG1fcmVnaW9uOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXRoPiBtX3JlZ2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVu
Z3RoW10+IG1fY29vcmRzOwogICAgIGludCBtX2Nvb3Jkc0xlbjsKICAgICBMYXlvdXRTaXplIG1f
bGFzdFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4
IDIxNzBmMjE1NWUzYjI1YzBjN2EzNDE2NTRhMjM5ZjYzMjkwOTU0ZmMuLjE0M2IzODM3MzE3YTZk
ZGQzODM4YmJiYzEyZjAxZDc3NGQ5N2E3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6c2V0U3VyZmFjZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBtX3NpemUgPSBz
aXplOwogICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0gZmFsc2U7Ci0gICAgbV9jb250ZXh0
U3RhdGVTYXZlci5jbGVhcigpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBudWxscHRyOwog
ICAgIG1faW1hZ2VCdWZmZXIucmVzZXQoKTsKICAgICBjbGVhckNvcGllZEltYWdlKCk7CiB9CkBA
IC01OTQsNyArNTk0LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoKSBjb25zdAogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkgJiYgIWRvY3VtZW50KCku
c2V0dGluZ3MoKS0+YW50aWFsaWFzZWQyZENhbnZhc0VuYWJsZWQoKSkKICAgICAgICAgbV9pbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwogICAgIG1faW1h
Z2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIG1fY29udGV4
dFN0YXRlU2F2ZXIgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcigqbV9p
bWFnZUJ1ZmZlci0+Y29udGV4dCgpKSk7CisgICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4oKm1faW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+dm0oKSk7CiAgICAgc2l6ZV90IG51bUJ5dGVzID0gNCAqIG1faW1hZ2VCdWZmZXIt
PmludGVybmFsU2l6ZSgpLndpZHRoKCkgKiBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS5o
ZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCA2Y2Rh
YjI2ZTJjNTMyNmQ3MDI3NTliNWQ5NDI0NTA2OGZkNzFmZDM2Li4zZjcyNDdhMmFjM2IxZWU1ZjJj
N2RmNTMyMDgyNjZiOWE4NWQ0N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oCkBAIC0xOTAsNyArMTkwLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV9o
YXNDcmVhdGVkSW1hZ2VCdWZmZXI7CiAgICAgbXV0YWJsZSBib29sIG1fZGlkQ2xlYXJJbWFnZUJ1
ZmZlcjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1
ZmZlcjsKLSAgICBtdXRhYmxlIE93blB0cjxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPiBtX2Nv
bnRleHRTdGF0ZVNhdmVyOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXI+IG1fY29udGV4dFN0YXRlU2F2ZXI7CiAgICAgCiAgICAgbXV0YWJsZSBS
ZWZQdHI8SW1hZ2U+IG1fcHJlc2VudGVkSW1hZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8SW1hZ2U+
IG1fY29waWVkSW1hZ2U7IC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSBmb3IgcGxhdGZvcm1z
IHRoYXQgaGF2ZSB0byBjb3B5IHRoZSBpbWFnZSBidWZmZXIgdG8gcmVuZGVyIChhbmQgZm9yIENT
U0NhbnZhc1ZhbHVlKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCBjOWFk
MzcyMDU3ZGVhYTVmMjBlNTIxZjU5MjNjMDRjM2Y0OTYwODhmLi5jNzY4YzZiMTQ5MzVkMTVkYTI0
MjI5ZGYzYmQyY2NkZTBkMDc1ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGl2
ZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmNwcAppbmRleCAwOTZmNmZhMzE4MGQwMGQzMGYxZjMwNGUzMjRkYjdlYTcyMWRjZmE4Li5j
ZTljODIwMWY3YmI1MTM3MmZmZTNmNzA3MmZjNTQyMTg3MDVjZTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEhUTUxF
bWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cgogICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsK
ICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgaXNJbWFnZVR5cGUoKSkgewogICAgICAgICAgICAg
aWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9w
dFB0cihuZXcgSFRNTEltYWdlTG9hZGVyKCp0aGlzKSk7CisgICAgICAgICAgICAgICAgbV9pbWFn
ZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAg
ICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNF
cnJvcigpOwogICAgICAgICB9CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAwZTQ2N2Q1ZDBjOTNlMjNjNWE3ZGNjY2E2
MzQwYmQwNDhhODA4MzZkLi41ODdkODU1Y2UxOWE3MGUyZjU5ZDBlZWZmMmVhMTNjMzUwOTE4OGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
QEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlk
YXRlKCkpCiAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVT
cGFjZSgpOwogICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxpZGF0
aW9uTWVzc2FnZSA9IFZhbGlkYXRpb25NZXNzYWdlOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0
aGlzKTsKICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRhdGVWYWxpZGF0aW9uTWVzc2FnZSht
ZXNzYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaAppbmRleCAwNDU3OTgxNjU1YjAyNTY3ZDNkZDZkOGIwZjRmNjA3OWMzYzdjYjU5Li5jMTBm
Y2Y4YTM3ODdlZThmOGQwZGRiZTUxOWQ5NDk1ODVjNmJmNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiBhc0hUTUxFbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gKnRoaXM7IH0KICAgICB2aXJ0dWFs
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGFzRm9ybU5hbWVkSXRlbSgpIG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIE93blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gbV92YWxp
ZGF0aW9uTWVzc2FnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmFsaWRhdGlvbk1lc3NhZ2U+IG1f
dmFsaWRhdGlvbk1lc3NhZ2U7CiAgICAgYm9vbCBtX2Rpc2FibGVkIDogMTsKICAgICBib29sIG1f
aXNSZWFkT25seSA6IDE7CiAgICAgYm9vbCBtX2lzUmVxdWlyZWQgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDYwYTEzODc5NmY1Y2YzZDAyOTQ4ZWRkNzcx
Mjg0MDNkYzgyOTMzZmMuLjFkOTFkZDU5MjU5MDA3NjE5NmExN2I5MzFkNTc5MjU5OGZiZGE1YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTY5OSw3ICs2OTks
NyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YWRkVG9QYXN0TmFtZXNNYXAoRm9ybU5hbWVkSXRl
bSogaXRlbSwgY29uc3QgQXRvbWljU3RyaW5nJgogICAgIGlmIChwYXN0TmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fcGFzdE5hbWVzTWFwKQotICAgICAgICBtX3Bh
c3ROYW1lc01hcCA9IGFkb3B0UHRyKG5ldyBQYXN0TmFtZXNNYXApOworICAgICAgICBtX3Bhc3RO
YW1lc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdE5hbWVzTWFwPigpOwogICAgIG1fcGFzdE5h
bWVzTWFwLT5zZXQocGFzdE5hbWUuaW1wbCgpLCBpdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmgKaW5kZXggZTYzODk4NDU1MmExNWI4MjYwMjQ1MGRiMTQxYTljNWEx
ZGJlMjE3Ny4uOWMyZGNhNmNjZDlhZmZhOGI1NmY0OWJmNTU1MGY4NTE0NWM3NzFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+
CiAKICNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKICNpbmNs
dWRlICJBdXRvY2FwaXRhbGl6ZS5oIgpAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiwgRm9ybU5hbWVkSXRlbSo+
IFBhc3ROYW1lc01hcDsKIAogICAgIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzIG1fYXR0cmli
dXRlczsKLSAgICBPd25QdHI8UGFzdE5hbWVzTWFwPiBtX3Bhc3ROYW1lc01hcDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdE5hbWVzTWFwPiBtX3Bhc3ROYW1lc01hcDsKIAogICAgIENoZWNrZWRS
YWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAxOGQwNGY5ZGYzMDQxNmJhYTNlZGI3ZGQ5MDJlZTIz
MjRhZGY0ODBjLi42OWJhY2Q2M2RmNjJmYzMyOWI3MjkxYzFhNWUwODA1ODczYzc5ODBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg1LDEyICs4NSwxMSBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogY2xhc3MgTGlzdEF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyIDogSWRUYXJnZXRPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBIVE1MSW5wdXRFbGVtZW50Kik7CisgICAg
TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEhUTUxJ
bnB1dEVsZW1lbnQqKTsKKwogICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICBMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgSFRNTElucHV0RWxlbWVudCopOwotCiAgICAgSFRNTElucHV0RWxl
bWVudCogbV9lbGVtZW50OwogfTsKICNlbmRpZgpAQCAtMTQyLDcgKzE0MSw3IEBAIFBhc3NSZWZQ
dHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hCiBIVE1MSW1hZ2VMb2FkZXIqIEhUTUxJbnB1dEVsZW1lbnQ6OmltYWdl
TG9hZGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2Fk
ZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9hZGVyKCp0aGlzKSk7CisgICAgICAgIG1faW1h
Z2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAg
IHJldHVybiBtX2ltYWdlTG9hZGVyLmdldCgpOwogfQogCkBAIC0xNTg4LDcgKzE1ODcsNyBAQCBI
VE1MRGF0YUxpc3RFbGVtZW50KiBIVE1MSW5wdXRFbGVtZW50OjpkYXRhTGlzdCgpIGNvbnN0CiB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkK
IHsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQotICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlciA9IExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6Y3JlYXRlKGZhc3RHZXRBdHRy
aWJ1dGUobGlzdEF0dHIpLCB0aGlzKTsKKyAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oZmFz
dEdldEF0dHJpYnV0ZShsaXN0QXR0ciksIHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgbV9saXN0
QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogfQpAQCAtMTg1NywxMSArMTg1Niw2
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0V2lkdGgodW5zaWduZWQgd2lkdGgpCiB9CiAK
ICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLU93blB0cjxMaXN0QXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXI+IExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoaWQsIGVsZW1lbnQpKTsKLX0K
LQogTGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyOjpMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAg
ICA6IElkVGFyZ2V0T2JzZXJ2ZXIoZWxlbWVudC0+dHJlZVNjb3BlKCkuaWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5KCksIGlkKQogICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGYyN2QwN2U3ODM3ZDgzYThhZWU2ODhjODc1ZmI4
N2M0ZjU4YWRiZTUuLmQ4ZmI2Mzg1MWQxNzZlNTMwZmM1MjAwOGNiODI3OTUzZTQ4Y2IxOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oIgogI2luY2x1ZGUgIlN0ZXBSYW5nZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KIAogI2lm
IFBMQVRGT1JNKElPUykKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgpAQCAtMzIyLDcgKzMy
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnQsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uTW9kZSwgRXhjZXB0aW9uQ29k
ZSYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYXNJbWFnZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2VMb2FkZXI7IH0KKyAgICBib29sIGhhc0ltYWdlTG9hZGVyKCkgY29uc3QgeyByZXR1
cm4gISFtX2ltYWdlTG9hZGVyOyB9CiAgICAgSFRNTEltYWdlTG9hZGVyKiBpbWFnZUxvYWRlcigp
OwogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCkBAIC00NTQsOSArNDU1
LDkgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgSW1hZ2VMb2FkZXIgbXVzdCBiZSBvd25lZCBieSB0
aGlzIGVsZW1lbnQgYmVjYXVzZSB0aGUgbG9hZGVyIGNvZGUgYXNzdW1lcwogICAgIC8vIHRoYXQg
aXQgbGl2ZXMgYXMgbG9uZyBhcyBpdHMgb3duaW5nIGVsZW1lbnQgbGl2ZXMuIElmIHdlIG1vdmUg
dGhlIGxvYWRlciBpbnRvCiAgICAgLy8gdGhlIEltYWdlSW5wdXQgb2JqZWN0IHdlIG1heSBkZWxl
dGUgdGhlIGxvYWRlciB3aGlsZSB0aGlzIGVsZW1lbnQgbGl2ZXMgb24uCi0gICAgT3duUHRyPEhU
TUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTElt
YWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQot
ICAgIE93blB0cjxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+IG1fbGlzdEF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMaXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI+IG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyOwogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDBiNDJkNTIyOTRhNTkx
ZjJkM2Y1YmNmYTQ3NDQ1MDJiZjRlYTMwZjguLjc0ZmY1ZTgwZGY1NGZhYjMwMzBlNTYxZmZiNWYz
NzBhOWRlY2YzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgICAg
IHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICAgICAgaWYgKGlzSW1hZ2VUeXBl
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAg
ICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9hZGVyKCp0aGlz
KSk7CisgICAgICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIt
PnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCmluZGV4IDMxZmI3OTY5MThjMjNiOWY1ZmZhMjk0ZmRjZTYyMWU4ZmQ4NTE5NGYuLjky
YThkNGM3ZDNhMTYxMjlkZGI0MjUxMGZiYzI0MzNlYTA2MTgzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBA
IHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlV2lkZ2V0Q2FsbGJhY2soTm9kZSYg
bm9kZSwgdW5zaWduZWQpCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN0YXJ0TG9hZGlu
Z0ltYWdlKCkKIHsKICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2Fk
ZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9hZGVyKCp0aGlzKSk7CisgICAgICAgIG1faW1h
Z2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAg
IG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggNjUxYjFkY2UwYjhlMmE5YWI2
NTU3YTNkMzdlYTY4MDExZDllYzNlNC4uNDA1MDNlZGFiMWNjMDViNjRkMGJhYWMyNTM2ZGZhZTIw
ZGI1M2Q0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmgKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBib29sIGlzSW1hZ2VUeXBlKCk7CiAKLSAgICBPd25QdHI8SFRNTElt
YWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MSW1hZ2VM
b2FkZXI+IG1faW1hZ2VMb2FkZXI7CiAgICAgU3RyaW5nIG1fc2VydmljZVR5cGU7CiAgICAgU3Ry
aW5nIG1fdXJsOwogICAgIFVSTCBtX2xvYWRlZFVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCmluZGV4IDU4NWJkNWQ4MGYwMjQ1MzUwNGExODQzZWU5MTc1MTU1NTY4
ZjUxNzAuLjM5YTM1ZTM4YzljNGQ5ZDA1MzZkNmM5MWM0ZmY1NWE5MjIzOTEyY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lk
IEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgICAgIHVwZGF0ZURp
c3BsYXlTdGF0ZSgpOwogICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsK
ICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdl
TG9hZGVyID0gYWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRlcigqdGhpcykpOworICAgICAgICAg
ICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4o
KnRoaXMpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsK
ICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIHRvUmVuZGVySW1h
Z2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9h
ZGVyLT5pbWFnZSgpKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cgogI2VuZGlmCiAgICAgICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAg
ICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2Fk
ZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9hZGVyKCp0aGlzKSk7CisgICAgICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhp
cyk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5n
UHJldmlvdXNFcnJvcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHJlbmRl
cmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDUzNmMzMjI2
MjY5MjNjYzk4NzFjYTU2ZmJlMzlhM2RmYjVkNGVhOTEuLjYwMDBhZTBlNGQxNzQ5MjZlMmUwMzMy
NGVmNDAyOWJiNjk5ZDQ4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC0yNyw3ICsyNyw5IEBACiAjZGVmaW5lIEhUTUxWaWRlb0VsZW1lbnRfaAogCiAjaWYgRU5B
QkxFKFZJREVPKQorCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgPG1l
bW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05NSw3ICs5Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldERpc3BsYXlNb2RlKERpc3BsYXlN
b2RlKSBvdmVycmlkZTsKIAotICAgIE93blB0cjxIVE1MSW1hZ2VMb2FkZXI+IG1faW1hZ2VMb2Fk
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsK
IAogICAgIEF0b21pY1N0cmluZyBtX2RlZmF1bHRQb3N0ZXJVUkw7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCBlMDBiMTk1NDRkZDFkYzdmZWM2ZTlj
ODM5MDhkYWMzMzZjOTc1NjI0Li5lZWU2MDhiODAzNTdkZGM1MGRhMDhiNTAwNDQyYjc3NDIxZDEy
NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtNDYs
MTMgKzQ2LDEyIEBACiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlICJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotQUxXQVlTX0lOTElORSBWYWxpZGF0aW9uTWVzc2FnZTo6VmFsaWRhdGlvbk1l
c3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCkKK1ZhbGlkYXRpb25NZXNzYWdl
OjpWYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50KQogICAg
IDogbV9lbGVtZW50KGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC02OCwx
MSArNjcsNiBAQCBWYWxpZGF0aW9uTWVzc2FnZTo6flZhbGlkYXRpb25NZXNzYWdlKCkKICAgICBk
ZWxldGVCdWJibGVUcmVlKCk7CiB9CiAKLU93blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gVmFsaWRh
dGlvbk1lc3NhZ2U6OmNyZWF0ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50KQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgVmFsaWRhdGlvbk1lc3NhZ2UoZWxlbWVudCkpOwotfQot
CiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudCogVmFsaWRhdGlvbk1lc3NhZ2U6OnZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS5wYWdlKCkpCkBAIC0xMTMsOSArMTA3LDkgQEAgdm9pZCBWYWxpZGF0aW9uTWVz
c2FnZTo6c2V0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKCFtZXNz
YWdlLmlzRW1wdHkoKSk7CiAgICAgbV9tZXNzYWdlID0gbWVzc2FnZTsKICAgICBpZiAoIW1fYnVi
YmxlKQotICAgICAgICBtX3RpbWVyID0gYWRvcHRQdHIobmV3IFRpbWVyPFZhbGlkYXRpb25NZXNz
YWdlPih0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSkpOworICAgICAg
ICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4+KHRo
aXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fdGltZXIgPSBhZG9wdFB0cihuZXcgVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpKTsKKyAgICAg
ICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+Pih0
aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAg
ICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKQEAgLTE0MCw5ICsxMzQsOSBAQCB2b2lk
IFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcihUaW1lcjxWYWxp
ZGF0aW9uTWVzc2FnZT4qKQogCiAgICAgaW50IG1hZ25pZmljYXRpb24gPSBkb2N1bWVudC5wYWdl
KCkgPyBkb2N1bWVudC5wYWdlKCktPnNldHRpbmdzKCkudmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1h
Z25pZmljYXRpb24oKSA6IC0xOwogICAgIGlmIChtYWduaWZpY2F0aW9uIDw9IDApCi0gICAgICAg
IG1fdGltZXIuY2xlYXIoKTsKKyAgICAgICAgbV90aW1lciA9IG51bGxwdHI7CiAgICAgZWxzZSB7
Ci0gICAgICAgIG1fdGltZXIgPSBhZG9wdFB0cihuZXcgVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+
KHRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSkpOworICAgICAgICBt
X3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4+KHRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgICAgIG1fdGltZXIt
PnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1LjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obV9tZXNzYWdl
Lmxlbmd0aCgpKSAqIG1hZ25pZmljYXRpb24gLyAxMDAwKSk7CiAgICAgfQogfQpAQCAtMjIyLDcg
KzIxNiw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkK
ICAgICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2RpZnkgdGhlIERPTSB0cmVlIGluIHRoaXMg
Y29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0TWVzc2FnZSgpLgotICAgIG1fdGltZXIg
PSBhZG9wdFB0cihuZXcgVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMsICZWYWxpZGF0aW9u
TWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSkpOworICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPj4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpk
ZWxldGVCdWJibGVUcmVlKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaAppbmRleCA2YWVjNDBkMjM3YjQ0MWEy
YzE1OTAwZjBlY2NjYzBiYWQ3NzcxNzA0Li43NTE2ODQzMTY1MDNhNGViMTNmYzQ1NjQ4ZDg3YjE5
Y2Y5Yzc3MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNz
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5oCkBAIC0z
Miw4ICszMiw4IEBACiAjZGVmaW5lIFZhbGlkYXRpb25NZXNzYWdlX2gKIAogI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ5LDE1ICs0OSwxNSBAQCBjbGFzcyBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShWYWxpZGF0aW9uTWVzc2FnZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIHN0YXRpYyBPd25QdHI8VmFsaWRhdGlvbk1lc3NhZ2U+IGNyZWF0
ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kik7CisgICAgZXhwbGljaXQgVmFsaWRhdGlvbk1lc3Nh
Z2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCopOwogICAgIH5WYWxpZGF0aW9uTWVzc2FnZSgpOwor
CiAgICAgdm9pZCB1cGRhdGVWYWxpZGF0aW9uTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHJlcXVlc3RUb0hpZGVNZXNzYWdlKCk7CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsK
ICAgICBib29sIHNoYWRvd1RyZWVDb250YWlucyhjb25zdCBOb2RlJikgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVu
dCopOwogICAgIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KiB2YWxpZGF0aW9uTWVzc2FnZUNsaWVu
dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TWVzc2FnZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiogPSAw
KTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqIG1fZWxlbWVudDsKICAgICBTdHJpbmcgbV9tZXNzYWdlOwotICAgIE93blB0cjxUaW1lcjxW
YWxpZGF0aW9uTWVzc2FnZT4+IG1fdGltZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPFZh
bGlkYXRpb25NZXNzYWdlPj4gbV90aW1lcjsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fYnVi
YmxlOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9tZXNzYWdlSGVhZGluZzsKICAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IG1fbWVzc2FnZUJvZHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227789</attachid>
            <date>2014-03-25 13:38:47 -0700</date>
            <delta_ts>2014-03-29 09:03:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129669-20140325133824.patch</filename>
            <type>text/plain</type>
            <size>25334</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE0LTAzLTIzICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHRoZSByZXN0IG9m
IFNvdXJjZS9XZWJDb3JlL2h0bWwvIGNvZGUgdG8gc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHRoZSByZW1haW5p
bmcgdXNlcyBvZiBPd25QdHIsIFBhc3NPd25QdHIgdW5kZXIgU291cmNlL1dlYkNvcmUvaHRtbC8g
d2l0aCBzdGQ6OnVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpTYXZlZEZvcm1TdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpmb3JtRWxlbWVudHNTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3Ip
OgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxB
cmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6Om1hcE1v
dXNlRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFz
RWxlbWVudDo6c2V0U3VyZmFjZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0Vs
ZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcCk6CisgICAgICAgICog
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aW1hZ2VMb2FkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFzSW1hZ2VMb2FkZXIpOgorICAgICAgICAq
IGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVj
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
c3RhcnRMb2FkaW5nSW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OlZhbGlkYXRpb25NZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRU
aW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVzdFRvSGlk
ZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaDoKKwogMjAxNC0w
My0yNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBQ
bGF5aW5nIHZpZGVvIGRvZXMgbm90IGRpc2FibGUgZGlzcGxheSBzbGVlcC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcz
LDggKzE3MywxMiBAQCBjbGFzcyBTYXZlZEZvcm1TdGF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiBj
cmVhdGUoKTsKLSAgICBzdGF0aWMgT3duUHRyPFNhdmVkRm9ybVN0YXRlPiBkZXNlcmlhbGl6ZShj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIHNpemVfdCYgaW5kZXgpOworICAgIFNhdmVkRm9ybVN0YXRl
KCkKKyAgICAgICAgOiBtX2NvbnRyb2xTdGF0ZUNvdW50KDApCisgICAgeworICAgIH0KKworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGU+IGRlc2VyaWFsaXplKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jiwgc2l6ZV90JiBpbmRleCk7CiAgICAgdm9pZCBzZXJpYWxpemVUbyhW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBhcHBlbmRD
b250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKQEAgLTE4MywyNCArMTg3LDE3IEBAIHB1
YmxpYzoKICAgICBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgU2F2ZWRGb3JtU3RhdGUoKSA6IG1fY29udHJvbFN0YXRlQ291bnQo
MCkgeyB9Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8Rm9ybUVsZW1lbnRLZXksIERlcXVlPEZvcm1D
b250cm9sU3RhdGU+LCBGb3JtRWxlbWVudEtleUhhc2gsIEZvcm1FbGVtZW50S2V5SGFzaFRyYWl0
cz4gRm9ybUVsZW1lbnRTdGF0ZU1hcDsKICAgICBGb3JtRWxlbWVudFN0YXRlTWFwIG1fc3RhdGVG
b3JOZXdGb3JtRWxlbWVudHM7CiAgICAgc2l6ZV90IG1fY29udHJvbFN0YXRlQ291bnQ7CiB9Owog
Ci1Pd25QdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRlOjpjcmVhdGUoKQotewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU2F2ZWRGb3JtU3RhdGUpOwotfQotCiBzdGF0aWMgYm9vbCBp
c05vdEZvcm1Db250cm9sVHlwZUNoYXJhY3RlcihVQ2hhciBjaCkKIHsKICAgICByZXR1cm4gY2gg
IT0gJy0nICYmIChjaCA+ICd6JyB8fCBjaCA8ICdhJyk7CiB9CiAKLU93blB0cjxTYXZlZEZvcm1T
dGF0ZT4gU2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
dGF0ZVZlY3Rvciwgc2l6ZV90JiBpbmRleCkKK3N0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0
ZT4gU2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0
ZVZlY3Rvciwgc2l6ZV90JiBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gc3RhdGVWZWN0b3Iu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOCw3ICsyMDUsNyBAQCBPd25Q
dHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRlOjpkCiAgICAgc2l6ZV90IGl0ZW1Db3Vu
dCA9IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOwogICAgIGlmICghaXRlbUNvdW50KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBPd25QdHI8U2F2ZWRGb3JtU3RhdGU+IHNhdmVk
Rm9ybVN0YXRlID0gYWRvcHRQdHIobmV3IFNhdmVkRm9ybVN0YXRlKTsKKyAgICBhdXRvIHNhdmVk
Rm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICB3aGls
ZSAoaXRlbUNvdW50LS0pIHsKICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSBzdGF0ZVZlY3Rvci5z
aXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIxOSw3ICsyMTYsNyBAQCBP
d25QdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRlOjpkCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgc2F2ZWRGb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShu
YW1lLCB0eXBlLCBzdGF0ZSk7CiAgICAgfQotICAgIHJldHVybiBzYXZlZEZvcm1TdGF0ZS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShzYXZlZEZvcm1TdGF0ZSk7CiB9CiAKIHZvaWQg
U2F2ZWRGb3JtU3RhdGU6OnNlcmlhbGl6ZVRvKFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcikg
Y29uc3QKQEAgLTI4OSwxMyArMjg2LDExIEBAIGNsYXNzIEZvcm1LZXlHZW5lcmF0b3IgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxG
b3JtS2V5R2VuZXJhdG9yPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRm9ybUtleUdl
bmVyYXRvcik7IH0KKyAgICBGb3JtS2V5R2VuZXJhdG9yKCkgPSBkZWZhdWx0OwogICAgIEF0b21p
Y1N0cmluZyBmb3JtS2V5KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUmKTsK
ICAgICB2b2lkIHdpbGxEZWxldGVGb3JtKEhUTUxGb3JtRWxlbWVudCopOwogCiBwcml2YXRlOgot
ICAgIEZvcm1LZXlHZW5lcmF0b3IoKSB7IH0KLQogICAgIHR5cGVkZWYgSGFzaE1hcDxIVE1MRm9y
bUVsZW1lbnQqLCBBdG9taWNTdHJpbmc+IEZvcm1Ub0tleU1hcDsKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCB1bnNpZ25lZD4gRm9ybVNpZ25hdHVyZVRvTmV4dEluZGV4TWFwOwogICAgIEZv
cm1Ub0tleU1hcCBtX2Zvcm1Ub0tleU1hcDsKQEAgLTM5OSwyNSArMzk0LDI1IEBAIHN0YXRpYyBT
dHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQogCi1P
d25QdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9ybVN0YXRlTWFwPiBGb3JtQ29udHJvbGxlcjo6
Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYgY29u
dHJvbExpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9ybVN0YXRl
TWFwPiBGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVs
ZW1lbnRMaXN0SGFzaFNldCYgY29udHJvbExpc3QpCiB7Ci0gICAgT3duUHRyPEZvcm1LZXlHZW5l
cmF0b3I+IGtleUdlbmVyYXRvciA9IEZvcm1LZXlHZW5lcmF0b3I6OmNyZWF0ZSgpOwotICAgIE93
blB0cjxTYXZlZEZvcm1TdGF0ZU1hcD4gc3RhdGVNYXAgPSBhZG9wdFB0cihuZXcgU2F2ZWRGb3Jt
U3RhdGVNYXApOworICAgIGF1dG8ga2V5R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGb3Jt
S2V5R2VuZXJhdG9yPigpOworICAgIGF1dG8gc3RhdGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFNh
dmVkRm9ybVN0YXRlTWFwPigpOwogICAgIGZvciAoRm9ybUVsZW1lbnRMaXN0SGFzaFNldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjb250cm9sTGlzdC5iZWdpbigpOyBpdCAhPSBjb250cm9sTGlzdC5l
bmQoKTsgKytpdCkgewogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKiBj
b250cm9sID0gaXQtPmdldCgpOwogICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3VsZFNhdmVBbmRS
ZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IFNhdmVkRm9ybVN0YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3RhdGVNYXAtPmFkZChrZXlH
ZW5lcmF0b3ItPmZvcm1LZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVsbHB0cik7Ci0gICAgICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBTYXZlZEZvcm1TdGF0ZTo6Y3JlYXRlKCk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCksIGNvbnRyb2wtPnR5cGUoKSwg
Y29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CisgICAgICAgIGF1dG8mIGZvcm1TdGF0
ZSA9IHN0YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLT5mb3JtS2V5KCpjb250cm9sKS5pbXBsKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKCFmb3JtU3RhdGUpCisgICAg
ICAgICAgICBmb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwor
ICAgICAgICBmb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCksIGNv
bnRyb2wtPnR5cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAgICAgfQot
ICAgIHJldHVybiBzdGF0ZU1hcC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShzdGF0
ZU1hcCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpmb3JtRWxlbWVudHNT
dGF0ZSgpIGNvbnN0CiB7Ci0gICAgT3duUHRyPFNhdmVkRm9ybVN0YXRlTWFwPiBzdGF0ZU1hcCA9
IGNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGVNYXA+IHN0YXRlTWFwID0gY3JlYXRlU2F2ZWRG
b3JtU3RhdGVNYXAobV9mb3JtRWxlbWVudHNXaXRoU3RhdGUpOwogICAgIFZlY3RvcjxTdHJpbmc+
IHN0YXRlVmVjdG9yOwogICAgIHN0YXRlVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9m
b3JtRWxlbWVudHNXaXRoU3RhdGUuc2l6ZSgpICogNCk7CiAgICAgc3RhdGVWZWN0b3IuYXBwZW5k
KGZvcm1TdGF0ZVNpZ25hdHVyZSgpKTsKQEAgLTQ0MSw3ICs0MzYsNyBAQCBGb3JtQ29udHJvbFN0
YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhCiAgICAgaWYgKG1fc2F2ZWRGb3JtU3RhdGVNYXAu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwogICAgIGlmICgh
bV9mb3JtS2V5R2VuZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBGb3JtS2V5
R2VuZXJhdG9yOjpjcmVhdGUoKTsKKyAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwOjpp
dGVyYXRvciBpdCA9IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZmluZChtX2Zvcm1LZXlHZW5lcmF0b3It
PmZvcm1LZXkoY29udHJvbCkuaW1wbCgpKTsKICAgICBpZiAoaXQgPT0gbV9zYXZlZEZvcm1TdGF0
ZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKQEAgLTQ2MSwx
MiArNDU2LDEyIEBAIHZvaWQgRm9ybUNvbnRyb2xsZXI6OmZvcm1TdGF0ZXNGcm9tU3RhdGUKIAog
ICAgIHdoaWxlIChpICsgMSA8IHN0YXRlVmVjdG9yLnNpemUoKSkgewogICAgICAgICBBdG9taWNT
dHJpbmcgZm9ybUtleSA9IHN0YXRlVmVjdG9yW2krK107Ci0gICAgICAgIE93blB0cjxTYXZlZEZv
cm1TdGF0ZT4gc3RhdGUgPSBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoc3RhdGVWZWN0b3Is
IGkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGU+IHN0YXRlID0gU2F2
ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKHN0YXRlVmVjdG9yLCBpKTsKICAgICAgICAgaWYgKCFz
dGF0ZSkgewogICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBtYXAuYWRkKGZvcm1LZXkuaW1wbCgpLCBzdGF0ZS5yZWxlYXNlKCkpOworICAg
ICAgICBtYXAuYWRkKGZvcm1LZXkuaW1wbCgpLCBzdGQ6Om1vdmUoc3RhdGUpKTsKICAgICB9CiAg
ICAgaWYgKGkgIT0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQogICAgICAgICBtYXAuY2xlYXIoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgJKHJldmlzaW9uIDE2NjI0NykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsMTYgKzk2LDE2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIExpc3RIYXNo
U2V0PFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlPiwgNjQ+IEZvcm1FbGVt
ZW50TGlzdEhhc2hTZXQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJ
bXBsPiwgT3duUHRyPFNhdmVkRm9ybVN0YXRlPj4gU2F2ZWRGb3JtU3RhdGVNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiwgc3RkOjp1bmlxdWVfcHRyPFNh
dmVkRm9ybVN0YXRlPj4gU2F2ZWRGb3JtU3RhdGVNYXA7CiAKLSAgICBzdGF0aWMgT3duUHRyPFNh
dmVkRm9ybVN0YXRlTWFwPiBjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcChjb25zdCBGb3JtRWxlbWVu
dExpc3RIYXNoU2V0Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0
ZU1hcD4gY3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNl
dCYpOwogICAgIEZvcm1Db250cm9sU3RhdGUgdGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3Qg
SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYpOwogICAgIHN0YXRpYyB2b2lkIGZvcm1T
dGF0ZXNGcm9tU3RhdGVWZWN0b3IoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBTYXZlZEZvcm1TdGF0
ZU1hcCYpOwogCiAgICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7
CiAgICAgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50c1dpdGhTdGF0ZTsKICAg
ICBTYXZlZEZvcm1TdGF0ZU1hcCBtX3NhdmVkRm9ybVN0YXRlTWFwOwotICAgIE93blB0cjxGb3Jt
S2V5R2VuZXJhdG9yPiBtX2Zvcm1LZXlHZW5lcmF0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZv
cm1LZXlHZW5lcmF0b3I+IG1fZm9ybUtleUdlbmVyYXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVudDo6
aW52YWxpZGF0ZUNhY2hlZFJlCiBib29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VFdmVudChM
YXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogewogICAgIGlmIChtX2xhc3RTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9y
ZWdpb24gPSBhZG9wdFB0cihuZXcgUGF0aChnZXRSZWdpb24oc2l6ZSkpKTsKKyAgICAgICAgbV9y
ZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CiAgICAgICAg
IG1fbGFzdFNpemUgPSBzaXplOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXJlYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6
CiAgICAgUGF0aCBnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0OwogICAgIHZvaWQg
aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpOwogCi0gICAgT3duUHRyPFBhdGg+IG1fcmVnaW9uOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXRoPiBtX3JlZ2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TGVuZ3RoW10+IG1fY29vcmRzOwogICAgIGludCBtX2Nvb3Jkc0xlbjsKICAgICBMYXlvdXRTaXpl
IG1fbGFzdFNpemU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEhUTUxD
YW52YXNFbGVtZW50OjpzZXRTdXJmYWNlU2l6ZShjCiB7CiAgICAgbV9zaXplID0gc2l6ZTsKICAg
ICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IGZhbHNlOwotICAgIG1fY29udGV4dFN0YXRlU2F2
ZXIuY2xlYXIoKTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gbnVsbHB0cjsKICAgICBtX2lt
YWdlQnVmZmVyLnJlc2V0KCk7CiAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogfQpAQCAtNTk1LDcg
KzU5NSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmUKICAgICBp
ZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlh
bGlhc2VkMmRDYW52YXNFbmFibGVkKCkpCiAgICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQo
KS0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0
KCktPnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gYWRv
cHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoKm1faW1hZ2VCdWZmZXItPmNvbnRl
eHQoKSkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI+KCptX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwog
ICAgIHNpemVfdCBudW1CeXRlcyA9IDQgKiBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS53
aWR0aCgpICogbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkuaGVpZ2h0KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCShyZXZpc2lvbiAxNjYyNDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5MSw3ICsxOTEsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgYm9vbCBtX2hhc0NyZWF0
ZWRJbWFnZUJ1ZmZlcjsKICAgICBtdXRhYmxlIGJvb2wgbV9kaWRDbGVhckltYWdlQnVmZmVyOwog
ICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwot
ICAgIG11dGFibGUgT3duUHRyPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+IG1fY29udGV4dFN0
YXRlU2F2ZXI7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlcj4gbV9jb250ZXh0U3RhdGVTYXZlcjsKICAgICAKICAgICBtdXRhYmxlIFJlZlB0cjxJ
bWFnZT4gbV9wcmVzZW50ZWRJbWFnZTsKICAgICBtdXRhYmxlIFJlZlB0cjxJbWFnZT4gbV9jb3Bp
ZWRJbWFnZTsgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5IGZvciBwbGF0Zm9ybXMgdGhhdCBo
YXZlIHRvIGNvcHkgdGhlIGltYWdlIGJ1ZmZlciB0byByZW5kZXIgKGFuZCBmb3IgQ1NTQ2FudmFz
VmFsdWUpLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2aXNpb24g
MTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiTGl2ZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0
ZVZpc2liCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpCiAgICAgICAgIG1l
c3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIGlmICgh
bV92YWxpZGF0aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IFZhbGlk
YXRpb25NZXNzYWdlOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsKICAgICBtX3ZhbGlk
YXRpb25NZXNzYWdlLT51cGRhdGVWYWxpZGF0aW9uTWVzc2FnZShtZXNzYWdlKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJKHJldmlz
aW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiAqdGhpczsgfQogICAgIHZpcnR1YWwgSFRNTEZvcm1Db250
cm9sRWxlbWVudCogYXNGb3JtTmFtZWRJdGVtKCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdGhp
czsgfQogCi0gICAgT3duUHRyPFZhbGlkYXRpb25NZXNzYWdlPiBtX3ZhbGlkYXRpb25NZXNzYWdl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYWxpZGF0aW9uTWVzc2FnZT4gbV92YWxpZGF0aW9uTWVz
c2FnZTsKICAgICBib29sIG1fZGlzYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc1JlYWRPbmx5IDog
MTsKICAgICBib29sIG1faXNSZXF1aXJlZCA6IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5OSw3ICs2OTksNyBA
QCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YWRkVG9QYXN0TmFtZXNNYXAoCiAgICAgaWYgKHBhc3RO
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9wYXN0TmFtZXNNYXAp
Ci0gICAgICAgIG1fcGFzdE5hbWVzTWFwID0gYWRvcHRQdHIobmV3IFBhc3ROYW1lc01hcCk7Cisg
ICAgICAgIG1fcGFzdE5hbWVzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7
CiAgICAgbV9wYXN0TmFtZXNNYXAtPnNldChwYXN0TmFtZS5pbXBsKCksIGl0ZW0pOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDE2NjI0NykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKICNpbmNsdWRlICJGb3Jt
U3VibWlzc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KIAogI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1Rf
QU5EX0FVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBpdGFsaXplLmgiCkBAIC0xNjEs
NyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEF0b21pY1N0
cmluZ0ltcGw+LCBGb3JtTmFtZWRJdGVtKj4gUGFzdE5hbWVzTWFwOwogCiAgICAgRm9ybVN1Ym1p
c3Npb246OkF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwotICAgIE93blB0cjxQYXN0TmFtZXNNYXA+
IG1fcGFzdE5hbWVzTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0TmFtZXNNYXA+IG1fcGFz
dE5hbWVzTWFwOwogCiAgICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyBtX2NoZWNrZWRSYWRpb0J1dHRv
bnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2
aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODUsMTIgKzg1LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiBjbGFzcyBMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgOiBJZFRhcmdldE9ic2Vy
dmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
T3duUHRyPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQsIEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICBMaXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSFRNTElucHV0RWxlbWVudCopOworCiAgICAg
dmlydHVhbCB2b2lkIGlkVGFyZ2V0Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBIVE1M
SW5wdXRFbGVtZW50Kik7Ci0KICAgICBIVE1MSW5wdXRFbGVtZW50KiBtX2VsZW1lbnQ7CiB9Owog
I2VuZGlmCkBAIC0xNDIsNyArMTQxLDcgQEAgUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBI
VE1MSW5wdXRFbAogSFRNTEltYWdlTG9hZGVyKiBIVE1MSW5wdXRFbGVtZW50OjppbWFnZUxvYWRl
cigpCiB7CiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyID0g
YWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRlcigqdGhpcykpOworICAgICAgICBtX2ltYWdlTG9h
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICByZXR1
cm4gbV9pbWFnZUxvYWRlci5nZXQoKTsKIH0KIApAQCAtMTU4Nyw3ICsxNTg2LDcgQEAgSFRNTERh
dGFMaXN0RWxlbWVudCogSFRNTElucHV0RWxlbWVudDo6ZAogdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgaWYgKGluRG9jdW1l
bnQoKSkKLSAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBMaXN0QXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXI6OmNyZWF0ZShmYXN0R2V0QXR0cmlidXRlKGxpc3RBdHRyKSwgdGhp
cyk7CisgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGZhc3RHZXRBdHRyaWJ1dGUobGlzdEF0
dHIpLCB0aGlzKTsKICAgICBlbHNlCiAgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyID0gbnVsbHB0cjsKIH0KQEAgLTE4NTYsMTEgKzE4NTUsNiBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OnNldFdpZHRoKHVuc2lnbmVkCiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKLU93blB0cjxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+IExpc3RBdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcjo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMaXN0QXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIoaWQsIGVsZW1lbnQpKTsKLX0KLQogTGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyOjpMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwg
SFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAgICA6IElkVGFyZ2V0T2JzZXJ2ZXIoZWxlbWVu
dC0+dHJlZVNjb3BlKCkuaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCksIGlkKQogICAgICwgbV9l
bGVtZW50KGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGaWxlQ2hv
b3Nlci5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU3RlcFJhbmdlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogCiAjaWYgUExBVEZPUk0oSU9TKQog
I2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCkBAIC0zMjIsNyArMzIzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRSYW5nZVRleHQoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSYW5nZVRleHQo
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwg
Y29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Nb2RlLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAK
LSAgICBib29sIGhhc0ltYWdlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUxvYWRlcjsg
fQorICAgIGJvb2wgaGFzSW1hZ2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiAhIW1faW1hZ2VMb2Fk
ZXI7IH0KICAgICBIVE1MSW1hZ2VMb2FkZXIqIGltYWdlTG9hZGVyKCk7CiAKICNpZiBFTkFCTEUo
REFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKQEAgLTQ1NCw5ICs0NTUsOSBAQCBwcml2YXRlOgog
ICAgIC8vIFRoZSBJbWFnZUxvYWRlciBtdXN0IGJlIG93bmVkIGJ5IHRoaXMgZWxlbWVudCBiZWNh
dXNlIHRoZSBsb2FkZXIgY29kZSBhc3N1bWVzCiAgICAgLy8gdGhhdCBpdCBsaXZlcyBhcyBsb25n
IGFzIGl0cyBvd25pbmcgZWxlbWVudCBsaXZlcy4gSWYgd2UgbW92ZSB0aGUgbG9hZGVyIGludG8K
ICAgICAvLyB0aGUgSW1hZ2VJbnB1dCBvYmplY3Qgd2UgbWF5IGRlbGV0ZSB0aGUgbG9hZGVyIHdo
aWxlIHRoaXMgZWxlbWVudCBsaXZlcyBvbi4KLSAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBt
X2ltYWdlTG9hZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MSW1hZ2VMb2FkZXI+IG1faW1h
Z2VMb2FkZXI7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgT3duUHRyPExpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gbV9saXN0QXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXI7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyAr
ODYsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVyCiAgICAgICAg
IHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwogICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3Rlcklt
YWdlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gYWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRlcigqdGhpcykpOwor
ICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFn
ZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVs
ZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS5zZXRDYWNoZWRJbWFnZSht
X2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAjZW5kaWYKICAgICAgICAgaWYgKHNob3VsZERp
c3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0g
ICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2Fk
ZXIoKnRoaXMpKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIt
PnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsOSBAQAog
I2RlZmluZSBIVE1MVmlkZW9FbGVtZW50X2gKIAogI2lmIEVOQUJMRShWSURFTykKKwogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtOTUsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXREaXNwbGF5TW9kZShEaXNwbGF5TW9kZSkgb3ZlcnJpZGU7CiAKLSAg
ICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxIVE1MSW1hZ2VMb2FkZXI+IG1faW1hZ2VMb2FkZXI7CiAKICAgICBBdG9taWNTdHJpbmcg
bV9kZWZhdWx0UG9zdGVyVVJMOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L1ZhbGlkYXRpb25NZXNzYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTMgKzQ2LDEyIEBA
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRl
ICJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
QUxXQVlTX0lOTElORSBWYWxpZGF0aW9uTWVzc2FnZTo6VmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZv
cm1Db250cm9sRWxlbWVudCogZWxlbWVudCkKK1ZhbGlkYXRpb25NZXNzYWdlOjpWYWxpZGF0aW9u
TWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50KQogICAgIDogbV9lbGVtZW50
KGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC02OCwxMSArNjcsNiBAQCBW
YWxpZGF0aW9uTWVzc2FnZTo6flZhbGlkYXRpb25NZXNzYWdlKCkKICAgICBkZWxldGVCdWJibGVU
cmVlKCk7CiB9CiAKLU93blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gVmFsaWRhdGlvbk1lc3NhZ2U6
OmNyZWF0ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVmFsaWRhdGlvbk1lc3NhZ2UoZWxlbWVudCkpOwotfQotCiBWYWxpZGF0aW9u
TWVzc2FnZUNsaWVudCogVmFsaWRhdGlvbk1lc3NhZ2U6OnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
KCkgY29uc3QKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5w
YWdlKCkpCkBAIC0xMTMsOSArMTA3LDkgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVz
c2FnZShjb25zdAogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIG1fbWVzc2Fn
ZSA9IG1lc3NhZ2U7CiAgICAgaWYgKCFtX2J1YmJsZSkKLSAgICAgICAgbV90aW1lciA9IGFkb3B0
UHRyKG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdl
OjpidWlsZEJ1YmJsZVRyZWUpKTsKKyAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8
VGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+Pih0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxk
QnViYmxlVHJlZSk7CiAgICAgZWxzZQotICAgICAgICBtX3RpbWVyID0gYWRvcHRQdHIobmV3IFRp
bWVyPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3Nh
Z2VET01BbmRTdGFydFRpbWVyKSk7CisgICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPj4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRN
ZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDApOwog
fQogCkBAIC0xNDAsOSArMTM0LDkgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2Fn
ZURPTUFuZAogCiAgICAgaW50IG1hZ25pZmljYXRpb24gPSBkb2N1bWVudC5wYWdlKCkgPyBkb2N1
bWVudC5wYWdlKCktPnNldHRpbmdzKCkudmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRp
b24oKSA6IC0xOwogICAgIGlmIChtYWduaWZpY2F0aW9uIDw9IDApCi0gICAgICAgIG1fdGltZXIu
Y2xlYXIoKTsKKyAgICAgICAgbV90aW1lciA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAgICAg
IG1fdGltZXIgPSBhZG9wdFB0cihuZXcgVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMsICZW
YWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSkpOworICAgICAgICBtX3RpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4+KHRoaXMsICZWYWxpZGF0
aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgICAgIG1fdGltZXItPnN0YXJ0T25l
U2hvdChzdGQ6Om1heCg1LjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obV9tZXNzYWdlLmxlbmd0aCgp
KSAqIG1hZ25pZmljYXRpb24gLyAxMDAwKSk7CiAgICAgfQogfQpAQCAtMjIyLDcgKzIxNiw3IEBA
IHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXMKICAgICB9CiAKICAgICAv
LyBXZSBtdXN0IG5vdCBtb2RpZnkgdGhlIERPTSB0cmVlIGluIHRoaXMgY29udGV4dCBieSB0aGUg
c2FtZSByZWFzb24gYXMgc2V0TWVzc2FnZSgpLgotICAgIG1fdGltZXIgPSBhZG9wdFB0cihuZXcg
VGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRl
QnViYmxlVHJlZSkpOworICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPFZhbGlk
YXRpb25NZXNzYWdlPj4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVl
KTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCAr
MzIsOCBAQAogI2RlZmluZSBWYWxpZGF0aW9uTWVzc2FnZV9oCiAKICNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00OSwxNSArNDksMTUgQEAgY2xhc3MgVmFsaWRhdGlv
bk1lc3NhZ2VDbGllbnQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVmFsaWRhdGlvbk1lc3NhZ2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgT3duUHRyPFZhbGlkYXRpb25NZXNzYWdlPiBjcmVhdGUoSFRN
TEZvcm1Db250cm9sRWxlbWVudCopOworICAgIGV4cGxpY2l0IFZhbGlkYXRpb25NZXNzYWdlKEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqKTsKICAgICB+VmFsaWRhdGlvbk1lc3NhZ2UoKTsKKwogICAg
IHZvaWQgdXBkYXRlVmFsaWRhdGlvbk1lc3NhZ2UoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBy
ZXF1ZXN0VG9IaWRlTWVzc2FnZSgpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAgICAg
Ym9vbCBzaGFkb3dUcmVlQ29udGFpbnMoY29uc3QgTm9kZSYpIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqKTsK
ICAgICBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudCogdmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQoKSBj
b25zdDsKICAgICB2b2lkIHNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRN
ZXNzYWdlRE9NQW5kU3RhcnRUaW1lcihUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4qID0gMCk7CkBA
IC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBt
X2VsZW1lbnQ7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsKLSAgICBPd25QdHI8VGltZXI8VmFsaWRh
dGlvbk1lc3NhZ2U+PiBtX3RpbWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcjxWYWxpZGF0
aW9uTWVzc2FnZT4+IG1fdGltZXI7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2J1YmJsZTsK
ICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fbWVzc2FnZUhlYWRpbmc7CiAgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBtX21lc3NhZ2VCb2R5Owo=
</data>
<flag name="review"
          id="252027"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>