<?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>108818</bug_id>
          
          <creation_ts>2013-02-04 05:22:38 -0800</creation_ts>
          <short_desc>[v8] explicit isolate parameter for MakeWeak calls</short_desc>
          <delta_ts>2013-02-04 07:58:31 -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>0</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>824271</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-04 05:22:38 -0800</bug_when>
    <thetext>[v8] explicit isolate parameter for MakeWeak calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824272</commentid>
    <comment_count>1</comment_count>
      <attachid>186357</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-04 05:24:40 -0800</bug_when>
    <thetext>Created attachment 186357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824281</commentid>
    <comment_count>2</comment_count>
      <attachid>186357</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 05:40:41 -0800</bug_when>
    <thetext>Comment on attachment 186357
Patch

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

&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:43
&gt; +    , m_wrapperMap(v8::Isolate::GetCurrent()) // TODO Don&apos;t call GetCurrent twice.

TODO =&gt;　FIXME

&gt; Source/WebCore/bindings/v8/DOMWrapperMap.h:108
&gt; +    v8::NearDeathCallback m_callback;

NearDeathCallback is a good name!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824282</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 05:41:06 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=186357&amp;action=review

&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:43
&gt; +    , m_wrapperMap(v8::Isolate::GetCurrent()) // TODO Don&apos;t call GetCurrent twice.

TODO =&gt;　FIXME

&gt; Source/WebCore/bindings/v8/DOMWrapperMap.h:108
&gt; +    v8::NearDeathCallback m_callback;

NearDeathCallback is a good name!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824288</commentid>
    <comment_count>4</comment_count>
      <attachid>186360</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-04 05:49:25 -0800</bug_when>
    <thetext>Created attachment 186360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824289</commentid>
    <comment_count>5</comment_count>
      <attachid>186360</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-04 05:49:56 -0800</bug_when>
    <thetext>Comment on attachment 186360
Patch

addressed TODO =&gt; FIXME issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824355</commentid>
    <comment_count>6</comment_count>
      <attachid>186360</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 07:58:28 -0800</bug_when>
    <thetext>Comment on attachment 186360
Patch

Clearing flags on attachment: 186360

Committed r141771: &lt;http://trac.webkit.org/changeset/141771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824356</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 07:58:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186357</attachid>
            <date>2013-02-04 05:24:40 -0800</date>
            <delta_ts>2013-02-04 05:49:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108818-20130204142118.patch</filename>
            <type>text/plain</type>
            <size>25786</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E3MzQ3MmNiNzg2ZDU5
NTA5MjUwYWRlN2MzYWZhNDAxMDUzZTljOS4uNDU4YmU4MWQ2ODdlZWIzYWE4Y2Y0MjQwNDU0MTdk
NzZkOTA0NDEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEzLTAyLTA0ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFt2OF0gZXhwbGljaXQgaXNv
bGF0ZSBwYXJhbWV0ZXIgZm9yIE1ha2VXZWFrIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBmdW5j
dGlvbmFsaXR5LgorCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vha0NhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6c2V0V3Jh
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldFdyYXBwZXJJbk9iamVjdCk6CisgICAgICAgIChET01E
YXRhU3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJNYXA6OkRPTVdyYXBwZXJNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV3JhcHBlck1hcDo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJN
YXA6OmRlZmF1bHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoRE9NV3JhcHBlck1hcCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Omlzb2xhdGVkV29ybGRXZWFrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBl
cldvcmxkOjptYWtlQ29udGV4dFdlYWspOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0YXRlOjpTY3JpcHRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZTo6d2Vha1JlZmVyZW5jZUNhbGxiYWNrKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoU2NyaXB0U3RhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjp3ZWFrRXZlbnRMaXN0ZW5l
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpW
OEFic3RyYWN0RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpWOEFic3RyYWN0RXZl
bnRMaXN0ZW5lcjo6c2V0TGlzdGVuZXJPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
QWJzdHJhY3RFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChWOEFic3RyYWN0RXZlbnRMaXN0ZW5l
cik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RXZlbnRMaXN0ZW5lcjo6VjhFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
TGF6eUV2ZW50TGlzdGVuZXI6OlY4TGF6eUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0
aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhNdXRhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uQ2FsbGJh
Y2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OndlYWtD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOE5QVGVtcGxhdGVNYXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpWOE5Q
VGVtcGxhdGVNYXA6OnNoYXJlZEluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TlBUZW1w
bGF0ZU1hcDo6VjhOUFRlbXBsYXRlTWFwKToKKyAgICAgICAgKFY4TlBUZW1wbGF0ZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE5QVGVtcGxhdGVNYXA6OndlYWtDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpucE9iamVjdEdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6c3RhdGljTlBPYmplY3RNYXApOgorICAgICAgICAoV2ViQ29yZTo6d2Vh
a05QT2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRTdHJpbmdDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHJpbmdDYWNoZTo6djhFeHRlcm5hbFN0cmluZ1Nsb3cpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWFrUmVmZXJlbmNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
SW5qZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0
YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisKIDIwMTMtMDItMDMg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBF
TkFCTEVfUERGS0lUX1BMVUdJTiBzZXR0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggMThhY2Q5ZjQ2ODcwODQ4ZTIwYjYzYTJiYzE4YmM5OWNi
NTNkZGU3ZS4uZmUzNDdiYTM4ODk4NTQ5YmFkMzZlODFjOTUzMmQ2OTM5MmI1YTk5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC00MCw2ICs0MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUoVHlw
ZSB0eXBlKQogICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX3dyYXBwZXJNYXAodjg6Oklzb2xh
dGU6OkdldEN1cnJlbnQoKSkgLy8gVE9ETyBEb24ndCBjYWxsIEdldEN1cnJlbnQgdHdpY2UuCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWdpc3RlckRPTURhdGFTdG9yZSh0
aGlzKTsKIH0KQEAgLTc5LDcgKzgwLDcgQEAgdm9pZCBET01EYXRhU3RvcmU6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5m
by5hZGRNZW1iZXIobV93cmFwcGVyTWFwLCAid3JhcHBlck1hcCIpOwogfQogCi12b2lkIERPTURh
dGFTdG9yZTo6d2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZv
aWQqIGNvbnRleHQpCit2b2lkIERPTURhdGFTdG9yZTo6d2Vha0NhbGxiYWNrKHY4OjpJc29sYXRl
KiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBjb250ZXh0
KQogewogICAgIFNjcmlwdFdyYXBwYWJsZSoga2V5ID0gc3RhdGljX2Nhc3Q8U2NyaXB0V3JhcHBh
YmxlKj4oY29udGV4dCk7CiAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggNDE2ZTQ1MDZiZjgyYmZkZDVh
YzQ0ZTRlMjkyOWViMWRlNzRjNDZiZS4uYzk4YjVlNDFjZmVhMzRlZWMzNzk1YWZiNDk5MjcwYzU2
MTMwMWRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAg
LTkzLDExICs5MywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAobWFpbldvcmxkV3Jh
cHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01haW5Xb3JsZE9iamVjdChvYmplY3Qp
KSB7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29y
bGRzRXhpc3QoKSkpIHsKLSAgICAgICAgICAgICAgICBzZXRXcmFwcGVySW5PYmplY3Qob2JqZWN0
LCB3cmFwcGVyKTsKKyAgICAgICAgICAgICAgICBzZXRXcmFwcGVySW5PYmplY3Qob2JqZWN0LCB3
cmFwcGVyLCBpc29sYXRlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGN1cnJlbnQoaXNvbGF0ZSktPnNldChvYmplY3Qs
IHdyYXBwZXIpOworICAgICAgICByZXR1cm4gY3VycmVudChpc29sYXRlKS0+c2V0KG9iamVjdCwg
d3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTEwOSwxMiArMTA5LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIGlubGluZSB2b2lkIHNldChUKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXIpCisgICAgaW5saW5lIHZvaWQgc2V0KFQqIG9iamVjdCwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoISFvYmplY3QpOwogICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0
eSgpKTsKICAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVj
dCkgJiYgbV90eXBlID09IE1haW5Xb3JsZCkgewotICAgICAgICAgICAgc2V0V3JhcHBlckluT2Jq
ZWN0KG9iamVjdCwgd3JhcHBlcik7CisgICAgICAgICAgICBzZXRXcmFwcGVySW5PYmplY3Qob2Jq
ZWN0LCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBtX3dyYXBwZXJNYXAuc2V0KG9iamVjdCwgd3JhcHBlcik7CkBAIC0xNTQsMjUgKzE1
NCwyNSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KHZvaWQqLCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PikKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3Qodm9p
ZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopCiAgICAgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V3Jh
cHBlckluT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyKQorICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdChTY3Jp
cHRXcmFwcGFibGUqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewogICAgICAgICBBU1NFUlQob2JqZWN0LT53cmFw
cGVyKCkuSXNFbXB0eSgpKTsKICAgICAgICAgb2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIpOwot
ICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKG9iamVjdCwgd2Vha0NhbGxiYWNrKTsKKyAgICAgICAg
d3JhcHBlci5NYWtlV2Vhayhpc29sYXRlLCBvYmplY3QsIHdlYWtDYWxsYmFjayk7CiAgICAgfQot
ICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdChOb2RlKiBvYmplY3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlcklu
T2JqZWN0KE5vZGUqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewogICAgICAgICBBU1NFUlQob2JqZWN0LT53cmFw
cGVyKCkuSXNFbXB0eSgpKTsKICAgICAgICAgb2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIpOwog
ICAgICAgICBWOEdDQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV3JhcHBlckZvck5vZGUob2JqZWN0KTsK
LSAgICAgICAgd3JhcHBlci5NYWtlV2VhayhzdGF0aWNfY2FzdDxTY3JpcHRXcmFwcGFibGUqPihv
YmplY3QpLCB3ZWFrQ2FsbGJhY2spOworICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKGlzb2xhdGUs
IHN0YXRpY19jYXN0PFNjcmlwdFdyYXBwYWJsZSo+KG9iamVjdCksIHdlYWtDYWxsYmFjayk7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4sIHZvaWQqIGNvbnRleHQpOworICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6
SXNvbGF0ZSosIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIGNvbnRleHQpOwogCiAg
ICAgVHlwZSBtX3R5cGU7CiAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiBtX3dyYXBwZXJNYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmgKaW5kZXggN2U4ZjI2NmU1
MzAxOGFmOGQzM2YwMGQzZWI3MGQ2OTU3MzhiZDg2NC4uMDBjMDNlMDk3NDM3MGM2ODUxMjNlYjRl
NWU1NjhmM2M4Nzg0Yzk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NV3JhcHBlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBw
ZXJNYXAuaApAQCAtNDQsOCArNDQsOSBAQCBjbGFzcyBET01XcmFwcGVyTWFwIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEhhc2hNYXA8S2V5VHlwZSosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
ID4gTWFwVHlwZTsKIAotICAgIGV4cGxpY2l0IERPTVdyYXBwZXJNYXAodjg6OldlYWtSZWZlcmVu
Y2VDYWxsYmFjayBjYWxsYmFjayA9ICZkZWZhdWx0V2Vha0NhbGxiYWNrKQorICAgIGV4cGxpY2l0
IERPTVdyYXBwZXJNYXAodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpOZWFyRGVhdGhDYWxsYmFj
ayBjYWxsYmFjayA9ICZkZWZhdWx0V2Vha0NhbGxiYWNrKQogICAgICAgICA6IG1fY2FsbGJhY2so
Y2FsbGJhY2spCisgICAgICAgICwgbV9pc29sYXRlKGlzb2xhdGUpCiAgICAgewogICAgIH0KIApA
QCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fbWFwLmNv
bnRhaW5zKGtleSkpOwogICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8S2V5VHlwZSo+KHRvTmF0
aXZlKHdyYXBwZXIpKSA9PSBrZXkpOwotICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKHRoaXMsIG1f
Y2FsbGJhY2spOworICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKG1faXNvbGF0ZSwgdGhpcywgbV9j
YWxsYmFjayk7CiAgICAgICAgIG1fbWFwLnNldChrZXksIHdyYXBwZXIpOwogICAgIH0KIApAQCAt
ODksNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lk
IGRlZmF1bHRXZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9p
ZCogY29udGV4dCkKKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0V2Vha0NhbGxiYWNrKHY4OjpJc29s
YXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBjb250
ZXh0KQogICAgIHsKICAgICAgICAgRE9NV3JhcHBlck1hcDxLZXlUeXBlPiogbWFwID0gc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlck1hcDxLZXlUeXBlPio+KGNvbnRleHQpOwogICAgICAgICBBU1NFUlQo
dmFsdWUtPklzT2JqZWN0KCkpOwpAQCAtMTA0LDcgKzEwNSw4IEBAIHByaXZhdGU6CiAgICAgICAg
IHR5cGUtPmRlcmVmT2JqZWN0KGtleSk7CiAgICAgfQogCi0gICAgdjg6OldlYWtSZWZlcmVuY2VD
YWxsYmFjayBtX2NhbGxiYWNrOworICAgIHY4OjpOZWFyRGVhdGhDYWxsYmFjayBtX2NhbGxiYWNr
OworICAgIHY4OjpJc29sYXRlKiBtX2lzb2xhdGU7CiAgICAgTWFwVHlwZSBtX21hcDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4
IDkxNDcwYTc0NTRhMmEwMTc3MWQwMzg1NDFiZjViOTNjNzZkNzQ3OGIuLmZlZTJmNzg2MzAxMGY1
OTk4MmMzMmUzYTliYzY2OGFlODQ2N2ZkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIERPTVdyYXBw
ZXJXb3JsZDo6YXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gYwogfQogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIGlzb2xhdGVkV29ybGRXZWFrQ2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikK
K3N0YXRpYyB2b2lkIGlzb2xhdGVkV29ybGRXZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCiB7
CiAgICAgb2JqZWN0LkRpc3Bvc2UoKTsKICAgICBvYmplY3QuQ2xlYXIoKTsKQEAgLTg2LDcgKzg2
LDcgQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6Om1ha2VDb250ZXh0V2Vhayh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIEFTU0VSVChpc0lzb2xhdGVkV29ybGQoKSk7CiAg
ICAgQVNTRVJUKGlzb2xhdGVkKGNvbnRleHQpID09IHRoaXMpOwotICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQpLk1ha2VXZWFrKHRoaXMsIGlzb2xhdGVkV29ybGRX
ZWFrQ2FsbGJhY2spOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRl
eHQpLk1ha2VXZWFrKGNvbnRleHQtPkdldElzb2xhdGUoKSwgdGhpcywgaXNvbGF0ZWRXb3JsZFdl
YWtDYWxsYmFjayk7CiAgICAgLy8gTWF0Y2hpbmcgZGVyZWYgaXMgaW4gd2VhayBjYWxsYmFjay4K
ICAgICB0aGlzLT5yZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0
YXRlLmNwcAppbmRleCA3MjIyMzJhMzNjM2UzYTYyZDBhNTExZGRlZDkyYWRhMDg3YTU2NjBkLi5l
YTFlMDhjOTg0ZjNlMjNjODljMmQ4NGUxZThiN2M4NmM0ZWMyODBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFNjcmlwdFN0YXRlOjpTY3JpcHRTdGF0ZSh2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiB7Ci0gICAgbV9jb250ZXh0
LmdldCgpLk1ha2VXZWFrKHRoaXMsICZTY3JpcHRTdGF0ZTo6d2Vha1JlZmVyZW5jZUNhbGxiYWNr
KTsKKyAgICBtX2NvbnRleHQuZ2V0KCkuTWFrZVdlYWsoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCB0
aGlzLCAmU2NyaXB0U3RhdGU6OndlYWtSZWZlcmVuY2VDYWxsYmFjayk7CiB9CiAKIFNjcmlwdFN0
YXRlOjp+U2NyaXB0U3RhdGUoKQpAQCAtOTAsNyArOTAsNyBAQCBTY3JpcHRTdGF0ZSogU2NyaXB0
U3RhdGU6OmN1cnJlbnQoKQogICAgIHJldHVybiBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dChjb250
ZXh0KTsKIH0KIAotdm9pZCBTY3JpcHRTdGF0ZTo6d2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCit2b2lkIFNjcmlw
dFN0YXRlOjp3ZWFrUmVmZXJlbmNlQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCiB7CiAgICAgU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gc3RhdGljX2Nhc3Q8U2NyaXB0U3RhdGUqPihwYXJhbWV0
ZXIpOwogICAgIGRlbGV0ZSBzY3JpcHRTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRTdGF0ZS5oCmluZGV4IDRlMTRjYmUzNmIyNWI4Yzk4NTMxMzI1Y2U5ODI0OTYzYzJlMDgz
YTkuLjdmOGY3OGM4YjY4NDY3YmRlNTFkYzUyMDcwOWQ1N2U4MjgzZmQ3OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2NyaXB0U3RhdGUoRnJhbWUqKTsK
ICAgICBleHBsaWNpdCBTY3JpcHRTdGF0ZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAKLSAg
ICBzdGF0aWMgdm9pZCB3ZWFrUmVmZXJlbmNlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZh
bHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcik7CisgICAgc3RhdGljIHZvaWQgd2Vha1JlZmVy
ZW5jZUNhbGxiYWNrKHY4OjpJc29sYXRlKiwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9p
ZCogcGFyYW1ldGVyKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG1fZXhjZXB0aW9uOwog
ICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcApp
bmRleCA0NjRhMzgxZWI1ODI3NTAwMmY5YjRiZDA5Yzc4Nzk1ZDg5NDMzMDRmLi4zM2I5MzY2ZTg2
NTEyMGNmMTg4ZGQwNGQyZWI5MTc2YTJhYTEyZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC00NywxNiAr
NDcsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFY4QWJzdHJhY3RFdmVudExp
c3RlbmVyOjp3ZWFrRXZlbnRMaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1
ZT4sIHZvaWQqIHBhcmFtZXRlcikKK3ZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OndlYWtF
dmVudExpc3RlbmVyQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4sIHZvaWQqIHBhcmFtZXRlcikKIHsKICAgICBWOEFic3RyYWN0RXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcio+KHBh
cmFtZXRlcik7CiAgICAgbGlzdGVuZXItPm1fbGlzdGVuZXIuY2xlYXIoKTsKIH0KIAotVjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXI6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyKGJvb2wgaXNBdHRyaWJ1
dGUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorVjhBYnN0cmFjdEV2
ZW50TGlzdGVuZXI6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyKGJvb2wgaXNBdHRyaWJ1dGUsIGNv
bnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKICAgICA6IEV2ZW50TGlzdGVuZXIoSlNFdmVudExpc3RlbmVyVHlwZSkKICAgICAsIG1faXNB
dHRyaWJ1dGUoaXNBdHRyaWJ1dGUpCiAgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQp
CisgICAgLCBtX2lzb2xhdGUoaXNvbGF0ZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IFRocmVhZExvY2FsSW5zcGVjdG9yQ291bnRlcnM6OmN1cnJlbnQoKS5pbmNyZW1lbnRDb3VudGVy
KFRocmVhZExvY2FsSW5zcGVjdG9yQ291bnRlcnM6OkpTRXZlbnRMaXN0ZW5lckNvdW50ZXIpOwpA
QCAtMTA1LDcgKzEwNiw3IEBAIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV2ZW50CiB2b2lkIFY4QWJzdHJh
Y3RFdmVudExpc3RlbmVyOjpzZXRMaXN0ZW5lck9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGxpc3RlbmVyKQogewogICAgIG1fbGlzdGVuZXIuc2V0KGxpc3RlbmVyKTsKLSAgICBtX2xpc3Rl
bmVyLmdldCgpLk1ha2VXZWFrKHRoaXMsICZWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6d2Vha0V2
ZW50TGlzdGVuZXJDYWxsYmFjayk7CisgICAgbV9saXN0ZW5lci5nZXQoKS5NYWtlV2VhayhtX2lz
b2xhdGUsIHRoaXMsICZWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6d2Vha0V2ZW50TGlzdGVuZXJD
YWxsYmFjayk7CiB9CiAKIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6Omludm9rZUV2ZW50
SGFuZGxlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFdmVudCogZXZlbnQsIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgKaW5kZXggNjFiNzk0Zjk1ZWJjZWVj
ZjkzZGYwZWViNmY3YzBjYTMyMDhkMzA3Yy4uMTIwMWIxODg3NzRiMjdhOWJmYjhhNjk4YWI4MDNh
NTY5Njg1MWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lci5oCkBAIC0xMDYsNyArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fd29ybGRDb250ZXh0OyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKGJvb2wgaXNBdHRyaWJ1dGUsIGNvbnN0IFdvcmxkQ29u
dGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKKyAgICAgICAgVjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIoYm9vbCBpc0F0dHJpYnV0ZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiwgdjg6Oklzb2xh
dGUqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KIApAQCAtMTE4LDcgKzExOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdldFJlY2VpdmVyT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgc3RhdGljIHZvaWQgd2Vha0V2ZW50TGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2
ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpOworICAgICAgICBzdGF0aWMgdm9pZCB3ZWFrRXZl
bnRMaXN0ZW5lckNhbGxiYWNrKHY4OjpJc29sYXRlKiwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVl
Piwgdm9pZCogcGFyYW1ldGVyKTsKIAogICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBFdmVu
dExpc3RlbmVyIGZ1bmN0aW9uLgogICAgICAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmli
dXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dHJpYnV0ZTsgfQpAQCAtMTMzLDYgKzEzMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzQXR0cmlidXRlOwogCiAgICAg
ICAgIFdvcmxkQ29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsKKyAgICAgICAgdjg6Oklzb2xh
dGUqIG1faXNvbGF0ZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcAppbmRleCAxMjgxZjU5
NGI2MWM0ZjdmYjVhZDg4YTRmN2EyZDI4ODVmNmYzMjc1Li4yYWM3ODE4ZGFmNGMyMTllNGIwOWMy
YWJmMzNmMmFiODlkZmE3OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogVjhFdmVudExpc3RlbmVyOjpWOEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGxpc3RlbmVyLCBib29sIGlzQXR0cmlidXRlLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdv
cmxkQ29udGV4dCkKLSAgICA6IFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKGlzQXR0cmlidXRlLCB3
b3JsZENvbnRleHQpCisgICAgOiBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcihpc0F0dHJpYnV0ZSwg
d29ybGRDb250ZXh0LCB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKSAvLyBSZW1vdmUgR2V0Q3Vy
cmVudCgpLgogewogICAgIHNldExpc3RlbmVyT2JqZWN0KGxpc3RlbmVyKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
MDRkYTRkZTU2Yzg0MzBmZmFjNDBiODgzZjg0ZGNhN2Q2M2U3YjRhOC4uYTM0ZDYzOTEwYTVlMmMy
NTU0ZTU1NDMxZTU1Y2QyZGY1OGRlODBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogVjhMYXp5RXZlbnRMaXN0ZW5lcjo6VjhMYXp5RXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFBhcmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nIHNvdXJj
ZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgTm9kZSogbm9kZSwgY29uc3QgV29y
bGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCi0gICAgOiBWOEFic3RyYWN0RXZlbnRMaXN0
ZW5lcih0cnVlLCB3b3JsZENvbnRleHQpCisgICAgOiBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcih0
cnVlLCB3b3JsZENvbnRleHQsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpIC8vIFRPRE8gUmVt
b3ZlIEdldEN1cnJlbnQoKQogICAgICwgbV9mdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQogICAg
ICwgbV9ldmVudFBhcmFtZXRlck5hbWUoZXZlbnRQYXJhbWV0ZXJOYW1lKQogICAgICwgbV9jb2Rl
KGNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9u
Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxi
YWNrLmNwcAppbmRleCA3ZWQzOTYxY2FiMTM1OGMzMTBhMzQ5YmQ5NTFlYzJhYTZmYWU1ZDQzLi4w
MjlhZWU4ZTBjMGJjMjVlYzZkNzEwYzcyMGNlYWZmODc0ZWFlNWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHAKQEAgLTM1LDEzICsz
NSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVY4TXV0YXRpb25DYWxsYmFjazo6VjhN
dXRhdGlvbkNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb3duZXIpCitW
OE11dGF0aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG93bmVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICA6IEFjdGl2ZURP
TUNhbGxiYWNrKGNvbnRleHQpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV93
b3JsZENvbnRleHQoVXNlQ3VycmVudFdvcmxkKQogewogICAgIG93bmVyLT5TZXRIaWRkZW5WYWx1
ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6Y2FsbGJhY2soKSwgY2FsbGJhY2spOwotICAgIG1fY2Fs
bGJhY2suZ2V0KCkuTWFrZVdlYWsodGhpcywgJlY4TXV0YXRpb25DYWxsYmFjazo6d2Vha0NhbGxi
YWNrKTsKKyAgICBtX2NhbGxiYWNrLmdldCgpLk1ha2VXZWFrKGlzb2xhdGUsIHRoaXMsICZWOE11
dGF0aW9uQ2FsbGJhY2s6OndlYWtDYWxsYmFjayk7CiB9CiAKIGJvb2wgVjhNdXRhdGlvbkNhbGxi
YWNrOjpoYW5kbGVFdmVudChNdXRhdGlvblJlY29yZEFycmF5KiBtdXRhdGlvbnMsIE11dGF0aW9u
T2JzZXJ2ZXIqIG9ic2VydmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhNdXRhdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11
dGF0aW9uQ2FsbGJhY2suaAppbmRleCA4YjVmM2UyOTQ1YmNhNTVlZDRhNmU5OWVjOWZhY2FjMDFh
NWRjMmM1Li41YTM2NjQyOThhMzY4ZGZkNGZhYTNmNzQ2YjNiNGE1MDIxNmU5OTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suaApAQCAtMzgs
MjAgKzM4LDIwIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFY4TXV0
YXRpb25DYWxsYmFjayA6IHB1YmxpYyBNdXRhdGlvbkNhbGxiYWNrLCBwdWJsaWMgQWN0aXZlRE9N
Q2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4TXV0YXRpb25DYWxs
YmFjaz4gY3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25lcikKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxWOE11dGF0aW9uQ2FsbGJhY2s+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb3duZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgY29udGV4dCwgb3duZXIpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdCh2YWx1ZSksIGNvbnRleHQsIG93bmVyLCBpc29sYXRlKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIGhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqLCBNdXRhdGlvbk9ic2Vy
dmVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgot
ICAgIFY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CisgICAgVjhNdXRhdGlvbkNh
bGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwogCi0gICAgc3RhdGljIHZvaWQg
d2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlciwgdm9pZCogcGFy
YW1ldGVyKQorICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyLCB2b2lkKiBwYXJhbWV0ZXIpCiAg
ICAgewogICAgICAgICBWOE11dGF0aW9uQ2FsbGJhY2sqIG9iamVjdCA9IHN0YXRpY19jYXN0PFY4
TXV0YXRpb25DYWxsYmFjayo+KHBhcmFtZXRlcik7CiAgICAgICAgIG9iamVjdC0+bV9jYWxsYmFj
ay5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRl
eCAxMDc0ZGM1YjEyMjk3ZjkwOTg1ZWNjODRiOWFjNTBhYTM3N2Y2NWU5Li5kOGU1ODQ1ZGZjYzAy
YWM5MGVmOGNlOTBiNDNmOTU3NmNmMTg0NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE5QT2JqZWN0LmNwcApAQCAtMTc1LDE5ICsxNzUsMjUgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX21hcC5jb250YWlucyhrZXkpKTsKICAgICAgICAgbV9tYXAuc2V0KGtl
eSwgd3JhcHBlcik7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoa2V5LCB3ZWFrQ2FsbGJhY2sp
OworICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKG1faXNvbGF0ZSwga2V5LCB3ZWFrQ2FsbGJhY2sp
OwogICAgIH0KIAotICAgIHN0YXRpYyBWOE5QVGVtcGxhdGVNYXAmIHNoYXJlZEluc3RhbmNlKCkK
KyAgICBzdGF0aWMgVjhOUFRlbXBsYXRlTWFwJiBzaGFyZWRJbnN0YW5jZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKICAgICB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVjhOUFRlbXBsYXRl
TWFwLCBtYXAsICgpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWOE5QVGVtcGxhdGVN
YXAsIG1hcCwgKGlzb2xhdGUpKTsKKyAgICAgICAgQVNTRVJUKGlzb2xhdGUgPT0gbWFwLm1faXNv
bGF0ZSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0YXRp
YyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9p
ZCogY29udGV4dCkKKyAgICBleHBsaWNpdCBWOE5QVGVtcGxhdGVNYXAodjg6Oklzb2xhdGUqIGlz
b2xhdGUpCisgICAgICAgIDogbV9pc29sYXRlKGlzb2xhdGUpCiAgICAgewotICAgICAgICBzaGFy
ZWRJbnN0YW5jZSgpLmRpc3Bvc2Uoc3RhdGljX2Nhc3Q8UHJpdmF0ZUlkZW50aWZpZXIqPihjb250
ZXh0KSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJc29sYXRl
KiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogY29udGV4
dCkKKyAgICB7CisgICAgICAgIHNoYXJlZEluc3RhbmNlKGlzb2xhdGUpLmRpc3Bvc2Uoc3RhdGlj
X2Nhc3Q8UHJpdmF0ZUlkZW50aWZpZXIqPihjb250ZXh0KSk7CiAgICAgfQogCiAgICAgdm9pZCBk
aXNwb3NlKFByaXZhdGVJZGVudGlmaWVyKiBrZXkpCkBAIC0yMDAsNiArMjA2LDcgQEAgcHJpdmF0
ZToKICAgICB9CiAKICAgICBNYXBUeXBlIG1fbWFwOworICAgIHY4OjpJc29sYXRlKiBtX2lzb2xh
dGU7CiB9OwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0R2V0UHJvcGVy
dHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5QSWRlbnRpZmllciBpZGVudGlmaWVyLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiBrZXksIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtMjM3LDE0
ICsyNDQsMTQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEdldFByb3Bl
cnR5KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKICAgICAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgaXNvbGF0ZSk7
CiAKICAgICAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUlk
ZW50aWZpZXIqPihpZGVudGlmaWVyKTsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBWOE5QVGVtcGxhdGVNYXA6OnNoYXJlZElu
c3RhbmNlKCkuZ2V0KGlkKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBWOE5QVGVtcGxhdGVNYXA6OnNoYXJlZEluc3RhbmNl
KGlzb2xhdGUpLmdldChpZCk7CiAgICAgICAgIC8vIENhY2hlIHRlbXBsYXRlcyB1c2luZyBpZGVu
dGlmaWVyIGFzIHRoZSBrZXkuCiAgICAgICAgIGlmIChmdW5jdGlvblRlbXBsYXRlLklzRW1wdHko
KSkgewogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHRlbXBsYXRlLgogICAgICAgICAgICAg
djg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wID0gdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldygpOwogICAgICAgICAgICAgdGVtcC0+U2V0Q2FsbEhhbmRsZXIobnBPYmplY3RNZXRo
b2RIYW5kbGVyLCBrZXkpOwogICAgICAgICAgICAgZnVuY3Rpb25UZW1wbGF0ZSA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHRlbXApOwotICAgICAgICAgICAgVjhO
UFRlbXBsYXRlTWFwOjpzaGFyZWRJbnN0YW5jZSgpLnNldChpZCwgZnVuY3Rpb25UZW1wbGF0ZSk7
CisgICAgICAgICAgICBWOE5QVGVtcGxhdGVNYXA6OnNoYXJlZEluc3RhbmNlKGlzb2xhdGUpLnNl
dChpZCwgZnVuY3Rpb25UZW1wbGF0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGdW5jdGlv
blRlbXBsYXRlIGNhY2hlcyBmdW5jdGlvbiBmb3IgZWFjaCBjb250ZXh0LgpAQCAtMzc2LDE1ICsz
ODMsMTUgQEAgdjg6OkhhbmRsZTx2ODo6QXJyYXk+IG5wT2JqZWN0SW5kZXhlZFByb3BlcnR5RW51
bWVyYXRvcihjb25zdCB2ODo6QWNjZXNzb3JJbmZvJgogICAgIHJldHVybiBucE9iamVjdFByb3Bl
cnR5RW51bWVyYXRvcihpbmZvLCBmYWxzZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYWtOUE9iamVj
dENhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqKTsKK3N0YXRpYyB2b2lk
IHdlYWtOUE9iamVjdENhbGxiYWNrKHY4OjpJc29sYXRlKiwgdjg6OlBlcnNpc3RlbnQ8djg6OlZh
bHVlPiwgdm9pZCopOwogCiBzdGF0aWMgRE9NV3JhcHBlck1hcDxOUE9iamVjdD4mIHN0YXRpY05Q
T2JqZWN0TWFwKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdyYXBwZXJNYXA8TlBP
YmplY3Q+LCBucE9iamVjdE1hcCwgKCZ3ZWFrTlBPYmplY3RDYWxsYmFjaykpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoRE9NV3JhcHBlck1hcDxOUE9iamVjdD4sIG5wT2JqZWN0TWFwLCAodjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgJndlYWtOUE9iamVjdENhbGxiYWNrKSk7CiAgICAgcmV0
dXJuIG5wT2JqZWN0TWFwOwogfQogCi1zdGF0aWMgdm9pZCB3ZWFrTlBPYmplY3RDYWxsYmFjayh2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKikKK3N0YXRpYyB2b2lkIHdlYWtO
UE9iamVjdENhbGxiYWNrKHY4OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+IHZhbHVlLCB2b2lkKikKIHsKICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwog
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhW
YWx1ZUNhY2hlLmNwcAppbmRleCBjZGRkYjE5ODE4ZWUwNTBlYmZkODZkNjUxZGJkMzNkZGJiYTU3
ZTliLi5lNDk1YTQ3YjU4MTdlMmYyZjQxNDc3ZjQwMjc3OWI4MTUzMGM2MTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
c3RhdGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBtYWtlRXh0ZXJuYWxTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIG5ld1N0cmluZzsKIH0KIAotc3RhdGljIHZvaWQgY2Fj
aGVkU3RyaW5nQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyLCB2b2lk
KiBwYXJhbWV0ZXIpCitzdGF0aWMgdm9pZCBjYWNoZWRTdHJpbmdDYWxsYmFjayh2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyLCB2b2lkKiBwYXJh
bWV0ZXIpCiB7CiAgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCA9IHN0YXRpY19jYXN0PFN0cmlu
Z0ltcGwqPihwYXJhbWV0ZXIpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+c3Ry
aW5nQ2FjaGUoKS0+cmVtb3ZlKHN0cmluZ0ltcGwpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gU3RyaW5nQ2FjaGU6OnY4RXh0ZXJuYWxTdHJpbmdTbG93KFN0cmlu
Z0ltcGwqIHN0cmluZ0ltcGwsCiAKICAgICBzdHJpbmdJbXBsLT5yZWYoKTsKICAgICB3cmFwcGVy
Lk1hcmtJbmRlcGVuZGVudCgpOwotICAgIHdyYXBwZXIuTWFrZVdlYWsoc3RyaW5nSW1wbCwgY2Fj
aGVkU3RyaW5nQ2FsbGJhY2spOworICAgIHdyYXBwZXIuTWFrZVdlYWsoaXNvbGF0ZSwgc3RyaW5n
SW1wbCwgY2FjaGVkU3RyaW5nQ2FsbGJhY2spOwogICAgIG1fc3RyaW5nQ2FjaGUuc2V0KHN0cmlu
Z0ltcGwsICp3cmFwcGVyKTsKIAogICAgIG1fbGFzdFN0cmluZ0ltcGwgPSBzdHJpbmdJbXBsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggNDVmYTg2Mjg5MDRkMWRiNzQ5ZThhYTI5YWUy
ZmZjY2ZiYTdiMGQyNC4uMWMxODkxODUyOTIzZWQ3MzZjOGM1MjcxYWIzOTE2MGQ3N2NiMDM3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgV2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCitzdGF0aWMgdm9pZCBX
ZWFrUmVmZXJlbmNlQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRIb3N0KiBuYXRpdmVPYmplY3QgPSBzdGF0aWNfY2FzdDxJbmplY3RlZFNjcmlwdEhvc3QqPihw
YXJhbWV0ZXIpOwogICAgIG5hdGl2ZU9iamVjdC0+ZGVyZWYoKTsKQEAgLTcwLDcgKzcwLDcgQEAg
c3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdy
YXBwZXIoSW5qZWN0ZWRTY3JpcHRIb3MKICAgICAvLyBJbnNwZWN0b3JCYWNrZW5kIHdoZW4gdGhl
IHdyYXBwZXIgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuCiAgICAgaG9zdC0+cmVmKCk7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd2Vha0hhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+OjpOZXcoaW5zdGFuY2UpOwotICAgIHdlYWtIYW5kbGUuTWFrZVdlYWsoaG9zdCwgJldl
YWtSZWZlcmVuY2VDYWxsYmFjayk7CisgICAgd2Vha0hhbmRsZS5NYWtlV2Vhayhpc29sYXRlLCBo
b3N0LCAmV2Vha1JlZmVyZW5jZUNhbGxiYWNrKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9u
T2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggNDFlOGM2M2Q0ODc3OWM0YzQ2MzA0YzU4
OTIzYzZiOTI0NzZiZDFlYi4uOTc3YmNiMzhmNmQwM2MyNTZjNDAyNDA2Y2JjOGExZGEwNGZmZTU4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRp
b25PYnNlcnZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXIKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
Z2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4g
Y2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRleHQsIHdyYXBw
ZXIpOworICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFY4TXV0YXRpb25D
YWxsYmFjazo6Y3JlYXRlKGFyZywgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2JzZXJ2
ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCiAgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186360</attachid>
            <date>2013-02-04 05:49:25 -0800</date>
            <delta_ts>2013-02-04 07:58:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108818-20130204144603.patch</filename>
            <type>text/plain</type>
            <size>25793</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E3MzQ3MmNiNzg2ZDU5
NTA5MjUwYWRlN2MzYWZhNDAxMDUzZTljOS4uYWFiYTkxZTZiZGI5NGFiZjFmZjQ3MjM2NjU4YzE4
OWQzYTcwYWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEzLTAyLTA0ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFt2OF0gZXhwbGljaXQgaXNv
bGF0ZSBwYXJhbWV0ZXIgZm9yIE1ha2VXZWFrIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW50YXJvIEhhcmEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rp
b25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01EYXRhU3RvcmU6OndlYWtDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldFdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVySW5PYmplY3QpOgorICAgICAgICAoRE9NRGF0
YVN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmg6CisgICAgICAg
IChXZWJDb3JlOjpET01XcmFwcGVyTWFwOjpET01XcmFwcGVyTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdyYXBwZXJNYXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyTWFw
OjpkZWZhdWx0V2Vha0NhbGxiYWNrKToKKyAgICAgICAgKERPTVdyYXBwZXJNYXApOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c29sYXRlZFdvcmxkV2Vha0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZDo6bWFrZUNvbnRleHRXZWFrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZTo6U2NyaXB0U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0U3RhdGU6OndlYWtSZWZlcmVuY2VDYWxsYmFjayk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKFNjcmlwdFN0YXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6d2Vha0V2ZW50TGlzdGVuZXJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6VjhB
YnN0cmFjdEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhBYnN0cmFjdEV2ZW50
TGlzdGVuZXI6OnNldExpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAoVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOEV2ZW50TGlzdGVuZXI6OlY4RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExh
enlFdmVudExpc3RlbmVyOjpWOExhenlFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOE11dGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlv
bkNhbGxiYWNrOjpWOE11dGF0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
TXV0YXRpb25DYWxsYmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkNhbGxiYWNr
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkNhbGxiYWNrOjp3ZWFrQ2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhOUFRlbXBsYXRlTWFwOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhOUFRl
bXBsYXRlTWFwOjpzaGFyZWRJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOE5QVGVtcGxh
dGVNYXA6OlY4TlBUZW1wbGF0ZU1hcCk6CisgICAgICAgIChWOE5QVGVtcGxhdGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6VjhOUFRlbXBsYXRlTWFwOjp3ZWFrQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YXRpY05QT2JqZWN0TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OndlYWtO
UE9iamVjdENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU3RyaW5nQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6U3RyaW5nQ2FjaGU6OnY4RXh0ZXJuYWxTdHJpbmdTbG93KToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2Vha1JlZmVyZW5jZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlu
amVjdGVkU2NyaXB0SG9zdFY4V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0
aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorCiAyMDEzLTAyLTAzICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gRU5B
QkxFX1BERktJVF9QTFVHSU4gc2V0dHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01EYXRhU3RvcmUuY3BwCmluZGV4IDE4YWNkOWY0Njg3MDg0OGUyMGI2M2EyYmMxOGJjOTljYjUz
ZGRlN2UuLmNjYjliOGEwYzZmZDBkMTU4NzgyZjk0NTQxYmI1MTNkMmFhMjNmZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcApAQCAtNDAsNiArNDAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKFR5cGUg
dHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV93cmFwcGVyTWFwKHY4OjpJc29sYXRl
OjpHZXRDdXJyZW50KCkpIC8vIEZJWE1FIERvbid0IGNhbGwgR2V0Q3VycmVudCB0d2ljZS4KIHsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlZ2lzdGVyRE9NRGF0YVN0b3JlKHRo
aXMpOwogfQpAQCAtNzksNyArODAsNyBAQCB2b2lkIERPTURhdGFTdG9yZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZv
LmFkZE1lbWJlcihtX3dyYXBwZXJNYXAsICJ3cmFwcGVyTWFwIik7CiB9CiAKLXZvaWQgRE9NRGF0
YVN0b3JlOjp3ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9p
ZCogY29udGV4dCkKK3ZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZvaWQqIGNvbnRleHQp
CiB7CiAgICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkgPSBzdGF0aWNfY2FzdDxTY3JpcHRXcmFwcGFi
bGUqPihjb250ZXh0KTsKICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCA0MTZlNDUwNmJmODJiZmRkNWFj
NDRlNGUyOTI5ZWIxZGU3NGM0NmJlLi5jOThiNWU0MWNmZWEzNGVlYzM3OTVhZmI0OTkyNzBjNTYx
MzAxZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApAQCAt
OTMsMTEgKzkzLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtYWluV29ybGRXcmFw
cGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0KG9iamVjdCkp
IHsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3Js
ZHNFeGlzdCgpKSkgewotICAgICAgICAgICAgICAgIHNldFdyYXBwZXJJbk9iamVjdChvYmplY3Qs
IHdyYXBwZXIpOworICAgICAgICAgICAgICAgIHNldFdyYXBwZXJJbk9iamVjdChvYmplY3QsIHdy
YXBwZXIsIGlzb2xhdGUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gY3VycmVudChpc29sYXRlKS0+c2V0KG9iamVjdCwg
d3JhcHBlcik7CisgICAgICAgIHJldHVybiBjdXJyZW50KGlzb2xhdGUpLT5zZXQob2JqZWN0LCB3
cmFwcGVyLCBpc29sYXRlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
MTA5LDEyICsxMDksMTIgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgaW5saW5lIHZvaWQgc2V0KFQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlcikKKyAgICBpbmxpbmUgdm9pZCBzZXQoVCogb2JqZWN0LCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghIW9iamVjdCk7CiAgICAgICAgIEFTU0VSVCghd3JhcHBlci5Jc0VtcHR5
KCkpOwogICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0
KSAmJiBtX3R5cGUgPT0gTWFpbldvcmxkKSB7Ci0gICAgICAgICAgICBzZXRXcmFwcGVySW5PYmpl
Y3Qob2JqZWN0LCB3cmFwcGVyKTsKKyAgICAgICAgICAgIHNldFdyYXBwZXJJbk9iamVjdChvYmpl
Y3QsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIG1fd3JhcHBlck1hcC5zZXQob2JqZWN0LCB3cmFwcGVyKTsKQEAgLTE1NCwyNSArMTU0
LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBvYmplY3QtPndyYXBwZXIoKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3Qodm9pZCosIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+KQorICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdCh2b2lk
Kiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKikKICAgICB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXcmFw
cGVySW5PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXIpCisgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KFNjcmlw
dFdyYXBwYWJsZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChvYmplY3QtPndyYXBw
ZXIoKS5Jc0VtcHR5KCkpOwogICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlcik7Ci0g
ICAgICAgIHdyYXBwZXIuTWFrZVdlYWsob2JqZWN0LCB3ZWFrQ2FsbGJhY2spOworICAgICAgICB3
cmFwcGVyLk1ha2VXZWFrKGlzb2xhdGUsIG9iamVjdCwgd2Vha0NhbGxiYWNrKTsKICAgICB9Ci0g
ICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KE5vZGUqIG9iamVjdCwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5P
YmplY3QoTm9kZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChvYmplY3QtPndyYXBw
ZXIoKS5Jc0VtcHR5KCkpOwogICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlcik7CiAg
ICAgICAgIFY4R0NDb250cm9sbGVyOjpkaWRDcmVhdGVXcmFwcGVyRm9yTm9kZShvYmplY3QpOwot
ICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKHN0YXRpY19jYXN0PFNjcmlwdFdyYXBwYWJsZSo+KG9i
amVjdCksIHdlYWtDYWxsYmFjayk7CisgICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoaXNvbGF0ZSwg
c3RhdGljX2Nhc3Q8U2NyaXB0V3JhcHBhYmxlKj4ob2JqZWN0KSwgd2Vha0NhbGxiYWNrKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZh
bHVlPiwgdm9pZCogY29udGV4dCk7CisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJ
c29sYXRlKiwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogY29udGV4dCk7CiAKICAg
ICBUeXBlIG1fdHlwZTsKICAgICBET01XcmFwcGVyTWFwPHZvaWQ+IG1fd3JhcHBlck1hcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaAppbmRleCA3ZThmMjY2ZTUz
MDE4YWY4ZDMzZjAwZDNlYjcwZDY5NTczOGJkODY0Li4wMGMwM2UwOTc0MzcwYzY4NTEyM2ViNGU1
ZTU2OGYzYzg3ODRjOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01XcmFwcGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBl
ck1hcC5oCkBAIC00NCw4ICs0NCw5IEBAIGNsYXNzIERPTVdyYXBwZXJNYXAgewogcHVibGljOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDxLZXlUeXBlKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
PiBNYXBUeXBlOwogCi0gICAgZXhwbGljaXQgRE9NV3JhcHBlck1hcCh2ODo6V2Vha1JlZmVyZW5j
ZUNhbGxiYWNrIGNhbGxiYWNrID0gJmRlZmF1bHRXZWFrQ2FsbGJhY2spCisgICAgZXhwbGljaXQg
RE9NV3JhcHBlck1hcCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6Ok5lYXJEZWF0aENhbGxiYWNr
IGNhbGxiYWNrID0gJmRlZmF1bHRXZWFrQ2FsbGJhY2spCiAgICAgICAgIDogbV9jYWxsYmFjayhj
YWxsYmFjaykKKyAgICAgICAgLCBtX2lzb2xhdGUoaXNvbGF0ZSkKICAgICB7CiAgICAgfQogCkBA
IC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9tYXAuY29u
dGFpbnMoa2V5KSk7CiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxLZXlUeXBlKj4odG9OYXRp
dmUod3JhcHBlcikpID09IGtleSk7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWsodGhpcywgbV9j
YWxsYmFjayk7CisgICAgICAgIHdyYXBwZXIuTWFrZVdlYWsobV9pc29sYXRlLCB0aGlzLCBtX2Nh
bGxiYWNrKTsKICAgICAgICAgbV9tYXAuc2V0KGtleSwgd3JhcHBlcik7CiAgICAgfQogCkBAIC04
OSw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQg
ZGVmYXVsdFdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lk
KiBjb250ZXh0KQorICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRXZWFrQ2FsbGJhY2sodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZvaWQqIGNvbnRl
eHQpCiAgICAgewogICAgICAgICBET01XcmFwcGVyTWFwPEtleVR5cGU+KiBtYXAgPSBzdGF0aWNf
Y2FzdDxET01XcmFwcGVyTWFwPEtleVR5cGU+Kj4oY29udGV4dCk7CiAgICAgICAgIEFTU0VSVCh2
YWx1ZS0+SXNPYmplY3QoKSk7CkBAIC0xMDQsNyArMTA1LDggQEAgcHJpdmF0ZToKICAgICAgICAg
dHlwZS0+ZGVyZWZPYmplY3Qoa2V5KTsKICAgICB9CiAKLSAgICB2ODo6V2Vha1JlZmVyZW5jZUNh
bGxiYWNrIG1fY2FsbGJhY2s7CisgICAgdjg6Ok5lYXJEZWF0aENhbGxiYWNrIG1fY2FsbGJhY2s7
CisgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKICAgICBNYXBUeXBlIG1fbWFwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKaW5kZXgg
OTE0NzBhNzQ1NGEyYTAxNzcxZDAzODU0MWJmNWI5M2M3NmQ3NDc4Yi4uZmVlMmY3ODYzMDEwZjU5
OTgyYzMyZTNhOWJjNjY4YWU4NDY3ZmQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgRE9NV3JhcHBl
cldvcmxkOjphc3NlcnRDb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgaXNvbGF0ZWRXb3JsZFdlYWtDYWxs
YmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKQor
c3RhdGljIHZvaWQgaXNvbGF0ZWRXb3JsZFdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKIHsK
ICAgICBvYmplY3QuRGlzcG9zZSgpOwogICAgIG9iamVjdC5DbGVhcigpOwpAQCAtODYsNyArODYs
NyBAQCB2b2lkIERPTVdyYXBwZXJXb3JsZDo6bWFrZUNvbnRleHRXZWFrKHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGlzSXNvbGF0ZWRXb3JsZCgpKTsKICAg
ICBBU1NFUlQoaXNvbGF0ZWQoY29udGV4dCkgPT0gdGhpcyk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkNvbnRleHQ+OjpOZXcoY29udGV4dCkuTWFrZVdlYWsodGhpcywgaXNvbGF0ZWRXb3JsZFdl
YWtDYWxsYmFjayk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+OjpOZXcoY29udGV4
dCkuTWFrZVdlYWsoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCB0aGlzLCBpc29sYXRlZFdvcmxkV2Vh
a0NhbGxiYWNrKTsKICAgICAvLyBNYXRjaGluZyBkZXJlZiBpcyBpbiB3ZWFrIGNhbGxiYWNrLgog
ICAgIHRoaXMtPnJlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3Rh
dGUuY3BwCmluZGV4IDcyMjIzMmEzM2MzZTNhNjJkMGE1MTFkZGVkOTJhZGEwODdhNTY2MGQuLmVh
MWUwOGM5ODRmM2UyM2M4OWMyZDg0ZTFlOGI3Yzg2YzRlYzI4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogU2NyaXB0U3RhdGU6OlNjcmlwdFN0YXRlKHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKIHsKLSAgICBtX2NvbnRleHQu
Z2V0KCkuTWFrZVdlYWsodGhpcywgJlNjcmlwdFN0YXRlOjp3ZWFrUmVmZXJlbmNlQ2FsbGJhY2sp
OworICAgIG1fY29udGV4dC5nZXQoKS5NYWtlV2Vhayhjb250ZXh0LT5HZXRJc29sYXRlKCksIHRo
aXMsICZTY3JpcHRTdGF0ZTo6d2Vha1JlZmVyZW5jZUNhbGxiYWNrKTsKIH0KIAogU2NyaXB0U3Rh
dGU6On5TY3JpcHRTdGF0ZSgpCkBAIC05MCw3ICs5MCw3IEBAIFNjcmlwdFN0YXRlKiBTY3JpcHRT
dGF0ZTo6Y3VycmVudCgpCiAgICAgcmV0dXJuIFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRl
eHQpOwogfQogCi12b2lkIFNjcmlwdFN0YXRlOjp3ZWFrUmVmZXJlbmNlQ2FsbGJhY2sodjg6OlBl
cnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKK3ZvaWQgU2NyaXB0
U3RhdGU6OndlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBl
cnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKIHsKICAgICBTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBzdGF0aWNfY2FzdDxTY3JpcHRTdGF0ZSo+KHBhcmFtZXRl
cik7CiAgICAgZGVsZXRlIHNjcmlwdFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdFN0YXRlLmgKaW5kZXggNGUxNGNiZTM2YjI1YjhjOTg1MzEzMjVjZTk4MjQ5NjNjMmUwODNh
OS4uN2Y4Zjc4YzhiNjg0NjdiZGU1MWRjNTIwNzA5ZDU3ZTgyODNmZDc5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIFNjcmlwdFN0YXRlKiBtYWluV29ybGRTY3JpcHRTdGF0ZShGcmFtZSopOwog
ICAgIGV4cGxpY2l0IFNjcmlwdFN0YXRlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKIAotICAg
IHN0YXRpYyB2b2lkIHdlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWFrUmVmZXJl
bmNlQ2FsbGJhY2sodjg6Oklzb2xhdGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lk
KiBwYXJhbWV0ZXIpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbV9leGNlcHRpb247CiAg
ICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwCmlu
ZGV4IDQ2NGEzODFlYjU4Mjc1MDAyZjliNGJkMDljNzg3OTVkODk0MzMwNGYuLjMzYjkzNjZlODY1
MTIwY2YxODhkZDA0ZDJlYjkxNzZhMmFhMTJkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTQ3LDE2ICs0
NywxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgVjhBYnN0cmFjdEV2ZW50TGlz
dGVuZXI6OndlYWtFdmVudExpc3RlbmVyQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVl
Piwgdm9pZCogcGFyYW1ldGVyKQordm9pZCBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6d2Vha0V2
ZW50TGlzdGVuZXJDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiwgdm9pZCogcGFyYW1ldGVyKQogewogICAgIFY4QWJzdHJhY3RFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKj4ocGFy
YW1ldGVyKTsKICAgICBsaXN0ZW5lci0+bV9saXN0ZW5lci5jbGVhcigpOwogfQogCi1WOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcjo6VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIoYm9vbCBpc0F0dHJpYnV0
ZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCitWOEFic3RyYWN0RXZl
bnRMaXN0ZW5lcjo6VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIoYm9vbCBpc0F0dHJpYnV0ZSwgY29u
c3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogICAgIDogRXZlbnRMaXN0ZW5lcihKU0V2ZW50TGlzdGVuZXJUeXBlKQogICAgICwgbV9pc0F0
dHJpYnV0ZShpc0F0dHJpYnV0ZSkKICAgICAsIG1fd29ybGRDb250ZXh0KHdvcmxkQ29udGV4dCkK
KyAgICAsIG1faXNvbGF0ZShpc29sYXRlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
VGhyZWFkTG9jYWxJbnNwZWN0b3JDb3VudGVyczo6Y3VycmVudCgpLmluY3JlbWVudENvdW50ZXIo
VGhyZWFkTG9jYWxJbnNwZWN0b3JDb3VudGVyczo6SlNFdmVudExpc3RlbmVyQ291bnRlcik7CkBA
IC0xMDUsNyArMTA2LDcgQEAgdm9pZCBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXZlbnQKIHZvaWQgVjhBYnN0cmFj
dEV2ZW50TGlzdGVuZXI6OnNldExpc3RlbmVyT2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
bGlzdGVuZXIpCiB7CiAgICAgbV9saXN0ZW5lci5zZXQobGlzdGVuZXIpOwotICAgIG1fbGlzdGVu
ZXIuZ2V0KCkuTWFrZVdlYWsodGhpcywgJlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjp3ZWFrRXZl
bnRMaXN0ZW5lckNhbGxiYWNrKTsKKyAgICBtX2xpc3RlbmVyLmdldCgpLk1ha2VXZWFrKG1faXNv
bGF0ZSwgdGhpcywgJlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjp3ZWFrRXZlbnRMaXN0ZW5lckNh
bGxiYWNrKTsKIH0KIAogdm9pZCBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aW52b2tlRXZlbnRI
YW5kbGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV2ZW50KiBldmVudCwgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaAppbmRleCA2MWI3OTRmOTVlYmNlZWNm
OTNkZjBlZWI2ZjdjMGNhMzIwOGQzMDdjLi4xMjAxYjE4ODc3NGIyN2E5YmZiOGE2OThhYjgwM2E1
Njk2ODUxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJz
dHJhY3RFdmVudExpc3RlbmVyLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV93b3JsZENvbnRleHQ7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAg
VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIoYm9vbCBpc0F0dHJpYnV0ZSwgY29uc3QgV29ybGRDb250
ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpOworICAgICAgICBWOEFic3RyYWN0RXZlbnRMaXN0ZW5l
cihib29sIGlzQXR0cmlidXRlLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmLCB2ODo6SXNvbGF0
ZSopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopIHsgfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0UmVjZWl2ZXJPYmplY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBzdGF0aWMgdm9pZCB3ZWFrRXZlbnRMaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4
OjpWYWx1ZT4sIHZvaWQqIHBhcmFtZXRlcik7CisgICAgICAgIHN0YXRpYyB2b2lkIHdlYWtFdmVu
dExpc3RlbmVyQ2FsbGJhY2sodjg6Oklzb2xhdGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+
LCB2b2lkKiBwYXJhbWV0ZXIpOwogCiAgICAgICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIEV2ZW50
TGlzdGVuZXIgZnVuY3Rpb24uCiAgICAgICAgIHZpcnR1YWwgYm9vbCB2aXJ0dWFsaXNBdHRyaWJ1
dGUoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0cmlidXRlOyB9CkBAIC0xMzMsNiArMTMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNBdHRyaWJ1dGU7CiAKICAgICAg
ICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworICAgICAgICB2ODo6SXNvbGF0
ZSogbV9pc29sYXRlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDEyODFmNTk0
YjYxYzRmN2ZiNWFkODhhNGY3YTJkMjg4NWY2ZjMyNzUuLjg3MWMzMjhiMjUzYWE5MzJjZjEyMjhl
MjE5M2U0ZDAwYmY0ZTY4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhF
dmVudExpc3RlbmVyLmNwcApAQCAtNDEsNyArNDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBWOEV2ZW50TGlzdGVuZXI6OlY4RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4g
bGlzdGVuZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29y
bGRDb250ZXh0KQotICAgIDogVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIoaXNBdHRyaWJ1dGUsIHdv
cmxkQ29udGV4dCkKKyAgICA6IFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKGlzQXR0cmlidXRlLCB3
b3JsZENvbnRleHQsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpIC8vIEZJWE1FOiBSZW1vdmUg
R2V0Q3VycmVudCgpLgogewogICAgIHNldExpc3RlbmVyT2JqZWN0KGxpc3RlbmVyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAK
aW5kZXggMDRkYTRkZTU2Yzg0MzBmZmFjNDBiODgzZjg0ZGNhN2Q2M2U3YjRhOC4uZmIwYzljMzVk
MjBhN2ZiMTMyNWRkZGU3NGQwNDZiMTM4ZDVmOTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVjhMYXp5RXZlbnRMaXN0ZW5lcjo6VjhMYXp5RXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFBhcmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5n
IHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgTm9kZSogbm9kZSwgY29u
c3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCi0gICAgOiBWOEFic3RyYWN0RXZl
bnRMaXN0ZW5lcih0cnVlLCB3b3JsZENvbnRleHQpCisgICAgOiBWOEFic3RyYWN0RXZlbnRMaXN0
ZW5lcih0cnVlLCB3b3JsZENvbnRleHQsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpIC8vIEZJ
WE1FIFJlbW92ZSBHZXRDdXJyZW50KCkKICAgICAsIG1fZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFt
ZSkKICAgICAsIG1fZXZlbnRQYXJhbWV0ZXJOYW1lKGV2ZW50UGFyYW1ldGVyTmFtZSkKICAgICAs
IG1fY29kZShjb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhN
dXRhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRp
b25DYWxsYmFjay5jcHAKaW5kZXggN2VkMzk2MWNhYjEzNThjMzEwYTM0OWJkOTUxZWMyYWE2ZmFl
NWQ0My4uMDI5YWVlOGUwYzBiYzI1ZWM2ZDcxMGM3MjBjZWFmZjg3NGVhZTVkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suY3BwCkBAIC0z
NSwxMyArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WOE11dGF0aW9uQ2FsbGJh
Y2s6OlY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG93
bmVyKQorVjhNdXRhdGlvbkNhbGxiYWNrOjpWOE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25lciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgOiBB
Y3RpdmVET01DYWxsYmFjayhjb250ZXh0KQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKICAg
ICAsIG1fd29ybGRDb250ZXh0KFVzZUN1cnJlbnRXb3JsZCkKIHsKICAgICBvd25lci0+U2V0SGlk
ZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmNhbGxiYWNrKCksIGNhbGxiYWNrKTsKLSAg
ICBtX2NhbGxiYWNrLmdldCgpLk1ha2VXZWFrKHRoaXMsICZWOE11dGF0aW9uQ2FsbGJhY2s6Ondl
YWtDYWxsYmFjayk7CisgICAgbV9jYWxsYmFjay5nZXQoKS5NYWtlV2Vhayhpc29sYXRlLCB0aGlz
LCAmVjhNdXRhdGlvbkNhbGxiYWNrOjp3ZWFrQ2FsbGJhY2spOwogfQogCiBib29sIFY4TXV0YXRp
b25DYWxsYmFjazo6aGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSogbXV0YXRpb25zLCBN
dXRhdGlvbk9ic2VydmVyKiBvYnNlcnZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhNdXRhdGlvbkNhbGxiYWNrLmgKaW5kZXggOGI1ZjNlMjk0NWJjYTU1ZWQ0YTZlOTllYzlm
YWNhYzAxYTVkYzJjNS4uNWEzNjY0Mjk4YTM2OGRmZDRmYWEzZjc0NmIzYjRhNTAyMTZlOTk2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmgK
QEAgLTM4LDIwICszOCwyMCBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFz
cyBWOE11dGF0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgTXV0YXRpb25DYWxsYmFjaywgcHVibGljIEFj
dGl2ZURPTUNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOE11dGF0
aW9uQ2FsbGJhY2s+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb3duZXIpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VjhNdXRhdGlvbkNhbGxiYWNrPiBjcmVhdGUodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG93bmVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uQ2FsbGJhY2sodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGNvbnRleHQsIG93bmVyKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVjhNdXRhdGlvbkNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QodmFsdWUpLCBjb250ZXh0LCBvd25lciwgaXNvbGF0ZSkpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChNdXRhdGlvblJlY29yZEFycmF5KiwgTXV0YXRp
b25PYnNlcnZlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogcHJp
dmF0ZToKLSAgICBWOE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOworICAgIFY4TXV0
YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKIAotICAgIHN0YXRp
YyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHdyYXBwZXIsIHZv
aWQqIHBhcmFtZXRlcikKKyAgICBzdGF0aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlciwgdm9pZCogcGFyYW1l
dGVyKQogICAgIHsKICAgICAgICAgVjhNdXRhdGlvbkNhbGxiYWNrKiBvYmplY3QgPSBzdGF0aWNf
Y2FzdDxWOE11dGF0aW9uQ2FsbGJhY2sqPihwYXJhbWV0ZXIpOwogICAgICAgICBvYmplY3QtPm1f
Y2FsbGJhY2suY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAKaW5kZXggMTA3NGRjNWIxMjI5N2Y5MDk4NWVjYzg0YjlhYzUwYWEzNzdmNjVlOS4uZDhlNTg0
NWRmY2MwMmFjOTBlZjhjZTkwYjQzZjk1NzZjZjE4NDVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTE3NSwxOSArMTc1LDI1IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghbV9tYXAuY29udGFpbnMoa2V5KSk7CiAgICAgICAgIG1fbWFw
LnNldChrZXksIHdyYXBwZXIpOwotICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKGtleSwgd2Vha0Nh
bGxiYWNrKTsKKyAgICAgICAgd3JhcHBlci5NYWtlV2VhayhtX2lzb2xhdGUsIGtleSwgd2Vha0Nh
bGxiYWNrKTsKICAgICB9CiAKLSAgICBzdGF0aWMgVjhOUFRlbXBsYXRlTWFwJiBzaGFyZWRJbnN0
YW5jZSgpCisgICAgc3RhdGljIFY4TlBUZW1wbGF0ZU1hcCYgc2hhcmVkSW5zdGFuY2Uodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiAgICAgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFY4TlBU
ZW1wbGF0ZU1hcCwgbWFwLCAoKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVjhOUFRl
bXBsYXRlTWFwLCBtYXAsIChpc29sYXRlKSk7CisgICAgICAgIEFTU0VSVChpc29sYXRlID09IG1h
cC5tX2lzb2xhdGUpOwogICAgICAgICByZXR1cm4gbWFwOwogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmpl
Y3QsIHZvaWQqIGNvbnRleHQpCisgICAgZXhwbGljaXQgVjhOUFRlbXBsYXRlTWFwKHY4OjpJc29s
YXRlKiBpc29sYXRlKQorICAgICAgICA6IG1faXNvbGF0ZShpc29sYXRlKQogICAgIHsKLSAgICAg
ICAgc2hhcmVkSW5zdGFuY2UoKS5kaXNwb3NlKHN0YXRpY19jYXN0PFByaXZhdGVJZGVudGlmaWVy
Kj4oY29udGV4dCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQq
IGNvbnRleHQpCisgICAgeworICAgICAgICBzaGFyZWRJbnN0YW5jZShpc29sYXRlKS5kaXNwb3Nl
KHN0YXRpY19jYXN0PFByaXZhdGVJZGVudGlmaWVyKj4oY29udGV4dCkpOwogICAgIH0KIAogICAg
IHZvaWQgZGlzcG9zZShQcml2YXRlSWRlbnRpZmllcioga2V5KQpAQCAtMjAwLDYgKzIwNiw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgTWFwVHlwZSBtX21hcDsKKyAgICB2ODo6SXNvbGF0ZSog
bV9pc29sYXRlOwogfTsKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEdl
dFByb3BlcnR5KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUElkZW50aWZpZXIgaWRlbnRp
Zmllciwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4ga2V5LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAg
LTIzNywxNCArMjQ0LDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RH
ZXRQcm9wZXJ0eSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlz
b2xhdGUpOwogCiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9IHN0YXRpY19jYXN0PFBy
aXZhdGVJZGVudGlmaWVyKj4oaWRlbnRpZmllcik7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gVjhOUFRlbXBsYXRlTWFwOjpz
aGFyZWRJbnN0YW5jZSgpLmdldChpZCk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gVjhOUFRlbXBsYXRlTWFwOjpzaGFyZWRJ
bnN0YW5jZShpc29sYXRlKS5nZXQoaWQpOwogICAgICAgICAvLyBDYWNoZSB0ZW1wbGF0ZXMgdXNp
bmcgaWRlbnRpZmllciBhcyB0aGUga2V5LgogICAgICAgICBpZiAoZnVuY3Rpb25UZW1wbGF0ZS5J
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyB0ZW1wbGF0ZS4KICAgICAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcCA9IHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoKTsKICAgICAgICAgICAgIHRlbXAtPlNldENhbGxIYW5kbGVyKG5wT2Jq
ZWN0TWV0aG9kSGFuZGxlciwga2V5KTsKICAgICAgICAgICAgIGZ1bmN0aW9uVGVtcGxhdGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh0ZW1wKTsKLSAgICAgICAg
ICAgIFY4TlBUZW1wbGF0ZU1hcDo6c2hhcmVkSW5zdGFuY2UoKS5zZXQoaWQsIGZ1bmN0aW9uVGVt
cGxhdGUpOworICAgICAgICAgICAgVjhOUFRlbXBsYXRlTWFwOjpzaGFyZWRJbnN0YW5jZShpc29s
YXRlKS5zZXQoaWQsIGZ1bmN0aW9uVGVtcGxhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
RnVuY3Rpb25UZW1wbGF0ZSBjYWNoZXMgZnVuY3Rpb24gZm9yIGVhY2ggY29udGV4dC4KQEAgLTM3
NiwxNSArMzgzLDE1IEBAIHY4OjpIYW5kbGU8djg6OkFycmF5PiBucE9iamVjdEluZGV4ZWRQcm9w
ZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYKICAgICByZXR1cm4gbnBPYmpl
Y3RQcm9wZXJ0eUVudW1lcmF0b3IoaW5mbywgZmFsc2UpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWFr
TlBPYmplY3RDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKik7CitzdGF0
aWMgdm9pZCB3ZWFrTlBPYmplY3RDYWxsYmFjayh2ODo6SXNvbGF0ZSosIHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4sIHZvaWQqKTsKIAogc3RhdGljIERPTVdyYXBwZXJNYXA8TlBPYmplY3Q+JiBz
dGF0aWNOUE9iamVjdE1hcCgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01XcmFwcGVy
TWFwPE5QT2JqZWN0PiwgbnBPYmplY3RNYXAsICgmd2Vha05QT2JqZWN0Q2FsbGJhY2spKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdyYXBwZXJNYXA8TlBPYmplY3Q+LCBucE9iamVjdE1h
cCwgKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksICZ3ZWFrTlBPYmplY3RDYWxsYmFjaykpOwog
ICAgIHJldHVybiBucE9iamVjdE1hcDsKIH0KIAotc3RhdGljIHZvaWQgd2Vha05QT2JqZWN0Q2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCopCitzdGF0aWMgdm9p
ZCB3ZWFrTlBPYmplY3RDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3Rl
bnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCopCiB7CiAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVj
dCgpKTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VmFsdWVDYWNoZS5jcHAKaW5kZXggY2RkZGIxOTgxOGVlMDUwZWJmZDg2ZDY1MWRiZDMz
ZGRiYmE1N2U5Yi4uZTQ5NWE0N2I1ODE3ZTJmMmY0MTQ3N2Y0MDI3NzliODE1MzBjNjE5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwCkBAIC01OCw3ICs1
OCw3IEBAIHN0YXRpYyB2ODo6TG9jYWw8djg6OlN0cmluZz4gbWFrZUV4dGVybmFsU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBuZXdTdHJpbmc7CiB9CiAKLXN0YXRpYyB2
b2lkIGNhY2hlZFN0cmluZ0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBl
ciwgdm9pZCogcGFyYW1ldGVyKQorc3RhdGljIHZvaWQgY2FjaGVkU3RyaW5nQ2FsbGJhY2sodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlciwgdm9p
ZCogcGFyYW1ldGVyKQogewogICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzdGF0aWNfY2Fz
dDxTdHJpbmdJbXBsKj4ocGFyYW1ldGVyKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPnN0cmluZ0NhY2hlKCktPnJlbW92ZShzdHJpbmdJbXBsKTsKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IFN0cmluZ0NhY2hlOjp2OEV4dGVybmFsU3RyaW5nU2xv
dyhTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLAogCiAgICAgc3RyaW5nSW1wbC0+cmVmKCk7CiAgICAg
d3JhcHBlci5NYXJrSW5kZXBlbmRlbnQoKTsKLSAgICB3cmFwcGVyLk1ha2VXZWFrKHN0cmluZ0lt
cGwsIGNhY2hlZFN0cmluZ0NhbGxiYWNrKTsKKyAgICB3cmFwcGVyLk1ha2VXZWFrKGlzb2xhdGUs
IHN0cmluZ0ltcGwsIGNhY2hlZFN0cmluZ0NhbGxiYWNrKTsKICAgICBtX3N0cmluZ0NhY2hlLnNl
dChzdHJpbmdJbXBsLCAqd3JhcHBlcik7CiAKICAgICBtX2xhc3RTdHJpbmdJbXBsID0gc3RyaW5n
SW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDQ1ZmE4NjI4OTA0ZDFkYjc0OWU4
YWEyOWFlMmZmY2NmYmE3YjBkMjQuLjFjMTg5MTg1MjkyM2VkNzM2YzhjNTI3MWFiMzkxNjBkNzdj
YjAzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtNDUsNyArNDUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIFdlYWtSZWZlcmVuY2VDYWxsYmFjayh2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKQorc3RhdGlj
IHZvaWQgV2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVy
c2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKQogewogICAgIEluamVj
dGVkU2NyaXB0SG9zdCogbmF0aXZlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRTY3JpcHRI
b3N0Kj4ocGFyYW1ldGVyKTsKICAgICBuYXRpdmVPYmplY3QtPmRlcmVmKCk7CkBAIC03MCw3ICs3
MCw3IEBAIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlSW5qZWN0ZWRTY3JpcHRI
b3N0VjhXcmFwcGVyKEluamVjdGVkU2NyaXB0SG9zCiAgICAgLy8gSW5zcGVjdG9yQmFja2VuZCB3
aGVuIHRoZSB3cmFwcGVyIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgogICAgIGhvc3QtPnJlZigpOwog
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdlYWtIYW5kbGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKTsKLSAgICB3ZWFrSGFuZGxlLk1ha2VXZWFrKGhv
c3QsICZXZWFrUmVmZXJlbmNlQ2FsbGJhY2spOworICAgIHdlYWtIYW5kbGUuTWFrZVdlYWsoaXNv
bGF0ZSwgaG9zdCwgJldlYWtSZWZlcmVuY2VDYWxsYmFjayk7CiAgICAgcmV0dXJuIGluc3RhbmNl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IDQxZThjNjNkNDg3NzljNGM0
NjMwNGM1ODkyM2M2YjkyNDc2YmQxZWIuLjk3N2JjYjM4ZjZkMDNjMjU2YzQwMjQwNmNiYzhhMWRh
MDRmZmU1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgUmVmUHRyPE11dGF0aW9uQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gVjhNdXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUoYXJnLCBjb250ZXh0
LCB3cmFwcGVyKTsKKyAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBWOE11
dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRleHQsIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICBSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2ZXIgPSBNdXRhdGlv
bk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFzZSgpKTsKIAogICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>