<?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>36936</bug_id>
          
          <creation_ts>2010-04-01 00:10:15 -0700</creation_ts>
          <short_desc>Factor DocumentSwitcher out of FrameLoader</short_desc>
          <delta_ts>2011-06-12 06:19:32 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>207001</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-01 00:10:15 -0700</bug_when>
    <thetext>FrameLoader does many things.  One of its core responsibilities is to switch around m_documentLoader, m_provisionalDocumentLoader, and m_policyDocumentLoader.  Unlike my previous patches (which moved &quot;front-end&quot; code out of FrameLoader), this patch will move &quot;back-end&quot; code out of FrameLoader.

DocumentSwitcher is intended to encapsulate write access to the document loaders as well as m_state, as distinct from the various load* methods of FrameLoader (which are closer to the front of the loading pipeline).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207002</commentid>
    <comment_count>1</comment_count>
      <attachid>52266</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-01 00:11:13 -0700</bug_when>
    <thetext>Created attachment 52266
Work in progress (does not compile)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207553</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-01 17:50:40 -0700</bug_when>
    <thetext>I love it! But can you move it to a new file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207566</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-01 18:10:47 -0700</bug_when>
    <thetext>Sure.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208786</commentid>
    <comment_count>4</comment_count>
      <attachid>52588</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 16:33:55 -0700</bug_when>
    <thetext>Created attachment 52588
More work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208787</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 16:34:25 -0700</bug_when>
    <thetext>I realized that m_loadType should move back to FrameLoader.  Turns out FrameLoader is very complicated.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52266</attachid>
            <date>2010-04-01 00:11:13 -0700</date>
            <delta_ts>2010-04-05 16:33:52 -0700</delta_ts>
            <desc>Work in progress (does not compile)</desc>
            <filename>bug-36936-20100401001111.patch</filename>
            <type>text/plain</type>
            <size>20870</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAyNDk4ZGVlLi5kZGJiMWI1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC0yMjAsMjcgKzIyMCw0MiBAQCBGcmFtZUxvYWRlcjo6fkZyYW1lTG9hZGVy
KCkKICAgICBtX2NsaWVudC0+ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6aW5pdCgpCitEb2N1bWVudFN3aXRjaGVyOjpEb2N1bWVudFN3aXRjaGVyKEZyYW1l
KiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoRG9jdW1lbnRTd2l0Y2hlcikKK3sKK30KKwordm9pZCBE
b2N1bWVudFN3aXRjaGVyOjppbml0KCkKIHsKLSAgICAvLyB0aGlzIHNvbWV3aGF0IG9kZCBzZXQg
b2Ygc3RlcHMgaXMgbmVlZGVkIHRvIGdpdmUgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9j
dW1lbnQKLSAgICBtX2lzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gZmFsc2U7CiAg
ICAgbV9jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gdHJ1ZTsKICAgICBzZXRQb2xpY3lE
b2N1bWVudExvYWRlcihtX2NsaWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1
ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7
CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVy
LmdldCgpKTsKICAgICBzZXRTdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpOwogICAgIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+c2V0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShLVVJM
KCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpKTsKICAgICBtX3Byb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXItPmZpbmlzaGVkTG9hZGluZygpOworfQorCit2b2lkIERvY3VtZW50
U3dpdGNoZXI6OmZpbmlzaGVkQ3JlYXRpbmdJbml0aWFsRG9jdW1lbnQoKQoreworICAgIG1fY3Jl
YXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Ojppbml0KCkKK3sKKyAgICAvLyB0aGlzIHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMgaXMgbmVl
ZGVkIHRvIGdpdmUgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQKKyAgICBtX2lz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gZmFsc2U7CisgICAgZG9jdW1lbnRTd2l0
Y2hlcigpLT5pbml0KCk7CiAgICAgYmVnaW4oS1VSTCgpLCBmYWxzZSk7CiAgICAgZW5kKCk7CiAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOwotICAgIG1fY3JlYXRpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOworICAgIGRvY3VtZW50U3dpdGNoZXIoKS0+Zmlu
aXNoZWRDcmVhdGluZ0luaXRpYWxEb2N1bWVudCgpOwogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xv
c2UgPSB0cnVlOwogCiAgICAgLy8gUHJvcGFnYXRlIHNhbmRib3ggYXR0cmlidXRlcyB0byB0aGlz
IEZyYW1lbG9hZGVyIGFuZCBpdHMgZGVzY2VuZGFudHMuCiAgICAgdXBkYXRlU2FuZGJveEZsYWdz
KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMp
Cit2b2lkIERvY3VtZW50U3dpdGNoZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiB7
CiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnNl
dERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKQEAgLTI1MSw3ICsyNjYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogCiAgICAgaWYgKCFkZWZlcnMpIHsK
ICAgICAgICAgbV9mcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c3RhcnRUaW1lcigpOwotICAg
ICAgICBzdGFydENoZWNrQ29tcGxldGVUaW1lcigpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIo
KS0+c3RhcnRDaGVja0NvbXBsZXRlVGltZXIoKTsKICAgICB9CiB9CiAKQEAgLTc2Niw5ICs3ODEs
OSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiB7CiAgICAgYmVnaW4o
bV93b3JraW5nVVJMLCBmYWxzZSk7CiAKLSAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKKyAg
ICBkb2N1bWVudFN3aXRjaGVyKCktPmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIGRpc3Bh
dGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKLSAgICAKKwogICAgIGlmICht
X2RvY3VtZW50TG9hZGVyKSB7CiAgICAgICAgIFN0cmluZyBwdGl0bGUgPSBtX2RvY3VtZW50TG9h
ZGVyLT50aXRsZSgpOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJW
aWV3IGtub3cgYWJvdXQgaXQuCkBAIC0xNTA5LDcgKzE1MjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpoYW5kbGVGYWxsYmFja0NvbnRlbnQoKQogICAgIHN0YXRpY19jYXN0PEhUTUxPYmplY3RFbGVt
ZW50Kj4ob3duZXIpLT5yZW5kZXJGYWxsYmFja0NvbnRlbnQoKTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCit2b2lkIERvY3VtZW50U3dpdGNoZXI6OnBy
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKQogeyAgICAKICAgICBtX2ZpcnN0TGF5b3V0RG9uZSA9IGZh
bHNlOwogICAgIG1fZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPmNhbmNlbCh0cnVlKTsKQEAg
LTE4OTAsNyArMTkwNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBhcmVGb3JMb2FkU3RhcnQo
KQogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCit2b2lkIERvY3VtZW50U3dpdGNo
ZXI6OnNldHVwRm9yUmVwbGFjZSgpCiB7CiAgICAgc2V0U3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lv
bmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVy
OwpAQCAtMjEzNyw3ICsyMTUyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICAgICAg
ICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhwYXJlbnQtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT5vdmVycmlkZUVuY29kaW5nKCkpOwogCiAgICAgICAgIHBvbGljeUNoZWNrZXIo
KS0+c3RvcENoZWNrKCk7Ci0gICAgICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlcik7
CisgICAgICAgIGRvY3VtZW50U3dpdGNoZXIoKS0+c2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobG9h
ZGVyKTsKICAgICAgICAgaWYgKGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigpLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9u
KG5ld1VSTCwgcG9saWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpLCBpc0Zvcm1TdWJtaXNzaW9uKSk7
CiAKQEAgLTIyMDEsNiArMjIxNiw4IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFJlbG9hZFRv
SGFuZGxlVW5yZWFjaGFibGVVUkwoRG9jdW1lbnRMb2FkZXIqIGRvY0xvYWRlcikKICAgICBpZiAo
IWlzQmFja0ZvcndhcmRMb2FkVHlwZShwb2xpY3lDaGVja2VyKCktPmxvYWRUeXBlKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKworLy8gWFlaWlk6IFNob3VsZCBiZSBpbiBNYWNoaW5lPwog
ICAgIC8vIFdlIG9ubHkgdHJlYXQgdW5yZWFjaGFibGVVUkxzIHNwZWNpYWxseSBkdXJpbmcgdGhl
IGRlbGVnYXRlIGNhbGxiYWNrcwogICAgIC8vIGZvciBwcm92aXNpb25hbCBsb2FkIGVycm9ycyBh
bmQgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb25zLiBUaGUgZm9ybWVyCiAgICAgLy8gY2FzZSBo
YW5kbGVzIHdlbGwtZm9ybWVkIFVSTHMgdGhhdCBjYW4ndCBiZSBsb2FkZWQsIGFuZCB0aGUgbGF0
dGVyCkBAIC0yMjI4LDcgKzIyNDUsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3Zl
cnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgIHJlcXVlc3Quc2V0Q2Fj
aGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwogCiAgICAgUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwg
U3Vic3RpdHV0ZURhdGEoKSk7Ci0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobG9hZGVyLmdl
dCgpKTsKKyAgICAvLyBYWVpaWTogVGhpcyBzZWVtcyB3cm9uZy4KKyAgICBkb2N1bWVudFN3aXRj
aGVyKCktPnNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSk7CiAKICAgICBsb2Fk
ZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogCkBAIC0yMzU0LDYgKzIzNzIsMjAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmdTdWJmcmFtZXMoKQogICAgICAgICBjaGls
ZC0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hl
cjo6c3RvcExvYWRpbmcoKQoreworICAgIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7CisgICAgaWYg
KG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKKyAgICAgICAgbV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyLT5zdG9wTG9hZGluZyhkYXRhYmFzZVBvbGljeSk7CisgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXIpCisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKGRhdGFiYXNl
UG9saWN5KTsKKworICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoMCk7CisKKyAgICBp
ZiAobV9kb2N1bWVudExvYWRlcikKKyAgICAgICAgbV9kb2N1bWVudExvYWRlci0+Y2xlYXJBcmNo
aXZlUmVzb3VyY2VzKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKERh
dGFiYXNlUG9saWN5IGRhdGFiYXNlUG9saWN5KQogewogICAgIEFTU0VSVCghbV9mcmFtZS0+ZG9j
dW1lbnQoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSk7CkBAIC0yMzY3
LDE3ICsyMzk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoRGF0YWJhc2VQ
b2xpY3kgZGF0YWJhc2VQb2xpY3kpCiAgICAgbV9pblN0b3BBbGxMb2FkZXJzID0gdHJ1ZTsKIAog
ICAgIHBvbGljeUNoZWNrZXIoKS0+c3RvcENoZWNrKCk7Ci0KLSAgICBzdG9wTG9hZGluZ1N1YmZy
YW1lcygpOwotICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRpbmcoZGF0YWJhc2VQb2xpY3kpOwot
ICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5zdG9w
TG9hZGluZyhkYXRhYmFzZVBvbGljeSk7Ci0KLSAgICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKDApOwotICAgIAotICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2RvY3Vt
ZW50TG9hZGVyLT5jbGVhckFyY2hpdmVSZXNvdXJjZXMoKTsKKyAgICBkb2N1bWVudFN3aXRjaGVy
KCktPnN0b3BMb2FkaW5nKCkKIAogICAgIG1fY2hlY2tUaW1lci5zdG9wKCk7CiAKQEAgLTIzOTQs
NyArMjQxNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVm
ZXJDaGVja0xvYWRDb21wbGV0ZSkKICAgICAgICAgY2hlY2tMb2FkQ29tcGxldGUoKTsKIH0KIAot
RG9jdW1lbnRMb2FkZXIqIEZyYW1lTG9hZGVyOjphY3RpdmVEb2N1bWVudExvYWRlcigpIGNvbnN0
CitEb2N1bWVudExvYWRlciogRG9jdW1lbnRTd2l0Y2hlcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSBjb25zdAogewogICAgIGlmIChtX3N0YXRlID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCkKICAg
ICAgICAgcmV0dXJuIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKTsKQEAgLTI0MDMs
MTggKzI0MjUsMTggQEAgRG9jdW1lbnRMb2FkZXIqIEZyYW1lTG9hZGVyOjphY3RpdmVEb2N1bWVu
dExvYWRlcigpIGNvbnN0CiAKIGJvb2wgRnJhbWVMb2FkZXI6OmlzTG9hZGluZygpIGNvbnN0CiB7
Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGRvY0xvYWRlciA9IGFjdGl2ZURvY3VtZW50TG9hZGVyKCk7
CisgICAgRG9jdW1lbnRMb2FkZXIqIGRvY0xvYWRlciA9IGRvY3VtZW50U3dpdGNoZXIoKS0+YWN0
aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY0xvYWRlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJldHVybiBkb2NMb2FkZXItPmlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8
IGRvY0xvYWRlci0+aXNMb2FkaW5nU3VicmVzb3VyY2VzKCkgfHwgZG9jTG9hZGVyLT5pc0xvYWRp
bmdQbHVnSW5zKCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OmZyYW1lSGFzTG9hZGVkKCkgY29u
c3QKK2Jvb2wgRG9jdW1lbnRTd2l0Y2hlcjo6ZnJhbWVIYXNMb2FkZWQoKSBjb25zdAogewogICAg
IHJldHVybiBtX2NvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCB8fCAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyICYmICFtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOyAKIH0K
IAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hlcjo6c2V0RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIWxvYWRlciAmJiAhbV9kb2N1bWVudExvYWRlcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQzMCw3ICsyNDUyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c2V0RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBtX2RvY3VtZW50
TG9hZGVyID0gbG9hZGVyOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRQb2xpY3lEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpz
ZXRQb2xpY3lEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlm
IChtX3BvbGljeURvY3VtZW50TG9hZGVyID09IGxvYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQ0Niw3ICsyNDY4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UG9saWN5RG9jdW1lbnRMb2Fk
ZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBtX3BvbGljeURvY3VtZW50TG9hZGVyID0g
bG9hZGVyOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRQcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIERvY3VtZW50U3dpdGNoZXI6OnNldFBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBB
U1NFUlQoIWxvYWRlciB8fCAhbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKTsKICAgICBBU1NF
UlQoIWxvYWRlciB8fCBsb2FkZXItPmZyYW1lTG9hZGVyKCkgPT0gdGhpcyk7CkBAIC0yNDc2LDcg
KzI0OTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0YXRl
KQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQor
dm9pZCBEb2N1bWVudFN3aXRjaGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAgc2V0
UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigwKTsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkKQEAgLTI0ODQsMTIgKzI1MDYsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xl
YXJQcm92aXNpb25hbExvYWQoKQogICAgIHNldFN0YXRlKEZyYW1lU3RhdGVDb21wbGV0ZSk7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXI6Om1hcmtMb2FkQ29tcGxldGUoKQordm9pZCBEb2N1bWVudFN3
aXRjaGVyOjptYXJrTG9hZENvbXBsZXRlKCkKIHsKICAgICBzZXRTdGF0ZShGcmFtZVN0YXRlQ29t
cGxldGUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoUGFz
c1JlZlB0cjxDYWNoZWRQYWdlPiBwcnBDYWNoZWRQYWdlKQordm9pZCBEb2N1bWVudFN3aXRjaGVy
Ojpjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBwcnBDYWNoZWRQ
YWdlKQogewogICAgIFJlZlB0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlID0gcHJwQ2FjaGVkUGFn
ZTsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcjsKQEAgLTI1NjUsNyArMjU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFBy
b3Zpc2lvbmFsTG9hZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+IHBycENhY2hlZFBhZ2UpCiAgICAg
fQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0
cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjp0cmFuc2l0
aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlKQogewogICAg
IEFTU0VSVChtX2NsaWVudC0+aGFzV2ViVmlldygpKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBG
cmFtZVN0YXRlUHJvdmlzaW9uYWwpOwpAQCAtMjgwOCw3ICsyODMwLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6b3BlbihDYWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogCiBib29sIEZyYW1lTG9h
ZGVyOjppc1N0b3BwaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+aXNTdG9wcGluZygpOworICAgIHJldHVybiBkb2N1bWVudFN3aXRjaGVyKCktPmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6
ZmluaXNoZWRMb2FkaW5nKCkKQEAgLTI5MDUsMTIgKzI5MjcsMTIgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZmluaXNoZWRMb2FkaW5nRG9jdW1lbnQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBh
ZGREYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgp
LT5zaXplKCkpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjppc1JlcGxhY2luZygpIGNvbnN0Citi
b29sIERvY3VtZW50U3dpdGNoZXI6OmlzUmVwbGFjaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVwbGFjZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
cjo6c2V0UmVwbGFjaW5nKCkKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hlcjo6c2V0UmVwbGFjaW5nKCkK
IHsKICAgICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZVJlcGxhY2U7CiB9CkBAIC0yOTc2LDcg
KzI5OTgsNyBAQCBDYWNoZVBvbGljeSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VDYWNoZVBvbGlj
eSgpIGNvbnN0CiAgICAgcmV0dXJuIENhY2hlUG9saWN5VmVyaWZ5OwogfQogCi12b2lkIEZyYW1l
TG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCit2b2lkIERvY3VtZW50U3dp
dGNoZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKIHsKICAgICBBU1NFUlQobV9j
bGllbnQtPmhhc1dlYlZpZXcoKSk7CiAKQEAgLTMxMDgsMTQgKzMxMzAsMTQgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpCiAgICAgICAgIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXBkYXRlTG9hZGluZygpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyOjpkaWRGaXJzdExheW91dCgpCit2b2lkIERvY3VtZW50U3dpdGNoZXI6OmRpZEZpcnN0
TGF5b3V0KCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAg
ICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSAmJiBwYWdlLT5iYWNrRm9y
d2FyZExpc3QoKSkKLSAgICAgICAgICAgIGhpc3RvcnkoKS0+cmVzdG9yZVNjcm9sbFBvc2l0aW9u
QW5kVmlld1N0YXRlKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgp
LT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKIAogICAgIG1fZmlyc3RMYXlv
dXREb25lID0gdHJ1ZTsKLSAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwor
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQo
KQpAQCAtMzEzNywxMiArMzE1OSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpmcmFtZUxvYWRDb21w
bGV0ZWQoKQogICAgICAgICBtX2ZpcnN0TGF5b3V0RG9uZSA9IHRydWU7CiB9CiAKLWJvb2wgRnJh
bWVMb2FkZXI6OmZpcnN0TGF5b3V0RG9uZSgpIGNvbnN0Citib29sIERvY3VtZW50U3dpdGNoZXI6
OmZpcnN0TGF5b3V0RG9uZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmlyc3RMYXlvdXREb25l
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigpCit2b2lkIERvY3VtZW50
U3dpdGNoZXI6OmRldGFjaENoaWxkcmVuKCkKIHsKICAgICAvLyBGSVhNRTogSXMgaXQgcmVhbGx5
IG5lY2Vzc2FyeSB0byBkbyB0aGlzIGluIHJldmVyc2Ugb3JkZXI/CiAgICAgRnJhbWUqIHByZXZp
b3VzOwpAQCAtMzE2NywxNSArMzE4OSwxNSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbG9zZUFuZFJl
bW92ZUNoaWxkKEZyYW1lKiBjaGlsZCkKIHZvaWQgRnJhbWVMb2FkZXI6OnJlY3Vyc2l2ZUNoZWNr
TG9hZENvbXBsZXRlKCkKIHsKICAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPiwgMTA+IGZyYW1lczsK
LSAgICAKKwogICAgIGZvciAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+
Zmlyc3RDaGlsZCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5uZXh0U2libGluZygp
KQogICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKLSAgICAKKwogICAgIHVuc2lnbmVkIHNp
emUgPSBmcmFtZXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspCiAgICAgICAgIGZyYW1lc1tpXS0+bG9hZGVyKCktPnJlY3Vyc2l2ZUNoZWNrTG9hZENvbXBs
ZXRlKCk7Ci0gICAgCi0gICAgY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKTsKKworICAg
IGRvY3VtZW50U3dpdGNoZXIoKS0+Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKTsKIH0K
IAogLy8gQ2FsbGVkIGV2ZXJ5IHRpbWUgYSByZXNvdXJjZSBpcyBjb21wbGV0ZWx5IGxvYWRlZCwg
b3IgYW4gZXJyb3IgaXMgcmVjZWl2ZWQuCkBAIC0zMjM1LDcgKzMyNTcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpkZXRhY2hGcm9tUGFyZW50KCkKICAgICBjbG9zZVVSTCgpOwogICAgIHN0b3BBbGxM
b2FkZXJzKCk7CiAgICAgaGlzdG9yeSgpLT5zYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVU
b0l0ZW0oaGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpKTsKLSAgICBkZXRhY2hDaGlsZHJlbigpOwor
ICAgIGRvY3VtZW50U3dpdGNoZXIoKS0+ZGV0YWNoQ2hpbGRyZW4oKTsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCkBAIC0zMjUz
LDEwICszMjc1LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQoKQogICAg
IH0KIH0KIAordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpjbGVhckRvY3VtZW50TG9hZGVyKCkKK3sK
KyAgICBzZXREb2N1bWVudExvYWRlcigwKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNo
Vmlld3NBbmREb2N1bWVudExvYWRlcigpCiB7CiAgICAgbV9jbGllbnQtPmRldGFjaGVkRnJvbVBh
cmVudDIoKTsKLSAgICBzZXREb2N1bWVudExvYWRlcigwKTsKKyAgICBkb2N1bWVudFN3aXRjaGVy
KCktPmNsZWFyRG9jdW1lbnRMb2FkZXIoKTsKICAgICBtX2NsaWVudC0+ZGV0YWNoZWRGcm9tUGFy
ZW50MygpOwogfQogICAgIApAQCAtMzU0MCw3ICszNTY3LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFBhc3MKICAgICAgICAgaWYgKG1fcXVpY2tSZWRpcmVjdENvbWluZykKICAgICAgICAgICAgIGNs
aWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChmYWxzZSk7CiAKLSAgICAgICAgc2V0UG9s
aWN5RG9jdW1lbnRMb2FkZXIoMCk7CisgICAgICAgIC8vIFhZWlpZOiBXaGF0IGFyZSB3ZSBkb2lu
ZyB3aXRoIHRoaXMgaGVyZT8KKyAgICAgICAgZG9jdW1lbnRTd2l0Y2hlcigpLT5zZXRQb2xpY3lE
b2N1bWVudExvYWRlcigwKTsKIAogICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0
IGNhbWUgZnJvbSB0aGUgYmFjay9mb3J3YXJkIG1lbnUsIGFuZCB3ZSBwdW50IG9uIGl0LCB3ZSBo
YXZlIHRoZSAKICAgICAgICAgLy8gcHJvYmxlbSB0aGF0IHdlIGhhdmUgb3B0aW1pc3RpY2FsbHkg
bW92ZWQgdGhlIGIvZiBjdXJzb3IgYWxyZWFkeSwgc28gbW92ZSBpdCBiYWNrLiAgRm9yIHNhbml0
eSwgCkBAIC0zNTcyLDYgKzM2MDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRB
ZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzcwogICAgIH0K
ICNlbmRpZgogCisvLyBYWVpaWTogU2hvdWxkIGJlIGluIE1hY2hpbmU/CiAgICAgc2V0UHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBt
X2xvYWRUeXBlID0gdHlwZTsKICAgICBzZXRTdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpOwpA
QCAtMzcwNiw4ICszNzM1LDggQEAgYm9vbCBGcmFtZUxvYWRlcjo6bG9hZFByb3Zpc2lvbmFsSXRl
bUZyb21DYWNoZWRQYWdlKCkKICAgICBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA9IHRydWU7CiAK
ICAgICBwcm92aXNpb25hbExvYWRlci0+c2V0Q29tbWl0dGVkKHRydWUpOwotICAgIGNvbW1pdFBy
b3Zpc2lvbmFsTG9hZChjYWNoZWRQYWdlKTsKLSAgICAKKyAgICBkb2N1bWVudFN3aXRjaGVyKCkt
PmNvbW1pdFByb3Zpc2lvbmFsTG9hZChjYWNoZWRQYWdlKTsKKwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC00MDc3LDcgKzQxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hlcjo6ZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50
KQogICAgICAgICByZXR1cm47CkBAIC00MDg2LDcgKzQxMTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogICAgIG1fZGlkRGlzcGF0Y2hEaWRDb21taXRMb2Fk
ID0gdHJ1ZTsKICNlbmRpZgogCi0gICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
OworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTIxODc0NC4uOTExOGRlZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC04Nyw2ICs4Nyw4NiBAQCBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAK
IGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUpOwogCitjbGFzcyBEb2N1
bWVudFN3aXRjaGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBEb2N1bWVu
dFN3aXRjaGVyKEZyYW1lKik7CisKKyAgICB2b2lkIGluaXQoKTsKKworCisgICAgdm9pZCBmaW5p
c2hlZENyZWF0aW5nSW5pdGlhbERvY3VtZW50KCk7CisKKworICAgIHZvaWQgY29tbWl0UHJvdmlz
aW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOworICAgIHZvaWQgc3RvcExvYWRpbmco
KTsKKworICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKKyAgICB2b2lkIGNoZWNrTG9h
ZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCk7CisKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpOworCisgICAgYm9vbCBmcmFtZUhhc0xvYWRlZCgpIGNvbnN0OworCisgICAgRnJhbWVTdGF0
ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIERvY3VtZW50TG9hZGVy
KiBhY3RpdmVEb2N1bWVudExvYWRlcigpIGNvbnN0OworCisgICAgdm9pZCBjbGVhckRvY3VtZW50
TG9hZGVyKCk7CisKKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7
IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyB9CisgICAgRG9jdW1lbnRMb2FkZXIqIHBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIuZ2V0KCk7IH0KKworICAgIERvY3VtZW50TG9hZGVyKiBwb2xpY3lEb2N1bWVu
dExvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldFBvbGljeURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKik7CisKKyAg
ICAvLyBYWVpaWTogTmVlZCB0byBsb29rIG1vcmUgY2xvc2VseSBhdCBpbnRlcmFjdGlvbiB3aXRo
IERvY3VtZW50TG9hZGVyLgorICAgIHZvaWQgc2V0dXBGb3JSZXBsYWNlKCk7CisgICAgYm9vbCBp
c1JlcGxhY2luZygpIGNvbnN0OworICAgIHZvaWQgc2V0UmVwbGFjaW5nKCk7CisKKyAgICAvLyBU
aGlzIGlzIGRpc2d1c3RpbmcsIGJ1dCBvdXIgZmlyc3QgbGF5b3V0IHN0YXRlIGlzIHRpZWQgdXAg
aW4gc3dpdGNoaW5nIEZyYW1lTG9hZGVycy4KKyAgICB2b2lkIGRpZEZpcnN0TGF5b3V0KCk7Cisg
ICAgYm9vbCBmaXJzdExheW91dERvbmUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICAvLyBYWVpa
WTogUmUtYXNzaWdubWVudCBwYXNzIDwtLS0tIEhFUkUKKyAgICB2b2lkIGRldGFjaENoaWxkcmVu
KCk7CisgICAgdm9pZCBtYXJrTG9hZENvbXBsZXRlKCk7CisgICAgdm9pZCBzZXREb2N1bWVudExv
YWRlcihEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcihEb2N1bWVudExvYWRlciopOworCisKKyAgICB2b2lkIHNldFN0YXRlKEZyYW1lU3RhdGUp
OworCisgICAgdm9pZCBjbG9zZU9sZERhdGFTb3VyY2VzKCk7CisgICAgdm9pZCB0cmFuc2l0aW9u
VG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPik7CisgICAgdm9pZCBzdG9wTG9hZGlu
Z1N1YmZyYW1lcygpOworCisgICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7CisgICAg
dm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKTsKKworICAgIEZyYW1lKiBtX2ZyYW1lOworCisgICAg
RnJhbWVTdGF0ZSBtX3N0YXRlOworICAgIEZyYW1lTG9hZFR5cGUgbV9sb2FkVHlwZTsKKworICAg
IGJvb2wgbV9jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50OworICAgIGJvb2wgbV9jb21taXR0
ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQ7CisgICAgYm9vbCBtX2ZpcnN0TGF5b3V0RG9uZTsKKyAg
ICBib29sIG1fZGVsZWdhdGVJc0hhbmRsaW5nUHJvdmlzaW9uYWxMb2FkRXJyb3I7CisjaWZuZGVm
IE5ERUJVRworICAgIGJvb2wgbV9kaWREaXNwYXRjaERpZENvbW1pdExvYWQ7CisjZW5kaWYKKwor
ICAgIC8vIERvY3VtZW50IGxvYWRlcnMgZm9yIHRoZSB0aHJlZSBwaGFzZXMgb2YgZnJhbWUgbG9h
ZGluZy4gTm90ZSB0aGF0IHdoaWxlIAorICAgIC8vIGEgbmV3IHJlcXVlc3QgaXMgYmVpbmcgbG9h
ZGVkLCB0aGUgb2xkIGRvY3VtZW50IGxvYWRlciBtYXkgc3RpbGwgYmUgcmVmZXJlbmNlZC4KKyAg
ICAvLyBFLmcuIHdoaWxlIGEgbmV3IHJlcXVlc3QgaXMgaW4gdGhlICJwb2xpY3kiIHN0YXRlLCB0
aGUgb2xkIGRvY3VtZW50IGxvYWRlciBtYXkKKyAgICAvLyBiZSBjb25zdWx0ZWQgaW4gcGFydGlj
dWxhciBhcyBpdCBtYWtlcyBzZW5zZSB0byBpbXBseSBjZXJ0YWluIHNldHRpbmdzIG9uIHRoZSBu
ZXcgbG9hZGVyLgorICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsK
KyAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcjsK
KyAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fcG9saWN5RG9jdW1lbnRMb2FkZXI7Cit9Owor
CiBjbGFzcyBGcmFtZUxvYWRlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAg
RnJhbWVMb2FkZXIoRnJhbWUqLCBGcmFtZUxvYWRlckNsaWVudCopOwpAQCAtOTQsNiArMTc0LDkg
QEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0KCk7CiAKKyAgICAvLyBPT1BTOiBQdXQgYmFjayBp
biB0aGUgcmlnaHQgcGxhY2UuCisgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKKwogICAgIEZy
YW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFBvbGljeUNoZWNr
ZXIqIHBvbGljeUNoZWNrZXIoKSBjb25zdCB7IHJldHVybiAmbV9wb2xpY3lDaGVja2VyOyB9CkBA
IC0xMDUsNyArMTg4LDYgQEAgcHVibGljOgogICAgIC8vIHRoZSBsb2dpYyBieSBleHRyYWN0aW5n
IGNvbW1vbiBjb2RlIHBhdGhzLgogCiAgICAgdm9pZCBwcmVwYXJlRm9yTG9hZFN0YXJ0KCk7Ci0g
ICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZUJ5TUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBuZXdNSU1FVHlwZSk7CiAKICAgICB2b2lkIGxvYWRVUkxJbnRv
Q2hpbGRGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGcmFtZSopOwpA
QCAtMTMzLDggKzIxNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJv
b2wgZGVmZXJDaGVja0xvYWRDb21wbGV0ZSA9IGZhbHNlKTsKIAogICAgIGJvb2wgaXNMb2FkaW5n
TWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7IH0K
LSAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNMb2FkZWQoKSBj
b25zdDsKIAogICAgIGludCBudW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMoYm9vbCByZWN1cnNl
KSBjb25zdDsKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKQEAgLTE3OSw4ICsyNTksNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSgpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nRG9jdW1lbnQoRG9jdW1l
bnRMb2FkZXIqKTsKICAgICB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBjaGFyKiwgaW50KTsKLSAgICBib29sIGlzUmVwbGFjaW5nKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRSZXBsYWNpbmcoKTsKICAgICB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWwoRG9jdW1lbnRMb2Fk
ZXIqKTsKICAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbWFpblJlY2VpdmVkQ29tcGxldGVFcnJvcihE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKQEAgLTE5MSw5ICsyNjksNiBA
QCBwdWJsaWM6CiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0OwogICAgIENhY2hl
UG9saWN5IHN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdDsKIAotICAgIHZvaWQgZGlkRmly
c3RMYXlvdXQoKTsKLSAgICBib29sIGZpcnN0TGF5b3V0RG9uZSgpIGNvbnN0OwotCiAgICAgdm9p
ZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKIAogICAgIHZvaWQgbG9hZGVkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKQEAgLTM3MywxNCAr
NDQ4LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIGJvb2wgaXNNYWluUmVz
b3VyY2UsIGJvb2wgY29va2llUG9saWN5VVJMRnJvbVJlcXVlc3QpOwogCi0gICAgLy8gQWxzbyBu
b3QgY29vbC4KLSAgICB2b2lkIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7Ci0KLSAgICB2b2lkIGNs
ZWFyUHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdm9pZCBtYXJrTG9hZENvbXBsZXRlKCk7Ci0gICAg
dm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPik7Ci0gICAg
dm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKTsKLQogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYsIGJvb2wgaXNDb21wbGV0ZSk7CiAKICAgICB2b2lkIHNldExv
YWRUeXBlKEZyYW1lTG9hZFR5cGUpOwpAQCAtMzk3LDEzICs0NjQsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpOwogCi0gICAgdm9pZCBzZXRE
b2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciopOwotICAgIHZvaWQgc2V0UG9saWN5RG9jdW1l
bnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIHNldFByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqKTsKLQotICAgIHZvaWQgc2V0U3RhdGUoRnJhbWVTdGF0
ZSk7Ci0KLSAgICB2b2lkIGNsb3NlT2xkRGF0YVNvdXJjZXMoKTsKICAgICB2b2lkIG9wZW4oQ2Fj
aGVkUGFnZSYpOwogCiAgICAgdm9pZCB1cGRhdGVIaXN0b3J5QWZ0ZXJDbGllbnRSZWRpcmVjdCgp
OwpAQCAtNDEyLDggKzQ3Miw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFJlbG9hZFRv
SGFuZGxlVW5yZWFjaGFibGVVUkwoRG9jdW1lbnRMb2FkZXIqKTsKIAotICAgIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCk7Ci0KICAgICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9j
dW1lbnRMb2FkZXIqLCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOyAvLyBD
YWxscyBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kKICAgICB2b2lkIGxvYWQoRG9j
dW1lbnRMb2FkZXIqKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9hZGVyICAgCiAKQEAgLTQz
MSwxNCArNDg5LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlY3Vyc2l2ZUNoZWNrTG9hZENv
bXBsZXRlKCk7CiAKLSAgICB2b2lkIGRldGFjaENoaWxkcmVuKCk7CiAgICAgdm9pZCBjbG9zZUFu
ZFJlbW92ZUNoaWxkKEZyYW1lKik7CiAKICAgICBGcmFtZSogbG9hZFN1YmZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpOwogCiAgICAgdm9pZCBsb2FkSW5TYW1lRG9jdW1lbnQoY29uc3QgS1VS
TCYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdOYXZpZ2F0
aW9uKTsKIAotICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwogCiAgICAgYm9vbCBj
YW5DYWNoZVBhZ2UoKTsKIApAQCAtNDYzLDIwICs1MTksOCBAQCBwcml2YXRlOgogICAgIG11dGFi
bGUgSGlzdG9yeUNvbnRyb2xsZXIgbV9oaXN0b3J5OwogICAgIG11dGFibGUgUmVzb3VyY2VMb2Fk
Tm90aWZpZXIgbV9ub3RpZmVyOwogCi0gICAgRnJhbWVTdGF0ZSBtX3N0YXRlOwotICAgIEZyYW1l
TG9hZFR5cGUgbV9sb2FkVHlwZTsKIAotICAgIC8vIERvY3VtZW50IGxvYWRlcnMgZm9yIHRoZSB0
aHJlZSBwaGFzZXMgb2YgZnJhbWUgbG9hZGluZy4gTm90ZSB0aGF0IHdoaWxlIAotICAgIC8vIGEg
bmV3IHJlcXVlc3QgaXMgYmVpbmcgbG9hZGVkLCB0aGUgb2xkIGRvY3VtZW50IGxvYWRlciBtYXkg
c3RpbGwgYmUgcmVmZXJlbmNlZC4KLSAgICAvLyBFLmcuIHdoaWxlIGEgbmV3IHJlcXVlc3QgaXMg
aW4gdGhlICJwb2xpY3kiIHN0YXRlLCB0aGUgb2xkIGRvY3VtZW50IGxvYWRlciBtYXkKLSAgICAv
LyBiZSBjb25zdWx0ZWQgaW4gcGFydGljdWxhciBhcyBpdCBtYWtlcyBzZW5zZSB0byBpbXBseSBj
ZXJ0YWluIHNldHRpbmdzIG9uIHRoZSBuZXcgbG9hZGVyLgotICAgIFJlZlB0cjxEb2N1bWVudExv
YWRlcj4gbV9kb2N1bWVudExvYWRlcjsKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcjsKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fcG9s
aWN5RG9jdW1lbnRMb2FkZXI7CiAKLSAgICBib29sIG1fZGVsZWdhdGVJc0hhbmRsaW5nUHJvdmlz
aW9uYWxMb2FkRXJyb3I7Ci0KLSAgICBib29sIG1fZmlyc3RMYXlvdXREb25lOwogICAgIGJvb2wg
bV9xdWlja1JlZGlyZWN0Q29taW5nOwogICAgIGJvb2wgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRp
b247CiAgICAgYm9vbCBtX2luU3RvcEFsbExvYWRlcnM7CkBAIC01MzAsMTAgKzU3NCw2IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZTsKICAgICAKICAgICBT
YW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBt
X2RpZERpc3BhdGNoRGlkQ29tbWl0TG9hZDsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52588</attachid>
            <date>2010-04-05 16:33:55 -0700</date>
            <delta_ts>2010-06-11 10:43:23 -0700</delta_ts>
            <desc>More work in progress</desc>
            <filename>bug-36936-20100405163354.patch</filename>
            <type>text/plain</type>
            <size>34159</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzN2EyZGUyLi4zNGNkNGVjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c3RvcExvYWRpbmcoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kpCiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiB7Ci0gICAgZnJhbWVMb2FkZXIoKS0+
c2V0dXBGb3JSZXBsYWNlKCk7CisgICAgZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRTd2l0Y2hlcigp
LT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogfQogCkBAIC0y
ODIsNyArMjgyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQogCiBib29sIERvY3VtZW50TG9hZGVyOjpkb2VzUHJvZ3Jlc3Np
dmVMb2FkKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFmcmFt
ZUxvYWRlcigpLT5pc1JlcGxhY2luZygpIHx8IE1JTUVUeXBlID09ICJ0ZXh0L2h0bWwiOworICAg
IHJldHVybiAhZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRTd2l0Y2hlcigpLT5pc1JlcGxhY2luZygp
IHx8IE1JTUVUeXBlID09ICJ0ZXh0L2h0bWwiOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpy
ZWNlaXZlZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTMwOSw3ICszMDks
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxhY2VCeU1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbmV3TUlNRVR5cGUpCiAgICAgZnJhbWVMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5n
RG9jdW1lbnQodGhpcyk7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmVuZCgpOwogICAgIAotICAg
IGZyYW1lTG9hZGVyKCktPnNldFJlcGxhY2luZygpOworICAgIGZyYW1lTG9hZGVyKCktPmRvY3Vt
ZW50U3dpdGNoZXIoKS0+c2V0UmVwbGFjaW5nKCk7CiAgICAgbV9nb3RGaXJzdEJ5dGUgPSBmYWxz
ZTsKICAgICAKICAgICBpZiAoZG9lc1Byb2dyZXNzaXZlTG9hZChuZXdNSU1FVHlwZSkpIHsKQEAg
LTM4NSw3ICszODUsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdJbkFQSVNlbnNl
KCkgY29uc3QKIHsKICAgICAvLyBPbmNlIGEgZnJhbWUgaGFzIGxvYWRlZCwgd2Ugbm8gbG9uZ2Vy
IG5lZWQgdG8gY29uc2lkZXIgc3VicmVzb3VyY2VzLAogICAgIC8vIGJ1dCB3ZSBzdGlsbCBuZWVk
IHRvIGNvbnNpZGVyIHN1YmZyYW1lcy4KLSAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c3RhdGUoKSAh
PSBGcmFtZVN0YXRlQ29tcGxldGUpIHsKKyAgICBpZiAoZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRT
d2l0Y2hlcigpLT5sb2FkQ29tcGxldGUoKSkgewogICAgICAgICBpZiAoIW1fcHJpbWFyeUxvYWRD
b21wbGV0ZSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBpZiAoIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAyNDk4ZGVlLi4xOWIzMGU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNzUs
MTAgKzE3NSw3IEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSogZnJhbWUsIEZyYW1l
TG9hZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3BvbGljeUNoZWNrZXIoZnJhbWUpCiAgICAg
LCBtX2hpc3RvcnkoZnJhbWUpCiAgICAgLCBtX25vdGlmZXIoZnJhbWUpCi0gICAgLCBtX3N0YXRl
KEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlKQotICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBl
U3RhbmRhcmQpCi0gICAgLCBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9y
KGZhbHNlKQotICAgICwgbV9maXJzdExheW91dERvbmUoZmFsc2UpCisgICAgLCBtX2RvY3VtZW50
U3dpdGNoZXIoZnJhbWUpCiAgICAgLCBtX3F1aWNrUmVkaXJlY3RDb21pbmcoZmFsc2UpCiAgICAg
LCBtX3NlbnRSZWRpcmVjdE5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAsIG1faW5TdG9wQWxsTG9h
ZGVycyhmYWxzZSkKQEAgLTIwMyw5ICsyMDAsNiBAQCBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIo
RnJhbWUqIGZyYW1lLCBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQogICAgICwgbV9sb2FkaW5n
RnJvbUNhY2hlZFBhZ2UoZmFsc2UpCiAgICAgLCBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZShm
YWxzZSkKICAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hBbGwpCi0jaWZuZGVmIE5ERUJVRwot
ICAgICwgbV9kaWREaXNwYXRjaERpZENvbW1pdExvYWQoZmFsc2UpCi0jZW5kaWYKIHsKIH0KIApA
QCAtMjIwLDI3ICsyMTQsNDkgQEAgRnJhbWVMb2FkZXI6On5GcmFtZUxvYWRlcigpCiAgICAgbV9j
bGllbnQtPmZyYW1lTG9hZGVyRGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6Omlu
aXQoKQorRG9jdW1lbnRTd2l0Y2hlcjo6RG9jdW1lbnRTd2l0Y2hlcihGcmFtZSogZnJhbWUpCisg
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlQ29tbWl0dGVkUGFn
ZSkKKyAgICAsIG1fbG9hZFR5cGUoRnJhbWVMb2FkVHlwZVN0YW5kYXJkKQorICAgICwgbV9kZWxl
Z2F0ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvcihmYWxzZSkKKyAgICAsIG1fZmlyc3RM
YXlvdXREb25lKGZhbHNlKQorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1fZGlkRGlzcGF0Y2hEaWRD
b21taXRMb2FkKGZhbHNlKQorI2VuZGlmCit7Cit9CisKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hlcjo6
aW5pdCgpCiB7Ci0gICAgLy8gdGhpcyBzb21ld2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGlzIG5lZWRl
ZCB0byBnaXZlIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50Ci0gICAgbV9pc0Rp
c3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOwogICAgIG1fY3JlYXRpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCA9IHRydWU7Ci0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9j
bGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChLVVJMKFBhcnNlZFVS
TFN0cmluZywgIiIpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOworICAgIHNldFBvbGljeURv
Y3VtZW50TG9hZGVyKG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+Y3JlYXRlRG9jdW1lbnRM
b2FkZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikpLCBTdWJzdGl0
dXRlRGF0YSgpKS5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3Bv
bGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBzZXRTdGF0ZShGcmFtZVN0YXRlUHJvdmlz
aW9uYWwpOwogICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c2V0UmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZShLVVJMKCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkp
KTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPmZpbmlzaGVkTG9hZGluZygpOwor
fQorCit2b2lkIERvY3VtZW50U3dpdGNoZXI6OmZpbmlzaGVkQ3JlYXRpbmdJbml0aWFsRG9jdW1l
bnQoKQoreworICAgIG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOworfQor
Cit2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKK3sKKyAgICAvLyB0aGlzIHNvbWV3aGF0IG9kZCBz
ZXQgb2Ygc3RlcHMgaXMgbmVlZGVkIHRvIGdpdmUgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkg
ZG9jdW1lbnQKKyAgICBtX2lzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gZmFsc2U7
CisgICAgZG9jdW1lbnRTd2l0Y2hlcigpLT5pbml0KCk7CiAgICAgYmVnaW4oS1VSTCgpLCBmYWxz
ZSk7CiAgICAgZW5kKCk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygp
OwotICAgIG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOworICAgIGRvY3Vt
ZW50U3dpdGNoZXIoKS0+ZmluaXNoZWRDcmVhdGluZ0luaXRpYWxEb2N1bWVudCgpOwogICAgIG1f
ZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCiAgICAgLy8gUHJvcGFnYXRlIHNhbmRib3gg
YXR0cmlidXRlcyB0byB0aGlzIEZyYW1lbG9hZGVyIGFuZCBpdHMgZGVzY2VuZGFudHMuCiAgICAg
dXBkYXRlU2FuZGJveEZsYWdzKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xv
YWRpbmcoYm9vbCBkZWZlcnMpCit2b2lkIERvY3VtZW50U3dpdGNoZXI6OnNldERlZmVyc0xvYWRp
bmcoYm9vbCBkZWZlcnMpCiB7CiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1f
ZG9jdW1lbnRMb2FkZXItPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKQEAgLTI1MSw3ICsyNjcs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogCiAg
ICAgaWYgKCFkZWZlcnMpIHsKICAgICAgICAgbV9mcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+
c3RhcnRUaW1lcigpOwotICAgICAgICBzdGFydENoZWNrQ29tcGxldGVUaW1lcigpOworICAgICAg
ICBtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhcnRDaGVja0NvbXBsZXRlVGltZXIoKTsKICAgICB9CiB9
CiAKQEAgLTU1Miw4ICs1NjgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxv
YWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSwgRGF0YWJhc2VQb2xpYwogICAgICAgICAv
LyBEaXNwYXRjaGluZyB0aGUgdW5sb2FkIGV2ZW50IGNvdWxkIGhhdmUgbWFkZSBtX2ZyYW1lLT5k
b2N1bWVudCgpIG51bGwuCiAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmICFtX2Zy
YW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBy
ZW1vdmUgZXZlbnQgbGlzdGVuZXJzIGZyb20gYSB0cmFuc2l0aW9uYWwgZW1wdHkgZG9jdW1lbnQg
KHNlZSBidWcgMjg3MTYgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgotICAgICAgICAgICAgYm9vbCBr
ZWVwRXZlbnRMaXN0ZW5lcnMgPSBtX2lzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ICYm
IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcgotICAgICAgICAgICAgICAgICYmIG1fZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCkpOworICAgICAgICAgICAgYm9vbCBrZWVwRXZl
bnRMaXN0ZW5lcnMgPSBtX2lzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ICYmIHByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIoKQorICAgICAgICAgICAgICAgICYmIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKHByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkpOwogCiAgICAgICAgICAgICBpZiAoIWtlZXBFdmVudExp
c3RlbmVycykKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW1vdmVBbGxF
dmVudExpc3RlbmVycygpOwpAQCAtNzY2LDEwICs3ODIsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
cmVjZWl2ZWRGaXJzdERhdGEoKQogewogICAgIGJlZ2luKG1fd29ya2luZ1VSTCwgZmFsc2UpOwog
Ci0gICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CisgICAgZG9jdW1lbnRTd2l0Y2hlcigpLT5k
aXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0
c0luQWxsV29ybGRzKCk7Ci0gICAgCi0gICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKKworICAg
IGlmIChkb2N1bWVudExvYWRlcigpKSB7CiAgICAgICAgIFN0cmluZyBwdGl0bGUgPSBtX2RvY3Vt
ZW50TG9hZGVyLT50aXRsZSgpOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRo
ZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuCiAgICAgICAgIGlmICghcHRpdGxlLmlzTnVsbCgpKQpA
QCAtNzgwLDExICs3OTYsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEo
KQogCiAgICAgZG91YmxlIGRlbGF5OwogICAgIFN0cmluZyB1cmw7Ci0gICAgaWYgKCFtX2RvY3Vt
ZW50TG9hZGVyKQorICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChtX2ZyYW1lLT5pblZpZXdTb3VyY2VNb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBpZiAoIXBhcnNlSFRUUFJlZnJlc2gobV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRw
SGVhZGVyRmllbGQoIlJlZnJlc2giKSwgZmFsc2UsIGRlbGF5LCB1cmwpKQorICAgIGlmICghcGFy
c2VIVFRQUmVmcmVzaChkb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZCgiUmVmcmVzaCIpLCBmYWxzZSwgZGVsYXksIHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICh1cmwuaXNFbXB0eSgpKQpAQCAtODY4LDcgKzg4NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmJlZ2luKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBkaXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKTsKICAg
ICBkb2N1bWVudC0+ZG9jTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHNldHRpbmdzICYmIHNl
dHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CiAKLSAgICBpZiAobV9kb2N1bWVu
dExvYWRlcikgeworICAgIGlmIChkb2N1bWVudExvYWRlcigpKSB7CiAgICAgICAgIFN0cmluZyBk
bnNQcmVmZXRjaENvbnRyb2wgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZCgiWC1ETlMtUHJlZmV0Y2gtQ29udHJvbCIpOwogICAgICAgICBpZiAoIWRuc1ByZWZl
dGNoQ29udHJvbC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+cGFyc2VETlNQcmVm
ZXRjaENvbnRyb2xIZWFkZXIoZG5zUHJlZmV0Y2hDb250cm9sKTsKQEAgLTEwMDcsNyArMTAyMyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0SWNvbkxvYWRlcigpCiAKICAgICAvLyBJZiB3ZSdy
ZSBub3QgcmVsb2FkaW5nIGFuZCB0aGUgaWNvbiBkYXRhYmFzZSBkb2Vzbid0IHNheSB0byBsb2Fk
IG5vdyB0aGVuIGJhaWwgYmVmb3JlIHdlIGFjdHVhbGx5IHN0YXJ0IHRoZSBsb2FkCiAgICAgaWYg
KGxvYWRUeXBlKCkgIT0gRnJhbWVMb2FkVHlwZVJlbG9hZCAmJiBsb2FkVHlwZSgpICE9IEZyYW1l
TG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSB7Ci0gICAgICAgIEljb25Mb2FkRGVjaXNpb24gZGVj
aXNpb24gPSBpY29uRGF0YWJhc2UoKS0+bG9hZERlY2lzaW9uRm9ySWNvblVSTCh1cmxTdHJpbmcs
IG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAgICAgICBJY29uTG9hZERlY2lzaW9uIGRlY2lz
aW9uID0gaWNvbkRhdGFiYXNlKCktPmxvYWREZWNpc2lvbkZvckljb25VUkwodXJsU3RyaW5nLCBk
b2N1bWVudExvYWRlcigpKTsKICAgICAgICAgaWYgKGRlY2lzaW9uID09IEljb25Mb2FkTm8pIHsK
ICAgICAgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJGcmFtZUxvYWRlcjo6c3RhcnRJY29uTG9h
ZGVyKCkgLSBUb2xkIG5vdCB0byBsb2FkIHRoaXMgaWNvbiwgY29tbWl0dGluZyBpY29uVVJMICVz
IHRvIGRhdGFiYXNlIGZvciBwYWdlVVJMIG1hcHBpbmciLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRh
KCkpOwogICAgICAgICAgICAgY29tbWl0SWNvblVSTFRvSWNvbkRhdGFiYXNlKHVybCk7CkBAIC0x
NTA5LDExICsxNTI1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmhhbmRsZUZhbGxiYWNrQ29udGVu
dCgpCiAgICAgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihvd25lciktPnJlbmRlckZh
bGxiYWNrQ29udGVudCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpwcm92aXNpb25hbExvYWRT
dGFydGVkKCkKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hlcjo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgp
CiB7ICAgIAogICAgIG1fZmlyc3RMYXlvdXREb25lID0gZmFsc2U7CiAgICAgbV9mcmFtZS0+cmVk
aXJlY3RTY2hlZHVsZXIoKS0+Y2FuY2VsKHRydWUpOwotICAgIG1fY2xpZW50LT5wcm92aXNpb25h
bExvYWRTdGFydGVkKCk7CisgICAgbV9mcmFtZS0+Y2xpZW50KCktPnByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQoKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlcjo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUo
KQpAQCAtMTU2Myw4ICsxNTc5LDggQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2FuQ2FjaGVQYWdlQ29u
dGFpbmluZ1RoaXNGcmFtZSgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
ICAgICAgICAgCi0gICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXIKLSAgICAgICAgJiYgbV9kb2N1
bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKQorICAgIHJldHVybiBkb2N1
bWVudExvYWRlcigpCisgICAgICAgICYmIGRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVudEVy
cm9yKCkuaXNOdWxsKCkKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGV2ZXIgY2hhbmdlIHRoaXMg
c28gdGhhdCBmcmFtZXMgd2l0aCBwbHVnLWlucyB3aWxsIGJlIGNhY2hlZCwKICAgICAgICAgLy8g
d2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBmcmFtZXMgdGhhdCBoYXZl
IG91dHN0YW5kaW5nIE5QT2JqZWN0cwogICAgICAgICAvLyAob2JqZWN0cyBjcmVhdGVkIGJ5IHRo
ZSBwbHVnLWluKS4gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIHBhdXNlL3Jlc3VtZSBhIE5ldHNj
YXBlIHBsdWctaW4sCkBAIC0xNjUyLDcgKzE2NjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2dD
YW5DYWNoZVBhZ2VEZWNpc2lvbigpCiAgICAgLy8gT25seSBib3RoZXIgbG9nZ2luZyBmb3IgbWFp
biBmcmFtZXMgdGhhdCBoYXZlIGFjdHVhbGx5IGxvYWRlZCBhbmQgaGF2ZSBjb250ZW50LgogICAg
IGlmIChtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBLVVJMIGN1cnJlbnRVUkwgPSBtX2RvY3VtZW50TG9hZGVyID8gbV9kb2N1bWVudExvYWRlci0+
dXJsKCkgOiBLVVJMKCk7CisgICAgS1VSTCBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIoKSA/
IGRvY3VtZW50TG9hZGVyKCktPnVybCgpIDogS1VSTCgpOwogICAgIGlmIChjdXJyZW50VVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjkyLDEyICsxNzA4LDEyIEBAIGJvb2wg
RnJhbWVMb2FkZXI6OmxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihpbnQgaW5kZW50TGV2ZWwpCiAg
ICAgLy8gT25seSBib3RoZXIgbG9nZ2luZyBmb3IgZnJhbWVzIHRoYXQgaGF2ZSBhY3R1YWxseSBs
b2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAobV9jcmVhdGluZ0luaXRpYWxFbXB0eURv
Y3VtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgS1VSTCBjdXJyZW50VVJMID0gbV9k
b2N1bWVudExvYWRlciA/IG1fZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgpOworICAgIEtV
UkwgY3VycmVudFVSTCA9IGRvY3VtZW50TG9hZGVyKCkgPyBkb2N1bWVudExvYWRlcigpLT51cmwo
KSA6IEtVUkwoKTsKICAgICBpZiAoY3VycmVudFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFBDTE9HKCIrLS0tIik7Ci0gICAgS1VSTCBuZXdVUkwgPSBtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIgPyBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnVybCgp
IDogS1VSTCgpOworICAgIEtVUkwgbmV3VVJMID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
ID8gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsKICAgICBpZiAo
IW5ld1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgZnJhbWUg
Y2FuIGJlIGNhY2hlZCBuYXZpZ2F0aW5nIGZyb20gKCVzKSB0byAoJXMpOiIsIGN1cnJlbnRVUkwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbmV3VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIGVsc2UKQEAgLTE4OTAsNyArMTkwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBhcmVG
b3JMb2FkU3RhcnQoKQogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCit2b2lkIERv
Y3VtZW50U3dpdGNoZXI6OnNldHVwRm9yUmVwbGFjZSgpCiB7CiAgICAgc2V0U3RhdGUoRnJhbWVT
dGF0ZVByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgPSBtX2Rv
Y3VtZW50TG9hZGVyOwpAQCAtMjAwMCw3ICsyMDE2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFVSTChjb25zdCBLVVJMJiBuZXdVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0
cmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4g
b2xkRG9jdW1lbnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOworICAgIFJlZlB0cjxEb2N1bWVu
dExvYWRlcj4gb2xkRG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudExvYWRlcigpOwogCiAgICAgYm9v
bCBzYW1lVVJMID0gc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQobmV3VVJMKTsKICAgICAK
QEAgLTIwMTksOCArMjAzNSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgS1VS
TCYgbmV3VVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpCiAgICAgICAgIGxv
YWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdM
b2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7
CiAgICAgICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKLSAgICAgICAgICAg
IGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCi0gICAgICAgICAgICAgICAgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLT5zZXRJc0NsaWVudFJlZGlyZWN0KHRydWUpOworICAgICAg
ICAgICAgaWYgKHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgICAgICAgICBw
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnNldElzQ2xpZW50UmVkaXJlY3QodHJ1ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoc2FtZVVSTCkKICAgICAgICAgICAgIC8vIEV4YW1wbGUgb2YgdGhp
cyBjYXNlIGFyZSBzaXRlcyB0aGF0IHJlbG9hZCB0aGUgc2FtZSBVUkwgd2l0aCBhIGRpZmZlcmVu
dCBjb29raWUKICAgICAgICAgICAgIC8vIGRyaXZpbmcgdGhlIGdlbmVyYXRlZCBjb250ZW50LCBv
ciBhIG1hc3RlciBmcmFtZSB3aXRoIGxpbmtzIHRoYXQgZHJpdmUgYSB0YXJnZXQKQEAgLTIxMzcs
NyArMjE1Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgICAgICAgICBsb2FkZXIt
PnNldE92ZXJyaWRlRW5jb2RpbmcocGFyZW50LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
b3ZlcnJpZGVFbmNvZGluZygpKTsKIAogICAgICAgICBwb2xpY3lDaGVja2VyKCktPnN0b3BDaGVj
aygpOwotICAgICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIpOworICAgICAgICBk
b2N1bWVudFN3aXRjaGVyKCktPnNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlcik7CiAgICAg
ICAgIGlmIChsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBsb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbihuZXdVUkwsIHBv
bGljeUNoZWNrZXIoKS0+bG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbikpOwogCkBAIC0yMjAx
LDYgKzIyMTcsOCBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxvYWRUb0hhbmRsZVVucmVh
Y2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIpCiAgICAgaWYgKCFpc0JhY2tGb3J3
YXJkTG9hZFR5cGUocG9saWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisKKy8vIFhZWlpZOiBTaG91bGQgYmUgaW4gTWFjaGluZT8KICAgICAvLyBXZSBv
bmx5IHRyZWF0IHVucmVhY2hhYmxlVVJMcyBzcGVjaWFsbHkgZHVyaW5nIHRoZSBkZWxlZ2F0ZSBj
YWxsYmFja3MKICAgICAvLyBmb3IgcHJvdmlzaW9uYWwgbG9hZCBlcnJvcnMgYW5kIG5hdmlnYXRp
b24gcG9saWN5IGRlY2lzaW9ucy4gVGhlIGZvcm1lcgogICAgIC8vIGNhc2UgaGFuZGxlcyB3ZWxs
LWZvcm1lZCBVUkxzIHRoYXQgY2FuJ3QgYmUgbG9hZGVkLCBhbmQgdGhlIGxhdHRlcgpAQCAtMjIy
OCw3ICsyMjQ2LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2Rp
bmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJl
dHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9h
ZGVyID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIFN1YnN0aXR1dGVE
YXRhKCkpOwotICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSk7CisgICAg
Ly8gWFlaWlk6IFRoaXMgc2VlbXMgd3JvbmcuCisgICAgZG9jdW1lbnRTd2l0Y2hlcigpLT5zZXRQ
b2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCkpOwogCiAgICAgbG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIApAQCAtMjM0OCwxMiArMjM2NywyNiBAQCBib29sIEZy
YW1lTG9hZGVyOjpzaG91bGRBbGxvd05hdmlnYXRpb24oRnJhbWUqIHRhcmdldEZyYW1lKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmdT
dWJmcmFtZXMoKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpzdG9wTG9hZGluZ1N1YmZyYW1lcygp
CiB7CiAgICAgZm9yIChSZWZQdHI8RnJhbWU+IGNoaWxkID0gbV9mcmFtZS0+dHJlZSgpLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCiAg
ICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKIH0KIAordm9pZCBEb2N1
bWVudFN3aXRjaGVyOjpzdG9wTG9hZGluZygpCit7CisgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMo
KTsKKyAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQorICAgICAgICBtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKGRhdGFiYXNlUG9saWN5KTsKKyAgICBp
ZiAobV9kb2N1bWVudExvYWRlcikKKyAgICAgICAgbV9kb2N1bWVudExvYWRlci0+c3RvcExvYWRp
bmcoZGF0YWJhc2VQb2xpY3kpOworCisgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigw
KTsKKworICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQorICAgICAgICBtX2RvY3VtZW50TG9hZGVy
LT5jbGVhckFyY2hpdmVSZXNvdXJjZXMoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFs
bExvYWRlcnMoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kpCiB7CiAgICAgQVNTRVJUKCFt
X2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgp
KTsKQEAgLTIzNjcsMTcgKzI0MDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVy
cyhEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSkKICAgICBtX2luU3RvcEFsbExvYWRlcnMg
PSB0cnVlOwogCiAgICAgcG9saWN5Q2hlY2tlcigpLT5zdG9wQ2hlY2soKTsKLQotICAgIHN0b3BM
b2FkaW5nU3ViZnJhbWVzKCk7Ci0gICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikK
LSAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZyhkYXRhYmFz
ZVBvbGljeSk7Ci0gICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPnN0b3BMb2FkaW5nKGRhdGFiYXNlUG9saWN5KTsKLQotICAgIHNldFByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIoMCk7Ci0gICAgCi0gICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCi0gICAg
ICAgIG1fZG9jdW1lbnRMb2FkZXItPmNsZWFyQXJjaGl2ZVJlc291cmNlcygpOworICAgIGRvY3Vt
ZW50U3dpdGNoZXIoKS0+c3RvcExvYWRpbmcoKQogCiAgICAgbV9jaGVja1RpbWVyLnN0b3AoKTsK
IApAQCAtMjM5NCw3ICsyNDE3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEZvclVzZXJDYW5j
ZWwoYm9vbCBkZWZlckNoZWNrTG9hZENvbXBsZXRlKQogICAgICAgICBjaGVja0xvYWRDb21wbGV0
ZSgpOwogfQogCi1Eb2N1bWVudExvYWRlciogRnJhbWVMb2FkZXI6OmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCkgY29uc3QKK0RvY3VtZW50TG9hZGVyKiBEb2N1bWVudFN3aXRjaGVyOjphY3RpdmVEb2N1
bWVudExvYWRlcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zp
c2lvbmFsKQogICAgICAgICByZXR1cm4gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgp
OwpAQCAtMjQwMywxOCArMjQyNiwxOCBAQCBEb2N1bWVudExvYWRlciogRnJhbWVMb2FkZXI6OmFj
dGl2ZURvY3VtZW50TG9hZGVyKCkgY29uc3QKIAogYm9vbCBGcmFtZUxvYWRlcjo6aXNMb2FkaW5n
KCkgY29uc3QKIHsKLSAgICBEb2N1bWVudExvYWRlciogZG9jTG9hZGVyID0gYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKTsKKyAgICBEb2N1bWVudExvYWRlciogZG9jTG9hZGVyID0gZG9jdW1lbnRTd2l0
Y2hlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jTG9hZGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGRvY0xvYWRlci0+aXNMb2FkaW5nTWFpblJl
c291cmNlKCkgfHwgZG9jTG9hZGVyLT5pc0xvYWRpbmdTdWJyZXNvdXJjZXMoKSB8fCBkb2NMb2Fk
ZXItPmlzTG9hZGluZ1BsdWdJbnMoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6ZnJhbWVIYXNM
b2FkZWQoKSBjb25zdAorYm9vbCBEb2N1bWVudFN3aXRjaGVyOjpmcmFtZUhhc0xvYWRlZCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkIHx8ICht
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgJiYgIW1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCk7IAogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVu
dExvYWRlciogbG9hZGVyKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpzZXREb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmICghbG9hZGVyICYmICFtX2RvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CkBAIC0yNDMwLDcgKzI0NTMsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAg
IG1fZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXI7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldFBv
bGljeURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIERvY3VtZW50
U3dpdGNoZXI6OnNldFBvbGljeURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiB7CiAgICAgaWYgKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIgPT0gbG9hZGVyKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDQ2LDcgKzI0NjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRQb2xpY3lE
b2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIG1fcG9saWN5RG9jdW1l
bnRMb2FkZXIgPSBsb2FkZXI7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldFByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgRG9jdW1lbnRTd2l0
Y2hlcjo6c2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVy
KQogewogICAgIEFTU0VSVCghbG9hZGVyIHx8ICFtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIp
OwogICAgIEFTU0VSVCghbG9hZGVyIHx8IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA9PSB0aGlzKTsK
QEAgLTI0NjIsMTAgKzI0ODUsMTAgQEAgZG91YmxlIEZyYW1lTG9hZGVyOjp0aW1lT2ZMYXN0Q29t
cGxldGVkTG9hZCgpCiAgICAgcmV0dXJuIHN0b3JlZFRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQoteyAg
ICAKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hlcjo6c2V0U3RhdGUoRnJhbWVTdGF0ZSBuZXdTdGF0ZSkK
K3sKICAgICBtX3N0YXRlID0gbmV3U3RhdGU7Ci0gICAgCisKICAgICBpZiAobmV3U3RhdGUgPT0g
RnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICAgICBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7
CiAgICAgZWxzZSBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CkBAIC0yNDc2
LDcgKzI0OTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0
YXRlKQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQo
KQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAg
c2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigwKTsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkKQEAgLTI0ODQsMTIgKzI1MDcsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2xlYXJQcm92aXNpb25hbExvYWQoKQogICAgIHNldFN0YXRlKEZyYW1lU3RhdGVDb21wbGV0ZSk7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6Om1hcmtMb2FkQ29tcGxldGUoKQordm9pZCBEb2N1bWVu
dFN3aXRjaGVyOjptYXJrTG9hZENvbXBsZXRlKCkKIHsKICAgICBzZXRTdGF0ZShGcmFtZVN0YXRl
Q29tcGxldGUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQo
UGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBwcnBDYWNoZWRQYWdlKQordm9pZCBEb2N1bWVudFN3aXRj
aGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBwcnBDYWNo
ZWRQYWdlKQogewogICAgIFJlZlB0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlID0gcHJwQ2FjaGVk
UGFnZTsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcjsKQEAgLTI1NjUsNyArMjU4OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1p
dFByb3Zpc2lvbmFsTG9hZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+IHBycENhY2hlZFBhZ2UpCiAg
ICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoUGFzc1Jl
ZlB0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjp0cmFu
c2l0aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlKQogewog
ICAgIEFTU0VSVChtX2NsaWVudC0+aGFzV2ViVmlldygpKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwpOwpAQCAtMjcyMCwxMyArMjc0MywxMyBAQCBib29sIEZy
YW1lTG9hZGVyOjpzaG91bGRSZWxvYWQoY29uc3QgS1VSTCYgY3VycmVudFVSTCwgY29uc3QgS1VS
TCYgZGVzdGluYXRpb25VUgogICAgIHJldHVybiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRp
ZmllcihjdXJyZW50VVJMLCBkZXN0aW5hdGlvblVSTCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6
OmNsb3NlT2xkRGF0YVNvdXJjZXMoKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpjbG9zZU9sZERh
dGFTb3VyY2VzKCkKIHsKICAgICAvLyBGSVhNRTogSXMgaXQgaW1wb3J0YW50IGZvciB0aGlzIHRy
YXZlcnNhbCB0byBiZSBwb3N0b3JkZXIgaW5zdGVhZCBvZiBwcmVvcmRlcj8KICAgICAvLyBJZiBz
bywgYWRkIGhlbHBlcnMgZm9yIHBvc3RvcmRlciB0cmF2ZXJzYWwsIGFuZCB1c2UgdGhlbS4gSWYg
bm90LCB0aGVuIGxldHMgbm90CiAgICAgLy8gdXNlIGEgcmVjdXJzaXZlIGFsZ29yaXRobSBoZXJl
LgogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNo
aWxkLT5sb2FkZXIoKS0+Y2xvc2VPbGREYXRhU291cmNlcygpOworICAgICAgICBjaGlsZC0+bG9h
ZGVyKCktPmRvY3VtZW50U3dpdGNoZXIoKS0+Y2xvc2VPbGREYXRhU291cmNlcygpOwogICAgIAog
ICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hXaWxs
Q2xvc2UoKTsKQEAgLTI4MDgsNyArMjgzMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2Fj
aGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKIAogYm9vbCBGcmFtZUxvYWRlcjo6aXNTdG9wcGlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBp
bmcoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRTd2l0Y2hlcigpLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5pc1N0b3BwaW5nKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmZpbmlzaGVkTG9hZGlu
ZygpCkBAIC0yOTA1LDEyICsyOTI4LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmZpbmlzaGVkTG9h
ZGluZ0RvY3VtZW50KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgYWRkRGF0YShtYWluUmVz
b3VyY2UtPmRhdGEoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS0+c2l6ZSgpKTsKIH0K
IAotYm9vbCBGcmFtZUxvYWRlcjo6aXNSZXBsYWNpbmcoKSBjb25zdAorYm9vbCBEb2N1bWVudFN3
aXRjaGVyOjppc1JlcGxhY2luZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbG9hZFR5cGUgPT0g
RnJhbWVMb2FkVHlwZVJlcGxhY2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldFJlcGxhY2lu
ZygpCit2b2lkIERvY3VtZW50U3dpdGNoZXI6OnNldFJlcGxhY2luZygpCiB7CiAgICAgbV9sb2Fk
VHlwZSA9IEZyYW1lTG9hZFR5cGVSZXBsYWNlOwogfQpAQCAtMjk3Niw3ICsyOTk5LDcgQEAgQ2Fj
aGVQb2xpY3kgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdAogICAg
IHJldHVybiBDYWNoZVBvbGljeVZlcmlmeTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50LT5oYXNXZWJW
aWV3KCkpOwogCkBAIC0zMTA4LDE0ICszMTMxLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRp
bnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oKQogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXItPnVwZGF0ZUxvYWRpbmcoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkRmly
c3RMYXlvdXQoKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpkaWRGaXJzdExheW91dCgpCiB7CiAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIGlmIChpc0JhY2tG
b3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgJiYgcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpCi0g
ICAgICAgICAgICBoaXN0b3J5KCktPnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgp
OworICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cmVzdG9yZVNjcm9s
bFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CiAKICAgICBtX2ZpcnN0TGF5b3V0RG9uZSA9IHRydWU7
Ci0gICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKKyAgICBtX2ZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlcjo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKQEAgLTMxMjMsMTMg
KzMxNDYsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KCkKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKK3ZvaWQg
RG9jdW1lbnRTd2l0Y2hlcjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKIHsKICAgICAvLyBOb3RlOiBD
YW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogCi0gICAgbV9jbGllbnQtPmZyYW1lTG9hZENv
bXBsZXRlZCgpOworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZnJhbWVMb2FkQ29t
cGxldGVkKCk7CiAKLSAgICBoaXN0b3J5KCktPnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgp
OworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnVwZGF0ZUZvckZyYW1lTG9hZENv
bXBsZXRlZCgpOwogCiAgICAgLy8gQWZ0ZXIgYSBjYW5jZWxlZCBwcm92aXNpb25hbCBsb2FkLCBm
aXJzdExheW91dERvbmUgaXMgZmFsc2UuCiAgICAgLy8gUmVzZXQgaXQgdG8gdHJ1ZSBpZiB3ZSdy
ZSBkaXNwbGF5aW5nIGEgcGFnZS4KQEAgLTMxMzcsMTIgKzMxNjAsMTIgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKICAgICAgICAgbV9maXJzdExheW91dERvbmUgPSB0
cnVlOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpmaXJzdExheW91dERvbmUoKSBjb25zdAorYm9v
bCBEb2N1bWVudFN3aXRjaGVyOjpmaXJzdExheW91dERvbmUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2ZpcnN0TGF5b3V0RG9uZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRy
ZW4oKQordm9pZCBEb2N1bWVudFN3aXRjaGVyOjpkZXRhY2hDaGlsZHJlbigpCiB7CiAgICAgLy8g
RklYTUU6IElzIGl0IHJlYWxseSBuZWNlc3NhcnkgdG8gZG8gdGhpcyBpbiByZXZlcnNlIG9yZGVy
PwogICAgIEZyYW1lKiBwcmV2aW91czsKQEAgLTMxNjcsMTUgKzMxOTAsMTUgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2xvc2VBbmRSZW1vdmVDaGlsZChGcmFtZSogY2hpbGQpCiB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWN1cnNpdmVDaGVja0xvYWRDb21wbGV0ZSgpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxG
cmFtZT4sIDEwPiBmcmFtZXM7Ci0gICAgCisKICAgICBmb3IgKFJlZlB0cjxGcmFtZT4gZnJhbWUg
PSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7Ci0gICAg
CisKICAgICB1bnNpZ25lZCBzaXplID0gZnJhbWVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQogICAgICAgICBmcmFtZXNbaV0tPmxvYWRlcigpLT5yZWN1
cnNpdmVDaGVja0xvYWRDb21wbGV0ZSgpOwotICAgIAotICAgIGNoZWNrTG9hZENvbXBsZXRlRm9y
VGhpc0ZyYW1lKCk7CisKKyAgICBkb2N1bWVudFN3aXRjaGVyKCktPmNoZWNrTG9hZENvbXBsZXRl
Rm9yVGhpc0ZyYW1lKCk7CiB9CiAKIC8vIENhbGxlZCBldmVyeSB0aW1lIGEgcmVzb3VyY2UgaXMg
Y29tcGxldGVseSBsb2FkZWQsIG9yIGFuIGVycm9yIGlzIHJlY2VpdmVkLgpAQCAtMzIzNSw3ICsz
MjU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCgpCiAgICAgY2xvc2VV
UkwoKTsKICAgICBzdG9wQWxsTG9hZGVycygpOwogICAgIGhpc3RvcnkoKS0+c2F2ZVNjcm9sbFBv
c2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSk7Ci0gICAg
ZGV0YWNoQ2hpbGRyZW4oKTsKKyAgICBkb2N1bWVudFN3aXRjaGVyKCktPmRldGFjaENoaWxkcmVu
KCk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKQpAQCAtMzI1MywxMCArMzI3NiwxNSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRh
Y2hGcm9tUGFyZW50KCkKICAgICB9CiB9CiAKK3ZvaWQgRG9jdW1lbnRTd2l0Y2hlcjo6Y2xlYXJE
b2N1bWVudExvYWRlcigpCit7CisgICAgc2V0RG9jdW1lbnRMb2FkZXIoMCk7Cit9CisKIHZvaWQg
RnJhbWVMb2FkZXI6OmRldGFjaFZpZXdzQW5kRG9jdW1lbnRMb2FkZXIoKQogewogICAgIG1fY2xp
ZW50LT5kZXRhY2hlZEZyb21QYXJlbnQyKCk7Ci0gICAgc2V0RG9jdW1lbnRMb2FkZXIoMCk7Cisg
ICAgZG9jdW1lbnRTd2l0Y2hlcigpLT5jbGVhckRvY3VtZW50TG9hZGVyKCk7CiAgICAgbV9jbGll
bnQtPmRldGFjaGVkRnJvbVBhcmVudDMoKTsKIH0KICAgICAKQEAgLTM1NDAsNyArMzU2OCw4IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzCiAgICAgICAgIGlmIChtX3F1aWNrUmVkaXJlY3RDb21p
bmcpCiAgICAgICAgICAgICBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoZmFsc2Up
OwogCi0gICAgICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKDApOworICAgICAgICAvLyBYWVpa
WTogV2hhdCBhcmUgd2UgZG9pbmcgd2l0aCB0aGlzIGhlcmU/CisgICAgICAgIGRvY3VtZW50U3dp
dGNoZXIoKS0+c2V0UG9saWN5RG9jdW1lbnRMb2FkZXIoMCk7CiAKICAgICAgICAgLy8gSWYgdGhl
IG5hdmlnYXRpb24gcmVxdWVzdCBjYW1lIGZyb20gdGhlIGJhY2svZm9yd2FyZCBtZW51LCBhbmQg
d2UgcHVudCBvbiBpdCwgd2UgaGF2ZSB0aGUgCiAgICAgICAgIC8vIHByb2JsZW0gdGhhdCB3ZSBo
YXZlIG9wdGltaXN0aWNhbGx5IG1vdmVkIHRoZSBiL2YgY3Vyc29yIGFscmVhZHksIHNvIG1vdmUg
aXQgYmFjay4gIEZvciBzYW5pdHksIApAQCAtMzU3Miw2ICszNjAxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFBhc3MKICAgICB9CiAjZW5kaWYKIAorLy8gWFlaWlk6IFNob3VsZCBiZSBpbiBNYWNo
aW5lPwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExv
YWRlci5nZXQoKSk7CiAgICAgbV9sb2FkVHlwZSA9IHR5cGU7CiAgICAgc2V0U3RhdGUoRnJhbWVT
dGF0ZVByb3Zpc2lvbmFsKTsKQEAgLTM3MDYsOCArMzczNiw4IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OmxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpCiAgICAgbV9sb2FkaW5nRnJvbUNh
Y2hlZFBhZ2UgPSB0cnVlOwogCiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnNldENvbW1pdHRlZCh0
cnVlKTsKLSAgICBjb21taXRQcm92aXNpb25hbExvYWQoY2FjaGVkUGFnZSk7Ci0gICAgCisgICAg
ZG9jdW1lbnRTd2l0Y2hlcigpLT5jb21taXRQcm92aXNpb25hbExvYWQoY2FjaGVkUGFnZSk7CisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3Nyw3ICs0MTA3LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICB9CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCit2b2lkIERvY3VtZW50
U3dpdGNoZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDA4Niw3ICs0MTE2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKICAgICBtX2RpZERp
c3BhdGNoRGlkQ29tbWl0TG9hZCA9IHRydWU7CiAjZW5kaWYKIAotICAgIG1fY2xpZW50LT5kaXNw
YXRjaERpZENvbW1pdExvYWQoKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUyMTg3
NDQuLmM1MWNlMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
IGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtODcsNiArODcsODIgQEAgc3RydWN0
IFdpbmRvd0ZlYXR1cmVzOwogCiBib29sIGlzQmFja0ZvcndhcmRMb2FkVHlwZShGcmFtZUxvYWRU
eXBlKTsKIAorY2xhc3MgRG9jdW1lbnRTd2l0Y2hlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Citw
dWJsaWM6CisgICAgRG9jdW1lbnRTd2l0Y2hlcihGcmFtZSopOworCisgICAgdm9pZCBpbml0KCk7
CisKKworICAgIHZvaWQgZmluaXNoZWRDcmVhdGluZ0luaXRpYWxEb2N1bWVudCgpOworCisKKyAg
ICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsTG9hZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+KTsKKyAg
ICB2b2lkIHN0b3BMb2FkaW5nKCk7CisKKyAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7
CisgICAgdm9pZCBjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpOworCisgICAgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoKTsKKworICAgIGJvb2wgZnJhbWVIYXNMb2FkZWQoKSBjb25z
dDsKKworICAgIEZyYW1lU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Cisg
ICAgYm9vbCBsb2FkQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEZyYW1lU3Rh
dGVDb21wbGV0ZTsgfQorCisgICAgRG9jdW1lbnRMb2FkZXIqIGFjdGl2ZURvY3VtZW50TG9hZGVy
KCkgY29uc3Q7CisKKyAgICB2b2lkIGNsZWFyRG9jdW1lbnRMb2FkZXIoKTsKKworICAgIERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCk7IH0KKyAgICBEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKTsgfQor
CisgICAgRG9jdW1lbnRMb2FkZXIqIHBvbGljeURvY3VtZW50TG9hZGVyKCkgY29uc3QgeyByZXR1
cm4gbV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqKTsKKworICAgIC8vIFhZWlpZOiBOZWVkIHRvIGxv
b2sgbW9yZSBjbG9zZWx5IGF0IGludGVyYWN0aW9uIHdpdGggRG9jdW1lbnRMb2FkZXIuCisgICAg
dm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKKyAgICBib29sIGlzUmVwbGFjaW5nKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRSZXBsYWNpbmcoKTsKKworICAgIC8vIFRoaXMgaXMgZGlzZ3VzdGluZywgYnV0
IG91ciBmaXJzdCBsYXlvdXQgc3RhdGUgaXMgdGllZCB1cCBpbiBzd2l0Y2hpbmcgRnJhbWVMb2Fk
ZXJzLgorICAgIHZvaWQgZGlkRmlyc3RMYXlvdXQoKTsKKyAgICBib29sIGZpcnN0TGF5b3V0RG9u
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHZvaWQgZGV0YWNoQ2hpbGRyZW4oKTsKKyAgICB2
b2lkIG1hcmtMb2FkQ29tcGxldGUoKTsKKyAgICB2b2lkIHNldERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKik7CisgICAgdm9pZCBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKik7CisgICAgdm9pZCBzZXRTdGF0ZShGcmFtZVN0YXRlKTsKKyAgICB2b2lkIGNs
b3NlT2xkRGF0YVNvdXJjZXMoKTsKKyAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZChQYXNz
UmVmUHRyPENhY2hlZFBhZ2U+KTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7Cisg
ICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7CisgICAgdm9pZCBmcmFtZUxvYWRDb21w
bGV0ZWQoKTsKKworICAgIEZyYW1lKiBtX2ZyYW1lOworCisgICAgRnJhbWVTdGF0ZSBtX3N0YXRl
OworICAgIEZyYW1lTG9hZFR5cGUgbV9sb2FkVHlwZTsKKworICAgIGJvb2wgbV9jcmVhdGluZ0lu
aXRpYWxFbXB0eURvY3VtZW50OworICAgIGJvb2wgbV9jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVu
dExvYWQ7CisgICAgYm9vbCBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9y
OworICAgIGJvb2wgbV9maXJzdExheW91dERvbmU7CisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wg
bV9kaWREaXNwYXRjaERpZENvbW1pdExvYWQ7CisjZW5kaWYKKworICAgIC8vIERvY3VtZW50IGxv
YWRlcnMgZm9yIHRoZSB0aHJlZSBwaGFzZXMgb2YgZnJhbWUgbG9hZGluZy4gTm90ZSB0aGF0IHdo
aWxlIAorICAgIC8vIGEgbmV3IHJlcXVlc3QgaXMgYmVpbmcgbG9hZGVkLCB0aGUgb2xkIGRvY3Vt
ZW50IGxvYWRlciBtYXkgc3RpbGwgYmUgcmVmZXJlbmNlZC4KKyAgICAvLyBFLmcuIHdoaWxlIGEg
bmV3IHJlcXVlc3QgaXMgaW4gdGhlICJwb2xpY3kiIHN0YXRlLCB0aGUgb2xkIGRvY3VtZW50IGxv
YWRlciBtYXkKKyAgICAvLyBiZSBjb25zdWx0ZWQgaW4gcGFydGljdWxhciBhcyBpdCBtYWtlcyBz
ZW5zZSB0byBpbXBseSBjZXJ0YWluIHNldHRpbmdzIG9uIHRoZSBuZXcgbG9hZGVyLgorICAgIFJl
ZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsKKyAgICBSZWZQdHI8RG9jdW1l
bnRMb2FkZXI+IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcjsKKyAgICBSZWZQdHI8RG9jdW1l
bnRMb2FkZXI+IG1fcG9saWN5RG9jdW1lbnRMb2FkZXI7Cit9OworCiBjbGFzcyBGcmFtZUxvYWRl
ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgRnJhbWVMb2FkZXIoRnJhbWUq
LCBGcmFtZUxvYWRlckNsaWVudCopOwpAQCAtOTQsNiArMTcwLDkgQEAgcHVibGljOgogCiAgICAg
dm9pZCBpbml0KCk7CiAKKyAgICAvLyBPT1BTOiBQdXQgYmFjayBpbiB0aGUgcmlnaHQgcGxhY2Uu
CisgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKKwogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFBvbGljeUNoZWNrZXIqIHBvbGljeUNoZWNrZXIo
KSBjb25zdCB7IHJldHVybiAmbV9wb2xpY3lDaGVja2VyOyB9CkBAIC0xMDUsNyArMTg0LDYgQEAg
cHVibGljOgogICAgIC8vIHRoZSBsb2dpYyBieSBleHRyYWN0aW5nIGNvbW1vbiBjb2RlIHBhdGhz
LgogCiAgICAgdm9pZCBwcmVwYXJlRm9yTG9hZFN0YXJ0KCk7Ci0gICAgdm9pZCBzZXR1cEZvclJl
cGxhY2UoKTsKICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZUJ5TUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBuZXdNSU1FVHlwZSk7CiAKICAgICB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGcmFtZSopOwpAQCAtMTMzLDE5ICsyMTEsMjUg
QEAgcHVibGljOgogICAgIHZvaWQgc3RvcEZvclVzZXJDYW5jZWwoYm9vbCBkZWZlckNoZWNrTG9h
ZENvbXBsZXRlID0gZmFsc2UpOwogCiAgICAgYm9vbCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX2lzTG9hZGluZ01haW5SZXNvdXJjZTsgfQotICAgIGJvb2wgaXNMb2Fk
aW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUhhc0xvYWRlZCgpIGNvbnN0OwogCiAgICAgaW50
IG51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyhib29sIHJlY3Vyc2UpIGNvbnN0OwogICAgIFN0
cmluZyByZWZlcnJlcigpIGNvbnN0OwogICAgIFN0cmluZyBvdXRnb2luZ1JlZmVycmVyKCkgY29u
c3Q7CiAgICAgU3RyaW5nIG91dGdvaW5nT3JpZ2luKCkgY29uc3Q7CiAKLSAgICBEb2N1bWVudExv
YWRlciogYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBjb25zdDsKLSAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyB9
Ci0gICAgRG9jdW1lbnRMb2FkZXIqIHBvbGljeURvY3VtZW50TG9hZGVyKCkgY29uc3QgeyByZXR1
cm4gbV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKTsgfQotICAgIERvY3VtZW50TG9hZGVyKiBw
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLmdldCgpOyB9Ci0gICAgRnJhbWVTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KKyAgICBEb2N1bWVudFN3aXRjaGVyKiBkb2N1bWVudFN3aXRjaGVyKCkg
Y29uc3QgeyByZXR1cm4gJm1fZG9jdW1lbnRTd2l0Y2hlcjsgfQorCisgICAgRG9jdW1lbnRMb2Fk
ZXIqIGFjdGl2ZURvY3VtZW50TG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFN3aXRj
aGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7IH0KKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1l
bnRMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50U3dpdGNoZXIuZG9jdW1lbnRMb2Fk
ZXIoKTsgfQorICAgIERvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFN3aXRjaGVyLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKTsgfQorICAgIC8vIERvY3VtZW50TG9hZGVyKiBwb2xpY3lEb2N1bWVudExvYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRTd2l0Y2hlci5wb2xpY3lEb2N1bWVudExvYWRlcigpOyB9
CisKKyAgICAvLyBJdCdzIHVuZm9ydHVuYXRlIHRoYXQgRnJhbWVMb2FkZXIga25vd3MgYWJvdXQg
bGF5b3V0LCBidXQgdGhpcyBpcyBhbGwgdGllZCB0b2dldGhlciBmb3IgdGhlIG1vbWVudC4KKyAg
ICB2b2lkIGRpZEZpcnN0TGF5b3V0KCkgY29uc3QgeyBtX2RvY3VtZW50U3dpdGNoZXIuZGlkRmly
c3RMYXlvdXQoKTsgfQorICAgIGJvb2wgZmlyc3RMYXlvdXREb25lKCkgY29uc3QgeyByZXR1cm4g
bV9kb2N1bWVudFN3aXRjaGVyLmZpcnN0TGF5b3V0RG9uZSgpOyB9CisKKyAgICBib29sIGZyYW1l
SGFzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFN3aXRjaGVyLmZyYW1lSGFzTG9h
ZGVkKCk7IH0KKwogICAgIHN0YXRpYyBkb3VibGUgdGltZU9mTGFzdENvbXBsZXRlZExvYWQoKTsK
IAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VMb2FkZXIqKTsK
QEAgLTE3OSw4ICsyNjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSgpOwogICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nRG9jdW1lbnQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGNvbW1pdHRlZExvYWQoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKLSAgICBib29sIGlzUmVwbGFjaW5nKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRSZXBsYWNpbmcoKTsKICAgICB2b2lkIHJldmVydFRvUHJvdmlz
aW9uYWwoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbWFpblJlY2Vp
dmVkQ29tcGxldGVFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE5MSw5ICsyNzMsNiBAQCBwdWJsaWM6CiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSgp
IGNvbnN0OwogICAgIENhY2hlUG9saWN5IHN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdDsK
IAotICAgIHZvaWQgZGlkRmlyc3RMYXlvdXQoKTsKLSAgICBib29sIGZpcnN0TGF5b3V0RG9uZSgp
IGNvbnN0OwotCiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKIAog
ICAgIHZvaWQgbG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UqKTsKQEAgLTM0NCw2ICs0MjMsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE9iamVjdENv
bnRlbnRUeXBlIGRlZmF1bHRPYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOwogCisgICAgLy8gT09QUzogUHVibGljPyB4eXp6eQorICAgIHZv
aWQgc3RhcnRDaGVja0NvbXBsZXRlVGltZXIoKTsKKworICAgIAogcHJpdmF0ZToKICAgICBib29s
IGNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUoKTsKICNpZm5kZWYgTkRFQlVHCkBAIC0z
NzMsMTQgKzQ1Niw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhZGRFeHRyYUZpZWxkc1Rv
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBib29sIGlz
TWFpblJlc291cmNlLCBib29sIGNvb2tpZVBvbGljeVVSTEZyb21SZXF1ZXN0KTsKIAotICAgIC8v
IEFsc28gbm90IGNvb2wuCi0gICAgdm9pZCBzdG9wTG9hZGluZ1N1YmZyYW1lcygpOwotCi0gICAg
dm9pZCBjbGVhclByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZvaWQgbWFya0xvYWRDb21wbGV0ZSgp
OwotICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4p
OwotICAgIHZvaWQgZnJhbWVMb2FkQ29tcGxldGVkKCk7Ci0KICAgICB2b2lkIG1haW5SZWNlaXZl
ZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImLCBib29sIGlzQ29tcGxldGUpOwogCiAgICAgdm9p
ZCBzZXRMb2FkVHlwZShGcmFtZUxvYWRUeXBlKTsKQEAgLTM5NywxMyArNDcyLDYgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKTsKIAotICAgIHZv
aWQgc2V0RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIHNldFBvbGlj
eURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBzZXRQcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKik7Ci0KLSAgICB2b2lkIHNldFN0YXRlKEZy
YW1lU3RhdGUpOwotCi0gICAgdm9pZCBjbG9zZU9sZERhdGFTb3VyY2VzKCk7CiAgICAgdm9pZCBv
cGVuKENhY2hlZFBhZ2UmKTsKIAogICAgIHZvaWQgdXBkYXRlSGlzdG9yeUFmdGVyQ2xpZW50UmVk
aXJlY3QoKTsKQEAgLTQxMiw4ICs0ODAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRS
ZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKik7CiAKLSAgICB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwotCiAgICAgdm9pZCBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyKERvY3VtZW50TG9hZGVyKiwgRnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
KTsgLy8gQ2FsbHMgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CiAgICAgdm9pZCBs
b2FkKERvY3VtZW50TG9hZGVyKik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExvYWRlciAgIAog
CkBAIC00MzEsMTQgKzQ5NywxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWN1cnNpdmVDaGVj
a0xvYWRDb21wbGV0ZSgpOwogCi0gICAgdm9pZCBkZXRhY2hDaGlsZHJlbigpOwogICAgIHZvaWQg
Y2xvc2VBbmRSZW1vdmVDaGlsZChGcmFtZSopOwogCiAgICAgRnJhbWUqIGxvYWRTdWJmcmFtZShI
VE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIHZvaWQgbG9hZEluU2FtZURvY3VtZW50KGNv
bnN0IEtVUkwmLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0YXRlT2JqZWN0LCBib29sIGlzTmV3
TmF2aWdhdGlvbik7CiAKLSAgICB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKIAogICAg
IGJvb2wgY2FuQ2FjaGVQYWdlKCk7CiAKQEAgLTQ0Niw3ICs1MTAsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzY2hlZHVsZUNoZWNrQ29tcGxldGVkKCk7CiAgICAgdm9pZCBzY2hlZHVsZUNoZWNr
TG9hZENvbXBsZXRlKCk7Ci0gICAgdm9pZCBzdGFydENoZWNrQ29tcGxldGVUaW1lcigpOwogCiAg
ICAgS1VSTCBvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdDsKIApAQCAtNDYyLDIxICs1MjUsOCBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgUG9saWN5Q2hlY2tlciBtX3BvbGljeUNoZWNrZXI7CiAg
ICAgbXV0YWJsZSBIaXN0b3J5Q29udHJvbGxlciBtX2hpc3Rvcnk7CiAgICAgbXV0YWJsZSBSZXNv
dXJjZUxvYWROb3RpZmllciBtX25vdGlmZXI7CisgICAgbXV0YWJsZSBEb2N1bWVudFN3aXRjaGVy
IG1fZG9jdW1lbnRTd2l0Y2hlcjsKIAotICAgIEZyYW1lU3RhdGUgbV9zdGF0ZTsKLSAgICBGcmFt
ZUxvYWRUeXBlIG1fbG9hZFR5cGU7Ci0KLSAgICAvLyBEb2N1bWVudCBsb2FkZXJzIGZvciB0aGUg
dGhyZWUgcGhhc2VzIG9mIGZyYW1lIGxvYWRpbmcuIE5vdGUgdGhhdCB3aGlsZSAKLSAgICAvLyBh
IG5ldyByZXF1ZXN0IGlzIGJlaW5nIGxvYWRlZCwgdGhlIG9sZCBkb2N1bWVudCBsb2FkZXIgbWF5
IHN0aWxsIGJlIHJlZmVyZW5jZWQuCi0gICAgLy8gRS5nLiB3aGlsZSBhIG5ldyByZXF1ZXN0IGlz
IGluIHRoZSAicG9saWN5IiBzdGF0ZSwgdGhlIG9sZCBkb2N1bWVudCBsb2FkZXIgbWF5Ci0gICAg
Ly8gYmUgY29uc3VsdGVkIGluIHBhcnRpY3VsYXIgYXMgaXQgbWFrZXMgc2Vuc2UgdG8gaW1wbHkg
Y2VydGFpbiBzZXR0aW5ncyBvbiB0aGUgbmV3IGxvYWRlci4KLSAgICBSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IG1fZG9jdW1lbnRMb2FkZXI7Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX3Bv
bGljeURvY3VtZW50TG9hZGVyOwotCi0gICAgYm9vbCBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zp
c2lvbmFsTG9hZEVycm9yOwotCi0gICAgYm9vbCBtX2ZpcnN0TGF5b3V0RG9uZTsKICAgICBib29s
IG1fcXVpY2tSZWRpcmVjdENvbWluZzsKICAgICBib29sIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0
aW9uOwogICAgIGJvb2wgbV9pblN0b3BBbGxMb2FkZXJzOwpAQCAtNTMwLDEwICs1ODAsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWU7CiAgICAgCiAgICAg
U2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIGJvb2wg
bV9kaWREaXNwYXRjaERpZENvbW1pdExvYWQ7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCBiZDZlMzFlLi4z
ZDc0ZTc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC01MjIsNyArNTIy
LDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0
ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm8KICAgICAgICAgICAgIC8vIElmIHRoZSBjaGls
ZCBpcyBhIGZyYW1lIGNvcnJlc3BvbmRpbmcgdG8gYW4gPG9iamVjdD4gZWxlbWVudCB0aGF0IG5l
dmVyIGxvYWRlZCwKICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY3JlYXRlIGEgaGlz
dG9yeSBpdGVtLCBiZWNhdXNlIHRoYXQgY2F1c2VzIGZhbGxiYWNrIGNvbnRlbnQKICAgICAgICAg
ICAgIC8vIHRvIGJlIGlnbm9yZWQgb24gcmVsb2FkLgotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGlmICghKCFoYXNDaGlsZExvYWRlZCAmJiBjaGlsZExvYWRlci0+aXNIb3N0ZWRCeU9iamVj
dEVsZW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgYmZJdGVtLT5hZGRDaGlsZEl0ZW0oY2hpbGRM
b2FkZXItPmhpc3RvcnkoKS0+Y3JlYXRlSXRlbVRyZWUodGFyZ2V0RnJhbWUsIGNsaXBBdFRhcmdl
dCkpOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>