<?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>160558</bug_id>
          
          <creation_ts>2016-08-04 12:03:44 -0700</creation_ts>
          <short_desc>Clean up the deprecated Objective-C binding methods</short_desc>
          <delta_ts>2016-08-04 12:14:52 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1217514</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-04 12:03:44 -0700</bug_when>
    <thetext>Clean up the deprecated Objective-C binding methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217516</commentid>
    <comment_count>1</comment_count>
      <attachid>285343</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-04 12:04:56 -0700</bug_when>
    <thetext>Created attachment 285343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217518</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-04 12:14:52 -0700</bug_when>
    <thetext>Committed r204129: &lt;http://trac.webkit.org/changeset/204129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285343</attachid>
            <date>2016-08-04 12:04:56 -0700</date>
            <delta_ts>2016-08-04 12:08:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160558-20160804120331.patch</filename>
            <type>text/plain</type>
            <size>38536</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVhZDg5NzdmZWQ5NzVh
OWUzMWYyMzY1YTEyOGNlOTE0YjViOGFiNS4uODBhZWM4NTZkMmNlZWI1NTI4NDY2NjA2OGY4NDJh
YTg3Y2JhNzJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE2LTA4LTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdGhl
IGRlcHJlY2F0ZWQgT2JqZWN0aXZlLUMgYmluZGluZyBtZXRob2RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1NTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXQgdGhlIGRlcHJlY2F0ZWQgbWV0aG9k
cyBpbiB0aGVpciByZXNwZWN0aXZlIGNhdGVnb3J5IEBpbXBsZW1lbnRhdGlvbiwgYW5kCisgICAg
ICAgIHNpbXBseSBoYXZlIHRoZW0gY2FsbCB0aGVpciBub24tZGVwcmVjYXRlZCBjb3VudGVycGFy
dHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNTU01lZGlhUnVsZS5tbToKKyAgICAg
ICAgKC1bRE9NQ1NTTWVkaWFSdWxlIGRlbGV0ZVJ1bGU6XSk6CisgICAgICAgICgtW0RPTUNTU01l
ZGlhUnVsZSBpbnNlcnRSdWxlOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNTU1By
aW1pdGl2ZVZhbHVlLm1tOgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBzZXRGbG9h
dFZhbHVlOjpdKToKKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0aXZlVmFsdWUgc2V0U3RyaW5nVmFs
dWU6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5t
bToKKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBzZXRQcm9wZXJ0eTo6Ol0pOgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTU3R5bGVTaGVldC5tbToKKyAgICAgICAgKC1b
RE9NQ1NTU3R5bGVTaGVldCBpbnNlcnRSdWxlOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTUNoYXJhY3RlckRhdGEubW06CisgICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgZGVsZXRl
RGF0YTpsZW5ndGg6XSk6CisgICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgcmVwbGFjZURhdGE6
bGVuZ3RoOmRhdGE6XSk6CisgICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgcmVtb3ZlXSk6Cisg
ICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgc3Vic3RyaW5nRGF0YTo6XSk6CisgICAgICAgICgt
W0RPTUNoYXJhY3RlckRhdGEgaW5zZXJ0RGF0YTo6XSk6CisgICAgICAgICgtW0RPTUNoYXJhY3Rl
ckRhdGEgZGVsZXRlRGF0YTo6XSk6CisgICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgcmVwbGFj
ZURhdGE6OjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Ol0pOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBpbXBvcnROb2RlOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1l
bnQgY3JlYXRlRWxlbWVudE5TOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlQXR0
cmlidXRlTlM6Ol0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBnZXRFbGVtZW50c0J5VGFnTmFt
ZU5TOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlTm9kZUl0ZXJhdG9yOjo6Ol0p
OgorICAgICAgICAoLVtET01Eb2N1bWVudCBjcmVhdGVUcmVlV2Fsa2VyOjo6Ol0pOgorICAgICAg
ICAoLVtET01Eb2N1bWVudCBnZXRPdmVycmlkZVN0eWxlOjpdKToKKyAgICAgICAgKC1bRE9NRG9j
dW1lbnQgY3JlYXRlRXhwcmVzc2lvbjo6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGV2YWx1
YXRlOjo6OjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgZ2V0Q29tcHV0ZWRTdHlsZTo6XSk6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FbGVtZW50Lm1tOgorICAgICAgICAoLVtET01F
bGVtZW50IHNldEF0dHJpYnV0ZTo6XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgZ2V0QXR0cmli
dXRlTlM6Ol0pOgorICAgICAgICAoLVtET01FbGVtZW50IHNldEF0dHJpYnV0ZU5TOjo6XSk6Cisg
ICAgICAgICgtW0RPTUVsZW1lbnQgcmVtb3ZlQXR0cmlidXRlTlM6Ol0pOgorICAgICAgICAoLVtE
T01FbGVtZW50IGdldEVsZW1lbnRzQnlUYWdOYW1lTlM6Ol0pOgorICAgICAgICAoLVtET01FbGVt
ZW50IGdldEF0dHJpYnV0ZU5vZGVOUzo6XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgaGFzQXR0
cmlidXRlTlM6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnQubW06CisgICAg
ICAgICgtW0RPTUV2ZW50IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbl0pOgorICAgICAgICAoLVtE
T01FdmVudCBpbml0RXZlbnQ6OjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUxT
ZWxlY3RFbGVtZW50Lm1tOgorICAgICAgICAoLVtET01IVE1MU2VsZWN0RWxlbWVudCByZW1vdmU6
XSk6CisgICAgICAgICgtW0RPTUhUTUxTZWxlY3RFbGVtZW50IGFkZDo6XSk6CisgICAgICAgICog
YmluZGluZ3Mvb2JqYy9ET01Nb3VzZUV2ZW50Lm1tOgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50
IGluaXRNb3VzZUV2ZW50Ojo6Ojo6Ojo6Ojo6Ojo6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9ET01NdXRhdGlvbkV2ZW50Lm1tOgorICAgICAgICAoLVtET01NdXRhdGlvbkV2ZW50IGluaXRN
dXRhdGlvbkV2ZW50Ojo6Ojo6OjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTU5hbWVk
Tm9kZU1hcC5tbToKKyAgICAgICAgKC1bRE9NTmFtZWROb2RlTWFwIGdldE5hbWVkSXRlbU5TOjpd
KToKKyAgICAgICAgKC1bRE9NTmFtZWROb2RlTWFwIHJlbW92ZU5hbWVkSXRlbU5TOjpdKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTU5vZGUubW06CisgICAgICAgICgtW0RPTU5vZGUgaW5z
ZXJ0QmVmb3JlOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSByZXBsYWNlQ2hpbGQ6Ol0pOgorICAg
ICAgICAoLVtET01Ob2RlIGlzU3VwcG9ydGVkOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydDo6XSk6CisgICAgICAg
ICgtW0RPTVJhbmdlIHNldEVuZDo6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIGNvbXBhcmVCb3Vu
ZGFyeVBvaW50czo6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUV2ZW50Lm1tOgor
ICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50Ojo6OjpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVhQYXRoRXhwcmVzc2lvbi5tbToKKyAgICAgICAgKC1bRE9NWFBhdGhFeHBy
ZXNzaW9uIGV2YWx1YXRlOjo6XSk6CisKIDIwMTYtMDgtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBFbGVtZW50Lmluc2VydEFkamFjZW50KigpIHNob3VsZCB0
aHJvdyBhIFNZTlRBWF9FUlIgZm9yIGludmFsaWQgIndoZXJlIiBwYXJhbWV0ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTTWVkaWFSdWxlLm1tIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NNZWRpYVJ1bGUubW0KaW5kZXggYjkyMjhh
NTkyYTY2NjlkNWU4NjNhZDdkNDZmOGExMjA4MTVhODI3Ny4uODVlMGMxM2ExN2FjZDQwZGM5Yjk1
YTIxMGZjODEyOWE4OTk1MzAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01DU1NNZWRpYVJ1bGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTY1LDIxICs2NSwyMSBAQAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLS0gKHVuc2lnbmVkKWluc2VydFJ1bGU6KE5TU3RyaW5nICopcnVsZSA6KHVuc2ln
bmVkKWluZGV4CistICh2b2lkKWRlbGV0ZVJ1bGU6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IElNUEwtPmluc2VydFJ1bGUocnVs
ZSwgaW5kZXgsIGVjKTsKKyAgICBJTVBMLT5kZWxldGVSdWxlKGluZGV4LCBlYyk7CiAgICAgV2Vi
Q29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tICh2
b2lkKWRlbGV0ZVJ1bGU6KHVuc2lnbmVkKWluZGV4CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBE
T01DU1NNZWRpYVJ1bGUgKERPTUNTU01lZGlhUnVsZURlcHJlY2F0ZWQpCisKKy0gKHVuc2lnbmVk
KWluc2VydFJ1bGU6KE5TU3RyaW5nICopcnVsZSA6KHVuc2lnbmVkKWluZGV4CiB7Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIElNUEwtPmRlbGV0ZVJ1bGUoaW5kZXgsIGVjKTsKLSAgICBXZWJD
b3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBbc2VsZiBpbnNlcnRSdWxlOnJ1
bGUgaW5kZXg6aW5kZXhdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQppbmRleCAzNWExZmY2MmE0NWFmZDMz
NDk2NDJjYjZkY2QzZDQyZDdkMTlhMTg1Li45OTM5NWI0NzE0MmY1YTk2NGYyNDVmZWE0OTFiNzhi
NTk4ODZlNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNT
U1ByaW1pdGl2ZVZhbHVlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Q1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTYwLDE0ICs2MCw2IEBACiAgICAgV2ViQ29yZTo6cmFp
c2VPbkRPTUVycm9yKGVjKTsKIH0KIAotLSAodm9pZClzZXRGbG9hdFZhbHVlOih1bnNpZ25lZCBz
aG9ydCl1bml0VHlwZSA6KGZsb2F0KWZsb2F0VmFsdWUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgSU1QTC0+c2V0RmxvYXRWYWx1ZSh1bml0VHlwZSwgZmxvYXRWYWx1ZSwgZWMpOwotICAg
IFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KIC0gKGZsb2F0KWdldEZsb2F0VmFs
dWU6KHVuc2lnbmVkIHNob3J0KXVuaXRUeXBlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwpAQCAtODUsMTQgKzc3LDYgQEAKICAgICBXZWJDb3JlOjpyYWlzZU9u
RE9NRXJyb3IoZWMpOwogfQogCi0tICh2b2lkKXNldFN0cmluZ1ZhbHVlOih1bnNpZ25lZCBzaG9y
dClzdHJpbmdUeXBlIDooTlNTdHJpbmcgKilzdHJpbmdWYWx1ZQotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBJTVBMLT5zZXRTdHJpbmdWYWx1ZShzdHJpbmdUeXBlLCBzdHJpbmdWYWx1ZSwg
ZWMpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KIC0gKE5TU3RyaW5n
ICopZ2V0U3RyaW5nVmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CkBAIC0xMzEsNiArMTE1LDIwIEBACiAKIEBlbmQKIAorQGltcGxlbWVudGF0aW9uIERP
TUNTU1ByaW1pdGl2ZVZhbHVlIChET01DU1NQcmltaXRpdmVWYWx1ZURlcHJlY2F0ZWQpCisKKy0g
KHZvaWQpc2V0RmxvYXRWYWx1ZToodW5zaWduZWQgc2hvcnQpdW5pdFR5cGUgOihmbG9hdClmbG9h
dFZhbHVlCit7CisgICAgW3NlbGYgc2V0RmxvYXRWYWx1ZTp1bml0VHlwZSBmbG9hdFZhbHVlOmZs
b2F0VmFsdWVdOworfQorCistICh2b2lkKXNldFN0cmluZ1ZhbHVlOih1bnNpZ25lZCBzaG9ydClz
dHJpbmdUeXBlIDooTlNTdHJpbmcgKilzdHJpbmdWYWx1ZQoreworICAgIFtzZWxmIHNldFN0cmlu
Z1ZhbHVlOnN0cmluZ1R5cGUgc3RyaW5nVmFsdWU6c3RyaW5nVmFsdWVdOworfQorCitAZW5kCisK
IERPTUNTU1ByaW1pdGl2ZVZhbHVlICpraXQoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlKQogewogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1N0eWxlRGVjbGFyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1N0eWxlRGVjbGFyYXRp
b24ubW0KaW5kZXggYTZmZmMyMzk5MGNlOWFiZmRiYjAwYWY1MDQ3NjE3ZThkZTlhMDdkZS4uNWVm
NGRjZjNmNTRkNmNmZThhZDE4ZmQ1ZGE5YmRlM2I1ZTYxZGJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbQpAQCAt
MTE3LDE0ICsxMTcsNiBAQAogICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAK
LS0gKHZvaWQpc2V0UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lIDooTlNTdHJpbmcg
Kil2YWx1ZSA6KE5TU3RyaW5nICopcHJpb3JpdHkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgSU1QTC0+c2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgcHJpb3JpdHksIGVjKTsK
LSAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCiAtIChOU1N0cmluZyAqKWl0
ZW06KHVuc2lnbmVkKWluZGV4CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwpAQCAtMTQ1LDYgKzEzNywxNSBAQAogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBE
T01DU1NTdHlsZURlY2xhcmF0aW9uIChET01DU1NTdHlsZURlY2xhcmF0aW9uRGVwcmVjYXRlZCkK
KworLSAodm9pZClzZXRQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUgOihOU1N0cmlu
ZyAqKXZhbHVlIDooTlNTdHJpbmcgKilwcmlvcml0eQoreworICAgIFtzZWxmIHNldFByb3BlcnR5
OnByb3BlcnR5TmFtZSB2YWx1ZTp2YWx1ZSBwcmlvcml0eTpwcmlvcml0eV07Cit9CisKK0BlbmQK
KwogV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogY29yZShET01DU1NTdHlsZURlY2xhcmF0
aW9uICp3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1N0eWxlU2hlZXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1N0eWxlU2hlZXQubW0KaW5k
ZXggMDY1YzQzYTcyN2E4ZDUzYjA0ODQ3MzQxMjdjZWQ2ZDY1NmZjMzk0Mi4uN2MyOTY0MDlmNDE3
YzAwZTM2YzFlYjQxZmU2MDUzYzExMTM2NjQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01DU1NTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtNzIsMTUgKzcyLDYgQEAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi0tICh1bnNpZ25lZClpbnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1
bGUgOih1bnNpZ25lZClpbmRleAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB1bnNpZ25l
ZCByZXN1bHQgPSBJTVBMLT5pbnNlcnRSdWxlKHJ1bGUsIGluZGV4LCBlYyk7Ci0gICAgV2ViQ29y
ZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAtICh2b2lk
KWRlbGV0ZVJ1bGU6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwpAQCAtMTA4LDYgKzk5LDE1IEBACiAKIEBlbmQKIAorQGltcGxlbWVu
dGF0aW9uIERPTUNTU1N0eWxlU2hlZXQgKERPTUNTU1N0eWxlU2hlZXREZXByZWNhdGVkKQorCist
ICh1bnNpZ25lZClpbnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1bGUgOih1bnNpZ25lZClpbmRleAor
eworICAgIHJldHVybiBbc2VsZiBpbnNlcnRSdWxlOnJ1bGUgaW5kZXg6aW5kZXhdOworfQorCitA
ZW5kCisKIERPTUNTU1N0eWxlU2hlZXQgKmtpdChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0KiB2YWx1
ZSkKIHsKICAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCmluZGV4IGQw
YTNjNmYzOGM2NDM4MmVmYzQ5NGI5MGNmYmZhNTRjMDk3MjU5YWUuLmY2ZmU5NjI2Nzg4ZWJmNjk4
Y2UxMTc3ZGE1OTBmMzU4ZTE2NjJlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUNoYXJhY3RlckRhdGEubW0KQEAgLTgwLDE1ICs4MCw2IEBACiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotLSAoTlNTdHJpbmcgKilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZz
ZXQgOih1bnNpZ25lZClpbkxlbmd0aAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0
cmluZyAqcmVzdWx0ID0gSU1QTC0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGluTGVuZ3RoLCBlYyk7
Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCiAtICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopaW5EYXRhCiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtMTAzLDUyICs5NCw1MiBAQAogICAg
IFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKLS0gKHZvaWQpaW5zZXJ0RGF0YToo
dW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilpbkRhdGEKKy0gKHZvaWQpZGVsZXRlRGF0YToo
dW5zaWduZWQpb2Zmc2V0IGxlbmd0aDoodW5zaWduZWQpaW5MZW5ndGgKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgSU1QTC0+aW5zZXJ0RGF0YShvZmZzZXQsIGluRGF0YSwgZWMpOworICAg
IElNUEwtPmRlbGV0ZURhdGEob2Zmc2V0LCBpbkxlbmd0aCwgZWMpOwogICAgIFdlYkNvcmU6OnJh
aXNlT25ET01FcnJvcihlYyk7CiB9CiAKLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zm
c2V0IGxlbmd0aDoodW5zaWduZWQpaW5MZW5ndGgKKy0gKHZvaWQpcmVwbGFjZURhdGE6KHVuc2ln
bmVkKW9mZnNldCBsZW5ndGg6KHVuc2lnbmVkKWluTGVuZ3RoIGRhdGE6KE5TU3RyaW5nICopaW5E
YXRhCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPmRlbGV0ZURhdGEob2Zmc2V0
LCBpbkxlbmd0aCwgZWMpOworICAgIElNUEwtPnJlcGxhY2VEYXRhKG9mZnNldCwgaW5MZW5ndGgs
IGluRGF0YSwgZWMpOwogICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKLS0g
KHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpaW5MZW5ndGgKKy0g
KHZvaWQpcmVtb3ZlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPmRlbGV0ZURh
dGEob2Zmc2V0LCBpbkxlbmd0aCwgZWMpOworICAgIElNUEwtPnJlbW92ZShlYyk7CiAgICAgV2Vi
Q29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAotLSAodm9pZClyZXBsYWNlRGF0YToodW5z
aWduZWQpb2Zmc2V0IGxlbmd0aDoodW5zaWduZWQpaW5MZW5ndGggZGF0YTooTlNTdHJpbmcgKilp
bkRhdGEKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUNoYXJhY3RlckRhdGEgKERPTUNoYXJh
Y3RlckRhdGFEZXByZWNhdGVkKQorCistIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2ln
bmVkKW9mZnNldCA6KHVuc2lnbmVkKWluTGVuZ3RoCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIElNUEwtPnJlcGxhY2VEYXRhKG9mZnNldCwgaW5MZW5ndGgsIGluRGF0YSwgZWMpOwotICAg
IFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIFtzZWxmIHN1YnN0cmlu
Z0RhdGE6b2Zmc2V0IGxlbmd0aDppbkxlbmd0aF07CiB9CiAKLS0gKHZvaWQpcmVwbGFjZURhdGE6
KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWluTGVuZ3RoIDooTlNTdHJpbmcgKilpbkRhdGEK
Ky0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilpbkRhdGEK
IHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+cmVwbGFjZURhdGEob2Zmc2V0LCBp
bkxlbmd0aCwgaW5EYXRhLCBlYyk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsK
KyAgICBbc2VsZiBpbnNlcnREYXRhOm9mZnNldCBkYXRhOmluRGF0YV07CiB9CiAKLS0gKHZvaWQp
cmVtb3ZlCistICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWlu
TGVuZ3RoCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnJlbW92ZShlYyk7Ci0g
ICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICBbc2VsZiBkZWxldGVEYXRhOm9m
ZnNldCBsZW5ndGg6aW5MZW5ndGhdOworfQorCistICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25l
ZClvZmZzZXQgOih1bnNpZ25lZClpbkxlbmd0aCA6KE5TU3RyaW5nICopaW5EYXRhCit7CisgICAg
W3NlbGYgcmVwbGFjZURhdGE6b2Zmc2V0IGxlbmd0aDppbkxlbmd0aCBkYXRhOmluRGF0YV07CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9j
dW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50Lm1tCmlu
ZGV4IGM3NmIxMmYzN2ViMGViMTZmZTBhODAyMDc5MzE2YWE0MTQwZTk4MzQuLmQxZTkyNDJhZDIy
MWQ4M2U0Yzk2NzMzOWU4ZWRmYjc1MGYxM2Y0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01Eb2N1bWVudC5tbQpAQCAtNTAzLDE1ICs1MDMsNiBAQAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3Np
bmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQg
PSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdl
dCwgZGF0YSwgZWMpKSk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCiAtIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBA
IC01NDcsMTcgKzUzOCw2IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLSAoRE9NTm9kZSAq
KWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFpbXBvcnRlZE5v
ZGUpCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPmltcG9ydE5vZGUoKmNvcmUoaW1wb3J0ZWROb2RlKSwgZGVlcCwgZWMp
KSk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCiAtIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSBxdWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC01NjcsMTUgKzU0Nyw2IEBA
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnRO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKLXsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRWxlbWVudCAqcmVzdWx0ID0ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUs
IGVjKSkpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQogLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSBxdWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC01ODUsMjcgKzU1Niwx
MiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFt
ZSwgZWMpKSk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCiAtIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZTooTlNTdHJpbmcgKilsb2NhbE5hbWUKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgcmV0dXJuIGtp
dChXVEY6OmdldFB0cihJTVBMLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TRm9yT2JqQyhuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSkpKTsKIH0KIAotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5
VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1l
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVy
biBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOU0Zvck9iakMobmFt
ZXNwYWNlVVJJLCBsb2NhbE5hbWUpKSk7Ci19Ci0KIC0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERP
TU5vZGUgKilzb3VyY2UKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CkBAIC02NDMsMTcgKzU5OSw2IEBACiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT5jcmVhdGVOb2RlSXRlcmF0b3IoKmNvcmUocm9vdCksIHdoYXRUb1Nob3csIFdURjo6Z2V0UHRy
KG5hdGl2ZU5vZGVGaWx0ZXIpLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKSkpOwogfQogCi0tIChE
T01Ob2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKilyb290IDoodW5z
aWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFu
ZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgaWYgKCFyb290KQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4
Y2VwdGlvbigpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlRmlsdGVyPiBuYXRpdmVOb2RlRmls
dGVyOwotICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIG5hdGl2ZU5vZGVGaWx0ZXIgPSBXZWJDb3Jl
OjpOYXRpdmVOb2RlRmlsdGVyOjpjcmVhdGUoV2ViQ29yZTo6T2JqQ05vZGVGaWx0ZXJDb25kaXRp
b246OmNyZWF0ZShmaWx0ZXIpKTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNy
ZWF0ZU5vZGVJdGVyYXRvcigqY29yZShyb290KSwgd2hhdFRvU2hvdywgV1RGOjpnZXRQdHIobmF0
aXZlTm9kZUZpbHRlciksIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpKSk7Ci19Ci0KIC0gKERPTVRy
ZWVXYWxrZXIgKiljcmVhdGVUcmVlV2Fsa2VyOihET01Ob2RlICopcm9vdCB3aGF0VG9TaG93Oih1
bnNpZ25lZCl3aGF0VG9TaG93IGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciBleHBh
bmRFbnRpdHlSZWZlcmVuY2VzOihCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC02NjUsMjkgKzYxMCwxMiBA
QAogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlVHJlZVdhbGtlcigqY29y
ZShyb290KSwgd2hhdFRvU2hvdywgV1RGOjpnZXRQdHIobmF0aXZlTm9kZUZpbHRlciksIGV4cGFu
ZEVudGl0eVJlZmVyZW5jZXMpKSk7CiB9CiAKLS0gKERPTVRyZWVXYWxrZXIgKiljcmVhdGVUcmVl
V2Fsa2VyOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9k
ZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlmICghcm9vdCkKLSAgICAg
ICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6Tm9kZUZpbHRlcj4gbmF0aXZlTm9kZUZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQotICAgICAg
ICBuYXRpdmVOb2RlRmlsdGVyID0gV2ViQ29yZTo6TmF0aXZlTm9kZUZpbHRlcjo6Y3JlYXRlKFdl
YkNvcmU6Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjpjcmVhdGUoZmlsdGVyKSk7Ci0gICAgcmV0
dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVUcmVlV2Fsa2VyKCpjb3JlKHJvb3QpLCB3
aGF0VG9TaG93LCBXVEY6OmdldFB0cihuYXRpdmVOb2RlRmlsdGVyKSwgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcykpKTsKLX0KLQogLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldE92ZXJyaWRl
U3R5bGU6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICopcHNl
dWRvRWxlbWVudAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
ICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldE92ZXJyaWRlU3R5bGUoY29yZShl
bGVtZW50KSwgcHNldWRvRWxlbWVudCkpKTsKIH0KIAotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
biAqKWdldE92ZXJyaWRlU3R5bGU6KERPTUVsZW1lbnQgKillbGVtZW50IDooTlNTdHJpbmcgKilw
c2V1ZG9FbGVtZW50Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0T3ZlcnJpZGVTdHlsZShjb3Jl
KGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwotfQotCiAtIChET01YUGF0aEV4cHJlc3Npb24g
KiljcmVhdGVFeHByZXNzaW9uOihOU1N0cmluZyAqKWV4cHJlc3Npb24gcmVzb2x2ZXI6KGlkIDxE
T01YUGF0aE5TUmVzb2x2ZXI+KXJlc29sdmVyCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwpAQCAtNzA3LDI1ICs2MzUsNiBAQAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLS0gKERPTVhQYXRoRXhwcmVzc2lvbiAqKWNyZWF0ZUV4cHJlc3Npb246KE5TU3RyaW5n
ICopZXhwcmVzc2lvbiA6KGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KXJlc29sdmVyCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlhQYXRo
TlNSZXNvbHZlciogbmF0aXZlUmVzb2x2ZXIgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpYUGF0
aE5TUmVzb2x2ZXI+IGN1c3RvbVJlc29sdmVyOwotICAgIGlmIChyZXNvbHZlcikgewotICAgICAg
ICBpZiAoW3Jlc29sdmVyIGlzTWVtYmVyT2ZDbGFzczpbRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVy
IGNsYXNzXV0pCi0gICAgICAgICAgICBuYXRpdmVSZXNvbHZlciA9IGNvcmUoc3RhdGljX2Nhc3Q8
RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyICo+KHJlc29sdmVyKSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgY3VzdG9tUmVzb2x2ZXIgPSBXZWJDb3JlOjpET01DdXN0b21YUGF0aE5TUmVz
b2x2ZXI6OmNyZWF0ZShyZXNvbHZlcik7Ci0gICAgICAgICAgICBuYXRpdmVSZXNvbHZlciA9IFdU
Rjo6Z2V0UHRyKGN1c3RvbVJlc29sdmVyKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01YUGF0aEV4cHJlc3Npb24gKnJlc3VsdCA9
IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24sIFdURjo6
Z2V0UHRyKG5hdGl2ZVJlc29sdmVyKSwgZWMpKSk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAtIChpZCA8RE9NWFBhdGhOU1Jlc29s
dmVyPiljcmVhdGVOU1Jlc29sdmVyOihET01Ob2RlICopbm9kZVJlc29sdmVyCiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNzUxLDI1ICs2NjAsNiBAQAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KE5T
U3RyaW5nICopZXhwcmVzc2lvbiA6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KGlkIDxET01YUGF0
aE5TUmVzb2x2ZXI+KXJlc29sdmVyIDoodW5zaWduZWQgc2hvcnQpdHlwZSA6KERPTVhQYXRoUmVz
dWx0ICopaW5SZXN1bHQKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBuYXRpdmVSZXNvbHZlciA9IDA7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVzb2x2ZXI7Ci0gICAg
aWYgKHJlc29sdmVyKSB7Ci0gICAgICAgIGlmIChbcmVzb2x2ZXIgaXNNZW1iZXJPZkNsYXNzOltE
T01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgIG5hdGl2ZVJlc29s
dmVyID0gY29yZShzdGF0aWNfY2FzdDxET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKj4ocmVzb2x2
ZXIpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjdXN0b21SZXNvbHZlciA9IFdlYkNv
cmU6OkRPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKHJlc29sdmVyKTsKLSAgICAgICAg
ICAgIG5hdGl2ZVJlc29sdmVyID0gV1RGOjpnZXRQdHIoY3VzdG9tUmVzb2x2ZXIpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVhQ
YXRoUmVzdWx0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+ZXZhbHVhdGUoZXhwcmVz
c2lvbiwgY29yZShjb250ZXh0Tm9kZSksIFdURjo6Z2V0UHRyKG5hdGl2ZVJlc29sdmVyKSwgdHlw
ZSwgY29yZShpblJlc3VsdCksIGVjKSkpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogLSAoQk9PTClleGVjQ29tbWFuZDooTlNTdHJp
bmcgKiljb21tYW5kIHVzZXJJbnRlcmZhY2U6KEJPT0wpdXNlckludGVyZmFjZSB2YWx1ZTooTlNT
dHJpbmcgKil2YWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKQEAgLTg1MywxNyArNzQzLDYgQEAKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5n
ZXRDb21wdXRlZFN0eWxlKCpjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwogfQogCi0t
IChET01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAq
KWVsZW1lbnQgOihOU1N0cmluZyAqKXBzZXVkb0VsZW1lbnQKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICBXZWJD
b3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyog
ZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOwotICAgIGlmICghZHYpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0Q29tcHV0ZWRTdHlsZSgqY29y
ZShlbGVtZW50KSwgcHNldWRvRWxlbWVudCkpKTsKLX0KLQogLSAoRE9NQ1NTUnVsZUxpc3QgKiln
ZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5T
U3RyaW5nICopcHNldWRvRWxlbWVudAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKQEAgLTk0Myw2ICs4MjIsNjUgQEAKIAogQGVuZAogCitAaW1wbGVtZW50YXRp
b24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RGVwcmVjYXRlZCkKKworLSAoRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRh
cmdldCA6KE5TU3RyaW5nICopZGF0YQoreworICAgIHJldHVybiBbc2VsZiBjcmVhdGVQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246dGFyZ2V0IGRhdGE6ZGF0YV07Cit9CisKKy0gKERPTU5vZGUgKilpbXBv
cnROb2RlOihET01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVwCit7CisgICAgcmV0dXJu
IFtzZWxmIGltcG9ydE5vZGU6aW1wb3J0ZWROb2RlIGRlZXA6ZGVlcF07Cit9CisKKy0gKERPTUVs
ZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilxdWFsaWZpZWROYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZUVsZW1lbnROUzpu
YW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZpZWROYW1lXTsKK30KKworLSAoRE9NQXR0
ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopcXVhbGlmaWVkTmFtZQoreworICAgIHJldHVybiBbc2VsZiBjcmVhdGVBdHRyaWJ1dGVOUzpu
YW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZpZWROYW1lXTsKK30KKworLSAoRE9NTm9k
ZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGdldEVsZW1lbnRzQnlU
YWdOYW1lTlM6bmFtZXNwYWNlVVJJIGxvY2FsTmFtZTpsb2NhbE5hbWVdOworfQorCistIChET01O
b2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKilyb290IDoodW5zaWdu
ZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFuZEVu
dGl0eVJlZmVyZW5jZXMKK3sKKyAgICByZXR1cm4gW3NlbGYgY3JlYXRlTm9kZUl0ZXJhdG9yOnJv
b3Qgd2hhdFRvU2hvdzp3aGF0VG9TaG93IGZpbHRlcjpmaWx0ZXIgZXhwYW5kRW50aXR5UmVmZXJl
bmNlczpleHBhbmRFbnRpdHlSZWZlcmVuY2VzXTsKK30KKworLSAoRE9NVHJlZVdhbGtlciAqKWNy
ZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKilyb290IDoodW5zaWduZWQpd2hhdFRvU2hvdyA6KGlk
IDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKK3sK
KyAgICByZXR1cm4gW3NlbGYgY3JlYXRlVHJlZVdhbGtlcjpyb290IHdoYXRUb1Nob3c6d2hhdFRv
U2hvdyBmaWx0ZXI6ZmlsdGVyIGV4cGFuZEVudGl0eVJlZmVyZW5jZXM6ZXhwYW5kRW50aXR5UmVm
ZXJlbmNlc107Cit9CisKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0
eWxlOihET01FbGVtZW50ICopZWxlbWVudCA6KE5TU3RyaW5nICopcHNldWRvRWxlbWVudAorewor
ICAgIHJldHVybiBbc2VsZiBnZXRPdmVycmlkZVN0eWxlOmVsZW1lbnQgcHNldWRvRWxlbWVudDpw
c2V1ZG9FbGVtZW50XTsKK30KKworLSAoRE9NWFBhdGhFeHByZXNzaW9uICopY3JlYXRlRXhwcmVz
c2lvbjooTlNTdHJpbmcgKilleHByZXNzaW9uIDooaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pcmVz
b2x2ZXIKK3sKKyAgICByZXR1cm4gW3NlbGYgY3JlYXRlRXhwcmVzc2lvbjpleHByZXNzaW9uIHJl
c29sdmVyOnJlc29sdmVyXTsKK30KKworLSAoRE9NWFBhdGhSZXN1bHQgKilldmFsdWF0ZTooTlNT
dHJpbmcgKilleHByZXNzaW9uIDooRE9NTm9kZSAqKWNvbnRleHROb2RlIDooaWQgPERPTVhQYXRo
TlNSZXNvbHZlcj4pcmVzb2x2ZXIgOih1bnNpZ25lZCBzaG9ydCl0eXBlIDooRE9NWFBhdGhSZXN1
bHQgKilpblJlc3VsdAoreworICAgIHJldHVybiBbc2VsZiBldmFsdWF0ZTpleHByZXNzaW9uIGNv
bnRleHROb2RlOmNvbnRleHROb2RlIHJlc29sdmVyOnJlc29sdmVyIHR5cGU6dHlwZSBpblJlc3Vs
dDppblJlc3VsdF07Cit9CisKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRDb21wdXRl
ZFN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCA6KE5TU3RyaW5nICopcHNldWRvRWxlbWVudAor
eworICAgIHJldHVybiBbc2VsZiBnZXRDb21wdXRlZFN0eWxlOmVsZW1lbnQgcHNldWRvRWxlbWVu
dDpwc2V1ZG9FbGVtZW50XTsKK30KKworQGVuZAorCiBXZWJDb3JlOjpEb2N1bWVudCogY29yZShE
T01Eb2N1bWVudCAqd3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnQqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbQppbmRleCA5NDYzYjM3ZjRjZjNh
ZGE3MTBlMjY1ODU2YWY2MjhhNDFjZTA1OTA0Li5kMmNhZmEwZDEyZjI5YzYyODE2YzQ3MjljNzNk
Y2Y0ZDBjYjUyNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbGVtZW50
Lm1tCkBAIC0yNzYsMTQgKzI3Niw2IEBACiAgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVj
KTsKIH0KIAotLSAodm9pZClzZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSA6KE5TU3RyaW5n
ICopdmFsdWUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0QXR0cmlidXRl
KG5hbWUsIHZhbHVlLCBlYyk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0K
LQogLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTMzMCwxMiArMzIyLDYgQEAKICAg
ICByZXR1cm4gSU1QTC0+Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwog
fQogCi0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSk7Ci19Ci0KIC0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSB2YWx1
ZTooTlNTdHJpbmcgKil2YWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKQEAgLTM0NCw1MCArMzMwLDI0IEBACiAgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVy
cm9yKGVjKTsKIH0KIAotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVlCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVS
SSwgcXVhbGlmaWVkTmFtZSwgdmFsdWUsIGVjKTsKLSAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCiAtICh2b2lkKXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSBsb2NhbE5hbWU6KE5TU3RyaW5nICopbG9jYWxOYW1lCiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIElNUEwtPnJlbW92ZUF0dHJpYnV0ZU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKIH0KIAotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5yZW1vdmVB
dHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KIC0gKERPTU5vZGVMaXN0
ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxO
YW1lOihOU1N0cmluZyAqKWxvY2FsTmFtZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEVsZW1l
bnRzQnlUYWdOYW1lTlNGb3JPYmpDKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSkpOwogfQogCi0t
IChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRF
bGVtZW50c0J5VGFnTmFtZU5TRm9yT2JqQyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpKTsKLX0K
LQogLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgbG9jYWxOYW1lOihOU1N0cmluZyAqKWxvY2FsTmFtZQogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpKTsKIH0KIAotLSAo
RE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEF0dHJpYnV0ZU5v
ZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpKTsKLX0KLQogLSAoRE9NQXR0ciAqKXNldEF0
dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHIKIHsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC00MTEsMTIgKzM3MSw2IEBACiAgICAgcmV0dXJuIElN
UEwtPmhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKIH0KIAotLSAoQk9P
TCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxv
Y2FsTmFtZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICByZXR1cm4gSU1QTC0+aGFzQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwot
fQotCiAtICh2b2lkKWZvY3VzCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwpAQCAtNTM3LDYgKzQ5MSw0NSBAQAogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBE
T01FbGVtZW50IChET01FbGVtZW50RGVwcmVjYXRlZCkKKworLSAodm9pZClzZXRBdHRyaWJ1dGU6
KE5TU3RyaW5nICopbmFtZSA6KE5TU3RyaW5nICopdmFsdWUKK3sKKyAgICBbc2VsZiBzZXRBdHRy
aWJ1dGU6bmFtZSB2YWx1ZTp2YWx1ZV07Cit9CisKKy0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRl
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sKKyAg
ICByZXR1cm4gW3NlbGYgZ2V0QXR0cmlidXRlTlM6bmFtZXNwYWNlVVJJIGxvY2FsTmFtZTpsb2Nh
bE5hbWVdOworfQorCistICh2b2lkKXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWUKK3sKKyAg
ICBbc2VsZiBzZXRBdHRyaWJ1dGVOUzpuYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZp
ZWROYW1lIHZhbHVlOnZhbHVlXTsKK30KKworLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQoreworICAgIFtzZWxm
IHJlbW92ZUF0dHJpYnV0ZU5TOm5hbWVzcGFjZVVSSSBsb2NhbE5hbWU6bG9jYWxOYW1lXTsKK30K
KworLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGdl
dEVsZW1lbnRzQnlUYWdOYW1lTlM6bmFtZXNwYWNlVVJJIGxvY2FsTmFtZTpsb2NhbE5hbWVdOwor
fQorCistIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGdldEF0dHJp
YnV0ZU5vZGVOUzpuYW1lc3BhY2VVUkkgbG9jYWxOYW1lOmxvY2FsTmFtZV07Cit9CisKKy0gKEJP
T0wpaGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWUKK3sKKyAgICByZXR1cm4gW3NlbGYgaGFzQXR0cmlidXRlTlM6bmFtZXNwYWNlVVJJ
IGxvY2FsTmFtZTpsb2NhbE5hbWVdOworfQorCitAZW5kCisKIFdlYkNvcmU6OkVsZW1lbnQqIGNv
cmUoRE9NRWxlbWVudCAqd3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6RWxlbWVudCo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnQubW0KaW5kZXggZjU0ZmVjOThmNWUzZjAx
NThjMmE2Zjg3OWQzN2I3OGNmOWM4NjY0Ny4uNTYyYzYzMjJiMmQxMjY4OTBiYzAxYTk4NjMxOTJj
MDk3YmZlN2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01F
dmVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50Lm1tCkBA
IC0xNjEsMTYgKzE2MSwxOSBAQAogICAgIElNUEwtPmluaXRFdmVudChldmVudFR5cGVBcmcsIGNh
bkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7CiB9CiAKLS0gKHZvaWQpaW5pdEV2ZW50OihOU1N0
cmluZyAqKWV2ZW50VHlwZUFyZyA6KEJPT0wpY2FuQnViYmxlQXJnIDooQk9PTCljYW5jZWxhYmxl
QXJnCistICh2b2lkKXN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbgogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0RXZlbnQoZXZlbnRUeXBl
QXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOworICAgIElNUEwtPnN0b3BJbW1lZGlh
dGVQcm9wYWdhdGlvbigpOwogfQogCi0tICh2b2lkKXN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NRXZlbnQgKERPTUV2ZW50RGVwcmVjYXRlZCkKKwor
LSAodm9pZClpbml0RXZlbnQ6KE5TU3RyaW5nICopZXZlbnRUeXBlQXJnIDooQk9PTCljYW5CdWJi
bGVBcmcgOihCT09MKWNhbmNlbGFibGVBcmcKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7Cisg
ICAgW3NlbGYgaW5pdEV2ZW50OmV2ZW50VHlwZUFyZyBjYW5CdWJibGVBcmc6Y2FuQnViYmxlQXJn
IGNhbmNlbGFibGVBcmc6Y2FuY2VsYWJsZUFyZ107CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tCmluZGV4IGJl
OTUxODU5MzE3MWJmY2U2NjFhNWMzZjMxYTVhODhhZmExODBiY2QuLjczYjYwNDg3YTI4OTgxYTQ5
YWNmODU4ZjBlODg1NzZlNWJjNGZjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQpAQCAtMTg4LDIwICsxODgsMTkgQEAK
ICAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCi0tICh2b2lkKWFkZDooRE9N
SFRNTEVsZW1lbnQgKillbGVtZW50IDooRE9NSFRNTEVsZW1lbnQgKiliZWZvcmUKKy0gKHZvaWQp
cmVtb3ZlOihpbnQpaW5kZXgKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJv
ckV4Y2VwdGlvbigpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElN
UEwtPmFkZCgqY29yZShlbGVtZW50KSwgY29yZShiZWZvcmUpLCBlYyk7Ci0gICAgV2ViQ29yZTo6
cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICBJTVBMLT5yZW1vdmVCeUluZGV4KGluZGV4KTsKIH0K
IAotLSAodm9pZClyZW1vdmU6KGludClpbmRleAorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9N
SFRNTFNlbGVjdEVsZW1lbnQgKERPTUhUTUxTZWxlY3RFbGVtZW50RGVwcmVjYXRlZCkKKworLSAo
dm9pZClhZGQ6KERPTUhUTUxFbGVtZW50ICopZWxlbWVudCA6KERPTUhUTUxFbGVtZW50ICopYmVm
b3JlCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElN
UEwtPnJlbW92ZUJ5SW5kZXgoaW5kZXgpOworICAgIFtzZWxmIGFkZDplbGVtZW50IGJlZm9yZTpi
ZWZvcmVdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTU1vdXNlRXZlbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU1v
dXNlRXZlbnQubW0KaW5kZXggODBlMDk4YmE2YmY0YTVmYWNkNDMwZDQyZTI2NWM3NjNjODUxZGY4
Yi4uNWRmZjM1MDdjZDk4ZGRkM2U0ZDkxZGVkMjI2Y2YyMmZkM2RiNmYxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Nb3VzZUV2ZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTW91c2VFdmVudC5tbQpAQCAtMTY1LDEyICsxNjUs
MTMgQEAKICAgICBJTVBMLT5pbml0TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIGNvcmUodmlldyksIGRldGFpbCwgaW5TY3JlZW5YLCBpblNjcmVlblksIGluQ2xpZW50WCwg
aW5DbGllbnRZLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGlu
QnV0dG9uLCBpblJlbGF0ZWRUYXJnZXROb2RlKTsKIH0KIAorQGVuZAorCitAaW1wbGVtZW50YXRp
b24gRE9NTW91c2VFdmVudCAoRE9NTW91c2VFdmVudERlcHJlY2F0ZWQpCisKIC0gKHZvaWQpaW5p
dE1vdXNlRXZlbnQ6KE5TU3RyaW5nICopdHlwZSA6KEJPT0wpY2FuQnViYmxlIDooQk9PTCljYW5j
ZWxhYmxlIDooRE9NQWJzdHJhY3RWaWV3ICopdmlldyA6KGludClkZXRhaWwgOihpbnQpaW5TY3Jl
ZW5YIDooaW50KWluU2NyZWVuWSA6KGludClpbkNsaWVudFggOihpbnQpaW5DbGllbnRZIDooQk9P
TClpbkN0cmxLZXkgOihCT09MKWluQWx0S2V5IDooQk9PTClpblNoaWZ0S2V5IDooQk9PTClpbk1l
dGFLZXkgOih1bnNpZ25lZCBzaG9ydClpbkJ1dHRvbiA6KGlkIDxET01FdmVudFRhcmdldD4paW5S
ZWxhdGVkVGFyZ2V0CiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIERPTU5vZGUqIGluUmVsYXRlZFRhcmdldE9iakMgPSBpblJlbGF0ZWRUYXJnZXQ7Ci0g
ICAgV2ViQ29yZTo6Tm9kZSogaW5SZWxhdGVkVGFyZ2V0Tm9kZSA9IGNvcmUoaW5SZWxhdGVkVGFy
Z2V0T2JqQyk7Ci0gICAgSU1QTC0+aW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBjb3JlKHZpZXcpLCBkZXRhaWwsIGluU2NyZWVuWCwgaW5TY3JlZW5ZLCBpbkNsaWVu
dFgsIGluQ2xpZW50WSwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5
LCBpbkJ1dHRvbiwgaW5SZWxhdGVkVGFyZ2V0Tm9kZSk7CisgICAgW3NlbGYgaW5pdE1vdXNlRXZl
bnQ6dHlwZSBjYW5CdWJibGU6Y2FuQnViYmxlIGNhbmNlbGFibGU6Y2FuY2VsYWJsZSB2aWV3OnZp
ZXcgZGV0YWlsOmRldGFpbCBzY3JlZW5YOmluU2NyZWVuWCBzY3JlZW5ZOmluU2NyZWVuWSBjbGll
bnRYOmluQ2xpZW50WCBjbGllbnRZOmluQ2xpZW50WSBjdHJsS2V5OmluQ3RybEtleSBhbHRLZXk6
aW5BbHRLZXkgc2hpZnRLZXk6aW5TaGlmdEtleSBtZXRhS2V5OmluTWV0YUtleSBidXR0b246aW5C
dXR0b24gcmVsYXRlZFRhcmdldDppblJlbGF0ZWRUYXJnZXRdOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU11dGF0aW9uRXZlbnQubW0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU11dGF0aW9uRXZlbnQubW0KaW5kZXggMDk2
OGU5YWFjMTI1NWUxMDkzMzdjZGI5MWM3YzliNGVlNjcwMGY0MC4uZDlmMGZhOTAxNDYwMjZjYmM1
NGY4MTNhYzc4Nzg1NWU4MTYyNmIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01NdXRhdGlvbkV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NTXV0YXRpb25FdmVudC5tbQpAQCAtNzcsMTAgKzc3LDEzIEBACiAgICAgSU1QTC0+
aW5pdE11dGF0aW9uRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKGluUmVs
YXRlZE5vZGUpLCBpblByZXZWYWx1ZSwgaW5OZXdWYWx1ZSwgaW5BdHRyTmFtZSwgaW5BdHRyQ2hh
bmdlKTsKIH0KIAorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NTXV0YXRpb25FdmVudCAoRE9N
TXV0YXRpb25FdmVudERlcHJlY2F0ZWQpCisKIC0gKHZvaWQpaW5pdE11dGF0aW9uRXZlbnQ6KE5T
U3RyaW5nICopdHlwZSA6KEJPT0wpY2FuQnViYmxlIDooQk9PTCljYW5jZWxhYmxlIDooRE9NTm9k
ZSAqKWluUmVsYXRlZE5vZGUgOihOU1N0cmluZyAqKWluUHJldlZhbHVlIDooTlNTdHJpbmcgKilp
bk5ld1ZhbHVlIDooTlNTdHJpbmcgKilpbkF0dHJOYW1lIDoodW5zaWduZWQgc2hvcnQpaW5BdHRy
Q2hhbmdlCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IElNUEwtPmluaXRNdXRhdGlvbkV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29y
ZShpblJlbGF0ZWROb2RlKSwgaW5QcmV2VmFsdWUsIGluTmV3VmFsdWUsIGluQXR0ck5hbWUsIGlu
QXR0ckNoYW5nZSk7CisgICAgW3NlbGYgaW5pdE11dGF0aW9uRXZlbnQ6dHlwZSBjYW5CdWJibGU6
Y2FuQnViYmxlIGNhbmNlbGFibGU6Y2FuY2VsYWJsZSByZWxhdGVkTm9kZTppblJlbGF0ZWROb2Rl
IHByZXZWYWx1ZTppblByZXZWYWx1ZSBuZXdWYWx1ZTppbk5ld1ZhbHVlIGF0dHJOYW1lOmluQXR0
ck5hbWUgYXR0ckNoYW5nZTppbkF0dHJDaGFuZ2VdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IGI2ZjBmZTEyNTQ0
ODI3NmU4MjA2ZDliNGQzNzU4ZWYzNjE1MzE3MTQuLmM4NDhjODM4MTljZDUxOTRjZWFiNzgyMDUw
MGFiODBkOGJhY2M4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NTmFtZWROb2RlTWFwLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
TmFtZWROb2RlTWFwLm1tCkBAIC05NiwxMiArOTYsNiBAQAogICAgIHJldHVybiBraXQoV1RGOjpn
ZXRQdHIoSU1QTC0+Z2V0TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpKSk7CiB9
CiAKLS0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldE5hbWVkSXRl
bU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSkpOwotfQotCiAtIChET01Ob2RlICopc2V0TmFt
ZWRJdGVtTlM6KERPTU5vZGUgKilub2RlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwpAQCAtMTIyLDEzICsxMTYsMTggQEAKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAgKERPTU5hbWVkTm9k
ZU1hcERlcHJlY2F0ZWQpCisKKy0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW1OUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQoreworICAgIHJldHVybiBbc2Vs
ZiBnZXROYW1lZEl0ZW1OUzpuYW1lc3BhY2VVUkkgbG9jYWxOYW1lOmxvY2FsTmFtZV07Cit9CisK
IC0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKWxvY2FsTmFtZQogewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01O
b2RlICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cmVtb3ZlTmFtZWRJdGVtTlMobmFt
ZXNwYWNlVVJJLCBsb2NhbE5hbWUsIGVjKSkpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gW3NlbGYgcmVtb3ZlTmFtZWRJ
dGVtTlM6bmFtZXNwYWNlVVJJIGxvY2FsTmFtZTpsb2NhbE5hbWVdOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUubW0KaW5kZXggNjgzOGMxNThhYWY0ZjNiNTY3
MjBmMWMxZGQ3ZmY1ZDcxNzA1NzYzNS4uY2IzMTRkYjhlOGZlOWNlYzhhZmY5Y2U1NTAwNTk1MjMx
ODU3NDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2Rl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQpAQCAtMjEz
LDE4ICsyMTMsNiBAQAogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKERPTU5vZGUgKilpbnNlcnRC
ZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZAotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBpZiAoIW5ld0NoaWxkKQot
ICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChJTVBMLT5pbnNlcnRCZWZvcmUoKmNvcmUo
bmV3Q2hpbGQpLCBjb3JlKHJlZkNoaWxkKSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7
Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQot
CiAtIChET01Ob2RlICopcmVwbGFjZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgb2xkQ2hpbGQ6
KERPTU5vZGUgKilvbGRDaGlsZAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKQEAgLTIzOSwyMCArMjI3LDYgQEAKICAgICByZXR1cm4gbmlsOwogfQogCi0tIChE
T01Ob2RlICopcmVwbGFjZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xk
Q2hpbGQKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
aWYgKCFuZXdDaGlsZCkKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24o
KTsKLSAgICBpZiAoIW9sZENoaWxkKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4
Y2VwdGlvbigpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChJ
TVBMLT5yZXBsYWNlQ2hpbGQoKmNvcmUobmV3Q2hpbGQpLCAqY29yZShvbGRDaGlsZCksIGVjKSkK
LSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQogLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01O
b2RlICopb2xkQ2hpbGQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CkBAIC0zMDQsMTIgKzI3OCw2IEBACiAgICAgcmV0dXJuIElNUEwtPmlzU3VwcG9ydGVkRm9y
QmluZGluZ3MoZmVhdHVyZSwgdmVyc2lvbik7CiB9CiAKLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5T
U3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+aXNTdXBwb3J0ZWRG
b3JCaW5kaW5ncyhmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQogLSAoQk9PTCloYXNBdHRyaWJ1dGVz
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNDA3LDYg
KzM3NSwyNSBAQAogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01Ob2RlRGVw
cmVjYXRlZCkKKworLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9kZSAqKW5ld0NoaWxk
IDooRE9NTm9kZSAqKXJlZkNoaWxkCit7CisgICAgcmV0dXJuIFtzZWxmIGluc2VydEJlZm9yZTpu
ZXdDaGlsZCByZWZDaGlsZDpyZWZDaGlsZF07Cit9CisKKy0gKERPTU5vZGUgKilyZXBsYWNlQ2hp
bGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAoreworICAgIHJldHVy
biBbc2VsZiByZXBsYWNlQ2hpbGQ6bmV3Q2hpbGQgb2xkQ2hpbGQ6b2xkQ2hpbGRdOworfQorCist
IChCT09MKWlzU3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNp
b24KK3sKKyAgICByZXR1cm4gW3NlbGYgaXNTdXBwb3J0ZWQ6ZmVhdHVyZSB2ZXJzaW9uOnZlcnNp
b25dOworfQorCitAZW5kCisKIFdlYkNvcmU6Ok5vZGUqIGNvcmUoRE9NTm9kZSAqd3JhcHBlcikK
IHsKICAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
UmFuZ2UubW0KaW5kZXggZTZiMjZlMDFiYzExYzNmMjc5OTYxY2Y1ZWQ5OTIzNjMzNGZkZTE2Yi4u
ZGVkYTdlNzkxODU4NzNmNGU1YTU2ZWQyN2ZiNTRhYjhkNTgyYTZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLm1tCkBAIC0xMDYsMTYgKzEwNiw2IEBACiAgICAgV2Vi
Q29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAotLSAodm9pZClzZXRTdGFydDooRE9NTm9k
ZSAqKXJlZk5vZGUgOihpbnQpb2Zmc2V0Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGlmICghcmVmTm9kZSkKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VU
eXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBJTVBMLT5zZXRTdGFydCgqY29yZShyZWZOb2RlKSwgb2Zmc2V0LCBlYyk7Ci0gICAgV2Vi
Q29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQogLSAodm9pZClzZXRFbmQ6KERPTU5vZGUg
KilyZWZOb2RlIG9mZnNldDooaW50KW9mZnNldAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTEyNiwxNiArMTE2LDYgQEAKICAgICBXZWJDb3JlOjpyYWlz
ZU9uRE9NRXJyb3IoZWMpOwogfQogCi0tICh2b2lkKXNldEVuZDooRE9NTm9kZSAqKXJlZk5vZGUg
OihpbnQpb2Zmc2V0Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGlmICghcmVmTm9kZSkKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNl
cHRpb24oKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5z
ZXRFbmQoKmNvcmUocmVmTm9kZSksIG9mZnNldCwgZWMpOwotICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7Ci19Ci0KIC0gKHZvaWQpc2V0U3RhcnRCZWZvcmU6KERPTU5vZGUgKilyZWZO
b2RlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtMjEz
LDE3ICsxOTMsNiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKHNob3J0KWNvbXBhcmVC
b3VuZGFyeVBvaW50czoodW5zaWduZWQgc2hvcnQpaG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5n
ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBpZiAo
IXNvdXJjZVJhbmdlKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigp
OwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNob3J0IHJlc3VsdCA9
IElNUEwtPmNvbXBhcmVCb3VuZGFyeVBvaW50c0ZvckJpbmRpbmdzKGhvdywgKmNvcmUoc291cmNl
UmFuZ2UpLCBlYyk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiAtICh2b2lkKWRlbGV0ZUNvbnRlbnRzCiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtMzUxLDYgKzMyMCwyNSBAQAogCiBAZW5k
CiAKK0BpbXBsZW1lbnRhdGlvbiBET01SYW5nZSAoRE9NUmFuZ2VEZXByZWNhdGVkKQorCistICh2
b2lkKXNldFN0YXJ0OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQKK3sKKyAgICBbc2Vs
ZiBzZXRTdGFydDpyZWZOb2RlIG9mZnNldDpvZmZzZXRdOworfQorCistICh2b2lkKXNldEVuZDoo
RE9NTm9kZSAqKXJlZk5vZGUgOihpbnQpb2Zmc2V0Cit7CisgICAgW3NlbGYgc2V0RW5kOnJlZk5v
ZGUgb2Zmc2V0Om9mZnNldF07Cit9CisKKy0gKHNob3J0KWNvbXBhcmVCb3VuZGFyeVBvaW50czoo
dW5zaWduZWQgc2hvcnQpaG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZQoreworICAgIHJldHVy
biBbc2VsZiBjb21wYXJlQm91bmRhcnlQb2ludHM6aG93IHNvdXJjZVJhbmdlOnNvdXJjZVJhbmdl
XTsKK30KKworQGVuZAorCiBXZWJDb3JlOjpSYW5nZSogY29yZShET01SYW5nZSAqd3JhcHBlcikK
IHsKICAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6UmFuZ2Uq
Pih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NVUlFdmVudC5tbQppbmRleCBiODUyNjllMDFiNWJkMDYxZTFlYjQ1ZTllMTQ0M2ZhNjNjYTdk
YWUyLi4xMmY0YmM3M2QxYjQxNzhkODY4MzAwZTA5N2Y1NWQ5NTk5YjEyNzQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJRXZlbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUV2ZW50Lm1tCkBAIC0xMDIsMTAgKzEwMiwxMyBA
QAogICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29y
ZShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTVVJ
RXZlbnQgKERPTVVJRXZlbnREZXByZWNhdGVkKQorCiAtICh2b2lkKWluaXRVSUV2ZW50OihOU1N0
cmluZyAqKXR5cGUgOihCT09MKWNhbkJ1YmJsZSA6KEJPT0wpY2FuY2VsYWJsZSA6KERPTUFic3Ry
YWN0VmlldyAqKWluVmlldyA6KGludClpbkRldGFpbAogewotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwgaW5EZXRhaWwpOworICAgIFtzZWxmIGluaXRV
SUV2ZW50OnR5cGUgY2FuQnViYmxlOmNhbkJ1YmJsZSBjYW5jZWxhYmxlOmNhbmNlbGFibGUgdmll
dzppblZpZXcgZGV0YWlsOmluRGV0YWlsXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4cHJlc3Npb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhwcmVzc2lvbi5tbQppbmRleCBmZTcwYzAyYWFi
MjhiMTk1YzBhZjZhYzgyMmNiNjEwOGViN2YzN2I1Li40MTBjMzdiMzBkYzU5ODkzMWE4MTVhMjVi
OTgyYjdlZTM0YTIzMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVhQYXRoRXhwcmVzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVhQYXRoRXhwcmVzc2lvbi5tbQpAQCAtNjIsMTMgKzYyLDEzIEBACiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NWFBhdGhFeHByZXNzaW9uIChE
T01YUGF0aEV4cHJlc3Npb25EZXByZWNhdGVkKQorCiAtIChET01YUGF0aFJlc3VsdCAqKWV2YWx1
YXRlOihET01Ob2RlICopY29udGV4dE5vZGUgOih1bnNpZ25lZCBzaG9ydCl0eXBlIDooRE9NWFBh
dGhSZXN1bHQgKilpblJlc3VsdAogewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01YUGF0
aFJlc3VsdCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmV2YWx1YXRlKGNvcmUoY29u
dGV4dE5vZGUpLCB0eXBlLCBjb3JlKGluUmVzdWx0KSwgZWMpKSk7Ci0gICAgV2ViQ29yZTo6cmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBl
dmFsdWF0ZTpjb250ZXh0Tm9kZSB0eXBlOnR5cGUgaW5SZXN1bHQ6aW5SZXN1bHRdOwogfQogCiBA
ZW5kCg==
</data>
<flag name="review"
          id="308961"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>