<?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>65354</bug_id>
          
          <creation_ts>2011-07-28 19:19:45 -0700</creation_ts>
          <short_desc>[chromium] Reorder functions in LayerRendererChromium.cpp to make bug 58840 easier to review</short_desc>
          <delta_ts>2011-07-29 18:26:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>58840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443768</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-28 19:19:45 -0700</bug_when>
    <thetext>[chromium] Reorder functions in LayerRendererChromium.cpp to make bug 58840 easier to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443769</commentid>
    <comment_count>1</comment_count>
      <attachid>102324</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-28 19:21:07 -0700</bug_when>
    <thetext>Created attachment 102324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443770</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-28 19:21:39 -0700</bug_when>
    <thetext>This just shuffles code around but doesn&apos;t change anything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444016</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-29 11:08:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This just shuffles code around but doesn&apos;t change anything else.

This seems quite straightforward.  I&apos;ll unofficially give it my ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444143</commentid>
    <comment_count>4</comment_count>
      <attachid>102324</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-29 15:19:01 -0700</bug_when>
    <thetext>Comment on attachment 102324
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444167</commentid>
    <comment_count>5</comment_count>
      <attachid>102324</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 16:19:13 -0700</bug_when>
    <thetext>Comment on attachment 102324
Patch

Rejecting attachment 102324 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 1

Last 500 characters of output:
4647d77504c0e855c57bbcaec87f101517e229b6
r92030 = 407c10b1dc3e2cf898131dfc12ff4a89ecd8b615
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/9264646</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444168</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-29 16:25:06 -0700</bug_when>
    <thetext>I fail so hardcore at ChangeLogs :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444215</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-29 18:26:17 -0700</bug_when>
    <thetext>Committed r92037: &lt;http://trac.webkit.org/changeset/92037&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102324</attachid>
            <date>2011-07-28 19:21:07 -0700</date>
            <delta_ts>2011-07-29 16:19:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65354-20110728192106.patch</filename>
            <type>text/plain</type>
            <size>33125</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4Mzg1ODkyNTRmYjBiYWFm
MDg5YTgzMzZhMjRhNDM1NzBkNDVjNzAwLi4xMzBlNGVlYjlhZjdiNTkwZGQxYzRlYmFlN2RiYjNk
ZTE2ZTgxYmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMjggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJl
b3JkZXIgZnVuY3Rpb25zIGluIExheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgdG8gbWFrZSBidWcg
NTg4NDAgZWFzaWVyIHRvIHJldmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUzNTQKKworICAgICAgICBUaGlzIG1vdmVzIGEgZmV3IGZ1bmN0aW9u
IGRlZmluaXRpb25zIGluIExheWVyUmVuZGVyZXJDaHJvbWl1bSBhcm91bmQgdG8gbWFrZSB0aGUg
cGF0Y2ggb24gYnVnIDU4ODQwIGVhc2llciB0bworICAgICAgICByZXZpZXcuICBJbiB0aGF0IHBh
dGNoLCB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3VyZmFjZXMoKSBiZWNvbWVzIGEgdGVtcGxh
dGVkIGZyZWUgZnVuY3Rpb24gaW5zdGVhZCBvZiBhCisgICAgICAgIG1lbWJlciBmdW5jdGlvbiwg
c28gaXQgaGFzIHRvIGJlIG5lYXIgdGhlIHRvcCBvZiB0aGUgLmNwcC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxjdWxhdGVWaXNpYmxlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpp
c1NjYWxlT3JUcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnVwZGF0ZVByb3BlcnRpZXNBbmRSZW5kZXJTdXJmYWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycyk6CisKIDIwMTEtMDctMjgg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cDovL3dl
YmtpdC5vcmcvYi82NTI4OT4gUmVtb3ZlIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNTQwMjA2ODJiMzIyYzExNmZmNjYz
ZmQ4YzhhN2Q4YzEzMzMxMGQ5MS4uZTQ3ZDVkODYwMDQwN2FhNjIyYWQ0ZmZiY2IzY2NkZmNmOTE3
MTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC03Nyw2ICs3
NywyOTMgQEAgc3RhdGljIHNpemVfdCB0ZXh0dXJlTWVtb3J5TG93TGltaXRCeXRlcyA9IDMgKiAx
MDI0ICogMTAyNDsKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzX2luUGFpbnRMYXllckNv
bnRlbnRzID0gZmFsc2U7CiAjZW5kaWYKIAorc3RhdGljIEludFJlY3QgY2FsY3VsYXRlVmlzaWJs
ZVJlY3QoY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZVJlY3QsIGNvbnN0IEludFJlY3QmIGxh
eWVyQm91bmRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorewor
ICAgIC8vIElzIHRoaXMgbGF5ZXIgZnVsbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgdGFyZ2V0IHN1
cmZhY2U/CisgICAgSW50UmVjdCBsYXllckluU3VyZmFjZVNwYWNlID0gdHJhbnNmb3JtLm1hcFJl
Y3QobGF5ZXJCb3VuZFJlY3QpOworICAgIGlmICh0YXJnZXRTdXJmYWNlUmVjdC5jb250YWlucyhs
YXllckluU3VyZmFjZVNwYWNlKSkKKyAgICAgICAgcmV0dXJuIGxheWVyQm91bmRSZWN0OworCisg
ICAgLy8gSWYgdGhlIGxheWVyIGRvZXNuJ3QgZmlsbCB1cCB0aGUgZW50aXJlIHN1cmZhY2UsIHRo
ZW4gZmluZCB0aGUgcGFydCBvZgorICAgIC8vIHRoZSBzdXJmYWNlIHJlY3Qgd2hlcmUgdGhlIGxh
eWVyIGNvdWxkIGJlIHZpc2libGUuIFRoaXMgYXZvaWRzIHRyeWluZyB0bworICAgIC8vIHByb2pl
Y3Qgc3VyZmFjZSByZWN0IHBvaW50cyB0aGF0IGFyZSBiZWhpbmQgdGhlIHByb2plY3Rpb24gcG9p
bnQuCisgICAgSW50UmVjdCBtaW5pbWFsU3VyZmFjZVJlY3QgPSB0YXJnZXRTdXJmYWNlUmVjdDsK
KyAgICBtaW5pbWFsU3VyZmFjZVJlY3QuaW50ZXJzZWN0KGxheWVySW5TdXJmYWNlU3BhY2UpOwor
CisgICAgLy8gUHJvamVjdCB0aGUgY29ybmVycyBvZiB0aGUgdGFyZ2V0IHN1cmZhY2UgcmVjdCBp
bnRvIHRoZSBsYXllciBzcGFjZS4KKyAgICAvLyBUaGlzIGJvdW5kaW5nIHJlY3RhbmdsZSBtYXkg
YmUgbGFyZ2VyIHRoYW4gaXQgbmVlZHMgdG8gYmUgKGJlaW5nCisgICAgLy8gYXhpcy1hbGlnbmVk
KSwgYnV0IGlzIGEgcmVhc29uYWJsZSBmaWx0ZXIgb24gdGhlIHNwYWNlIHRvIGNvbnNpZGVyLgor
ICAgIC8vIE5vbi1pbnZlcnRpYmxlIHRyYW5zZm9ybXMgd2lsbCBjcmVhdGUgYW4gZW1wdHkgcmVj
dCBoZXJlLgorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IHN1cmZhY2VUb0xheWVyID0g
dHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IHN1cmZhY2VUb0xh
eWVyLnByb2plY3RRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QobWluaW1hbFN1cmZhY2VSZWN0KSkp
LmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAgbGF5ZXJSZWN0LmludGVyc2VjdChsYXllckJv
dW5kUmVjdCk7CisgICAgcmV0dXJuIGxheWVyUmVjdDsKK30KKworLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBtYXRyaXggaGFzIG5vIHJvdGF0aW9uLCBza2V3IG9yIHBlcnNwZWN0aXZlIGNvbXBvbmVu
dHMgdG8gaXQuCitzdGF0aWMgYm9vbCBpc1NjYWxlT3JUcmFuc2xhdGlvbihjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbSkKK3sKKyAgICByZXR1cm4gIW0ubTEyKCkgJiYgIW0ubTEzKCkgJiYg
IW0ubTE0KCkKKyAgICAgICAgICAgJiYgIW0ubTIxKCkgJiYgIW0ubTIzKCkgJiYgIW0ubTI0KCkK
KyAgICAgICAgICAgJiYgIW0ubTMxKCkgJiYgIW0ubTMyKCkgJiYgIW0ubTQzKCkKKyAgICAgICAg
ICAgJiYgbS5tNDQoKTsKKworfQorCisvLyBSZWN1cnNpdmVseSB3YWxrcyB0aGUgbGF5ZXIgdHJl
ZSBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gbm9kZSBhbmQgY29tcHV0ZXMgYWxsIHRoZQorLy8gbmVj
ZXNzYXJ5IHRyYW5zZm9ybWF0aW9ucywgc2Npc3NvciByZWN0YW5nbGVzLCByZW5kZXIgc3VyZmFj
ZXMsIGV0Yy4KK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVQcm9wZXJ0aWVzQW5k
UmVuZGVyU3VyZmFjZXMoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcGFyZW50TWF0cml4LCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIExh
eWVyTGlzdCYgbGF5ZXJMaXN0KQoreworICAgIC8vIENvbXB1dGUgdGhlIG5ldyBtYXRyaXggdHJh
bnNmb3JtYXRpb24gdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhpcyBsYXllciBhbmQKKyAgICAv
LyBhbGwgaXRzIGNoaWxkcmVuLiBJdCdzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRoZSBs
YXllcidzIHBvc2l0aW9uCisgICAgLy8gaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYXllcidzIGFu
Y2hvciBwb2ludC4gQWxzbywgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQKKyAgICAvLyBhc3N1
bWVzIHRoYXQgdGhlIG9yaWdpbiBpcyBhdCB0aGUgbG93ZXIgbGVmdCBldmVuIHRob3VnaCB0aGUg
Y29vcmRpbmF0ZXMgdGhlIGJyb3dzZXIKKyAgICAvLyBnaXZlcyB1cyBmb3IgdGhlIGxheWVycyBh
cmUgZm9yIHRoZSB1cHBlciBsZWZ0IGNvcm5lci4gVGhlIFkgZmxpcCBoYXBwZW5zIHZpYQorICAg
IC8vIHRoZSBvcnRob2dyYXBoaWMgcHJvamVjdGlvbiBhcHBsaWVkIGF0IHJlbmRlciB0aW1lLgor
ICAgIC8vIFRoZSB0cmFuc2Zvcm1hdGlvbiBjaGFpbiBmb3IgdGhlIGxheWVyIGlzICh1c2luZyB0
aGUgTWF0cml4IHggVmVjdG9yIG9yZGVyKToKKyAgICAvLyBNID0gTVtwXSAqIFRyW2xdICogTVts
XSAqIFRyW2NdCisgICAgLy8gV2hlcmUgTVtwXSBpcyB0aGUgcGFyZW50IG1hdHJpeCBwYXNzZWQg
ZG93biB0byB0aGUgZnVuY3Rpb24KKyAgICAvLyAgICAgICBUcltsXSBpcyB0aGUgdHJhbnNsYXRp
b24gbWF0cml4IGxvY2F0aW5nIHRoZSBsYXllcidzIGFuY2hvciBwb2ludAorICAgIC8vICAgICAg
IFRyW2NdIGlzIHRoZSB0cmFuc2xhdGlvbiBvZmZzZXQgYmV0d2VlbiB0aGUgYW5jaG9yIHBvaW50
IGFuZCB0aGUgY2VudGVyIG9mIHRoZSBsYXllcgorICAgIC8vICAgICAgIE1bbF0gaXMgdGhlIGxh
eWVyJ3MgbWF0cml4IChhcHBsaWVkIGF0IHRoZSBhbmNob3IgcG9pbnQpCisgICAgLy8gVGhpcyB0
cmFuc2Zvcm0gY3JlYXRlcyBhIGNvb3JkaW5hdGUgc3lzdGVtIHdob3NlIG9yaWdpbiBpcyB0aGUg
Y2VudGVyIG9mIHRoZSBsYXllci4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIGZpbmFsIG1hdHJpeCB1
c2VkIGJ5IHRoZSBzaGFkZXIgZm9yIHRoZSBsYXllciBpcyBQICogTSAqIFMgLiBUaGlzIGZpbmFs
IHByb2R1Y3QKKyAgICAvLyBpcyBjb21wdXRlZCBpbiBkcmF3VGV4dHVyZWRRdWFkKCkuCisgICAg
Ly8gV2hlcmU6IFAgaXMgdGhlIHByb2plY3Rpb24gbWF0cml4CisgICAgLy8gICAgICAgIE0gaXMg
dGhlIGxheWVyJ3MgbWF0cml4IGNvbXB1dGVkIGFib3ZlCisgICAgLy8gICAgICAgIFMgaXMgdGhl
IHNjYWxlIGFkanVzdG1lbnQgKHRvIHNjYWxlIHVwIHRvIHRoZSBsYXllciBzaXplKQorICAgIElu
dFNpemUgYm91bmRzID0gbGF5ZXItPmJvdW5kcygpOworICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9p
bnQgPSBsYXllci0+YW5jaG9yUG9pbnQoKTsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gbGF5
ZXItPnBvc2l0aW9uKCk7CisKKyAgICAvLyBPZmZzZXQgYmV0d2VlbiBhbmNob3IgcG9pbnQgYW5k
IHRoZSBjZW50ZXIgb2YgdGhlIHF1YWQuCisgICAgZmxvYXQgY2VudGVyT2Zmc2V0WCA9ICgwLjUg
LSBhbmNob3JQb2ludC54KCkpICogYm91bmRzLndpZHRoKCk7CisgICAgZmxvYXQgY2VudGVyT2Zm
c2V0WSA9ICgwLjUgLSBhbmNob3JQb2ludC55KCkpICogYm91bmRzLmhlaWdodCgpOworCisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJMb2NhbFRyYW5zZm9ybTsKKyAgICAvLyBMVCA9IFRy
W2xdCisgICAgbGF5ZXJMb2NhbFRyYW5zZm9ybS50cmFuc2xhdGUzZChwb3NpdGlvbi54KCksIHBv
c2l0aW9uLnkoKSwgbGF5ZXItPmFuY2hvclBvaW50WigpKTsKKyAgICAvLyBMVCA9IFRyW2xdICog
TVtsXQorICAgIGxheWVyTG9jYWxUcmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPnRyYW5zZm9ybSgp
KTsKKyAgICAvLyBMVCA9IFRyW2xdICogTVtsXSAqIFRyW2NdCisgICAgbGF5ZXJMb2NhbFRyYW5z
Zm9ybS50cmFuc2xhdGUzZChjZW50ZXJPZmZzZXRYLCBjZW50ZXJPZmZzZXRZLCAtbGF5ZXItPmFu
Y2hvclBvaW50WigpKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkVHJhbnNm
b3JtID0gcGFyZW50TWF0cml4OworICAgIGNvbWJpbmVkVHJhbnNmb3JtID0gY29tYmluZWRUcmFu
c2Zvcm0ubXVsdGlwbHkobGF5ZXJMb2NhbFRyYW5zZm9ybSk7CisKKyAgICBGbG9hdFJlY3QgbGF5
ZXJSZWN0KC0wLjUgKiBsYXllci0+Ym91bmRzKCkud2lkdGgoKSwgLTAuNSAqIGxheWVyLT5ib3Vu
ZHMoKS5oZWlnaHQoKSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCksIGxheWVyLT5ib3VuZHMoKS5o
ZWlnaHQoKSk7CisgICAgSW50UmVjdCB0cmFuc2Zvcm1lZExheWVyUmVjdDsKKworICAgIC8vIEZJ
WE1FOiBUaGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHBsYWNlIHRvIHNldCB0aGlzCisgICAgbGF5
ZXItPnNldFVzZXNMYXllclNjaXNzb3IoZmFsc2UpOworCisgICAgLy8gVGhlIGxheWVyIGFuZCBp
dHMgZGVzY2VuZGFudHMgcmVuZGVyIG9uIGEgbmV3IFJlbmRlclN1cmZhY2UgaWYgYW55IG9mCisg
ICAgLy8gdGhlc2UgY29uZGl0aW9ucyBob2xkOgorICAgIC8vIDEuIFRoZSBsYXllciBjbGlwcyBp
dHMgZGVzY2VuZGFudHMgYW5kIGl0cyB0cmFuc2Zvcm0gaXMgbm90IGEgc2ltcGxlIHRyYW5zbGF0
aW9uLgorICAgIC8vIDIuIElmIHRoZSBsYXllciBoYXMgb3BhY2l0eSAhPSAxIGFuZCBkb2VzIG5v
dCBoYXZlIGEgcHJlc2VydmVzLTNkIHRyYW5zZm9ybSBzdHlsZS4KKyAgICAvLyAzLiBUaGUgbGF5
ZXIgdXNlcyBhIG1hc2sKKyAgICAvLyA0LiBUaGUgbGF5ZXIgaGFzIGEgcmVwbGljYSAodXNlZCBm
b3IgcmVmbGVjdGlvbnMpCisgICAgLy8gNS4gVGhlIGxheWVyIGRvZXNuJ3QgcHJlc2VydmUtM2Qg
YnV0IGlzIHRoZSBjaGlsZCBvZiBhIGxheWVyIHdoaWNoIGRvZXMuCisgICAgLy8gSWYgYSBsYXll
ciBwcmVzZXJ2ZXMtM2QgdGhlbiB3ZSBkb24ndCBjcmVhdGUgYSBSZW5kZXJTdXJmYWNlIGZvciBp
dCB0byBhdm9pZCBmbGF0dGVuaW5nCisgICAgLy8gb3V0IGl0cyBjaGlsZHJlbi4gVGhlIG9wYWNp
dHkgdmFsdWUgb2YgdGhlIGNoaWxkcmVuIGxheWVycyBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBvcGFj
aXR5CisgICAgLy8gb2YgdGhlaXIgcGFyZW50LgorICAgIGJvb2wgdXNlU3VyZmFjZUZvckNsaXBw
aW5nID0gbGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSAmJiAhaXNTY2FsZU9yVHJhbnNsYXRpb24oY29t
YmluZWRUcmFuc2Zvcm0pOworICAgIGJvb2wgdXNlU3VyZmFjZUZvck9wYWNpdHkgPSBsYXllci0+
b3BhY2l0eSgpICE9IDEgJiYgIWxheWVyLT5wcmVzZXJ2ZXMzRCgpOworICAgIGJvb2wgdXNlU3Vy
ZmFjZUZvck1hc2tpbmcgPSBsYXllci0+bWFza0xheWVyKCk7CisgICAgYm9vbCB1c2VTdXJmYWNl
Rm9yUmVmbGVjdGlvbiA9IGxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKKyAgICBib29sIHVzZVN1cmZh
Y2VGb3JGbGF0RGVzY2VuZGFudHMgPSBsYXllci0+cGFyZW50KCkgJiYgbGF5ZXItPnBhcmVudCgp
LT5wcmVzZXJ2ZXMzRCgpICYmICFsYXllci0+cHJlc2VydmVzM0QoKSAmJiBsYXllci0+ZGVzY2Vu
ZGFudHNEcmF3c0NvbnRlbnQoKTsKKyAgICBpZiAodXNlU3VyZmFjZUZvck1hc2tpbmcgfHwgdXNl
U3VyZmFjZUZvclJlZmxlY3Rpb24gfHwgdXNlU3VyZmFjZUZvckZsYXREZXNjZW5kYW50cyB8fCAo
KHVzZVN1cmZhY2VGb3JDbGlwcGluZyB8fCB1c2VTdXJmYWNlRm9yT3BhY2l0eSkgJiYgbGF5ZXIt
PmRlc2NlbmRhbnRzRHJhd3NDb250ZW50KCkpKSB7CisgICAgICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZSA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIGlm
ICghcmVuZGVyU3VyZmFjZSkKKyAgICAgICAgICAgIHJlbmRlclN1cmZhY2UgPSBsYXllci0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOworCisgICAgICAgIC8vIFRoZSBvcmlnaW4gb2YgdGhlIG5ldyBz
dXJmYWNlIGlzIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgbGF5ZXIuCisgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CisgICAgICAgIGRyYXdUcmFuc2Zvcm0u
dHJhbnNsYXRlM2QoMC41ICogYm91bmRzLndpZHRoKCksIDAuNSAqIGJvdW5kcy5oZWlnaHQoKSwg
MCk7CisgICAgICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pOworCisg
ICAgICAgIHRyYW5zZm9ybWVkTGF5ZXJSZWN0ID0gSW50UmVjdCgwLCAwLCBib3VuZHMud2lkdGgo
KSwgYm91bmRzLmhlaWdodCgpKTsKKworICAgICAgICAvLyBMYXllcidzIG9wYWNpdHkgd2lsbCBi
ZSBhcHBsaWVkIHdoZW4gZHJhd2luZyB0aGUgcmVuZGVyIHN1cmZhY2UuCisgICAgICAgIGZsb2F0
IGRyYXdPcGFjaXR5ID0gbGF5ZXItPm9wYWNpdHkoKTsKKyAgICAgICAgaWYgKGxheWVyLT5wYXJl
bnQoKSAmJiBsYXllci0+cGFyZW50KCktPnByZXNlcnZlczNEKCkpCisgICAgICAgICAgICBkcmF3
T3BhY2l0eSAqPSBsYXllci0+cGFyZW50KCktPmRyYXdPcGFjaXR5KCk7CisgICAgICAgIHJlbmRl
clN1cmZhY2UtPnNldERyYXdPcGFjaXR5KGRyYXdPcGFjaXR5KTsKKyAgICAgICAgbGF5ZXItPnNl
dERyYXdPcGFjaXR5KDEpOworCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyT3Jp
Z2luVHJhbnNmb3JtID0gY29tYmluZWRUcmFuc2Zvcm07CisgICAgICAgIGxheWVyT3JpZ2luVHJh
bnNmb3JtLnRyYW5zbGF0ZTNkKC0wLjUgKiBib3VuZHMud2lkdGgoKSwgLTAuNSAqIGJvdW5kcy5o
ZWlnaHQoKSwgMCk7CisgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE9yaWdpblRyYW5zZm9ybShs
YXllck9yaWdpblRyYW5zZm9ybSk7CisKKyAgICAgICAgLy8gVGhlIHJlbmRlciBzdXJmYWNlIHNj
aXNzb3IgcmVjdCBpcyB0aGUgc2Npc3NvciByZWN0IHRoYXQgbmVlZHMgdG8KKyAgICAgICAgLy8g
YmUgYXBwbGllZCBiZWZvcmUgZHJhd2luZyB0aGUgcmVuZGVyIHN1cmZhY2Ugb250byBpdHMgY29u
dGFpbmluZworICAgICAgICAvLyBzdXJmYWNlIGFuZCBpcyB0aGVyZWZvcmUgZXhwcmVzc2VkIGlu
IHRoZSBwYXJlbnQncyBjb29yZGluYXRlIHN5c3RlbS4KKyAgICAgICAgcmVuZGVyU3VyZmFjZS0+
c2V0U2Npc3NvclJlY3QobGF5ZXItPnBhcmVudCgpID8gbGF5ZXItPnBhcmVudCgpLT5zY2lzc29y
UmVjdCgpIDogbGF5ZXItPnNjaXNzb3JSZWN0KCkpOworCisgICAgICAgIHJlbmRlclN1cmZhY2Ut
PmNsZWFyTGF5ZXJMaXN0KCk7CisKKyAgICAgICAgaWYgKGxheWVyLT5tYXNrTGF5ZXIoKSkgewor
ICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0TWFza0xheWVyKGxheWVyLT5tYXNrTGF5ZXIo
KSk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPnNldFRhcmdldFJlbmRlclN1cmZh
Y2UocmVuZGVyU3VyZmFjZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVuZGVyU3Vy
ZmFjZS0+c2V0TWFza0xheWVyKDApOworCisgICAgICAgIGlmIChsYXllci0+cmVwbGljYUxheWVy
KCkgJiYgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKKyAgICAgICAgICAgIGxh
eWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnNldFRhcmdldFJlbmRlclN1cmZhY2Uo
cmVuZGVyU3VyZmFjZSk7CisKKyAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
bGF5ZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIERUID0gTVtwXSAqIExUCisgICAgICAg
IGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGNvbWJpbmVkVHJhbnNmb3JtKTsKKyAgICAgICAgdHJh
bnNmb3JtZWRMYXllclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxheWVyLT5kcmF3VHJhbnNmb3Jt
KCkubWFwUmVjdChsYXllclJlY3QpKTsKKworICAgICAgICBsYXllci0+c2V0RHJhd09wYWNpdHko
bGF5ZXItPm9wYWNpdHkoKSk7CisKKyAgICAgICAgaWYgKGxheWVyLT5wYXJlbnQoKSkgeworICAg
ICAgICAgICAgaWYgKGxheWVyLT5wYXJlbnQoKS0+cHJlc2VydmVzM0QoKSkKKyAgICAgICAgICAg
ICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eShsYXllci0+ZHJhd09wYWNpdHkoKSAqIGxheWVyLT5w
YXJlbnQoKS0+ZHJhd09wYWNpdHkoKSk7CisKKyAgICAgICAgICAgIC8vIExheWVycyBpbmhlcml0
IHRoZSBzY2lzc29yIHJlY3QgZnJvbSB0aGVpciBwYXJlbnQuCisgICAgICAgICAgICBsYXllci0+
c2V0U2Npc3NvclJlY3QobGF5ZXItPnBhcmVudCgpLT5zY2lzc29yUmVjdCgpKTsKKyAgICAgICAg
ICAgIGlmIChsYXllci0+cGFyZW50KCktPnVzZXNMYXllclNjaXNzb3IoKSkKKyAgICAgICAgICAg
ICAgICBsYXllci0+c2V0VXNlc0xheWVyU2Npc3Nvcih0cnVlKTsKKworICAgICAgICAgICAgbGF5
ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnBhcmVudCgpLT50YXJnZXRSZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxheWVyICE9IG1fcm9vdENDTGF5
ZXJJbXBsLmdldCgpKQorICAgICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwor
CisgICAgICAgIGlmIChsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CisgICAgICAgICAgICBJbnRS
ZWN0IHNjaXNzb3IgPSB0cmFuc2Zvcm1lZExheWVyUmVjdDsKKyAgICAgICAgICAgIGlmICghbGF5
ZXItPnNjaXNzb3JSZWN0KCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHNjaXNzb3IuaW50
ZXJzZWN0KGxheWVyLT5zY2lzc29yUmVjdCgpKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRTY2lz
c29yUmVjdChzY2lzc29yKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRVc2VzTGF5ZXJTY2lzc29y
KHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpCisgICAgICAgIGxheWVyLT5zZXRUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobGF5ZXItPnBhcmVudCgpKTsK
KyAgICAgICAgbGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnBhcmVudCgpLT50
YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAgIH0KKworICAgIC8vIGRyYXdhYmxlQ29udGVudFJl
Y3QoKSBpcyBhbHdheXMgc3RvcmVkIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUKKyAg
ICAvLyBSZW5kZXJTdXJmYWNlIHRoZSBsYXllciBkcmF3cyBpbnRvLgorICAgIGlmIChsYXllci0+
ZHJhd3NDb250ZW50KCkpIHsKKyAgICAgICAgSW50UmVjdCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0g
dHJhbnNmb3JtZWRMYXllclJlY3Q7CisgICAgICAgIGlmIChsYXllci0+dXNlc0xheWVyU2Npc3Nv
cigpKQorICAgICAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC5pbnRlcnNlY3QobGF5ZXItPnNj
aXNzb3JSZWN0KCkpOworICAgICAgICBsYXllci0+c2V0RHJhd2FibGVDb250ZW50UmVjdChkcmF3
YWJsZUNvbnRlbnRSZWN0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbGF5ZXItPnNldERyYXdhYmxl
Q29udGVudFJlY3QoSW50UmVjdCgpKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHN1Ymxh
eWVyTWF0cml4ID0gbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKTsKKworICAgIC8vIEZsYXR0ZW4gdG8g
MkQgaWYgdGhlIGxheWVyIGRvZXNuJ3QgcHJlc2VydmUgM0QuCisgICAgaWYgKCFsYXllci0+cHJl
c2VydmVzM0QoKSkgeworICAgICAgICBzdWJsYXllck1hdHJpeC5zZXRNMTMoMCk7CisgICAgICAg
IHN1YmxheWVyTWF0cml4LnNldE0yMygwKTsKKyAgICAgICAgc3VibGF5ZXJNYXRyaXguc2V0TTMx
KDApOworICAgICAgICBzdWJsYXllck1hdHJpeC5zZXRNMzIoMCk7CisgICAgICAgIHN1YmxheWVy
TWF0cml4LnNldE0zMygxKTsKKyAgICAgICAgc3VibGF5ZXJNYXRyaXguc2V0TTM0KDApOworICAg
ICAgICBzdWJsYXllck1hdHJpeC5zZXRNNDMoMCk7CisgICAgfQorCisgICAgLy8gQXBwbHkgdGhl
IHN1YmxheWVyIHRyYW5zZm9ybSBhdCB0aGUgY2VudGVyIG9mIHRoZSBsYXllci4KKyAgICBzdWJs
YXllck1hdHJpeC5tdWx0aXBseShsYXllci0+c3VibGF5ZXJUcmFuc2Zvcm0oKSk7CisKKyAgICAv
LyBUaGUgb3JpZ2luIG9mIHRoZSBjaGlsZHJlbiBpcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRo
ZSBsYXllciwgbm90IHRoZQorICAgIC8vIGNlbnRlci4gVGhlIG1hdHJpeCBwYXNzZWQgZG93biB0
byB0aGUgY2hpbGRyZW4gaXMgdGhlcmVmb3JlOgorICAgIC8vIE1bc10gPSBNICogVHJbLWNlbnRl
cl0KKyAgICBzdWJsYXllck1hdHJpeC50cmFuc2xhdGUzZCgtYm91bmRzLndpZHRoKCkgKiAwLjUs
IC1ib3VuZHMuaGVpZ2h0KCkgKiAwLjUsIDApOworCisgICAgTGF5ZXJMaXN0JiBkZXNjZW5kYW50
cyA9IChsYXllci0+cmVuZGVyU3VyZmFjZSgpID8gbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+bGF5
ZXJMaXN0KCkgOiBsYXllckxpc3QpOworICAgIGRlc2NlbmRhbnRzLmFwcGVuZChsYXllcik7CisK
KyAgICB1bnNpZ25lZCB0aGlzTGF5ZXJJbmRleCA9IGRlc2NlbmRhbnRzLnNpemUoKSAtIDE7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytp
KSB7CisgICAgICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IGxheWVyLT5jaGlsZHJlbigpW2ldLmdl
dCgpOworICAgICAgICB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3VyZmFjZXMoY2hpbGQsIHN1
YmxheWVyTWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkZXNjZW5kYW50cyk7CisKKyAg
ICAgICAgaWYgKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpIHsKKyAgICAgICAgICAgIFJlbmRlclN1
cmZhY2VDaHJvbWl1bSogY2hpbGRSZW5kZXJTdXJmYWNlID0gY2hpbGQtPnJlbmRlclN1cmZhY2Uo
KTsKKyAgICAgICAgICAgIEludFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9IGxheWVyLT5kcmF3
YWJsZUNvbnRlbnRSZWN0KCk7CisgICAgICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRl
KGVuY2xvc2luZ0ludFJlY3QoY2hpbGRSZW5kZXJTdXJmYWNlLT5kcmF3YWJsZUNvbnRlbnRSZWN0
KCkpKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXREcmF3YWJsZUNvbnRlbnRSZWN0KGRyYXdhYmxl
Q29udGVudFJlY3QpOworICAgICAgICAgICAgZGVzY2VuZGFudHMuYXBwZW5kKGNoaWxkKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEludFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9
IGxheWVyLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCk7CisgICAgICAgICAgICBkcmF3YWJsZUNvbnRl
bnRSZWN0LnVuaXRlKGNoaWxkLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCkpOworICAgICAgICAgICAg
bGF5ZXItPnNldERyYXdhYmxlQ29udGVudFJlY3QoZHJhd2FibGVDb250ZW50UmVjdCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSB8fCB1c2VTdXJm
YWNlRm9yTWFza2luZykgeworICAgICAgICBJbnRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBs
YXllci0+ZHJhd2FibGVDb250ZW50UmVjdCgpOworICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0
LmludGVyc2VjdCh0cmFuc2Zvcm1lZExheWVyUmVjdCk7CisgICAgICAgIGxheWVyLT5zZXREcmF3
YWJsZUNvbnRlbnRSZWN0KGRyYXdhYmxlQ29udGVudFJlY3QpOworICAgIH0KKworICAgIGlmIChs
YXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxheWVyICE9IG1fcm9vdENDTGF5ZXJJbXBsLmdldCgp
KSB7CisgICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9IGxheWVy
LT5yZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIEludFJlY3QgcmVuZGVyU3VyZmFjZUNvbnRlbnRS
ZWN0ID0gbGF5ZXItPmRyYXdhYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgRmxvYXRQb2ludCBz
dXJmYWNlQ2VudGVyID0gRmxvYXRSZWN0KHJlbmRlclN1cmZhY2VDb250ZW50UmVjdCkuY2VudGVy
KCk7CisKKyAgICAgICAgLy8gUmVzdHJpY3QgdGhlIFJlbmRlclN1cmZhY2Ugc2l6ZSB0byB0aGUg
cG9ydGlvbiB0aGF0J3MgdmlzaWJsZS4KKyAgICAgICAgRmxvYXRTaXplIGNlbnRlck9mZnNldER1
ZVRvQ2xpcHBpbmc7CisKKyAgICAgICAgLy8gRG9uJ3QgY2xpcCBpZiB0aGUgbGF5ZXIgaXMgcmVm
bGVjdGVkIGFzIHRoZSByZWZsZWN0aW9uIHNob3VsZG4ndCBiZQorICAgICAgICAvLyBjbGlwcGVk
LgorICAgICAgICBpZiAoIWxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgeworICAgICAgICAgICAgaWYg
KCFyZW5kZXJTdXJmYWNlLT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSAmJiAhcmVuZGVyU3VyZmFj
ZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEludFJlY3Qgc3VyZmFj
ZVNjaXNzb3JSZWN0ID0gY2FsY3VsYXRlVmlzaWJsZVJlY3QocmVuZGVyU3VyZmFjZS0+c2Npc3Nv
clJlY3QoKSwgcmVuZGVyU3VyZmFjZUNvbnRlbnRSZWN0LCByZW5kZXJTdXJmYWNlLT5vcmlnaW5U
cmFuc2Zvcm0oKSk7CisgICAgICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUNvbnRlbnRSZWN0Lmlu
dGVyc2VjdChzdXJmYWNlU2Npc3NvclJlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
RmxvYXRQb2ludCBjbGlwcGVkU3VyZmFjZUNlbnRlciA9IEZsb2F0UmVjdChyZW5kZXJTdXJmYWNl
Q29udGVudFJlY3QpLmNlbnRlcigpOworICAgICAgICAgICAgY2VudGVyT2Zmc2V0RHVlVG9DbGlw
cGluZyA9IGNsaXBwZWRTdXJmYWNlQ2VudGVyIC0gc3VyZmFjZUNlbnRlcjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFRoZSBSZW5kZXJTdXJmYWNlIGJhY2tpbmcgdGV4dHVyZSBjYW5ub3QgZXhj
ZWVkIHRoZSBtYXhpbXVtIHN1cHBvcnRlZAorICAgICAgICAvLyB0ZXh0dXJlIHNpemUuCisgICAg
ICAgIHJlbmRlclN1cmZhY2VDb250ZW50UmVjdC5zZXRXaWR0aChzdGQ6Om1pbihyZW5kZXJTdXJm
YWNlQ29udGVudFJlY3Qud2lkdGgoKSwgbV9tYXhUZXh0dXJlU2l6ZSkpOworICAgICAgICByZW5k
ZXJTdXJmYWNlQ29udGVudFJlY3Quc2V0SGVpZ2h0KHN0ZDo6bWluKHJlbmRlclN1cmZhY2VDb250
ZW50UmVjdC5oZWlnaHQoKSwgbV9tYXhUZXh0dXJlU2l6ZSkpOworCisgICAgICAgIGlmIChyZW5k
ZXJTdXJmYWNlQ29udGVudFJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVuZGVyU3VyZmFj
ZS0+Y2xlYXJMYXllckxpc3QoKTsKKyAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJl
Y3QocmVuZGVyU3VyZmFjZUNvbnRlbnRSZWN0KTsKKworICAgICAgICAvLyBTaW5jZSB0aGUgbGF5
ZXIgc3RhcnRzIGEgbmV3IHJlbmRlciBzdXJmYWNlIHdlIG5lZWQgdG8gYWRqdXN0IGl0cworICAg
ICAgICAvLyBzY2lzc29yIHJlY3QgdG8gYmUgZXhwcmVzc2VkIGluIHRoZSBuZXcgc3VyZmFjZSdz
IGNvb3JkaW5hdGUgc3lzdGVtLgorICAgICAgICBsYXllci0+c2V0U2Npc3NvclJlY3QobGF5ZXIt
PmRyYXdhYmxlQ29udGVudFJlY3QoKSk7CisKKyAgICAgICAgLy8gQWRqdXN0IHRoZSBvcmlnaW4g
b2YgdGhlIHRyYW5zZm9ybSB0byBiZSB0aGUgY2VudGVyIG9mIHRoZSByZW5kZXIgc3VyZmFjZS4K
KyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZh
Y2UtPm9yaWdpblRyYW5zZm9ybSgpOworICAgICAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNk
KHN1cmZhY2VDZW50ZXIueCgpICsgY2VudGVyT2Zmc2V0RHVlVG9DbGlwcGluZy53aWR0aCgpLCBz
dXJmYWNlQ2VudGVyLnkoKSArIGNlbnRlck9mZnNldER1ZVRvQ2xpcHBpbmcuaGVpZ2h0KCksIDAp
OworICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0p
OworCisgICAgICAgIC8vIENvbXB1dGUgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB1c2VkIHRv
IGRyYXcgdGhlIHJlcGxpY2Egb2YgdGhlIHJlbmRlcgorICAgICAgICAvLyBzdXJmYWNlLgorICAg
ICAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpKSB7CisgICAgICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCByZXBsaWNhRHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPm9yaWdpblRy
YW5zZm9ybSgpOworICAgICAgICAgICAgcmVwbGljYURyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2Qo
bGF5ZXItPnJlcGxpY2FMYXllcigpLT5wb3NpdGlvbigpLngoKSwgbGF5ZXItPnJlcGxpY2FMYXll
cigpLT5wb3NpdGlvbigpLnkoKSwgMCk7CisgICAgICAgICAgICByZXBsaWNhRHJhd1RyYW5zZm9y
bS5tdWx0aXBseShsYXllci0+cmVwbGljYUxheWVyKCktPnRyYW5zZm9ybSgpKTsKKyAgICAgICAg
ICAgIHJlcGxpY2FEcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHN1cmZhY2VDZW50ZXIueCgpIC0g
YW5jaG9yUG9pbnQueCgpICogYm91bmRzLndpZHRoKCksIHN1cmZhY2VDZW50ZXIueSgpIC0gYW5j
aG9yUG9pbnQueSgpICogYm91bmRzLmhlaWdodCgpLCAwKTsKKyAgICAgICAgICAgIHJlbmRlclN1
cmZhY2UtPnNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKHJlcGxpY2FEcmF3VHJhbnNmb3JtKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIElmIHByZXNlcnZlcy0zZCB0aGVuIHNvcnQgYWxsIHRo
ZSBkZXNjZW5kYW50cyBpbiAzRCBzbyB0aGF0IHRoZXkgY2FuIGJlCisgICAgLy8gZHJhd24gZnJv
bSBiYWNrIHRvIGZyb250LiBJZiB0aGUgcHJlc2VydmVzLTNkIHByb3BlcnR5IGlzIGFsc28gc2V0
IG9uIHRoZSBwYXJlbnQgdGhlbgorICAgIC8vIHNraXAgdGhlIHNvcnRpbmcgYXMgdGhlIHBhcmVu
dCB3aWxsIHNvcnQgYWxsIHRoZSBkZXNjZW5kYW50cyBhbnl3YXkuCisgICAgaWYgKGxheWVyLT5w
cmVzZXJ2ZXMzRCgpICYmICghbGF5ZXItPnBhcmVudCgpIHx8ICFsYXllci0+cGFyZW50KCktPnBy
ZXNlcnZlczNEKCkpKQorICAgICAgICBtX2xheWVyU29ydGVyLnNvcnQoJmRlc2NlbmRhbnRzLmF0
KHRoaXNMYXllckluZGV4KSwgZGVzY2VuZGFudHMuZW5kKCkpOworfQorCiBzdGF0aWMgVHJhbnNm
b3JtYXRpb25NYXRyaXggb3J0aG9NYXRyaXgoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0
IGJvdHRvbSwgZmxvYXQgdG9wKQogewogICAgIGZsb2F0IGRlbHRhWCA9IHJpZ2h0IC0gbGVmdDsK
QEAgLTk2LDE2ICszODMsNiBAQCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggb3J0aG9NYXRy
aXgoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZgogICAgIHJldHVybiBv
cnRobzsKIH0KIAotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBtYXRyaXggaGFzIG5vIHJvdGF0aW9u
LCBza2V3IG9yIHBlcnNwZWN0aXZlIGNvbXBvbmVudHMgdG8gaXQuCi1zdGF0aWMgYm9vbCBpc1Nj
YWxlT3JUcmFuc2xhdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKLXsKLSAgICBy
ZXR1cm4gIW0ubTEyKCkgJiYgIW0ubTEzKCkgJiYgIW0ubTE0KCkKLSAgICAgICAgICAgJiYgIW0u
bTIxKCkgJiYgIW0ubTIzKCkgJiYgIW0ubTI0KCkKLSAgICAgICAgICAgJiYgIW0ubTMxKCkgJiYg
IW0ubTMyKCkgJiYgIW0ubTQzKCkKLSAgICAgICAgICAgJiYgbS5tNDQoKTsKLQotfQotCiBQYXNz
UmVmUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVh
dGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IGNvbnRlbnRQYWludCwgYm9vbCBhY2NlbGVyYXRlRHJhd2luZykKIHsKICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBjbGllbnQtPmNyZWF0ZUxheWVyVHJl
ZUhvc3RDb250ZXh0M0QoKTsKQEAgLTM1MCwzMiArNjI3LDkgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnVwZGF0ZUxheWVycyhMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3Qp
CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVy
Ojp1cGRhdGVSb290IiwgdGhpcywgMCk7CiAgICAgICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVy
LT51cGRhdGVSZWN0KG1fcm9vdExheWVyVGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogICAgIH0KLQot
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJl
TWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMpOwotICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci19Ci0KLXN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVZp
c2libGVSZWN0KGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBsYXllckJvdW5kUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkK
LXsKLSAgICAvLyBJcyB0aGlzIGxheWVyIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIHRhcmdl
dCBzdXJmYWNlPwotICAgIEludFJlY3QgbGF5ZXJJblN1cmZhY2VTcGFjZSA9IHRyYW5zZm9ybS5t
YXBSZWN0KGxheWVyQm91bmRSZWN0KTsKLSAgICBpZiAodGFyZ2V0U3VyZmFjZVJlY3QuY29udGFp
bnMobGF5ZXJJblN1cmZhY2VTcGFjZSkpCi0gICAgICAgIHJldHVybiBsYXllckJvdW5kUmVjdDsK
LQotICAgIC8vIElmIHRoZSBsYXllciBkb2Vzbid0IGZpbGwgdXAgdGhlIGVudGlyZSBzdXJmYWNl
LCB0aGVuIGZpbmQgdGhlIHBhcnQgb2YKLSAgICAvLyB0aGUgc3VyZmFjZSByZWN0IHdoZXJlIHRo
ZSBsYXllciBjb3VsZCBiZSB2aXNpYmxlLiBUaGlzIGF2b2lkcyB0cnlpbmcgdG8KLSAgICAvLyBw
cm9qZWN0IHN1cmZhY2UgcmVjdCBwb2ludHMgdGhhdCBhcmUgYmVoaW5kIHRoZSBwcm9qZWN0aW9u
IHBvaW50LgotICAgIEludFJlY3QgbWluaW1hbFN1cmZhY2VSZWN0ID0gdGFyZ2V0U3VyZmFjZVJl
Y3Q7Ci0gICAgbWluaW1hbFN1cmZhY2VSZWN0LmludGVyc2VjdChsYXllckluU3VyZmFjZVNwYWNl
KTsKLQotICAgIC8vIFByb2plY3QgdGhlIGNvcm5lcnMgb2YgdGhlIHRhcmdldCBzdXJmYWNlIHJl
Y3QgaW50byB0aGUgbGF5ZXIgc3BhY2UuCi0gICAgLy8gVGhpcyBib3VuZGluZyByZWN0YW5nbGUg
bWF5IGJlIGxhcmdlciB0aGFuIGl0IG5lZWRzIHRvIGJlIChiZWluZwotICAgIC8vIGF4aXMtYWxp
Z25lZCksIGJ1dCBpcyBhIHJlYXNvbmFibGUgZmlsdGVyIG9uIHRoZSBzcGFjZSB0byBjb25zaWRl
ci4KLSAgICAvLyBOb24taW52ZXJ0aWJsZSB0cmFuc2Zvcm1zIHdpbGwgY3JlYXRlIGFuIGVtcHR5
IHJlY3QgaGVyZS4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJmYWNlVG9MYXll
ciA9IHRyYW5zZm9ybS5pbnZlcnNlKCk7Ci0gICAgSW50UmVjdCBsYXllclJlY3QgPSBzdXJmYWNl
VG9MYXllci5wcm9qZWN0UXVhZChGbG9hdFF1YWQoRmxvYXRSZWN0KG1pbmltYWxTdXJmYWNlUmVj
dCkpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwotICAgIGxheWVyUmVjdC5pbnRlcnNlY3QobGF5
ZXJCb3VuZFJlY3QpOwotICAgIHJldHVybiBsYXllclJlY3Q7CisKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1p
dEJ5dGVzKTsKKyAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogfQogCiBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0KGNv
bnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VSZWN0LCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNv
bnN0IEludFNpemUmIGNvbnRlbnRCb3VuZHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
aWxpbmdUcmFuc2Zvcm0pCkBAIC02NTgsMjYwICs5MTIsNiBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aXNMYXllclZpc2libGUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybQogICAgIHJldHVybiBtYXBwZWRSZWN0LmludGVyc2VjdHMoRmxvYXRSZWN0KC0xLCAtMSwg
MiwgMikpOwogfQogCi0vLyBSZWN1cnNpdmVseSB3YWxrcyB0aGUgbGF5ZXIgdHJlZSBzdGFydGlu
ZyBhdCB0aGUgZ2l2ZW4gbm9kZSBhbmQgY29tcHV0ZXMgYWxsIHRoZQotLy8gbmVjZXNzYXJ5IHRy
YW5zZm9ybWF0aW9ucywgc2Npc3NvciByZWN0YW5nbGVzLCByZW5kZXIgc3VyZmFjZXMsIGV0Yy4K
LXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3Vy
ZmFjZXMoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFy
ZW50TWF0cml4LCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIExheWVyTGlzdCYg
bGF5ZXJMaXN0KQotewotICAgIC8vIENvbXB1dGUgdGhlIG5ldyBtYXRyaXggdHJhbnNmb3JtYXRp
b24gdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhpcyBsYXllciBhbmQKLSAgICAvLyBhbGwgaXRz
IGNoaWxkcmVuLiBJdCdzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRoZSBsYXllcidzIHBv
c2l0aW9uCi0gICAgLy8gaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYXllcidzIGFuY2hvciBwb2lu
dC4gQWxzbywgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQKLSAgICAvLyBhc3N1bWVzIHRoYXQg
dGhlIG9yaWdpbiBpcyBhdCB0aGUgbG93ZXIgbGVmdCBldmVuIHRob3VnaCB0aGUgY29vcmRpbmF0
ZXMgdGhlIGJyb3dzZXIKLSAgICAvLyBnaXZlcyB1cyBmb3IgdGhlIGxheWVycyBhcmUgZm9yIHRo
ZSB1cHBlciBsZWZ0IGNvcm5lci4gVGhlIFkgZmxpcCBoYXBwZW5zIHZpYQotICAgIC8vIHRoZSBv
cnRob2dyYXBoaWMgcHJvamVjdGlvbiBhcHBsaWVkIGF0IHJlbmRlciB0aW1lLgotICAgIC8vIFRo
ZSB0cmFuc2Zvcm1hdGlvbiBjaGFpbiBmb3IgdGhlIGxheWVyIGlzICh1c2luZyB0aGUgTWF0cml4
IHggVmVjdG9yIG9yZGVyKToKLSAgICAvLyBNID0gTVtwXSAqIFRyW2xdICogTVtsXSAqIFRyW2Nd
Ci0gICAgLy8gV2hlcmUgTVtwXSBpcyB0aGUgcGFyZW50IG1hdHJpeCBwYXNzZWQgZG93biB0byB0
aGUgZnVuY3Rpb24KLSAgICAvLyAgICAgICBUcltsXSBpcyB0aGUgdHJhbnNsYXRpb24gbWF0cml4
IGxvY2F0aW5nIHRoZSBsYXllcidzIGFuY2hvciBwb2ludAotICAgIC8vICAgICAgIFRyW2NdIGlz
IHRoZSB0cmFuc2xhdGlvbiBvZmZzZXQgYmV0d2VlbiB0aGUgYW5jaG9yIHBvaW50IGFuZCB0aGUg
Y2VudGVyIG9mIHRoZSBsYXllcgotICAgIC8vICAgICAgIE1bbF0gaXMgdGhlIGxheWVyJ3MgbWF0
cml4IChhcHBsaWVkIGF0IHRoZSBhbmNob3IgcG9pbnQpCi0gICAgLy8gVGhpcyB0cmFuc2Zvcm0g
Y3JlYXRlcyBhIGNvb3JkaW5hdGUgc3lzdGVtIHdob3NlIG9yaWdpbiBpcyB0aGUgY2VudGVyIG9m
IHRoZSBsYXllci4KLSAgICAvLyBOb3RlIHRoYXQgdGhlIGZpbmFsIG1hdHJpeCB1c2VkIGJ5IHRo
ZSBzaGFkZXIgZm9yIHRoZSBsYXllciBpcyBQICogTSAqIFMgLiBUaGlzIGZpbmFsIHByb2R1Y3QK
LSAgICAvLyBpcyBjb21wdXRlZCBpbiBkcmF3VGV4dHVyZWRRdWFkKCkuCi0gICAgLy8gV2hlcmU6
IFAgaXMgdGhlIHByb2plY3Rpb24gbWF0cml4Ci0gICAgLy8gICAgICAgIE0gaXMgdGhlIGxheWVy
J3MgbWF0cml4IGNvbXB1dGVkIGFib3ZlCi0gICAgLy8gICAgICAgIFMgaXMgdGhlIHNjYWxlIGFk
anVzdG1lbnQgKHRvIHNjYWxlIHVwIHRvIHRoZSBsYXllciBzaXplKQotICAgIEludFNpemUgYm91
bmRzID0gbGF5ZXItPmJvdW5kcygpOwotICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQgPSBsYXll
ci0+YW5jaG9yUG9pbnQoKTsKLSAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gbGF5ZXItPnBvc2l0
aW9uKCk7Ci0KLSAgICAvLyBPZmZzZXQgYmV0d2VlbiBhbmNob3IgcG9pbnQgYW5kIHRoZSBjZW50
ZXIgb2YgdGhlIHF1YWQuCi0gICAgZmxvYXQgY2VudGVyT2Zmc2V0WCA9ICgwLjUgLSBhbmNob3JQ
b2ludC54KCkpICogYm91bmRzLndpZHRoKCk7Ci0gICAgZmxvYXQgY2VudGVyT2Zmc2V0WSA9ICgw
LjUgLSBhbmNob3JQb2ludC55KCkpICogYm91bmRzLmhlaWdodCgpOwotCi0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbGF5ZXJMb2NhbFRyYW5zZm9ybTsKLSAgICAvLyBMVCA9IFRyW2xdCi0gICAg
bGF5ZXJMb2NhbFRyYW5zZm9ybS50cmFuc2xhdGUzZChwb3NpdGlvbi54KCksIHBvc2l0aW9uLnko
KSwgbGF5ZXItPmFuY2hvclBvaW50WigpKTsKLSAgICAvLyBMVCA9IFRyW2xdICogTVtsXQotICAg
IGxheWVyTG9jYWxUcmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPnRyYW5zZm9ybSgpKTsKLSAgICAv
LyBMVCA9IFRyW2xdICogTVtsXSAqIFRyW2NdCi0gICAgbGF5ZXJMb2NhbFRyYW5zZm9ybS50cmFu
c2xhdGUzZChjZW50ZXJPZmZzZXRYLCBjZW50ZXJPZmZzZXRZLCAtbGF5ZXItPmFuY2hvclBvaW50
WigpKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkVHJhbnNmb3JtID0gcGFy
ZW50TWF0cml4OwotICAgIGNvbWJpbmVkVHJhbnNmb3JtID0gY29tYmluZWRUcmFuc2Zvcm0ubXVs
dGlwbHkobGF5ZXJMb2NhbFRyYW5zZm9ybSk7Ci0KLSAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0KC0w
LjUgKiBsYXllci0+Ym91bmRzKCkud2lkdGgoKSwgLTAuNSAqIGxheWVyLT5ib3VuZHMoKS5oZWln
aHQoKSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCksIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSk7
Ci0gICAgSW50UmVjdCB0cmFuc2Zvcm1lZExheWVyUmVjdDsKLQotICAgIC8vIEZJWE1FOiBUaGlz
IHNlZW1zIGxpa2UgdGhlIHdyb25nIHBsYWNlIHRvIHNldCB0aGlzCi0gICAgbGF5ZXItPnNldFVz
ZXNMYXllclNjaXNzb3IoZmFsc2UpOwotCi0gICAgLy8gVGhlIGxheWVyIGFuZCBpdHMgZGVzY2Vu
ZGFudHMgcmVuZGVyIG9uIGEgbmV3IFJlbmRlclN1cmZhY2UgaWYgYW55IG9mCi0gICAgLy8gdGhl
c2UgY29uZGl0aW9ucyBob2xkOgotICAgIC8vIDEuIFRoZSBsYXllciBjbGlwcyBpdHMgZGVzY2Vu
ZGFudHMgYW5kIGl0cyB0cmFuc2Zvcm0gaXMgbm90IGEgc2ltcGxlIHRyYW5zbGF0aW9uLgotICAg
IC8vIDIuIElmIHRoZSBsYXllciBoYXMgb3BhY2l0eSAhPSAxIGFuZCBkb2VzIG5vdCBoYXZlIGEg
cHJlc2VydmVzLTNkIHRyYW5zZm9ybSBzdHlsZS4KLSAgICAvLyAzLiBUaGUgbGF5ZXIgdXNlcyBh
IG1hc2sKLSAgICAvLyA0LiBUaGUgbGF5ZXIgaGFzIGEgcmVwbGljYSAodXNlZCBmb3IgcmVmbGVj
dGlvbnMpCi0gICAgLy8gNS4gVGhlIGxheWVyIGRvZXNuJ3QgcHJlc2VydmUtM2QgYnV0IGlzIHRo
ZSBjaGlsZCBvZiBhIGxheWVyIHdoaWNoIGRvZXMuCi0gICAgLy8gSWYgYSBsYXllciBwcmVzZXJ2
ZXMtM2QgdGhlbiB3ZSBkb24ndCBjcmVhdGUgYSBSZW5kZXJTdXJmYWNlIGZvciBpdCB0byBhdm9p
ZCBmbGF0dGVuaW5nCi0gICAgLy8gb3V0IGl0cyBjaGlsZHJlbi4gVGhlIG9wYWNpdHkgdmFsdWUg
b2YgdGhlIGNoaWxkcmVuIGxheWVycyBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBvcGFjaXR5Ci0gICAg
Ly8gb2YgdGhlaXIgcGFyZW50LgotICAgIGJvb2wgdXNlU3VyZmFjZUZvckNsaXBwaW5nID0gbGF5
ZXItPm1hc2tzVG9Cb3VuZHMoKSAmJiAhaXNTY2FsZU9yVHJhbnNsYXRpb24oY29tYmluZWRUcmFu
c2Zvcm0pOwotICAgIGJvb2wgdXNlU3VyZmFjZUZvck9wYWNpdHkgPSBsYXllci0+b3BhY2l0eSgp
ICE9IDEgJiYgIWxheWVyLT5wcmVzZXJ2ZXMzRCgpOwotICAgIGJvb2wgdXNlU3VyZmFjZUZvck1h
c2tpbmcgPSBsYXllci0+bWFza0xheWVyKCk7Ci0gICAgYm9vbCB1c2VTdXJmYWNlRm9yUmVmbGVj
dGlvbiA9IGxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKLSAgICBib29sIHVzZVN1cmZhY2VGb3JGbGF0
RGVzY2VuZGFudHMgPSBsYXllci0+cGFyZW50KCkgJiYgbGF5ZXItPnBhcmVudCgpLT5wcmVzZXJ2
ZXMzRCgpICYmICFsYXllci0+cHJlc2VydmVzM0QoKSAmJiBsYXllci0+ZGVzY2VuZGFudHNEcmF3
c0NvbnRlbnQoKTsKLSAgICBpZiAodXNlU3VyZmFjZUZvck1hc2tpbmcgfHwgdXNlU3VyZmFjZUZv
clJlZmxlY3Rpb24gfHwgdXNlU3VyZmFjZUZvckZsYXREZXNjZW5kYW50cyB8fCAoKHVzZVN1cmZh
Y2VGb3JDbGlwcGluZyB8fCB1c2VTdXJmYWNlRm9yT3BhY2l0eSkgJiYgbGF5ZXItPmRlc2NlbmRh
bnRzRHJhd3NDb250ZW50KCkpKSB7Ci0gICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVu
ZGVyU3VyZmFjZSA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIGlmICghcmVuZGVy
U3VyZmFjZSkKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2UgPSBsYXllci0+Y3JlYXRlUmVuZGVy
U3VyZmFjZSgpOwotCi0gICAgICAgIC8vIFRoZSBvcmlnaW4gb2YgdGhlIG5ldyBzdXJmYWNlIGlz
IHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgbGF5ZXIuCi0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07Ci0gICAgICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRl
M2QoMC41ICogYm91bmRzLndpZHRoKCksIDAuNSAqIGJvdW5kcy5oZWlnaHQoKSwgMCk7Ci0gICAg
ICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pOwotCi0gICAgICAgIHRy
YW5zZm9ybWVkTGF5ZXJSZWN0ID0gSW50UmVjdCgwLCAwLCBib3VuZHMud2lkdGgoKSwgYm91bmRz
LmhlaWdodCgpKTsKLQotICAgICAgICAvLyBMYXllcidzIG9wYWNpdHkgd2lsbCBiZSBhcHBsaWVk
IHdoZW4gZHJhd2luZyB0aGUgcmVuZGVyIHN1cmZhY2UuCi0gICAgICAgIGZsb2F0IGRyYXdPcGFj
aXR5ID0gbGF5ZXItPm9wYWNpdHkoKTsKLSAgICAgICAgaWYgKGxheWVyLT5wYXJlbnQoKSAmJiBs
YXllci0+cGFyZW50KCktPnByZXNlcnZlczNEKCkpCi0gICAgICAgICAgICBkcmF3T3BhY2l0eSAq
PSBsYXllci0+cGFyZW50KCktPmRyYXdPcGFjaXR5KCk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2Ut
PnNldERyYXdPcGFjaXR5KGRyYXdPcGFjaXR5KTsKLSAgICAgICAgbGF5ZXItPnNldERyYXdPcGFj
aXR5KDEpOwotCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyT3JpZ2luVHJhbnNm
b3JtID0gY29tYmluZWRUcmFuc2Zvcm07Ci0gICAgICAgIGxheWVyT3JpZ2luVHJhbnNmb3JtLnRy
YW5zbGF0ZTNkKC0wLjUgKiBib3VuZHMud2lkdGgoKSwgLTAuNSAqIGJvdW5kcy5oZWlnaHQoKSwg
MCk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE9yaWdpblRyYW5zZm9ybShsYXllck9yaWdp
blRyYW5zZm9ybSk7Ci0KLSAgICAgICAgLy8gVGhlIHJlbmRlciBzdXJmYWNlIHNjaXNzb3IgcmVj
dCBpcyB0aGUgc2Npc3NvciByZWN0IHRoYXQgbmVlZHMgdG8KLSAgICAgICAgLy8gYmUgYXBwbGll
ZCBiZWZvcmUgZHJhd2luZyB0aGUgcmVuZGVyIHN1cmZhY2Ugb250byBpdHMgY29udGFpbmluZwot
ICAgICAgICAvLyBzdXJmYWNlIGFuZCBpcyB0aGVyZWZvcmUgZXhwcmVzc2VkIGluIHRoZSBwYXJl
bnQncyBjb29yZGluYXRlIHN5c3RlbS4KLSAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0U2Npc3Nv
clJlY3QobGF5ZXItPnBhcmVudCgpID8gbGF5ZXItPnBhcmVudCgpLT5zY2lzc29yUmVjdCgpIDog
bGF5ZXItPnNjaXNzb3JSZWN0KCkpOwotCi0gICAgICAgIHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5
ZXJMaXN0KCk7Ci0KLSAgICAgICAgaWYgKGxheWVyLT5tYXNrTGF5ZXIoKSkgewotICAgICAgICAg
ICAgcmVuZGVyU3VyZmFjZS0+c2V0TWFza0xheWVyKGxheWVyLT5tYXNrTGF5ZXIoKSk7Ci0gICAg
ICAgICAgICBsYXllci0+bWFza0xheWVyKCktPnNldFRhcmdldFJlbmRlclN1cmZhY2UocmVuZGVy
U3VyZmFjZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0
TWFza0xheWVyKDApOwotCi0gICAgICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkgJiYgbGF5
ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgIGxheWVyLT5yZXBs
aWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnNldFRhcmdldFJlbmRlclN1cmZhY2UocmVuZGVyU3Vy
ZmFjZSk7Ci0KLSAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQobGF5ZXIpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIERUID0gTVtwXSAqIExUCi0gICAgICAgIGxheWVyLT5z
ZXREcmF3VHJhbnNmb3JtKGNvbWJpbmVkVHJhbnNmb3JtKTsKLSAgICAgICAgdHJhbnNmb3JtZWRM
YXllclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxheWVyLT5kcmF3VHJhbnNmb3JtKCkubWFwUmVj
dChsYXllclJlY3QpKTsKLQotICAgICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkobGF5ZXItPm9w
YWNpdHkoKSk7Ci0KLSAgICAgICAgaWYgKGxheWVyLT5wYXJlbnQoKSkgewotICAgICAgICAgICAg
aWYgKGxheWVyLT5wYXJlbnQoKS0+cHJlc2VydmVzM0QoKSkKLSAgICAgICAgICAgICAgIGxheWVy
LT5zZXREcmF3T3BhY2l0eShsYXllci0+ZHJhd09wYWNpdHkoKSAqIGxheWVyLT5wYXJlbnQoKS0+
ZHJhd09wYWNpdHkoKSk7Ci0KLSAgICAgICAgICAgIC8vIExheWVycyBpbmhlcml0IHRoZSBzY2lz
c29yIHJlY3QgZnJvbSB0aGVpciBwYXJlbnQuCi0gICAgICAgICAgICBsYXllci0+c2V0U2Npc3Nv
clJlY3QobGF5ZXItPnBhcmVudCgpLT5zY2lzc29yUmVjdCgpKTsKLSAgICAgICAgICAgIGlmIChs
YXllci0+cGFyZW50KCktPnVzZXNMYXllclNjaXNzb3IoKSkKLSAgICAgICAgICAgICAgICBsYXll
ci0+c2V0VXNlc0xheWVyU2Npc3Nvcih0cnVlKTsKLQotICAgICAgICAgICAgbGF5ZXItPnNldFRh
cmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnBhcmVudCgpLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxheWVyICE9IG1fcm9vdENDTGF5ZXJJbXBsLmdl
dCgpKQotICAgICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwotCi0gICAgICAg
IGlmIChsYXllci0+bWFza3NUb0JvdW5kcygpKSB7Ci0gICAgICAgICAgICBJbnRSZWN0IHNjaXNz
b3IgPSB0cmFuc2Zvcm1lZExheWVyUmVjdDsKLSAgICAgICAgICAgIGlmICghbGF5ZXItPnNjaXNz
b3JSZWN0KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHNjaXNzb3IuaW50ZXJzZWN0KGxh
eWVyLT5zY2lzc29yUmVjdCgpKTsKLSAgICAgICAgICAgIGxheWVyLT5zZXRTY2lzc29yUmVjdChz
Y2lzc29yKTsKLSAgICAgICAgICAgIGxheWVyLT5zZXRVc2VzTGF5ZXJTY2lzc29yKHRydWUpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpCi0gICAg
ICAgIGxheWVyLT5zZXRUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobGF5ZXItPnBhcmVudCgpKTsKLSAgICAgICAg
bGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnBhcmVudCgpLT50YXJnZXRSZW5k
ZXJTdXJmYWNlKCkpOwotICAgIH0KLQotICAgIC8vIGRyYXdhYmxlQ29udGVudFJlY3QoKSBpcyBh
bHdheXMgc3RvcmVkIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUKLSAgICAvLyBSZW5k
ZXJTdXJmYWNlIHRoZSBsYXllciBkcmF3cyBpbnRvLgotICAgIGlmIChsYXllci0+ZHJhd3NDb250
ZW50KCkpIHsKLSAgICAgICAgSW50UmVjdCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0gdHJhbnNmb3Jt
ZWRMYXllclJlY3Q7Ci0gICAgICAgIGlmIChsYXllci0+dXNlc0xheWVyU2Npc3NvcigpKQotICAg
ICAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC5pbnRlcnNlY3QobGF5ZXItPnNjaXNzb3JSZWN0
KCkpOwotICAgICAgICBsYXllci0+c2V0RHJhd2FibGVDb250ZW50UmVjdChkcmF3YWJsZUNvbnRl
bnRSZWN0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgbGF5ZXItPnNldERyYXdhYmxlQ29udGVudFJl
Y3QoSW50UmVjdCgpKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHN1YmxheWVyTWF0cml4
ID0gbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKTsKLQotICAgIC8vIEZsYXR0ZW4gdG8gMkQgaWYgdGhl
IGxheWVyIGRvZXNuJ3QgcHJlc2VydmUgM0QuCi0gICAgaWYgKCFsYXllci0+cHJlc2VydmVzM0Qo
KSkgewotICAgICAgICBzdWJsYXllck1hdHJpeC5zZXRNMTMoMCk7Ci0gICAgICAgIHN1YmxheWVy
TWF0cml4LnNldE0yMygwKTsKLSAgICAgICAgc3VibGF5ZXJNYXRyaXguc2V0TTMxKDApOwotICAg
ICAgICBzdWJsYXllck1hdHJpeC5zZXRNMzIoMCk7Ci0gICAgICAgIHN1YmxheWVyTWF0cml4LnNl
dE0zMygxKTsKLSAgICAgICAgc3VibGF5ZXJNYXRyaXguc2V0TTM0KDApOwotICAgICAgICBzdWJs
YXllck1hdHJpeC5zZXRNNDMoMCk7Ci0gICAgfQotCi0gICAgLy8gQXBwbHkgdGhlIHN1YmxheWVy
IHRyYW5zZm9ybSBhdCB0aGUgY2VudGVyIG9mIHRoZSBsYXllci4KLSAgICBzdWJsYXllck1hdHJp
eC5tdWx0aXBseShsYXllci0+c3VibGF5ZXJUcmFuc2Zvcm0oKSk7Ci0KLSAgICAvLyBUaGUgb3Jp
Z2luIG9mIHRoZSBjaGlsZHJlbiBpcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBsYXllciwg
bm90IHRoZQotICAgIC8vIGNlbnRlci4gVGhlIG1hdHJpeCBwYXNzZWQgZG93biB0byB0aGUgY2hp
bGRyZW4gaXMgdGhlcmVmb3JlOgotICAgIC8vIE1bc10gPSBNICogVHJbLWNlbnRlcl0KLSAgICBz
dWJsYXllck1hdHJpeC50cmFuc2xhdGUzZCgtYm91bmRzLndpZHRoKCkgKiAwLjUsIC1ib3VuZHMu
aGVpZ2h0KCkgKiAwLjUsIDApOwotCi0gICAgTGF5ZXJMaXN0JiBkZXNjZW5kYW50cyA9IChsYXll
ci0+cmVuZGVyU3VyZmFjZSgpID8gbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+bGF5ZXJMaXN0KCkg
OiBsYXllckxpc3QpOwotICAgIGRlc2NlbmRhbnRzLmFwcGVuZChsYXllcik7Ci0KLSAgICB1bnNp
Z25lZCB0aGlzTGF5ZXJJbmRleCA9IGRlc2NlbmRhbnRzLnNpemUoKSAtIDE7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpOwotICAg
ICAgICB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3VyZmFjZXMoY2hpbGQsIHN1YmxheWVyTWF0
cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkZXNjZW5kYW50cyk7Ci0KLSAgICAgICAgaWYg
KGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpIHsKLSAgICAgICAgICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogY2hpbGRSZW5kZXJTdXJmYWNlID0gY2hpbGQtPnJlbmRlclN1cmZhY2UoKTsKLSAgICAg
ICAgICAgIEludFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9IGxheWVyLT5kcmF3YWJsZUNvbnRl
bnRSZWN0KCk7Ci0gICAgICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKGVuY2xvc2lu
Z0ludFJlY3QoY2hpbGRSZW5kZXJTdXJmYWNlLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCkpKTsKLSAg
ICAgICAgICAgIGxheWVyLT5zZXREcmF3YWJsZUNvbnRlbnRSZWN0KGRyYXdhYmxlQ29udGVudFJl
Y3QpOwotICAgICAgICAgICAgZGVzY2VuZGFudHMuYXBwZW5kKGNoaWxkKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIEludFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9IGxheWVyLT5k
cmF3YWJsZUNvbnRlbnRSZWN0KCk7Ci0gICAgICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVu
aXRlKGNoaWxkLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCkpOwotICAgICAgICAgICAgbGF5ZXItPnNl
dERyYXdhYmxlQ29udGVudFJlY3QoZHJhd2FibGVDb250ZW50UmVjdCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSB8fCB1c2VTdXJmYWNlRm9yTWFz
a2luZykgewotICAgICAgICBJbnRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBsYXllci0+ZHJh
d2FibGVDb250ZW50UmVjdCgpOwotICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LmludGVyc2Vj
dCh0cmFuc2Zvcm1lZExheWVyUmVjdCk7Ci0gICAgICAgIGxheWVyLT5zZXREcmF3YWJsZUNvbnRl
bnRSZWN0KGRyYXdhYmxlQ29udGVudFJlY3QpOwotICAgIH0KLQotICAgIGlmIChsYXllci0+cmVu
ZGVyU3VyZmFjZSgpICYmIGxheWVyICE9IG1fcm9vdENDTGF5ZXJJbXBsLmdldCgpKSB7Ci0gICAg
ICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9IGxheWVyLT5yZW5kZXJT
dXJmYWNlKCk7Ci0gICAgICAgIEludFJlY3QgcmVuZGVyU3VyZmFjZUNvbnRlbnRSZWN0ID0gbGF5
ZXItPmRyYXdhYmxlQ29udGVudFJlY3QoKTsKLSAgICAgICAgRmxvYXRQb2ludCBzdXJmYWNlQ2Vu
dGVyID0gRmxvYXRSZWN0KHJlbmRlclN1cmZhY2VDb250ZW50UmVjdCkuY2VudGVyKCk7Ci0KLSAg
ICAgICAgLy8gUmVzdHJpY3QgdGhlIFJlbmRlclN1cmZhY2Ugc2l6ZSB0byB0aGUgcG9ydGlvbiB0
aGF0J3MgdmlzaWJsZS4KLSAgICAgICAgRmxvYXRTaXplIGNlbnRlck9mZnNldER1ZVRvQ2xpcHBp
bmc7Ci0KLSAgICAgICAgLy8gRG9uJ3QgY2xpcCBpZiB0aGUgbGF5ZXIgaXMgcmVmbGVjdGVkIGFz
IHRoZSByZWZsZWN0aW9uIHNob3VsZG4ndCBiZQotICAgICAgICAvLyBjbGlwcGVkLgotICAgICAg
ICBpZiAoIWxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewotICAgICAgICAgICAgaWYgKCFyZW5kZXJT
dXJmYWNlLT5zY2lzc29yUmVjdCgpLmlzRW1wdHkoKSAmJiAhcmVuZGVyU3VyZmFjZUNvbnRlbnRS
ZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIEludFJlY3Qgc3VyZmFjZVNjaXNzb3JS
ZWN0ID0gY2FsY3VsYXRlVmlzaWJsZVJlY3QocmVuZGVyU3VyZmFjZS0+c2Npc3NvclJlY3QoKSwg
cmVuZGVyU3VyZmFjZUNvbnRlbnRSZWN0LCByZW5kZXJTdXJmYWNlLT5vcmlnaW5UcmFuc2Zvcm0o
KSk7Ci0gICAgICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUNvbnRlbnRSZWN0LmludGVyc2VjdChz
dXJmYWNlU2Npc3NvclJlY3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgRmxvYXRQb2lu
dCBjbGlwcGVkU3VyZmFjZUNlbnRlciA9IEZsb2F0UmVjdChyZW5kZXJTdXJmYWNlQ29udGVudFJl
Y3QpLmNlbnRlcigpOwotICAgICAgICAgICAgY2VudGVyT2Zmc2V0RHVlVG9DbGlwcGluZyA9IGNs
aXBwZWRTdXJmYWNlQ2VudGVyIC0gc3VyZmFjZUNlbnRlcjsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFRoZSBSZW5kZXJTdXJmYWNlIGJhY2tpbmcgdGV4dHVyZSBjYW5ub3QgZXhjZWVkIHRoZSBt
YXhpbXVtIHN1cHBvcnRlZAotICAgICAgICAvLyB0ZXh0dXJlIHNpemUuCi0gICAgICAgIHJlbmRl
clN1cmZhY2VDb250ZW50UmVjdC5zZXRXaWR0aChzdGQ6Om1pbihyZW5kZXJTdXJmYWNlQ29udGVu
dFJlY3Qud2lkdGgoKSwgbV9tYXhUZXh0dXJlU2l6ZSkpOwotICAgICAgICByZW5kZXJTdXJmYWNl
Q29udGVudFJlY3Quc2V0SGVpZ2h0KHN0ZDo6bWluKHJlbmRlclN1cmZhY2VDb250ZW50UmVjdC5o
ZWlnaHQoKSwgbV9tYXhUZXh0dXJlU2l6ZSkpOwotCi0gICAgICAgIGlmIChyZW5kZXJTdXJmYWNl
Q29udGVudFJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xlYXJM
YXllckxpc3QoKTsKLSAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJlY3QocmVuZGVy
U3VyZmFjZUNvbnRlbnRSZWN0KTsKLQotICAgICAgICAvLyBTaW5jZSB0aGUgbGF5ZXIgc3RhcnRz
IGEgbmV3IHJlbmRlciBzdXJmYWNlIHdlIG5lZWQgdG8gYWRqdXN0IGl0cwotICAgICAgICAvLyBz
Y2lzc29yIHJlY3QgdG8gYmUgZXhwcmVzc2VkIGluIHRoZSBuZXcgc3VyZmFjZSdzIGNvb3JkaW5h
dGUgc3lzdGVtLgotICAgICAgICBsYXllci0+c2V0U2Npc3NvclJlY3QobGF5ZXItPmRyYXdhYmxl
Q29udGVudFJlY3QoKSk7Ci0KLSAgICAgICAgLy8gQWRqdXN0IHRoZSBvcmlnaW4gb2YgdGhlIHRy
YW5zZm9ybSB0byBiZSB0aGUgY2VudGVyIG9mIHRoZSByZW5kZXIgc3VyZmFjZS4KLSAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPm9yaWdp
blRyYW5zZm9ybSgpOwotICAgICAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHN1cmZhY2VD
ZW50ZXIueCgpICsgY2VudGVyT2Zmc2V0RHVlVG9DbGlwcGluZy53aWR0aCgpLCBzdXJmYWNlQ2Vu
dGVyLnkoKSArIGNlbnRlck9mZnNldER1ZVRvQ2xpcHBpbmcuaGVpZ2h0KCksIDApOwotICAgICAg
ICByZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pOwotCi0gICAg
ICAgIC8vIENvbXB1dGUgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB1c2VkIHRvIGRyYXcgdGhl
IHJlcGxpY2Egb2YgdGhlIHJlbmRlcgotICAgICAgICAvLyBzdXJmYWNlLgotICAgICAgICBpZiAo
bGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByZXBsaWNhRHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgp
OwotICAgICAgICAgICAgcmVwbGljYURyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2QobGF5ZXItPnJl
cGxpY2FMYXllcigpLT5wb3NpdGlvbigpLngoKSwgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5wb3Np
dGlvbigpLnkoKSwgMCk7Ci0gICAgICAgICAgICByZXBsaWNhRHJhd1RyYW5zZm9ybS5tdWx0aXBs
eShsYXllci0+cmVwbGljYUxheWVyKCktPnRyYW5zZm9ybSgpKTsKLSAgICAgICAgICAgIHJlcGxp
Y2FEcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHN1cmZhY2VDZW50ZXIueCgpIC0gYW5jaG9yUG9p
bnQueCgpICogYm91bmRzLndpZHRoKCksIHN1cmZhY2VDZW50ZXIueSgpIC0gYW5jaG9yUG9pbnQu
eSgpICogYm91bmRzLmhlaWdodCgpLCAwKTsKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNl
dFJlcGxpY2FEcmF3VHJhbnNmb3JtKHJlcGxpY2FEcmF3VHJhbnNmb3JtKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIC8vIElmIHByZXNlcnZlcy0zZCB0aGVuIHNvcnQgYWxsIHRoZSBkZXNjZW5k
YW50cyBpbiAzRCBzbyB0aGF0IHRoZXkgY2FuIGJlIAotICAgIC8vIGRyYXduIGZyb20gYmFjayB0
byBmcm9udC4gSWYgdGhlIHByZXNlcnZlcy0zZCBwcm9wZXJ0eSBpcyBhbHNvIHNldCBvbiB0aGUg
cGFyZW50IHRoZW4KLSAgICAvLyBza2lwIHRoZSBzb3J0aW5nIGFzIHRoZSBwYXJlbnQgd2lsbCBz
b3J0IGFsbCB0aGUgZGVzY2VuZGFudHMgYW55d2F5LgotICAgIGlmIChsYXllci0+cHJlc2VydmVz
M0QoKSAmJiAoIWxheWVyLT5wYXJlbnQoKSB8fCAhbGF5ZXItPnBhcmVudCgpLT5wcmVzZXJ2ZXMz
RCgpKSkKLSAgICAgICAgbV9sYXllclNvcnRlci5zb3J0KCZkZXNjZW5kYW50cy5hdCh0aGlzTGF5
ZXJJbmRleCksIGRlc2NlbmRhbnRzLmVuZCgpKTsKLX0KLQogdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KQogewogICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1
cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJ
bmRleCkgewo=
</data>
<flag name="review"
          id="97551"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="97654"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>