<?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>134032</bug_id>
          
          <creation_ts>2014-06-18 10:40:11 -0700</creation_ts>
          <short_desc>Adopt modern C++11 loops and fix WebArchive creation functions</short_desc>
          <delta_ts>2014-06-18 12:41:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1016482</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-18 10:40:11 -0700</bug_when>
    <thetext>Adopt modern C++11 loops and fix WebArchive creation functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016507</commentid>
    <comment_count>1</comment_count>
      <attachid>233316</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-18 11:34:33 -0700</bug_when>
    <thetext>Created attachment 233316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016509</commentid>
    <comment_count>2</comment_count>
      <attachid>233318</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-18 11:49:46 -0700</bug_when>
    <thetext>Created attachment 233318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016521</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-18 12:40:51 -0700</bug_when>
    <thetext>Committed r170113: &lt;http://trac.webkit.org/changeset/170113&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233316</attachid>
            <date>2014-06-18 11:34:33 -0700</date>
            <delta_ts>2014-06-18 11:49:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134032-20140618113410.patch</filename>
            <type>text/plain</type>
            <size>32226</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0YWIyZjMyZWQ2YzNm
NmUxMjVhZjFiZjA5ZmE0Y2EyMWUzZDBiYy4uYjExZTZiNDBmYTJhZGNiNjZkMzgzZTNkOGQ2NjRi
MzkyNzliNzZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE0LTA2LTE4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgbW9kZXJu
IEMrKzExIGxvb3BzIGFuZCBmaXggV2ViQXJjaGl2ZSBjcmVhdGlvbiBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDAzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBtb2Rlcm4gbG9v
cHMgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLCBmaXggRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNl
cygpIHRvIHJldHVybiBhIFZlY3RvciwKKyAgICAgICAgYW5kIHN0b3AgdXNpbmcgVmVjdG9ycyBv
ZiBQYXNzUmVmUHRycy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEluc2VydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0UmVtb3ZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dGV4dE5vZGVzTWVyZ2VkKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Z2V0U3VicmVzb3Vy
Y2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpkdW1wKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6
cmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6OmJlZ2luKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6OmVuZCk6IERlbGV0
ZWQuCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRp
bmdNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpmaWxsUmVz
b3VyY2VMaXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZh
bGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZUNvcHlPZkNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmg6Cisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlOjpkaXNw
YXRjaERlZmVycmVkRXZlbnRzKToKKwogMjAxNC0wNi0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBzdHJvbmdseSB0eXBlZCBlbnVtcyBmb3Ig
QW5pbWF0aW9uU3RhdGUgYW5kIEFuaW1hdGlvbklucHV0U3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBiNTdhMTU5MjY0MGQ1ZDgxYzFmNjVkYTNjZDEyYjNkMzhjYzBhMTU2Li41ZDFkNzkwNjZjNjQ0
M2U3NzE4YmVhMTZkNGYxY2RhZWNkYjA5NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTQtMDYtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBBZG9wdCBtb2Rlcm4gQysrMTEgbG9vcHMgYW5kIGZpeCBXZWJBcmNoaXZlIGNy
ZWF0aW9uIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM0MDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06CisgICAgICAgICgtW1dlYkFyY2hpdmUg
aW5pdFdpdGhNYWluUmVzb3VyY2U6c3VicmVzb3VyY2VzOnN1YmZyYW1lQXJjaGl2ZXM6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291
cmNlIHN1YnJlc291cmNlc10pOgorCiAyMDE0LTA2LTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGF1dG9yZWxlYXNlKCkgbWVtYmVyIGZ1
bmN0aW9uIHRvIFJldGFpblB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAyMWMzNWI0Zjc4OTdkNmE1NjNhMTc1
YjM5MWIyNDIzYjdjZmFhMzkuLjZjZjFmYjUwMGY5MjYyN2Q4ZDQ5YTVkYmUwMzFjNzFjNTY2ZjY2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wNi0xOCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG1vZGVybiBDKysxMSBs
b29wcyBhbmQgZml4IFdlYkFyY2hpdmUgY3JlYXRpb24gZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQwMzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZl
LmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZSk6CisKIDIwMTQtMDYt
MTcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgc2Vzc2lvbiBzdGF0ZSBtZXRob2RzIGZyb20gV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGEyZDJiMjU3YTc0YWMxOGJhNjEzZWQxZGRiMmNiOTE2
YTI4MTQ3YTMuLjc5N2JlNzFjN2U4NGUwZjI4MzQwODA3ZDBkZjEwY2ZkMGFkYWY4OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC02ODIsNyArNjgyLDcgQEAgX19aTjdXZWJDb3JlMTZJY29uRGF0
YWJhc2VCYXNlMjhzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTZJY29uRGF0YWJhc2VCYXNlNG9wZW5FUktOM1dURjZTdHJpbmdFUzRfCiBf
X1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmUxOWNyZWF0ZUZyb21TZWxlY3Rpb25FUE5TXzVG
cmFtZUUKIF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTIxcmF3RGF0YVJlcHJlc2VudGF0
aW9uRXYKLV9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfMTVBcmNoaXZlUmVzb3VyY2VFRUVSTlMxXzZWZWN0b3JJUzRfTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRVJOUzVfSU5TMl9JUzBfRUVMbTBFUzZfRUUKK19fWk43V2ViQ29yZTE2
TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTVBcmNoaXZlUmVz
b3VyY2VFRUVOUzFfNlZlY3RvcklOUzFfNlJlZlB0cklTM19FRUxtMEVOUzFfMTVDcmFzaE9uT3Zl
cmZsb3dFRUVOUzVfSU5TNl9JUzBfRUVMbTBFUzhfRUUKIF9fWk43V2ViQ29yZTE2TGVnYWN5V2Vi
QXJjaGl2ZTZjcmVhdGVFUE5TXzEyU2hhcmVkQnVmZmVyRQogX19aTjdXZWJDb3JlMTZMZWdhY3lX
ZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNE5vZGVFTlN0M19fMThmdW5jdGlvbklGYlJOU181RnJhbWVF
RUVFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU181RnJhbWVFCkBA
IC0xNjQwLDkgKzE2NDAsOSBAQCBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExZnJhbWVM
b2FkZXJFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMXJlc3BvbnNlVVJMRXYKIF9f
Wk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFzdWJyZXNvdXJjZUVSS05TXzNVUkxFCiBfX1pO
SzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEybWFpblJlc291cmNlRXYKK19fWk5LN1dlYkNvcmUx
NERvY3VtZW50TG9hZGVyMTJzdWJyZXNvdXJjZXNFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxM3VybEZvckhpc3RvcnlFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxNHVu
cmVhY2hhYmxlVVJMRXYKLV9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVnZXRTdWJyZXNv
dXJjZXNFUk4zV1RGNlZlY3RvcklOUzFfMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNl
RUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxNW9yaWdpbmFsUmVxdWVzdEV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE2
bWFpblJlc291cmNlRGF0YUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE3cGFyc2Vk
QXJjaGl2ZURhdGFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWQyMzJmNDgzZWU4NzUx
NmQzMDNhZGE1NWM5OGZhMzQyMjY2OGEzZi4uMTUzMjY2YzEzZWRlNDExMDA2NDQ1NzdhNDIwMTM2
MzU2YzhkZmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNjExLDkgKzM2MTEsOCBA
QCB2b2lkIERvY3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBuKQogdm9pZCBEb2N1bWVu
dDo6dGV4dEluc2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGlmICghbV9yYW5nZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEhhc2hTZXQ8
UmFuZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYW5nZXMuZW5kKCk7Ci0gICAgICAgIGZv
ciAoSGFzaFNldDxSYW5nZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmFuZ2VzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICgqaXQpLT50ZXh0SW5zZXJ0ZWQodGV4dCwg
b2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9yYW5nZXMpCisg
ICAgICAgICAgICByYW5nZS0+dGV4dEluc2VydGVkKHRleHQsIG9mZnNldCwgbGVuZ3RoKTsKICAg
ICB9CiAKICAgICAvLyBVcGRhdGUgdGhlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWFy
IGNoZWNraW5nLgpAQCAtMzYyMyw5ICszNjIyLDggQEAgdm9pZCBEb2N1bWVudDo6dGV4dEluc2Vy
dGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogdm9pZCBE
b2N1bWVudDo6dGV4dFJlbW92ZWQoTm9kZSogdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCiB7CiAgICAgaWYgKCFtX3Jhbmdlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSGFz
aFNldDxSYW5nZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jhbmdlcy5lbmQoKTsKLSAgICAg
ICAgZm9yIChIYXNoU2V0PFJhbmdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yYW5nZXMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgKCppdCktPnRleHRSZW1vdmVkKHRl
eHQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1fcmFuZ2Vz
KQorICAgICAgICAgICAgcmFuZ2UtPnRleHRSZW1vdmVkKHRleHQsIG9mZnNldCwgbGVuZ3RoKTsK
ICAgICB9CiAKICAgICAvLyBVcGRhdGUgdGhlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBncmFt
bWFyIGNoZWNraW5nLgpAQCAtMzYzNyw5ICszNjM1LDggQEAgdm9pZCBEb2N1bWVudDo6dGV4dE5v
ZGVzTWVyZ2VkKFRleHQqIG9sZE5vZGUsIHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBpZiAoIW1f
cmFuZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICBOb2RlV2l0aEluZGV4IG9sZE5vZGVXaXRoSW5k
ZXgob2xkTm9kZSk7Ci0gICAgICAgIEhhc2hTZXQ8UmFuZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9yYW5nZXMuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxSYW5nZSo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fcmFuZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
ICAgICgqaXQpLT50ZXh0Tm9kZXNNZXJnZWQob2xkTm9kZVdpdGhJbmRleCwgb2Zmc2V0KTsKKyAg
ICAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1fcmFuZ2VzKQorICAgICAgICAgICAgcmFuZ2UtPnRl
eHROb2Rlc01lcmdlZChvbGROb2RlV2l0aEluZGV4LCBvZmZzZXQpOwogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCB1cGRhdGUgbWFya2VycyBmb3Igc3BlbGxpbmcgYW5kIGdyYW1t
YXIgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCA4OGYzMWY2NGEyMGY0NjFhMzJlNzhjMGIyZWVhY2JiMWJjM2FjMmMxLi42MmNjYTc1NDFlZjMy
M2QyOThhNzg3ZDZmMGFmOGIxNjkxMjQ3ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMDUsMjAgKzExMDUsMTkgQEAgUGFzc1JlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShjb25zdCBVUkwmIHVybCkgY29u
c3QKICAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YS0+c2hhcmVkQnVmZmVy
KCksIHVybCwgcmVzb3VyY2UtPnJlc3BvbnNlKCkpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVy
OjpnZXRTdWJyZXNvdXJjZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mIHN1
YnJlc291cmNlcykgY29uc3QKK1ZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gRG9jdW1l
bnRMb2FkZXI6OnN1YnJlc291cmNlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8UmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4+IHN1YnJlc291cmNlczsKIAotICAgIGNvbnN0IENhY2hlZFJl
c291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsKLSAgICBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVz
b3VyY2VzLmVuZCgpOwotICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVz
b3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJj
ZSA9IHRoaXMtPnN1YnJlc291cmNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT52YWx1ZS0+dXJs
KCkpKTsKLSAgICAgICAgaWYgKHN1YnJlc291cmNlKQotICAgICAgICAgICAgc3VicmVzb3VyY2Vz
LmFwcGVuZChzdWJyZXNvdXJjZS5yZWxlYXNlKCkpOworICAgIGZvciAoYXV0byYgY2FjaGVkUmVz
b3VyY2VIYW5kbGUgOiBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMo
KS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gc3VicmVz
b3VyY2UgPSB0aGlzLT5zdWJyZXNvdXJjZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBjYWNoZWRSZXNv
dXJjZUhhbmRsZS0+dXJsKCkpKSkKKyAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoc3Rk
Ojptb3ZlKHN1YnJlc291cmNlKSk7CiAgICAgfQogCi0gICAgcmV0dXJuOworICAgIHJldHVybiBz
dWJyZXNvdXJjZXM7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRlbGl2ZXJTdWJzdGl0dXRl
UmVzb3VyY2VzQWZ0ZXJEZWxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CmluZGV4IDlhMTBlNWRjZmQ2M2ViZGM2OGRmOGEwZTdmOWRmNDgwMDA5MjI4ODkuLjQxZmQ2Zjk4
Zjk2NzZmMTZlMzU0OTJlMzgyYjhiZGY1Mjc1NTcwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCkBAIC0xNjIsOCArMTYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBSZXR1cm4gYW4gQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMLCBlaXRoZXIg
Y3JlYXRpbmcgZnJvbSBsaXZlIGRhdGEgb3IKICAgICAgICAgLy8gcHVsbGluZyBmcm9tIHRoZSBB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uCiAgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBzdWJyZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKLSAgICAgICAgdm9pZCBnZXRTdWJy
ZXNvdXJjZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mKSBjb25zdDsKLQor
ICAgICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+IHN1YnJlc291cmNlcygpIGNv
bnN0OwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIGlzU3Vic3RpdHV0ZUxvYWRQZW5k
aW5nKFJlc291cmNlTG9hZGVyKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOTgzYmVjYzIxMWY1N2FmMGIz
MzIxNDMwYjcyZTJlNGEzMDY0MzIyMy4uMzVmM2U5NWUzNTliODZmMzQ3ZTRlNDk5ZWJhZGQ0ZDY0
ZDkyODEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlLmNwcApAQCAtMjIyLDExICsyMjIsOSBAQCBpbnQ2NF90IEFwcGxpY2F0aW9u
Q2FjaGU6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogI2lmbmRl
ZiBOREVCVUcKIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZHVtcCgpCiB7Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+Pjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7Ci0gICAgCi0gICAgZm9yIChIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
cmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBwcmludGYoIiVz
ICIsIGl0LT5rZXkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmR1bXBUeXBlKGl0LT52YWx1ZS0+dHlwZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHVybEFuZFJlc291cmNlIDogbV9yZXNvdXJjZXMpIHsKKyAgICAgICAgcHJpbnRmKCIlcyAiLCB1
cmxBbmRSZXNvdXJjZS5rZXkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6ZHVtcFR5cGUodXJsQW5kUmVzb3VyY2UudmFsdWUtPnR5cGUoKSk7CiAgICAg
fQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaAppbmRleCA2ODA2MzVkZWZiMjljMDg4Nzk4MjliNzZlYTYwMGUxYWU0NmRm
YjhlLi5lNTQxZTgzMjA0N2NhMmYyNWU0N2NhNmNlNTQ4MWZiNTE5NTA1N2Q4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTgx
LDggKzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gUmVzb3VyY2VNYXA7Ci0gICAgUmVz
b3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZXMuYmVnaW4oKTsgfQotICAgIFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlcy5lbmQoKTsgfQorICAgIGNvbnN0IFJlc291cmNlTWFwJiBy
ZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlczsgfQogICAgIAogICAgIHZvaWQg
c2V0U3RvcmFnZUlEKHVuc2lnbmVkIHN0b3JhZ2VJRCkgeyBtX3N0b3JhZ2VJRCA9IHN0b3JhZ2VJ
RDsgfQogICAgIHVuc2lnbmVkIHN0b3JhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZUlE
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDRkN2ZjMDllOTZkMGE4MjFlNzI1N2RlMzk1YjQ2YTRi
M2I2ZDY0M2QuLmM2YTIzZjIzMThlZDUwMTMyNGExZTNiZWQ2NDVhZGUxNmZlOTMwNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgQVNTRVJUKG1fcGVuZGluZ0VudHJp
ZXMuaXNFbXB0eSgpKTsKIAogICAgIGlmIChpc1VwZ3JhZGVBdHRlbXB0KSB7Ci0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdXJsQW5kUmVzb3VyY2UgOiAqbV9uZXdlc3RDYWNoZSkgeworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHVybEFuZFJlc291cmNlIDogbV9uZXdlc3RDYWNoZS0+cmVzb3Vy
Y2VzKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSB1cmxBbmRSZXNvdXJjZS52YWx1
ZS0+dHlwZSgpOwogICAgICAgICAgICAgaWYgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6Ok1hc3RlcikKICAgICAgICAgICAgICAgICBhZGRFbnRyeSh1cmxBbmRSZXNvdXJjZS5rZXks
IHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggOTkxMDY3OTFkMjM1YmEzOWM4MTFmNjg5OGQwNDkz
MzY0MGE4MjExZS4uZmVjOTIzZDY5YzdhZDNlZTJmNjJhMzEyY2VlOTBiZmIzZTQzMTdkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCkBAIC0yODYsMTUgKzI4NiwxNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpmaWxsUmVzb3VyY2VMaXN0KFJlc291cmNlSW5mb0xpc3QqIHJlc291cmNlcykKICAgICBB
cHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGFwcGxpY2F0aW9uQ2FjaGUoKTsKICAgICBpZiAoIWNh
Y2hlIHx8ICFjYWNoZS0+aXNDb21wbGV0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
Zm9yIChjb25zdCBhdXRvJiB1cmxBbmRSZXNvdXJjZSA6ICpjYWNoZSkgewotICAgICAgICBSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IHVybEFuZFJlc291cmNlLnZh
bHVlOworCisgICAgZm9yIChjb25zdCBhdXRvJiB1cmxBbmRSZXNvdXJjZSA6IGNhY2hlLT5yZXNv
dXJjZXMoKSkgeworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlID0g
dXJsQW5kUmVzb3VyY2UudmFsdWUuZ2V0KCk7CisKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHJl
c291cmNlLT50eXBlKCk7Ci0gICAgICAgIGJvb2wgaXNNYXN0ZXIgICA9IHR5cGUgJiBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlcjsKKyAgICAgICAgYm9vbCBpc01hc3RlciA9IHR5cGUg
JiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlcjsKICAgICAgICAgYm9vbCBpc01hbmlm
ZXN0ID0gdHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6TWFuaWZlc3Q7CiAgICAgICAg
IGJvb2wgaXNFeHBsaWNpdCA9IHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkV4cGxp
Y2l0OwotICAgICAgICBib29sIGlzRm9yZWlnbiAgPSB0eXBlICYgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpGb3JlaWduOworICAgICAgICBib29sIGlzRm9yZWlnbiA9IHR5cGUgJiBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OkZvcmVpZ247CiAgICAgICAgIGJvb2wgaXNGYWxsYmFjayA9IHR5
cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrOworCiAgICAgICAgIHJlc291
cmNlcy0+YXBwZW5kKFJlc291cmNlSW5mbyhyZXNvdXJjZS0+dXJsKCksIGlzTWFzdGVyLCBpc01h
bmlmZXN0LCBpc0ZhbGxiYWNrLCBpc0ZvcmVpZ24sIGlzRXhwbGljaXQsIHJlc291cmNlLT5lc3Rp
bWF0ZWRTaXplSW5TdG9yYWdlKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCA5ODJhMzQyNmJkNDhmNDhmZWRhZWY2ZDUwZWE5OGU4NGIyMGU1ZGU0Li40ZTcxYzJlNjVlYzIy
MzljMGQ2ZjhmNGQ3ZWJhNjkxZjI2N2YxM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTI3
NSwxMCArMjc1LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICBBU1NFUlQoIXVybC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAKICAgICAvLyBDaGVjayBpZiBhbiBhcHByb3ByaWF0
ZSBjYWNoZSBhbHJlYWR5IGV4aXN0cyBpbiBtZW1vcnkuCi0gICAgQ2FjaGVHcm91cE1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJbk1lbW9yeS5lbmQoKTsKLSAgICBmb3IgKENhY2hl
R3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9
IGl0LT52YWx1ZTsKLSAgICAgICAgCisgICAgZm9yIChhdXRvIGdyb3VwIDogbV9jYWNoZXNJbk1l
bW9yeS52YWx1ZXMoKSkgewogICAgICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOwog
CiAgICAgICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGdyb3VwLT5uZXdlc3RDYWNo
ZSgpKSB7CkBAIC03NDEsMTcgKzczOCwxNCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgUmVzb3VyY2VTdG9yYWdlSURKbwogICAg
IHVuc2lnbmVkIGNhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YWJh
c2UubGFzdEluc2VydFJvd0lEKCkpOwogCiAgICAgLy8gU3RvcmUgYWxsIHJlc291cmNlcwotICAg
IHsKLSAgICAgICAgQXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGNhY2hlLT5lbmQoKTsKLSAgICAgICAgZm9yIChBcHBsaWNhdGlvbkNhY2hlOjpSZXNv
dXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBvbGRTdG9yYWdlSUQgPSBpdC0+dmFsdWUtPnN0
b3JhZ2VJRCgpOwotICAgICAgICAgICAgaWYgKCFzdG9yZShpdC0+dmFsdWUuZ2V0KCksIGNhY2hl
U3RvcmFnZUlEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChhdXRv
JiByZXNvdXJjZSA6IGNhY2hlLT5yZXNvdXJjZXMoKS52YWx1ZXMoKSkgeworICAgICAgICB1bnNp
Z25lZCBvbGRTdG9yYWdlSUQgPSByZXNvdXJjZS0+c3RvcmFnZUlEKCk7CisgICAgICAgIGlmICgh
c3RvcmUocmVzb3VyY2UuZ2V0KCksIGNhY2hlU3RvcmFnZUlEKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICAgICAgLy8gU3RvcmluZyB0aGUgcmVzb3VyY2Ugc3VjY2VlZGVk
LiBMb2cgaXRzIG9sZCBzdG9yYWdlSUQgaW4gY2FzZQotICAgICAgICAgICAgLy8gaXQgbmVlZHMg
dG8gYmUgcmVzdG9yZWQgbGF0ZXIuCi0gICAgICAgICAgICBzdG9yYWdlSURKb3VybmFsLT5hZGQo
aXQtPnZhbHVlLmdldCgpLCBvbGRTdG9yYWdlSUQpOwotICAgICAgICB9CisgICAgICAgIC8vIFN0
b3JpbmcgdGhlIHJlc291cmNlIHN1Y2NlZWRlZC4gTG9nIGl0cyBvbGQgc3RvcmFnZUlEIGluIGNh
c2UKKyAgICAgICAgLy8gaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuCisgICAgICAgIHN0
b3JhZ2VJREpvdXJuYWwtPmFkZChyZXNvdXJjZS5nZXQoKSwgb2xkU3RvcmFnZUlEKTsKICAgICB9
CiAgICAgCiAgICAgLy8gU3RvcmUgdGhlIG9ubGluZSB3aGl0ZWxpc3QKQEAgLTEyOTMsMTAgKzEy
ODcsOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSgpCiAgICAgLy8gQ2xl
YXIgdGhlIHN0b3JhZ2UgSURzIGZvciB0aGUgY2FjaGVzIGluIG1lbW9yeS4KICAgICAvLyBUaGUg
Y2FjaGVzIHdpbGwgc3RpbGwgd29yaywgYnV0IGNhY2hlZCByZXNvdXJjZXMgd2lsbCBub3QgYmUg
c2F2ZWQgdG8gZGlzayAKICAgICAvLyB1bnRpbCBhIGNhY2hlIHVwZGF0ZSBwcm9jZXNzIGhhcyBi
ZWVuIGluaXRpYXRlZC4KLSAgICBDYWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X2NhY2hlc0luTWVtb3J5LmVuZCgpOwotICAgIGZvciAoQ2FjaGVHcm91cE1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgaXQtPnZhbHVlLT5jbGVhclN0b3JhZ2VJRCgpOwotICAgIAorICAgIGZvciAoYXV0byBn
cm91cCA6IG1fY2FjaGVzSW5NZW1vcnkudmFsdWVzKCkpCisgICAgICAgIGdyb3VwLT5jbGVhclN0
b3JhZ2VJRCgpOworCiAgICAgY2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKCk7CiB9CiAgICAgCkBA
IC0xMzU3LDEwICsxMzUwLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVD
b3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBBcHAKICAgICBjYWNoZUNv
cHktPnNldEZhbGxiYWNrVVJMcyhjYWNoZS0+ZmFsbGJhY2tVUkxzKCkpOwogCiAgICAgLy8gVHJh
dmVyc2UgdGhlIGNhY2hlIGFuZCBhZGQgY29waWVzIG9mIGFsbCByZXNvdXJjZXMuCi0gICAgQXBw
bGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5l
bmQoKTsKLSAgICBmb3IgKEFwcGxpY2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGNhY2hlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAg
ICAgCisgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNhY2hlLT5yZXNvdXJjZXMoKS52YWx1ZXMo
KSkgewogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZUNv
cHkgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShyZXNvdXJjZS0+dXJsKCksIHJl
c291cmNlLT5yZXNwb25zZSgpLCByZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLCBy
ZXNvdXJjZS0+cGF0aCgpKTsKICAgICAgICAgCiAgICAgICAgIGNhY2hlQ29weS0+YWRkUmVzb3Vy
Y2UocmVzb3VyY2VDb3B5LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGQzN2YxYjhiZWNmMThm
MGVkYjczZjkwZDQxNmQ5MWJhOTM3YmNmZjAuLjVkZTFmYjRhYWIxNzk0NDJlMjM3NWFmZDI5NDQz
ODZiZTFkNzExNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgUGFzc1JlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTGVnYWN5V2ViQXJjaGl2ZSk7CiB9CiAKLVBhc3NSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+JiBz
dWJyZXNvdXJjZXMsIFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiYgc3ViZnJh
bWVBcmNoaXZlcykKK1Bhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3Rv
cjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+PiBzdWJmcmFtZUFyY2hpdmVzKQogewogICAgIEFTU0VSVChtYWluUmVz
b3VyY2UpOwogICAgIGlmICghbWFpblJlc291cmNlKQpAQCAtMjQ3LDEwICsyNDcsMTAgQEAgUGFz
c1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUGFzc1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2UKICAgICBhcmNoaXZlLT5zZXRNYWluUmVzb3VyY2UobWFpblJl
c291cmNlKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3VicmVzb3VyY2Vz
LnNpemUoKTsgKytpKQotICAgICAgICBhcmNoaXZlLT5hZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJj
ZXNbaV0pOworICAgICAgICBhcmNoaXZlLT5hZGRTdWJyZXNvdXJjZShzdGQ6Om1vdmUoc3VicmVz
b3VyY2VzW2ldKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1YmZyYW1l
QXJjaGl2ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2
ZShzdWJmcmFtZUFyY2hpdmVzW2ldKTsgIAorICAgICAgICBhcmNoaXZlLT5hZGRTdWJmcmFtZUFy
Y2hpdmUoc3RkOjptb3ZlKHN1YmZyYW1lQXJjaGl2ZXNbaV0pKTsKICAgICAgICAgCiAgICAgcmV0
dXJuIGFyY2hpdmUucmVsZWFzZSgpOwogfQpAQCAtNDYxLDE5ICs0NjEsMTUgQEAgUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhbWUqIGZyYW1l
KQogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAK
LSAgICBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4gc3ViZnJhbWVBcmNoaXZl
czsKKyAgICBWZWN0b3I8UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiBzdWJmcmFtZUFyY2hpdmVz
OwogICAgIAotICAgIHVuc2lnbmVkIGNoaWxkcmVuID0gZnJhbWUtPnRyZWUoKS5jaGlsZENvdW50
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNoaWxkRnJhbWVBcmNoaXZlID0gY3JlYXRlKGZy
YW1lLT50cmVlKCkuY2hpbGQoaSkpOwotICAgICAgICBpZiAoY2hpbGRGcmFtZUFyY2hpdmUpCi0g
ICAgICAgICAgICBzdWJmcmFtZUFyY2hpdmVzLmFwcGVuZChjaGlsZEZyYW1lQXJjaGl2ZS5yZWxl
YXNlKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZS0+dHJlZSgpLmNoaWxk
Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY2hp
bGRGcmFtZUFyY2hpdmUgPSBjcmVhdGUoZnJhbWUtPnRyZWUoKS5jaGlsZChpKSkpCisgICAgICAg
ICAgICBzdWJmcmFtZUFyY2hpdmVzLmFwcGVuZChzdGQ6Om1vdmUoY2hpbGRGcmFtZUFyY2hpdmUp
KTsKICAgICB9CiAKLSAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJy
ZXNvdXJjZXM7Ci0gICAgZG9jdW1lbnRMb2FkZXItPmdldFN1YnJlc291cmNlcyhzdWJyZXNvdXJj
ZXMpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlKCks
IHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7CisgICAgYXV0byBzdWJyZXNvdXJjZXMg
PSBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VzKCk7CisgICAgcmV0dXJuIGNyZWF0ZShkb2N1
bWVudExvYWRlci0+bWFpblJlc291cmNlKCksIHN0ZDo6bW92ZShzdWJyZXNvdXJjZXMpLCBzdGQ6
Om1vdmUoc3ViZnJhbWVBcmNoaXZlcykpOwogfQogCiBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCkBAIC01MTIsOCArNTA4
LDggQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgCiAgICAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1
ZmZlcihtYXJrdXBTdHJpbmcpLCByZXNwb25zZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVU
Ri04IiwgZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkpOwogCi0gICAgVmVjdG9yPFBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7Ci0gICAgVmVjdG9yPFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzOworICAgIFZlY3RvcjxSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7CisgICAgVmVjdG9yPFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXM7CiAgICAgSGFzaFNldDxVUkw+IHVuaXF1ZVN1
YnJlc291cmNlczsKIAogICAgIHNpemVfdCBub2Rlc1NpemUgPSBub2Rlcy5zaXplKCk7ICAgIApA
QCAtNTI1LDI4ICs1MjEsMjUgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgICAg
IGlmIChmcmFtZUZpbHRlciAmJiAhZnJhbWVGaWx0ZXIoKmNoaWxkRnJhbWUpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZShjaGlsZEZyYW1lLT5kb2N1
bWVudCgpLCBmcmFtZUZpbHRlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzdWJm
cmFtZUFyY2hpdmUpCi0gICAgICAgICAgICAgICAgc3ViZnJhbWVBcmNoaXZlcy5hcHBlbmQoc3Vi
ZnJhbWVBcmNoaXZlKTsKKyAgICAgICAgICAgIGlmIChSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
c3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKGNoaWxkRnJhbWUtPmRvY3VtZW50KCksIGZyYW1lRmls
dGVyKSkKKyAgICAgICAgICAgICAgICBzdWJmcmFtZUFyY2hpdmVzLmFwcGVuZChzdGQ6Om1vdmUo
c3ViZnJhbWVBcmNoaXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGVkIHRvIGFyY2hpdmUgc3ViZnJhbWUgJXMiLCBjaGlsZEZyYW1lLT50cmVl
KCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBMaXN0SGFzaFNldDxVUkw+IHN1YnJlc291cmNlVVJMczsKICAgICAg
ICAgICAgIG5vZGUuZ2V0U3VicmVzb3VyY2VVUkxzKHN1YnJlc291cmNlVVJMcyk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwotICAgICAgICAgICAgTGlzdEhhc2hTZXQ8VVJM
Pjo6aXRlcmF0b3IgaXRlckVuZCA9IHN1YnJlc291cmNlVVJMcy5lbmQoKTsKLSAgICAgICAgICAg
IGZvciAoTGlzdEhhc2hTZXQ8VVJMPjo6aXRlcmF0b3IgaXRlciA9IHN1YnJlc291cmNlVVJMcy5i
ZWdpbigpOyBpdGVyICE9IGl0ZXJFbmQ7ICsraXRlcikgewotICAgICAgICAgICAgICAgIGNvbnN0
IFVSTCYgc3VicmVzb3VyY2VVUkwgPSAqaXRlcjsKKworICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzdWJyZXNvdXJjZVVSTCA6IHN1YnJlc291cmNlVVJMcykgewogICAgICAgICAgICAgICAg
IGlmICh1bmlxdWVTdWJyZXNvdXJjZXMuY29udGFpbnMoc3VicmVzb3VyY2VVUkwpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHVuaXF1ZVN1YnJlc291
cmNlcy5hZGQoc3VicmVzb3VyY2VVUkwpOwogCi0gICAgICAgICAgICAgICAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2Uoc3VicmVz
b3VyY2VVUkwpOwotICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICAgICAg
ICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAg
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZG9jdW1lbnRM
b2FkZXItPnN1YnJlc291cmNlKHN1YnJlc291cmNlVVJMKSkgeworICAgICAgICAgICAgICAgICAg
ICBzdWJyZXNvdXJjZXMuYXBwZW5kKHN0ZDo6bW92ZShyZXNvdXJjZSkpOwogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTU1Nyw5ICs1NTAsOSBA
QCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChyZXF1
ZXN0LCBmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNh
Y2hlZFJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlQnVmZmVyKiBkYXRh
ID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YSA/IGRhdGEtPnNoYXJlZEJ1
ZmZlcigpIDogMCwgc3VicmVzb3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoZGF0YSA/IGRhdGEtPnNoYXJlZEJ1ZmZlcigpIDogMCwgc3VicmVz
b3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChzdGQ6Om1vdmUocmVzb3VyY2UpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNTgxLDcgKzU3NCw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY3JlYXRlKG1haW5SZXNvdXJjZS5yZWxl
YXNlKCksIHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7CisgICAgcmV0dXJuIGNyZWF0
ZShtYWluUmVzb3VyY2UucmVsZWFzZSgpLCBzdWJyZXNvdXJjZXMsIHN0ZDo6bW92ZShzdWJmcmFt
ZUFyY2hpdmVzKSk7CiB9CiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCkBAIC02MTIsMTQgKzYw
NSw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9
ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWln
aHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJc
Ij48L2lmcmFtZT4iOwogICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGlmcmFtZVJlc291cmNl
ID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFu
a1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0gICAgVmVjdG9yPFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzOwotCi0gICAgVmVjdG9yPFBh
c3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7Ci0gICAgc3ViZnJh
bWVBcmNoaXZlcy5hcHBlbmQoYXJjaGl2ZSk7Ci0gICAgCi0gICAgYXJjaGl2ZSA9IGNyZWF0ZShp
ZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7
Ci0gICAgCi0gICAgcmV0dXJuIGFyY2hpdmUucmVsZWFzZSgpOworICAgIHJldHVybiBjcmVhdGUo
aWZyYW1lUmVzb3VyY2UucmVsZWFzZSgpLCB7IH0sIHsgYXJjaGl2ZSB9KTsKIH0KIAotfQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IDQwY2RmMzFjNmE3NWRhN2E2MGZjOWY2NDQ0
MjYxYjBjMDQ1NjBlZDMuLmY0N2M0Zjk5YTA0MmM3YjQ5OTljN2Y4NGQ2MGU3Y2NlZmVkNzg4Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKik7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+PiYgc3ViZnJhbWVBcmNoaXZlcyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2Us
IFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+PiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSosIHN0ZDo6ZnVuY3Rpb248Ym9v
bCAoRnJhbWUmKT4gZnJhbWVGaWx0ZXIgPSBudWxscHRyKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRo
cm90dGxlLmNwcAppbmRleCA2MTVlNTE1YmI0YWM0N2RmYzEzMjIyZDAxMGI2ZmEwMTc2ZDRhOWE5
Li40YTRlZjA1ZmNjZjg3MGVkODJkZWRjYjE2MzQ0ZDkyNmEwYzk4YTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJv
dHRsZS5jcHAKQEAgLTE0MCwxNiArMTQwLDEzIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50VGhyb3R0bGU6OmRpc3BhdGNoRGVmZXJyZWRFdmVudHMoVGltZXI8WE1MSHR0cFJlCiAg
ICAgbV9kZWZlckV2ZW50cyA9IGZhbHNlOwogCiAgICAgLy8gVGFrZSBvdmVyIHRoZSBkZWZlcnJl
ZCBldmVudHMgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZW0gd2hpY2ggY2FuIHBvdGVudGlhbGx5IGFk
ZCBtb3JlLgotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+PiBkZWZlcnJlZEV2ZW50czsKLSAgICBt
X2RlZmVycmVkRXZlbnRzLnN3YXAoZGVmZXJyZWRFdmVudHMpOworICAgIGF1dG8gZGVmZXJyZWRF
dmVudHMgPSBzdGQ6Om1vdmUobV9kZWZlcnJlZEV2ZW50cyk7CiAKICAgICBSZWZQdHI8RXZlbnQ+
IGRlZmVycmVkUHJvZ3Jlc3NFdmVudCA9IG1fZGVmZXJyZWRQcm9ncmVzc0V2ZW50OwotICAgIG1f
ZGVmZXJyZWRQcm9ncmVzc0V2ZW50ID0gMDsKKyAgICBtX2RlZmVycmVkUHJvZ3Jlc3NFdmVudCA9
IG51bGxwdHI7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gZGVmZXJyZWRFdmVudHMuYmVnaW4oKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEV2ZW50
Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGRlZmVycmVkRXZlbnRzLmVuZCgpOwotICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoKml0KTsKKyAgICBmb3Ig
KGF1dG8mIGRlZmVycmVkRXZlbnQgOiBkZWZlcnJlZEV2ZW50cykKKyAgICAgICAgZGlzcGF0Y2hF
dmVudChkZWZlcnJlZEV2ZW50LnJlbGVhc2UoKSk7CiAKICAgICAvLyBUaGUgcHJvZ3Jlc3MgZXZl
bnQgd2lsbCBiZSBpbiB0aGUgbV9kZWZlcnJlZEV2ZW50cyB2ZWN0b3IgaWYgdGhlIGxvYWQgd2Fz
IGZpbmlzaGVkIHdoaWxlIHN1c3BlbmRlZC4KICAgICAvLyBJZiBub3QsIGp1c3Qgc2VuZCB0aGUg
bW9zdCB1cC10by1kYXRlIHByb2dyZXNzIG9uIHJlc3VtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViQXJjaGl2ZS5tbQppbmRleCA3N2VhMmM3ODBkY2RjNTViMWQxOGJkNDViMzY5YmIyZWU3
MDAzNzVmLi4yZmYwODgwYTQ2OTZjOWQ2MjMyNzY1Yjc3NGMzNzM5NzU3YTI0NThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCkBAIC0xNzgsMjQgKzE3OCwyMiBAQCBz
dGF0aWMgQk9PTCBpc0FycmF5T2ZDbGFzcyhpZCBvYmplY3QsIENsYXNzIGVsZW1lbnRDbGFzcykK
ICAgICAKICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjb3JlTWFpblJlc291cmNlID0gbWFp
blJlc291cmNlID8gW21haW5SZXNvdXJjZSBfY29yZVJlc291cmNlXSA6IDA7CiAKLSAgICBWZWN0
b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBjb3JlUmVzb3VyY2VzOwotICAgIE5TRW51
bWVyYXRvciAqZW51bWVyYXRvciA9IFtzdWJyZXNvdXJjZXMgb2JqZWN0RW51bWVyYXRvcl07Ci0g
ICAgV2ViUmVzb3VyY2UgKnN1YnJlc291cmNlOwotICAgIHdoaWxlICgoc3VicmVzb3VyY2UgPSBb
ZW51bWVyYXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKQorICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPj4gY29yZVJlc291cmNlczsKKyAgICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNv
dXJjZSBpbiBzdWJyZXNvdXJjZXMpCiAgICAgICAgIGNvcmVSZXNvdXJjZXMuYXBwZW5kKFtzdWJy
ZXNvdXJjZSBfY29yZVJlc291cmNlXSk7CiAKLSAgICBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPj4gY29yZUFyY2hpdmVzOwotICAgIGVudW1lcmF0b3IgPSBbc3ViZnJhbWVBcmNo
aXZlcyBvYmplY3RFbnVtZXJhdG9yXTsKLSAgICBXZWJBcmNoaXZlICpzdWJmcmFtZUFyY2hpdmU7
Ci0gICAgd2hpbGUgKChzdWJmcmFtZUFyY2hpdmUgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XSkg
IT0gbmlsKQorICAgIFZlY3RvcjxSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4+IGNvcmVBcmNoaXZl
czsKKyAgICBmb3IgKFdlYkFyY2hpdmUgKnN1YmZyYW1lQXJjaGl2ZSBpbiBzdWJmcmFtZUFyY2hp
dmVzKQogICAgICAgICBjb3JlQXJjaGl2ZXMuYXBwZW5kKFtzdWJmcmFtZUFyY2hpdmUtPl9wcml2
YXRlIGNvcmVBcmNoaXZlXSk7CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvcmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBjb3JlUmVzb3Vy
Y2VzLCBjb3JlQXJjaGl2ZXMpXTsKLSAgICBpZiAoIVtfcHJpdmF0ZSBjb3JlQXJjaGl2ZV0pIHsK
KyAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29yZU1haW5SZXNvdXJjZS5yZWxlYXNlKCksIHN0ZDo6bW92ZShjb3JlUmVz
b3VyY2VzKSwgc3RkOjptb3ZlKGNvcmVBcmNoaXZlcykpOworICAgIGlmICghY29yZUFyY2hpdmUp
IHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQog
CisgICAgW19wcml2YXRlIHNldENvcmVBcmNoaXZlOmNvcmVBcmNoaXZlLnJlbGVhc2UoKV07CisK
ICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCmluZGV4IDM5MWQzYjViYTQxY2UxZmMxZjJjMmMyY2U4OTE5MDRhN2UyNjQ0MzMu
LjJkNmIzNjdjYzg2ZTAyYTYxZjU2ZDZmNWE1YmE2NWQwZTI3ZjgzY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTYwNiwxOSArNjA2LDE1IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICph
bGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAKIC0gKE5TQXJyYXkgKilzdWJyZXNvdXJjZXMKIHsKLSAg
ICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBjb3JlU3VicmVzb3VyY2VzOwot
ICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+Z2V0U3VicmVzb3VyY2VzKGNvcmVTdWJy
ZXNvdXJjZXMpOwotCi0gICAgTlNNdXRhYmxlQXJyYXkgKnN1YnJlc291cmNlcyA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29yZVN1YnJlc291cmNlcy5zaXplKCld
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3JlU3VicmVzb3VyY2VzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIFdlYlJlc291cmNlICpyZXNvdXJjZSA9IFtbV2ViUmVzb3VyY2UgYWxs
b2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpjb3JlU3VicmVzb3VyY2VzW2ldXTsKLSAgICAgICAg
aWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICBbc3VicmVzb3VyY2VzIGFkZE9iamVjdDpyZXNv
dXJjZV07Ci0gICAgICAgICAgICBbcmVzb3VyY2UgcmVsZWFzZV07Ci0gICAgICAgIH0KKyAgICBh
dXRvIGNvcmVTdWJyZXNvdXJjZXMgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnN1YnJl
c291cmNlcygpOworCisgICAgYXV0byBzdWJyZXNvdXJjZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29yZVN1YnJlc291cmNlcy5zaXplKCldKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvcmVTdWJyZXNvdXJjZSA6IGNvcmVTdWJyZXNvdXJjZXMp
IHsKKyAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxs
b2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpjb3JlU3VicmVzb3VyY2VdKSkKKyAgICAgICAgICAg
IFtzdWJyZXNvdXJjZXMgYWRkT2JqZWN0OnJlc291cmNlLmdldCgpXTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gW3N1YnJlc291cmNlcyBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHN1YnJlc291cmNl
cy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJSZXNvdXJjZSAqKXN1YnJlc291cmNlRm9yVVJM
OihOU1VSTCAqKVVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFy
Y2hpdmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmUuY3BwCmluZGV4
IGRjNzlmYTVlY2MwOWE5NjkxOWEyZDdmODg0ZTA5NDU4OTUzNzczY2EuLjg2NzQ3NDY2NDBjYTk1
YTZiMzJiOWY5MGJjYWFlZGRjNWVkMWVlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2Vi
QXJjaGl2ZS5jcHAKQEAgLTY1LDIxICs2NSwyNCBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFdl
YkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+CiB7
CiAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZU1haW5SZXNvdXJjZSA9IG1fY2FjaGVk
TWFpblJlc291cmNlLT5jb3JlQXJjaGl2ZVJlc291cmNlKCk7CiAKLSAgICBWZWN0b3I8UGFzc1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBjb3JlQXJjaGl2ZVJlc291cmNlczsKKyAgICBWZWN0b3I8
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+IGNvcmVBcmNoaXZlUmVzb3VyY2VzOworICAgIGNvcmVB
cmNoaXZlUmVzb3VyY2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNoZWRTdWJyZXNvdXJj
ZXMtPnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZFN1YnJlc291
cmNlcy0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPFdlYkFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBtX2NhY2hlZFN1YnJlc291cmNlcy0+YXQ8V2ViQXJjaGl2ZVJlc291cmNlPihp
KTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKLSAgICAgICAgY29yZUFyY2hpdmVSZXNvdXJj
ZXMuYXBwZW5kKHJlc291cmNlLT5jb3JlQXJjaGl2ZVJlc291cmNlKCkpOworICAgICAgICBjb3Jl
QXJjaGl2ZVJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQocmVzb3VyY2UtPmNvcmVBcmNoaXZlUmVz
b3VyY2UoKSk7CiAgICAgfQogCi0gICAgVmVjdG9yPFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4+IGNvcmVTdWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzOworICAgIFZlY3RvcjxSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4+IGNvcmVTdWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzOworICAgIGNvcmVT
dWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNoZWRT
dWJmcmFtZUFyY2hpdmVzLT5zaXplKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxX
ZWJBcmNoaXZlPiBzdWJmcmFtZVdlYkFyY2hpdmUgPSBtX2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMt
PmF0PFdlYkFyY2hpdmU+KGkpOwogICAgICAgICBBU1NFUlQoc3ViZnJhbWVXZWJBcmNoaXZlKTsK
LSAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMuYXBwZW5kKHN1YmZyYW1lV2Vi
QXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUoKSk7CisgICAgICAgIGNvcmVTdWJmcmFtZUxl
Z2FjeVdlYkFyY2hpdmVzLnVuY2hlY2tlZEFwcGVuZChzdWJmcmFtZVdlYkFyY2hpdmUtPmNvcmVM
ZWdhY3lXZWJBcmNoaXZlKCkpOwogICAgIH0KIAotICAgIG1fbGVnYWN5V2ViQXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwgY29yZUFy
Y2hpdmVSZXNvdXJjZXMsIGNvcmVTdWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzKTsKKyAgICBtX2xl
Z2FjeVdlYkFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29yZU1haW5SZXNvdXJj
ZS5yZWxlYXNlKCksIHN0ZDo6bW92ZShjb3JlQXJjaGl2ZVJlc291cmNlcyksIHN0ZDo6bW92ZShj
b3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNo
aXZlKEFQSTo6RGF0YSogZGF0YSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233318</attachid>
            <date>2014-06-18 11:49:46 -0700</date>
            <delta_ts>2014-06-18 12:41:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134032-20140618114923.patch</filename>
            <type>text/plain</type>
            <size>32267</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0YWIyZjMyZWQ2YzNm
NmUxMjVhZjFiZjA5ZmE0Y2EyMWUzZDBiYy4uYjExZTZiNDBmYTJhZGNiNjZkMzgzZTNkOGQ2NjRi
MzkyNzliNzZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE0LTA2LTE4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgbW9kZXJu
IEMrKzExIGxvb3BzIGFuZCBmaXggV2ViQXJjaGl2ZSBjcmVhdGlvbiBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDAzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBtb2Rlcm4gbG9v
cHMgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLCBmaXggRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNl
cygpIHRvIHJldHVybiBhIFZlY3RvciwKKyAgICAgICAgYW5kIHN0b3AgdXNpbmcgVmVjdG9ycyBv
ZiBQYXNzUmVmUHRycy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEluc2VydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0UmVtb3ZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dGV4dE5vZGVzTWVyZ2VkKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Z2V0U3VicmVzb3Vy
Y2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpkdW1wKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6
cmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6OmJlZ2luKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6OmVuZCk6IERlbGV0
ZWQuCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRp
bmdNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpmaWxsUmVz
b3VyY2VMaXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZh
bGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZUNvcHlPZkNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmg6Cisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlOjpkaXNw
YXRjaERlZmVycmVkRXZlbnRzKToKKwogMjAxNC0wNi0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBzdHJvbmdseSB0eXBlZCBlbnVtcyBmb3Ig
QW5pbWF0aW9uU3RhdGUgYW5kIEFuaW1hdGlvbklucHV0U3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBiNTdhMTU5MjY0MGQ1ZDgxYzFmNjVkYTNjZDEyYjNkMzhjYzBhMTU2Li41ZDFkNzkwNjZjNjQ0
M2U3NzE4YmVhMTZkNGYxY2RhZWNkYjA5NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTQtMDYtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBBZG9wdCBtb2Rlcm4gQysrMTEgbG9vcHMgYW5kIGZpeCBXZWJBcmNoaXZlIGNy
ZWF0aW9uIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM0MDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06CisgICAgICAgICgtW1dlYkFyY2hpdmUg
aW5pdFdpdGhNYWluUmVzb3VyY2U6c3VicmVzb3VyY2VzOnN1YmZyYW1lQXJjaGl2ZXM6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291
cmNlIHN1YnJlc291cmNlc10pOgorCiAyMDE0LTA2LTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGF1dG9yZWxlYXNlKCkgbWVtYmVyIGZ1
bmN0aW9uIHRvIFJldGFpblB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAyMWMzNWI0Zjc4OTdkNmE1NjNhMTc1
YjM5MWIyNDIzYjdjZmFhMzkuLjZjZjFmYjUwMGY5MjYyN2Q4ZDQ5YTVkYmUwMzFjNzFjNTY2ZjY2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wNi0xOCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG1vZGVybiBDKysxMSBs
b29wcyBhbmQgZml4IFdlYkFyY2hpdmUgY3JlYXRpb24gZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQwMzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZl
LmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZSk6CisKIDIwMTQtMDYt
MTcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgc2Vzc2lvbiBzdGF0ZSBtZXRob2RzIGZyb20gV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGEyZDJiMjU3YTc0YWMxOGJhNjEzZWQxZGRiMmNiOTE2
YTI4MTQ3YTMuLjc5N2JlNzFjN2U4NGUwZjI4MzQwODA3ZDBkZjEwY2ZkMGFkYWY4OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC02ODIsNyArNjgyLDcgQEAgX19aTjdXZWJDb3JlMTZJY29uRGF0
YWJhc2VCYXNlMjhzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTZJY29uRGF0YWJhc2VCYXNlNG9wZW5FUktOM1dURjZTdHJpbmdFUzRfCiBf
X1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmUxOWNyZWF0ZUZyb21TZWxlY3Rpb25FUE5TXzVG
cmFtZUUKIF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTIxcmF3RGF0YVJlcHJlc2VudGF0
aW9uRXYKLV9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfMTVBcmNoaXZlUmVzb3VyY2VFRUVSTlMxXzZWZWN0b3JJUzRfTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRVJOUzVfSU5TMl9JUzBfRUVMbTBFUzZfRUUKK19fWk43V2ViQ29yZTE2
TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTVBcmNoaXZlUmVz
b3VyY2VFRUVOUzFfNlZlY3RvcklOUzFfNlJlZlB0cklTM19FRUxtMEVOUzFfMTVDcmFzaE9uT3Zl
cmZsb3dFRUVOUzVfSU5TNl9JUzBfRUVMbTBFUzhfRUUKIF9fWk43V2ViQ29yZTE2TGVnYWN5V2Vi
QXJjaGl2ZTZjcmVhdGVFUE5TXzEyU2hhcmVkQnVmZmVyRQogX19aTjdXZWJDb3JlMTZMZWdhY3lX
ZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNE5vZGVFTlN0M19fMThmdW5jdGlvbklGYlJOU181RnJhbWVF
RUVFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU181RnJhbWVFCkBA
IC0xNjQwLDkgKzE2NDAsOSBAQCBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExZnJhbWVM
b2FkZXJFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMXJlc3BvbnNlVVJMRXYKIF9f
Wk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFzdWJyZXNvdXJjZUVSS05TXzNVUkxFCiBfX1pO
SzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEybWFpblJlc291cmNlRXYKK19fWk5LN1dlYkNvcmUx
NERvY3VtZW50TG9hZGVyMTJzdWJyZXNvdXJjZXNFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxM3VybEZvckhpc3RvcnlFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxNHVu
cmVhY2hhYmxlVVJMRXYKLV9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVnZXRTdWJyZXNv
dXJjZXNFUk4zV1RGNlZlY3RvcklOUzFfMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNl
RUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxNW9yaWdpbmFsUmVxdWVzdEV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE2
bWFpblJlc291cmNlRGF0YUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE3cGFyc2Vk
QXJjaGl2ZURhdGFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWQyMzJmNDgzZWU4NzUx
NmQzMDNhZGE1NWM5OGZhMzQyMjY2OGEzZi4uMTUzMjY2YzEzZWRlNDExMDA2NDQ1NzdhNDIwMTM2
MzU2YzhkZmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNjExLDkgKzM2MTEsOCBA
QCB2b2lkIERvY3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBuKQogdm9pZCBEb2N1bWVu
dDo6dGV4dEluc2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGlmICghbV9yYW5nZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEhhc2hTZXQ8
UmFuZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYW5nZXMuZW5kKCk7Ci0gICAgICAgIGZv
ciAoSGFzaFNldDxSYW5nZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmFuZ2VzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICgqaXQpLT50ZXh0SW5zZXJ0ZWQodGV4dCwg
b2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9yYW5nZXMpCisg
ICAgICAgICAgICByYW5nZS0+dGV4dEluc2VydGVkKHRleHQsIG9mZnNldCwgbGVuZ3RoKTsKICAg
ICB9CiAKICAgICAvLyBVcGRhdGUgdGhlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWFy
IGNoZWNraW5nLgpAQCAtMzYyMyw5ICszNjIyLDggQEAgdm9pZCBEb2N1bWVudDo6dGV4dEluc2Vy
dGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogdm9pZCBE
b2N1bWVudDo6dGV4dFJlbW92ZWQoTm9kZSogdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCiB7CiAgICAgaWYgKCFtX3Jhbmdlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSGFz
aFNldDxSYW5nZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jhbmdlcy5lbmQoKTsKLSAgICAg
ICAgZm9yIChIYXNoU2V0PFJhbmdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yYW5nZXMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgKCppdCktPnRleHRSZW1vdmVkKHRl
eHQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1fcmFuZ2Vz
KQorICAgICAgICAgICAgcmFuZ2UtPnRleHRSZW1vdmVkKHRleHQsIG9mZnNldCwgbGVuZ3RoKTsK
ICAgICB9CiAKICAgICAvLyBVcGRhdGUgdGhlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBncmFt
bWFyIGNoZWNraW5nLgpAQCAtMzYzNyw5ICszNjM1LDggQEAgdm9pZCBEb2N1bWVudDo6dGV4dE5v
ZGVzTWVyZ2VkKFRleHQqIG9sZE5vZGUsIHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBpZiAoIW1f
cmFuZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICBOb2RlV2l0aEluZGV4IG9sZE5vZGVXaXRoSW5k
ZXgob2xkTm9kZSk7Ci0gICAgICAgIEhhc2hTZXQ8UmFuZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9yYW5nZXMuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxSYW5nZSo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fcmFuZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
ICAgICgqaXQpLT50ZXh0Tm9kZXNNZXJnZWQob2xkTm9kZVdpdGhJbmRleCwgb2Zmc2V0KTsKKyAg
ICAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1fcmFuZ2VzKQorICAgICAgICAgICAgcmFuZ2UtPnRl
eHROb2Rlc01lcmdlZChvbGROb2RlV2l0aEluZGV4LCBvZmZzZXQpOwogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCB1cGRhdGUgbWFya2VycyBmb3Igc3BlbGxpbmcgYW5kIGdyYW1t
YXIgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCA4OGYzMWY2NGEyMGY0NjFhMzJlNzhjMGIyZWVhY2JiMWJjM2FjMmMxLi42MmNjYTc1NDFlZjMy
M2QyOThhNzg3ZDZmMGFmOGIxNjkxMjQ3ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMDUsMjAgKzExMDUsMTkgQEAgUGFzc1JlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShjb25zdCBVUkwmIHVybCkgY29u
c3QKICAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YS0+c2hhcmVkQnVmZmVy
KCksIHVybCwgcmVzb3VyY2UtPnJlc3BvbnNlKCkpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVy
OjpnZXRTdWJyZXNvdXJjZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mIHN1
YnJlc291cmNlcykgY29uc3QKK1ZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gRG9jdW1l
bnRMb2FkZXI6OnN1YnJlc291cmNlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8UmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4+IHN1YnJlc291cmNlczsKIAotICAgIGNvbnN0IENhY2hlZFJl
c291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsKLSAgICBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVz
b3VyY2VzLmVuZCgpOwotICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVz
b3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJj
ZSA9IHRoaXMtPnN1YnJlc291cmNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT52YWx1ZS0+dXJs
KCkpKTsKLSAgICAgICAgaWYgKHN1YnJlc291cmNlKQotICAgICAgICAgICAgc3VicmVzb3VyY2Vz
LmFwcGVuZChzdWJyZXNvdXJjZS5yZWxlYXNlKCkpOworICAgIGZvciAoYXV0byYgY2FjaGVkUmVz
b3VyY2VIYW5kbGUgOiBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMo
KS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gc3VicmVz
b3VyY2UgPSB0aGlzLT5zdWJyZXNvdXJjZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBjYWNoZWRSZXNv
dXJjZUhhbmRsZS0+dXJsKCkpKSkKKyAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoc3Rk
Ojptb3ZlKHN1YnJlc291cmNlKSk7CiAgICAgfQogCi0gICAgcmV0dXJuOworICAgIHJldHVybiBz
dWJyZXNvdXJjZXM7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRlbGl2ZXJTdWJzdGl0dXRl
UmVzb3VyY2VzQWZ0ZXJEZWxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CmluZGV4IDlhMTBlNWRjZmQ2M2ViZGM2OGRmOGEwZTdmOWRmNDgwMDA5MjI4ODkuLjQxZmQ2Zjk4
Zjk2NzZmMTZlMzU0OTJlMzgyYjhiZGY1Mjc1NTcwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCkBAIC0xNjIsOCArMTYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBSZXR1cm4gYW4gQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMLCBlaXRoZXIg
Y3JlYXRpbmcgZnJvbSBsaXZlIGRhdGEgb3IKICAgICAgICAgLy8gcHVsbGluZyBmcm9tIHRoZSBB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uCiAgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBzdWJyZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKLSAgICAgICAgdm9pZCBnZXRTdWJy
ZXNvdXJjZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mKSBjb25zdDsKLQor
ICAgICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+IHN1YnJlc291cmNlcygpIGNv
bnN0OwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIGlzU3Vic3RpdHV0ZUxvYWRQZW5k
aW5nKFJlc291cmNlTG9hZGVyKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOTgzYmVjYzIxMWY1N2FmMGIz
MzIxNDMwYjcyZTJlNGEzMDY0MzIyMy4uMzVmM2U5NWUzNTliODZmMzQ3ZTRlNDk5ZWJhZGQ0ZDY0
ZDkyODEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlLmNwcApAQCAtMjIyLDExICsyMjIsOSBAQCBpbnQ2NF90IEFwcGxpY2F0aW9u
Q2FjaGU6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogI2lmbmRl
ZiBOREVCVUcKIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZHVtcCgpCiB7Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+Pjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7Ci0gICAgCi0gICAgZm9yIChIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
cmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBwcmludGYoIiVz
ICIsIGl0LT5rZXkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmR1bXBUeXBlKGl0LT52YWx1ZS0+dHlwZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHVybEFuZFJlc291cmNlIDogbV9yZXNvdXJjZXMpIHsKKyAgICAgICAgcHJpbnRmKCIlcyAiLCB1
cmxBbmRSZXNvdXJjZS5rZXkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6ZHVtcFR5cGUodXJsQW5kUmVzb3VyY2UudmFsdWUtPnR5cGUoKSk7CiAgICAg
fQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaAppbmRleCA2ODA2MzVkZWZiMjljMDg4Nzk4MjliNzZlYTYwMGUxYWU0NmRm
YjhlLi5lNTQxZTgzMjA0N2NhMmYyNWU0N2NhNmNlNTQ4MWZiNTE5NTA1N2Q4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTgx
LDggKzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gUmVzb3VyY2VNYXA7Ci0gICAgUmVz
b3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZXMuYmVnaW4oKTsgfQotICAgIFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlcy5lbmQoKTsgfQorICAgIGNvbnN0IFJlc291cmNlTWFwJiBy
ZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlczsgfQogICAgIAogICAgIHZvaWQg
c2V0U3RvcmFnZUlEKHVuc2lnbmVkIHN0b3JhZ2VJRCkgeyBtX3N0b3JhZ2VJRCA9IHN0b3JhZ2VJ
RDsgfQogICAgIHVuc2lnbmVkIHN0b3JhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZUlE
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDRkN2ZjMDllOTZkMGE4MjFlNzI1N2RlMzk1YjQ2YTRi
M2I2ZDY0M2QuLmM2YTIzZjIzMThlZDUwMTMyNGExZTNiZWQ2NDVhZGUxNmZlOTMwNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgQVNTRVJUKG1fcGVuZGluZ0VudHJp
ZXMuaXNFbXB0eSgpKTsKIAogICAgIGlmIChpc1VwZ3JhZGVBdHRlbXB0KSB7Ci0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdXJsQW5kUmVzb3VyY2UgOiAqbV9uZXdlc3RDYWNoZSkgeworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHVybEFuZFJlc291cmNlIDogbV9uZXdlc3RDYWNoZS0+cmVzb3Vy
Y2VzKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSB1cmxBbmRSZXNvdXJjZS52YWx1
ZS0+dHlwZSgpOwogICAgICAgICAgICAgaWYgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6Ok1hc3RlcikKICAgICAgICAgICAgICAgICBhZGRFbnRyeSh1cmxBbmRSZXNvdXJjZS5rZXks
IHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggOTkxMDY3OTFkMjM1YmEzOWM4MTFmNjg5OGQwNDkz
MzY0MGE4MjExZS4uZmVjOTIzZDY5YzdhZDNlZTJmNjJhMzEyY2VlOTBiZmIzZTQzMTdkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCkBAIC0yODYsMTUgKzI4NiwxNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpmaWxsUmVzb3VyY2VMaXN0KFJlc291cmNlSW5mb0xpc3QqIHJlc291cmNlcykKICAgICBB
cHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGFwcGxpY2F0aW9uQ2FjaGUoKTsKICAgICBpZiAoIWNh
Y2hlIHx8ICFjYWNoZS0+aXNDb21wbGV0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
Zm9yIChjb25zdCBhdXRvJiB1cmxBbmRSZXNvdXJjZSA6ICpjYWNoZSkgewotICAgICAgICBSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IHVybEFuZFJlc291cmNlLnZh
bHVlOworCisgICAgZm9yIChjb25zdCBhdXRvJiB1cmxBbmRSZXNvdXJjZSA6IGNhY2hlLT5yZXNv
dXJjZXMoKSkgeworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlID0g
dXJsQW5kUmVzb3VyY2UudmFsdWUuZ2V0KCk7CisKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHJl
c291cmNlLT50eXBlKCk7Ci0gICAgICAgIGJvb2wgaXNNYXN0ZXIgICA9IHR5cGUgJiBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlcjsKKyAgICAgICAgYm9vbCBpc01hc3RlciA9IHR5cGUg
JiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlcjsKICAgICAgICAgYm9vbCBpc01hbmlm
ZXN0ID0gdHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6TWFuaWZlc3Q7CiAgICAgICAg
IGJvb2wgaXNFeHBsaWNpdCA9IHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkV4cGxp
Y2l0OwotICAgICAgICBib29sIGlzRm9yZWlnbiAgPSB0eXBlICYgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpGb3JlaWduOworICAgICAgICBib29sIGlzRm9yZWlnbiA9IHR5cGUgJiBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OkZvcmVpZ247CiAgICAgICAgIGJvb2wgaXNGYWxsYmFjayA9IHR5
cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrOworCiAgICAgICAgIHJlc291
cmNlcy0+YXBwZW5kKFJlc291cmNlSW5mbyhyZXNvdXJjZS0+dXJsKCksIGlzTWFzdGVyLCBpc01h
bmlmZXN0LCBpc0ZhbGxiYWNrLCBpc0ZvcmVpZ24sIGlzRXhwbGljaXQsIHJlc291cmNlLT5lc3Rp
bWF0ZWRTaXplSW5TdG9yYWdlKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCA5ODJhMzQyNmJkNDhmNDhmZWRhZWY2ZDUwZWE5OGU4NGIyMGU1ZGU0Li40ZTcxYzJlNjVlYzIy
MzljMGQ2ZjhmNGQ3ZWJhNjkxZjI2N2YxM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTI3
NSwxMCArMjc1LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICBBU1NFUlQoIXVybC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAKICAgICAvLyBDaGVjayBpZiBhbiBhcHByb3ByaWF0
ZSBjYWNoZSBhbHJlYWR5IGV4aXN0cyBpbiBtZW1vcnkuCi0gICAgQ2FjaGVHcm91cE1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJbk1lbW9yeS5lbmQoKTsKLSAgICBmb3IgKENhY2hl
R3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9
IGl0LT52YWx1ZTsKLSAgICAgICAgCisgICAgZm9yIChhdXRvIGdyb3VwIDogbV9jYWNoZXNJbk1l
bW9yeS52YWx1ZXMoKSkgewogICAgICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOwog
CiAgICAgICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGdyb3VwLT5uZXdlc3RDYWNo
ZSgpKSB7CkBAIC03NDEsMTcgKzczOCwxNCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgUmVzb3VyY2VTdG9yYWdlSURKbwogICAg
IHVuc2lnbmVkIGNhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YWJh
c2UubGFzdEluc2VydFJvd0lEKCkpOwogCiAgICAgLy8gU3RvcmUgYWxsIHJlc291cmNlcwotICAg
IHsKLSAgICAgICAgQXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGNhY2hlLT5lbmQoKTsKLSAgICAgICAgZm9yIChBcHBsaWNhdGlvbkNhY2hlOjpSZXNv
dXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBvbGRTdG9yYWdlSUQgPSBpdC0+dmFsdWUtPnN0
b3JhZ2VJRCgpOwotICAgICAgICAgICAgaWYgKCFzdG9yZShpdC0+dmFsdWUuZ2V0KCksIGNhY2hl
U3RvcmFnZUlEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChhdXRv
JiByZXNvdXJjZSA6IGNhY2hlLT5yZXNvdXJjZXMoKS52YWx1ZXMoKSkgeworICAgICAgICB1bnNp
Z25lZCBvbGRTdG9yYWdlSUQgPSByZXNvdXJjZS0+c3RvcmFnZUlEKCk7CisgICAgICAgIGlmICgh
c3RvcmUocmVzb3VyY2UuZ2V0KCksIGNhY2hlU3RvcmFnZUlEKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICAgICAgLy8gU3RvcmluZyB0aGUgcmVzb3VyY2Ugc3VjY2VlZGVk
LiBMb2cgaXRzIG9sZCBzdG9yYWdlSUQgaW4gY2FzZQotICAgICAgICAgICAgLy8gaXQgbmVlZHMg
dG8gYmUgcmVzdG9yZWQgbGF0ZXIuCi0gICAgICAgICAgICBzdG9yYWdlSURKb3VybmFsLT5hZGQo
aXQtPnZhbHVlLmdldCgpLCBvbGRTdG9yYWdlSUQpOwotICAgICAgICB9CisgICAgICAgIC8vIFN0
b3JpbmcgdGhlIHJlc291cmNlIHN1Y2NlZWRlZC4gTG9nIGl0cyBvbGQgc3RvcmFnZUlEIGluIGNh
c2UKKyAgICAgICAgLy8gaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuCisgICAgICAgIHN0
b3JhZ2VJREpvdXJuYWwtPmFkZChyZXNvdXJjZS5nZXQoKSwgb2xkU3RvcmFnZUlEKTsKICAgICB9
CiAgICAgCiAgICAgLy8gU3RvcmUgdGhlIG9ubGluZSB3aGl0ZWxpc3QKQEAgLTEyOTMsMTAgKzEy
ODcsOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSgpCiAgICAgLy8gQ2xl
YXIgdGhlIHN0b3JhZ2UgSURzIGZvciB0aGUgY2FjaGVzIGluIG1lbW9yeS4KICAgICAvLyBUaGUg
Y2FjaGVzIHdpbGwgc3RpbGwgd29yaywgYnV0IGNhY2hlZCByZXNvdXJjZXMgd2lsbCBub3QgYmUg
c2F2ZWQgdG8gZGlzayAKICAgICAvLyB1bnRpbCBhIGNhY2hlIHVwZGF0ZSBwcm9jZXNzIGhhcyBi
ZWVuIGluaXRpYXRlZC4KLSAgICBDYWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X2NhY2hlc0luTWVtb3J5LmVuZCgpOwotICAgIGZvciAoQ2FjaGVHcm91cE1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgaXQtPnZhbHVlLT5jbGVhclN0b3JhZ2VJRCgpOwotICAgIAorICAgIGZvciAoYXV0byBn
cm91cCA6IG1fY2FjaGVzSW5NZW1vcnkudmFsdWVzKCkpCisgICAgICAgIGdyb3VwLT5jbGVhclN0
b3JhZ2VJRCgpOworCiAgICAgY2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKCk7CiB9CiAgICAgCkBA
IC0xMzU3LDEwICsxMzUwLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVD
b3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBBcHAKICAgICBjYWNoZUNv
cHktPnNldEZhbGxiYWNrVVJMcyhjYWNoZS0+ZmFsbGJhY2tVUkxzKCkpOwogCiAgICAgLy8gVHJh
dmVyc2UgdGhlIGNhY2hlIGFuZCBhZGQgY29waWVzIG9mIGFsbCByZXNvdXJjZXMuCi0gICAgQXBw
bGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5l
bmQoKTsKLSAgICBmb3IgKEFwcGxpY2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGNhY2hlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAg
ICAgCisgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNhY2hlLT5yZXNvdXJjZXMoKS52YWx1ZXMo
KSkgewogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZUNv
cHkgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShyZXNvdXJjZS0+dXJsKCksIHJl
c291cmNlLT5yZXNwb25zZSgpLCByZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLCBy
ZXNvdXJjZS0+cGF0aCgpKTsKICAgICAgICAgCiAgICAgICAgIGNhY2hlQ29weS0+YWRkUmVzb3Vy
Y2UocmVzb3VyY2VDb3B5LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGQzN2YxYjhiZWNmMThm
MGVkYjczZjkwZDQxNmQ5MWJhOTM3YmNmZjAuLjY0ZDJiMDgzNmEyYjIzNzZmOGM5NjM2NGEyZjg1
OGQ2YTkwZDcyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgUGFzc1JlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTGVnYWN5V2ViQXJjaGl2ZSk7CiB9CiAKLVBhc3NSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+JiBz
dWJyZXNvdXJjZXMsIFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiYgc3ViZnJh
bWVBcmNoaXZlcykKK1Bhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3Rv
cjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+PiBzdWJmcmFtZUFyY2hpdmVzKQogewogICAgIEFTU0VSVChtYWluUmVz
b3VyY2UpOwogICAgIGlmICghbWFpblJlc291cmNlKQpAQCAtMjQ3LDEwICsyNDcsMTAgQEAgUGFz
c1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUGFzc1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2UKICAgICBhcmNoaXZlLT5zZXRNYWluUmVzb3VyY2UobWFpblJl
c291cmNlKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3VicmVzb3VyY2Vz
LnNpemUoKTsgKytpKQotICAgICAgICBhcmNoaXZlLT5hZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJj
ZXNbaV0pOworICAgICAgICBhcmNoaXZlLT5hZGRTdWJyZXNvdXJjZShzdGQ6Om1vdmUoc3VicmVz
b3VyY2VzW2ldKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1YmZyYW1l
QXJjaGl2ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2
ZShzdWJmcmFtZUFyY2hpdmVzW2ldKTsgIAorICAgICAgICBhcmNoaXZlLT5hZGRTdWJmcmFtZUFy
Y2hpdmUoc3RkOjptb3ZlKHN1YmZyYW1lQXJjaGl2ZXNbaV0pKTsKICAgICAgICAgCiAgICAgcmV0
dXJuIGFyY2hpdmUucmVsZWFzZSgpOwogfQpAQCAtNDYxLDE5ICs0NjEsMTUgQEAgUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhbWUqIGZyYW1l
KQogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAK
LSAgICBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4gc3ViZnJhbWVBcmNoaXZl
czsKKyAgICBWZWN0b3I8UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiBzdWJmcmFtZUFyY2hpdmVz
OwogICAgIAotICAgIHVuc2lnbmVkIGNoaWxkcmVuID0gZnJhbWUtPnRyZWUoKS5jaGlsZENvdW50
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNoaWxkRnJhbWVBcmNoaXZlID0gY3JlYXRlKGZy
YW1lLT50cmVlKCkuY2hpbGQoaSkpOwotICAgICAgICBpZiAoY2hpbGRGcmFtZUFyY2hpdmUpCi0g
ICAgICAgICAgICBzdWJmcmFtZUFyY2hpdmVzLmFwcGVuZChjaGlsZEZyYW1lQXJjaGl2ZS5yZWxl
YXNlKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZS0+dHJlZSgpLmNoaWxk
Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY2hp
bGRGcmFtZUFyY2hpdmUgPSBjcmVhdGUoZnJhbWUtPnRyZWUoKS5jaGlsZChpKSkpCisgICAgICAg
ICAgICBzdWJmcmFtZUFyY2hpdmVzLmFwcGVuZChzdGQ6Om1vdmUoY2hpbGRGcmFtZUFyY2hpdmUp
KTsKICAgICB9CiAKLSAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJy
ZXNvdXJjZXM7Ci0gICAgZG9jdW1lbnRMb2FkZXItPmdldFN1YnJlc291cmNlcyhzdWJyZXNvdXJj
ZXMpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlKCks
IHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7CisgICAgYXV0byBzdWJyZXNvdXJjZXMg
PSBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VzKCk7CisgICAgcmV0dXJuIGNyZWF0ZShkb2N1
bWVudExvYWRlci0+bWFpblJlc291cmNlKCksIHN0ZDo6bW92ZShzdWJyZXNvdXJjZXMpLCBzdGQ6
Om1vdmUoc3ViZnJhbWVBcmNoaXZlcykpOwogfQogCiBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCkBAIC01MTIsOCArNTA4
LDggQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgCiAgICAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1
ZmZlcihtYXJrdXBTdHJpbmcpLCByZXNwb25zZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVU
Ri04IiwgZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkpOwogCi0gICAgVmVjdG9yPFBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7Ci0gICAgVmVjdG9yPFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzOworICAgIFZlY3RvcjxSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7CisgICAgVmVjdG9yPFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXM7CiAgICAgSGFzaFNldDxVUkw+IHVuaXF1ZVN1
YnJlc291cmNlczsKIAogICAgIHNpemVfdCBub2Rlc1NpemUgPSBub2Rlcy5zaXplKCk7ICAgIApA
QCAtNTI1LDI4ICs1MjEsMjUgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgICAg
IGlmIChmcmFtZUZpbHRlciAmJiAhZnJhbWVGaWx0ZXIoKmNoaWxkRnJhbWUpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZShjaGlsZEZyYW1lLT5kb2N1
bWVudCgpLCBmcmFtZUZpbHRlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzdWJm
cmFtZUFyY2hpdmUpCi0gICAgICAgICAgICAgICAgc3ViZnJhbWVBcmNoaXZlcy5hcHBlbmQoc3Vi
ZnJhbWVBcmNoaXZlKTsKKyAgICAgICAgICAgIGlmIChSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
c3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKGNoaWxkRnJhbWUtPmRvY3VtZW50KCksIGZyYW1lRmls
dGVyKSkKKyAgICAgICAgICAgICAgICBzdWJmcmFtZUFyY2hpdmVzLmFwcGVuZChzdGQ6Om1vdmUo
c3ViZnJhbWVBcmNoaXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGVkIHRvIGFyY2hpdmUgc3ViZnJhbWUgJXMiLCBjaGlsZEZyYW1lLT50cmVl
KCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBMaXN0SGFzaFNldDxVUkw+IHN1YnJlc291cmNlVVJMczsKICAgICAg
ICAgICAgIG5vZGUuZ2V0U3VicmVzb3VyY2VVUkxzKHN1YnJlc291cmNlVVJMcyk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwotICAgICAgICAgICAgTGlzdEhhc2hTZXQ8VVJM
Pjo6aXRlcmF0b3IgaXRlckVuZCA9IHN1YnJlc291cmNlVVJMcy5lbmQoKTsKLSAgICAgICAgICAg
IGZvciAoTGlzdEhhc2hTZXQ8VVJMPjo6aXRlcmF0b3IgaXRlciA9IHN1YnJlc291cmNlVVJMcy5i
ZWdpbigpOyBpdGVyICE9IGl0ZXJFbmQ7ICsraXRlcikgewotICAgICAgICAgICAgICAgIGNvbnN0
IFVSTCYgc3VicmVzb3VyY2VVUkwgPSAqaXRlcjsKKworICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzdWJyZXNvdXJjZVVSTCA6IHN1YnJlc291cmNlVVJMcykgewogICAgICAgICAgICAgICAg
IGlmICh1bmlxdWVTdWJyZXNvdXJjZXMuY29udGFpbnMoc3VicmVzb3VyY2VVUkwpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHVuaXF1ZVN1YnJlc291
cmNlcy5hZGQoc3VicmVzb3VyY2VVUkwpOwogCi0gICAgICAgICAgICAgICAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2Uoc3VicmVz
b3VyY2VVUkwpOwotICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICAgICAg
ICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAg
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZG9jdW1lbnRM
b2FkZXItPnN1YnJlc291cmNlKHN1YnJlc291cmNlVVJMKSkgeworICAgICAgICAgICAgICAgICAg
ICBzdWJyZXNvdXJjZXMuYXBwZW5kKHN0ZDo6bW92ZShyZXNvdXJjZSkpOwogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTU1Nyw5ICs1NTAsOSBA
QCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChyZXF1
ZXN0LCBmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNh
Y2hlZFJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlQnVmZmVyKiBkYXRh
ID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YSA/IGRhdGEtPnNoYXJlZEJ1
ZmZlcigpIDogMCwgc3VicmVzb3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoZGF0YSA/IGRhdGEtPnNoYXJlZEJ1ZmZlcigpIDogMCwgc3VicmVz
b3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChzdGQ6Om1vdmUocmVzb3VyY2UpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNTgxLDcgKzU3NCw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY3JlYXRlKG1haW5SZXNvdXJjZS5yZWxl
YXNlKCksIHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7CisgICAgcmV0dXJuIGNyZWF0
ZShtYWluUmVzb3VyY2UucmVsZWFzZSgpLCBzdWJyZXNvdXJjZXMsIHN0ZDo6bW92ZShzdWJmcmFt
ZUFyY2hpdmVzKSk7CiB9CiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCkBAIC02MTIsMTQgKzYw
NSw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9
ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWln
aHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJc
Ij48L2lmcmFtZT4iOwogICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGlmcmFtZVJlc291cmNl
ID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFu
a1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0gICAgVmVjdG9yPFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzOwotCi0gICAgVmVjdG9yPFBh
c3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7Ci0gICAgc3ViZnJh
bWVBcmNoaXZlcy5hcHBlbmQoYXJjaGl2ZSk7Ci0gICAgCi0gICAgYXJjaGl2ZSA9IGNyZWF0ZShp
ZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7
Ci0gICAgCi0gICAgcmV0dXJuIGFyY2hpdmUucmVsZWFzZSgpOworICAgIHJldHVybiBjcmVhdGUo
aWZyYW1lUmVzb3VyY2UucmVsZWFzZSgpLCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+
IHsgfSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZlIH0pOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmgKaW5kZXggNDBjZGYzMWM2YTc1ZGE3YTYwZmM5ZjY0NDQyNjFiMGMwNDU2MGVkMy4u
ZjQ3YzRmOTlhMDQyYzdiNDk5OWM3Zjg0ZDYwZTdjY2VmZWQ3ODhjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKFNoYXJlZEJ1ZmZlciopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IG1haW5SZXNvdXJjZSwgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mIHN1YnJl
c291cmNlcywgVmVjdG9yPFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4+JiBzdWJmcmFtZUFy
Y2hpdmVzKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUo
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSwgVmVjdG9yPFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNyZWF0ZShOb2RlKiwgc3RkOjpmdW5jdGlvbjxib29sIChGcmFtZSYpPiBmcmFt
ZUZpbHRlciA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZShGcmFtZSopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwCmluZGV4
IDYxNWU1MTViYjRhYzQ3ZGZjMTMyMjJkMDEwYjZmYTAxNzZkNGE5YTkuLjRhNGVmMDVmY2NmODcw
ZWQ4MmRlZGNiMTYzNDRkOTI2YTBjOThhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcApAQCAtMTQw
LDE2ICsxNDAsMTMgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZTo6
ZGlzcGF0Y2hEZWZlcnJlZEV2ZW50cyhUaW1lcjxYTUxIdHRwUmUKICAgICBtX2RlZmVyRXZlbnRz
ID0gZmFsc2U7CiAKICAgICAvLyBUYWtlIG92ZXIgdGhlIGRlZmVycmVkIGV2ZW50cyBiZWZvcmUg
ZGlzcGF0Y2hpbmcgdGhlbSB3aGljaCBjYW4gcG90ZW50aWFsbHkgYWRkIG1vcmUuCi0gICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4+IGRlZmVycmVkRXZlbnRzOwotICAgIG1fZGVmZXJyZWRFdmVudHMu
c3dhcChkZWZlcnJlZEV2ZW50cyk7CisgICAgYXV0byBkZWZlcnJlZEV2ZW50cyA9IHN0ZDo6bW92
ZShtX2RlZmVycmVkRXZlbnRzKTsKIAogICAgIFJlZlB0cjxFdmVudD4gZGVmZXJyZWRQcm9ncmVz
c0V2ZW50ID0gbV9kZWZlcnJlZFByb2dyZXNzRXZlbnQ7Ci0gICAgbV9kZWZlcnJlZFByb2dyZXNz
RXZlbnQgPSAwOworICAgIG1fZGVmZXJyZWRQcm9ncmVzc0V2ZW50ID0gbnVsbHB0cjsKIAotICAg
IFZlY3RvcjxSZWZQdHI8RXZlbnQ+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkZWZlcnJlZEV2ZW50
cy5iZWdpbigpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RXZlbnQ+Pjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gZGVmZXJyZWRFdmVudHMuZW5kKCk7Ci0gICAgZm9yICg7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgZGlzcGF0Y2hFdmVudCgqaXQpOworICAgIGZvciAoYXV0byYgZGVmZXJyZWRF
dmVudCA6IGRlZmVycmVkRXZlbnRzKQorICAgICAgICBkaXNwYXRjaEV2ZW50KGRlZmVycmVkRXZl
bnQucmVsZWFzZSgpKTsKIAogICAgIC8vIFRoZSBwcm9ncmVzcyBldmVudCB3aWxsIGJlIGluIHRo
ZSBtX2RlZmVycmVkRXZlbnRzIHZlY3RvciBpZiB0aGUgbG9hZCB3YXMgZmluaXNoZWQgd2hpbGUg
c3VzcGVuZGVkLgogICAgIC8vIElmIG5vdCwganVzdCBzZW5kIHRoZSBtb3N0IHVwLXRvLWRhdGUg
cHJvZ3Jlc3Mgb24gcmVzdW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJBcmNoaXZlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1t
CmluZGV4IDc3ZWEyYzc4MGRjZGM1NWIxZDE4YmQ0NWIzNjliYjJlZTcwMDM3NWYuLjJmZjA4ODBh
NDY5NmM5ZDYyMzI3NjViNzc0YzM3Mzk3NTdhMjQ1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkFyY2hpdmUubW0KQEAgLTE3OCwyNCArMTc4LDIyIEBAIHN0YXRpYyBCT09MIGlzQXJy
YXlPZkNsYXNzKGlkIG9iamVjdCwgQ2xhc3MgZWxlbWVudENsYXNzKQogICAgIAogICAgIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVNYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2UgPyBbbWFp
blJlc291cmNlIF9jb3JlUmVzb3VyY2VdIDogMDsKIAotICAgIFZlY3RvcjxQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4+IGNvcmVSZXNvdXJjZXM7Ci0gICAgTlNFbnVtZXJhdG9yICplbnVtZXJh
dG9yID0gW3N1YnJlc291cmNlcyBvYmplY3RFbnVtZXJhdG9yXTsKLSAgICBXZWJSZXNvdXJjZSAq
c3VicmVzb3VyY2U7Ci0gICAgd2hpbGUgKChzdWJyZXNvdXJjZSA9IFtlbnVtZXJhdG9yIG5leHRP
YmplY3RdKSAhPSBuaWwpCisgICAgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBjb3Jl
UmVzb3VyY2VzOworICAgIGZvciAoV2ViUmVzb3VyY2UgKnN1YnJlc291cmNlIGluIHN1YnJlc291
cmNlcykKICAgICAgICAgY29yZVJlc291cmNlcy5hcHBlbmQoW3N1YnJlc291cmNlIF9jb3JlUmVz
b3VyY2VdKTsKIAotICAgIFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiBjb3Jl
QXJjaGl2ZXM7Ci0gICAgZW51bWVyYXRvciA9IFtzdWJmcmFtZUFyY2hpdmVzIG9iamVjdEVudW1l
cmF0b3JdOwotICAgIFdlYkFyY2hpdmUgKnN1YmZyYW1lQXJjaGl2ZTsKLSAgICB3aGlsZSAoKHN1
YmZyYW1lQXJjaGl2ZSA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSAhPSBuaWwpCisgICAgVmVj
dG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4gY29yZUFyY2hpdmVzOworICAgIGZvciAoV2Vi
QXJjaGl2ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMpCiAgICAgICAgIGNv
cmVBcmNoaXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUgY29yZUFyY2hpdmVd
KTsKIAotICAgIFtfcHJpdmF0ZSBzZXRDb3JlQXJjaGl2ZTpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29yZU1haW5SZXNvdXJjZS5yZWxlYXNlKCksIGNvcmVSZXNvdXJjZXMsIGNvcmVBcmNoaXZl
cyldOwotICAgIGlmICghW19wcml2YXRlIGNvcmVBcmNoaXZlXSkgeworICAgIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3Jl
TWFpblJlc291cmNlLnJlbGVhc2UoKSwgc3RkOjptb3ZlKGNvcmVSZXNvdXJjZXMpLCBzdGQ6Om1v
dmUoY29yZUFyY2hpdmVzKSk7CisgICAgaWYgKCFjb3JlQXJjaGl2ZSkgewogICAgICAgICBbc2Vs
ZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKKyAgICBbX3ByaXZhdGUg
c2V0Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFzZSgpXTsKKwogICAgIHJldHVybiBzZWxm
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXgg
MzkxZDNiNWJhNDFjZTFmYzFmMmMyYzJjZTg5MTkwNGE3ZTI2NDQzMy4uMmQ2YjM2N2NjODZlMDJh
NjFmNTZkNmY1YTViYTY1ZDBlMjdmODNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQpAQCAtNjA2LDE5ICs2MDYsMTUgQEAgc3RhdGljIGlubGluZSB2b2lk
IGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBv
YmpDQ2wKIAogLSAoTlNBcnJheSAqKXN1YnJlc291cmNlcwogewotICAgIFZlY3RvcjxQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4+IGNvcmVTdWJyZXNvdXJjZXM7Ci0gICAgdG9Qcml2YXRlKF9w
cml2YXRlKS0+bG9hZGVyLT5nZXRTdWJyZXNvdXJjZXMoY29yZVN1YnJlc291cmNlcyk7Ci0KLSAg
ICBOU011dGFibGVBcnJheSAqc3VicmVzb3VyY2VzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpjb3JlU3VicmVzb3VyY2VzLnNpemUoKV07Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNvcmVTdWJyZXNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
V2ViUmVzb3VyY2UgKnJlc291cmNlID0gW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29y
ZVJlc291cmNlOmNvcmVTdWJyZXNvdXJjZXNbaV1dOwotICAgICAgICBpZiAocmVzb3VyY2UpIHsK
LSAgICAgICAgICAgIFtzdWJyZXNvdXJjZXMgYWRkT2JqZWN0OnJlc291cmNlXTsKLSAgICAgICAg
ICAgIFtyZXNvdXJjZSByZWxlYXNlXTsKLSAgICAgICAgfQorICAgIGF1dG8gY29yZVN1YnJlc291
cmNlcyA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c3VicmVzb3VyY2VzKCk7CisKKyAg
ICBhdXRvIHN1YnJlc291cmNlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTpjb3JlU3VicmVzb3VyY2VzLnNpemUoKV0pOworICAgIGZvciAoY29uc3Qg
YXV0byYgY29yZVN1YnJlc291cmNlIDogY29yZVN1YnJlc291cmNlcykgeworICAgICAgICBpZiAo
YXV0byByZXNvdXJjZSA9IGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29y
ZVJlc291cmNlOmNvcmVTdWJyZXNvdXJjZV0pKQorICAgICAgICAgICAgW3N1YnJlc291cmNlcyBh
ZGRPYmplY3Q6cmVzb3VyY2UuZ2V0KCldOwogICAgIH0KIAotICAgIHJldHVybiBbc3VicmVzb3Vy
Y2VzIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gc3VicmVzb3VyY2VzLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKFdlYlJlc291cmNlICopc3VicmVzb3VyY2VGb3JVUkw6KE5TVVJMICopVVJMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5jcHAKaW5kZXggZGM3OWZhNWVjYzA5YTk2
OTE5YTJkN2Y4ODRlMDk0NTg5NTM3NzNjYS4uODY3NDc0NjY0MGNhOTVhNmIzMmI5ZjkwYmNhYWVk
ZGM1ZWQxZWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hp
dmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLmNwcApAQCAt
NjUsMjEgKzY1LDI0IEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNl
KiBtYWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4KIHsKICAgICBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBjb3JlTWFpblJlc291cmNlID0gbV9jYWNoZWRNYWluUmVzb3VyY2UtPmNv
cmVBcmNoaXZlUmVzb3VyY2UoKTsKIAotICAgIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4+IGNvcmVBcmNoaXZlUmVzb3VyY2VzOworICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPj4gY29yZUFyY2hpdmVSZXNvdXJjZXM7CisgICAgY29yZUFyY2hpdmVSZXNvdXJjZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2NhY2hlZFN1YnJlc291cmNlcy0+c2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FjaGVkU3VicmVzb3VyY2VzLT5zaXplKCk7ICsr
aSkgewogICAgICAgICBSZWZQdHI8V2ViQXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IG1fY2Fj
aGVkU3VicmVzb3VyY2VzLT5hdDxXZWJBcmNoaXZlUmVzb3VyY2U+KGkpOwogICAgICAgICBBU1NF
UlQocmVzb3VyY2UpOwotICAgICAgICBjb3JlQXJjaGl2ZVJlc291cmNlcy5hcHBlbmQocmVzb3Vy
Y2UtPmNvcmVBcmNoaXZlUmVzb3VyY2UoKSk7CisgICAgICAgIGNvcmVBcmNoaXZlUmVzb3VyY2Vz
LnVuY2hlY2tlZEFwcGVuZChyZXNvdXJjZS0+Y29yZUFyY2hpdmVSZXNvdXJjZSgpKTsKICAgICB9
CiAKLSAgICBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4gY29yZVN1YmZyYW1l
TGVnYWN5V2ViQXJjaGl2ZXM7CisgICAgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4g
Y29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXM7CisgICAgY29yZVN1YmZyYW1lTGVnYWN5V2Vi
QXJjaGl2ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMt
PnNpemUoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FjaGVkU3ViZnJhbWVB
cmNoaXZlcy0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPFdlYkFyY2hpdmU+IHN1YmZy
YW1lV2ViQXJjaGl2ZSA9IG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlcy0+YXQ8V2ViQXJjaGl2ZT4o
aSk7CiAgICAgICAgIEFTU0VSVChzdWJmcmFtZVdlYkFyY2hpdmUpOwotICAgICAgICBjb3JlU3Vi
ZnJhbWVMZWdhY3lXZWJBcmNoaXZlcy5hcHBlbmQoc3ViZnJhbWVXZWJBcmNoaXZlLT5jb3JlTGVn
YWN5V2ViQXJjaGl2ZSgpKTsKKyAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMu
dW5jaGVja2VkQXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUo
KSk7CiAgICAgfQogCi0gICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGNvcmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBjb3JlQXJjaGl2ZVJlc291cmNlcywg
Y29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMpOworICAgIG1fbGVnYWN5V2ViQXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwgc3Rk
Ojptb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgc3RkOjptb3ZlKGNvcmVTdWJmcmFtZUxlZ2Fj
eVdlYkFyY2hpdmVzKSk7CiB9CiAKIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoQVBJOjpEYXRhKiBk
YXRhKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>