<?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>180569</bug_id>
          
          <creation_ts>2017-12-07 20:06:06 -0800</creation_ts>
          <short_desc>Simplify and streamline some Color-related code to prepare for some Color/ExtendedColor work</short_desc>
          <delta_ts>2017-12-08 09:28:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1379466</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-07 20:06:06 -0800</bug_when>
    <thetext>Simplify and streamline some Color-related code to prepare for some Color/ExtendedColor work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379467</commentid>
    <comment_count>1</comment_count>
      <attachid>328784</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-07 20:21:04 -0800</bug_when>
    <thetext>Created attachment 328784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379585</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-08 09:02:44 -0800</bug_when>
    <thetext>Seems like this passes all the tests on EWS, so I think we can land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379594</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-08 09:27:03 -0800</bug_when>
    <thetext>Committed r225680: &lt;https://trac.webkit.org/changeset/225680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379595</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-08 09:28:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/35935979&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328784</attachid>
            <date>2017-12-07 20:21:04 -0800</date>
            <delta_ts>2017-12-08 09:06:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180569-20171207202103.patch</filename>
            <type>text/plain</type>
            <size>18820</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM5YjNmYmVmZDc5ZDE4
YmFkZDE1YjA0ZWZlYTlmODRiZDdlYTYyYS4uZjQ0NDExMzY3MjEwZWQ2ZmQ4ZWU2NzBkMWI1NTNi
OTljZGRjMTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEyLTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBhbmQgc3RyZWFt
bGluZSBzb21lIENvbG9yLXJlbGF0ZWQgY29kZSB0byBwcmVwYXJlIGZvciBzb21lIENvbG9yL0V4
dGVuZGVkQ29sb3Igd29yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVlIGNvbnN0
KTogVXNlIHZhbHVlQXNDb2xvciBpbnN0ZWFkIG9mCisgICAgICAgIGhhdmluZyBjdXN0b20gY29k
ZSBoZXJlIHRvIHBhcnNlIHRoZSBjb2xvciBzdHJpbmcuCisKKyAgICAgICAgKiBjc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlcnBvbGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3RvcHMpOiBDYWxs
IGJsZW5kIGluc3RlYWQgb2YgaW50ZXJwb2xhdGUuIFRoZSBvbmx5CisgICAgICAgIGRpZmZlcmVu
Y2UgaXMgdGhhdCB0aGUgaW50ZXJwb2xhdGUgZnVuY3Rpb24gdHJ1bmNhdGVkIHdoZW4gY29udmVy
dGluZyBmcm9tIGZsb2F0aW5nIHBvaW50CisgICAgICAgIHRvIGludGVnZXIsIGFuZCB0aGUgYmxl
bmQgZnVuY3Rpb24gcm91bmRzIGluc3RlYWQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRp
dmVWYWx1ZSBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQgc3BlY2lhbCBjYXNlCisgICAgICAgIGZv
ciBpZGVudGlmaWVyIG9mIDAsIHNpbmNlIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQgYWxy
ZWFkeSBoYW5kbGVzIHRoYXQgY29ycmVjdGx5LgorICAgICAgICBBbHNvIGdvdCByaWQgb2YgdW5u
ZWRlZCBsb2NhbCB2YXJpYWJsZSAic3RhdGUiLgorCisgICAgICAgICogaHRtbC9Db2xvcklucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkU2ltcGxlQ29sb3IpOiBSZXdyb3Rl
IHRvIHRha2UgYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcgYW5kCisgICAgICAgIHRv
IHN0YXkgd2l0aCBhIHNpbmdsZSBsb29wIHNpbmNlIHRoaXMgZG9lcyBub3QgbmVlZCB0aGUgZXh0
cmEgZWZmaWNpZW5jeSBvZiBhIHNlcGFyYXRlCisgICAgICAgIDgtYml0IGFuZCAxNi1iaXQgY2hh
cmFjdGVyIHZlcnNpb24uIFJlbmFtZWQgdG8gbW9yZSBjbG9zZWx5IG1hdGNoIHdoYXQgdGhlIHNw
ZWNpZmljYXRpb24KKyAgICAgICAgY2FsbHMgdGhpcyBhbGdvcml0aG0uCisgICAgICAgIChXZWJD
b3JlOjpwYXJzZVNpbXBsZUNvbG9yVmFsdWUpOiBBZGRlZC4gVG8gYmUgdXNlZCBpbnN0ZWFkIG9m
IHJlbHlpbmcgb24gdGhlIGJlaGF2aW9yIG9mCisgICAgICAgIHRoZSBDb2xvciBjb25zdHJ1Y3Rv
ciB0aGF0IHRha2VzIGEgU3RyaW5nLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoYXQgbGF0ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSBjb25zdCk6IFVwZGF0
ZWQgZm9yIG5hbWUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnZh
bHVlQXNDb2xvciBjb25zdCk6IFVzZSBwYXJzZVNpbXBsZUNvbG9yVmFsdWUgaW5zdGVhZCBvZiB0
aGUKKyAgICAgICAgQ29sb3IgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhIHN0cmluZy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IgY29uc3QpOiBVcGRh
dGVkIGZvciBuYW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpz
ZWxlY3RDb2xvcik6IFVwZGF0ZWQgdG8gdGFrZSBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIENv
bG9yLgorICAgICAgICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGZvciB0ZXN0aW5n
IG9ubHkuCisKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmg6IE1hcmtlZCBldmVyeXRo
aW5nIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIFVwZGF0ZWQgdGhlCisgICAgICAgIHNlbGVj
dENvbG9yIGZ1bmN0aW9uIHRvIHRha2UgYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBDb2xvci4K
KworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3RDb2xvcik6IFRha2UgYSBTdHJpbmdWaWV3IGluc3Rl
YWQgb2YgYSBDb2xvci4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDogRGl0dG8u
CisKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGU6OnNlbGVjdENvbG9yKTogVGFrZSBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIENvbG9y
LgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6IERpdHRvLgorCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZWxlY3RDb2xv
ckluQ29sb3JDaG9vc2VyKTogUGFzcyB0aGUgc3RyaW5nIGRpcmVjdGx5IGluc3RlYWQgb2YKKyAg
ICAgICAgY29uc3RydWN0aW5nIGEgQ29sb3Igd2l0aCBpdC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6c2V0Vmlld0Jhc2VCYWNrZ3JvdW5kQ29sb3IpOiBJbnN0ZWFkIG9mIHBhc3Jpbmcg
dGhlIHBhc3NlZCBpbiBzdHJpbmcKKyAgICAgICAgd2l0aCB0aGUgQ29sb3IgY29uc3RydWN0b3Is
IGltcGxlbWVudGVkIHRoZSB0d28gbmFtZXMgdGhhdCBhcmUgYWN0dWFsbHkgdXNlZCB3aXRoIHRo
aXMKKyAgICAgICAgZnVuY3Rpb24gaW4gdGVzdHM6ICJ0cmFuc3BhcmVudCIgYW5kICJ3aGl0ZSIu
CisKIDIwMTctMTItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXIgaW5zdGVhZCBvZiB1c2luZyBw
dGhyZWFkX211dGV4X3Qgd2l0aCByZWN1cnNpdmUgbG9jayBvcHRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAK
aW5kZXggZTk0YWE5NDZkY2Y3MzU0NzI4MGY5M2M0OTEyN2UxMmVkNzU1MTIxMi4uZjk0MTY3YjMw
MmI2YzdlOGJmN2E2ZjM0ODhkMjA3N2UxYTY4ZWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE5
MDAsMTIgKzE5MDAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVl
KGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0CiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVt
ZW50Pihub2RlKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBpbnB1dCA9IGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKCkpOwotICAgIGlmICghaW5wdXQuaXNDb2xvckNv
bnRyb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSFRNTElucHV0RWxlbWVudDo6dmFs
dWUgYWx3YXlzIHJldHVybnMgYSBzdHJpbmcgcGFyc2VhYmxlIGJ5IENvbG9yKCkuCi0gICAgQ29s
b3IgY29sb3IoaW5wdXQudmFsdWUoKSk7CisgICAgYXV0byBjb2xvciA9IGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCpub2RlKCkpLnZhbHVlQXNDb2xvcigpOwogICAgIHIgPSBjb2xvci5yZWQo
KTsKICAgICBnID0gY29sb3IuZ3JlZW4oKTsKICAgICBiID0gY29sb3IuYmx1ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4IDIxNWYyNzhkNjEyNTFjYzJhYTgx
ODIyOWE2ZTU3N2VhYzE2NzExZDAuLmVlZjI5NWI4NmEzNGQyYTM5ODAwOWRhNDcyNWM0YzEwMTQx
YzJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTExOSwy
MiArMTE5LDYgQEAgUmVmPENTU0dyYWRpZW50VmFsdWU+IENTU0dyYWRpZW50VmFsdWU6OmdyYWRp
ZW50V2l0aFN0eWxlc1Jlc29sdmVkKGNvbnN0IFN0eWxlUmUKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgaW5saW5lIGludCBpbnRlcnBvbGF0ZShpbnQgbWluLCBpbnQgbWF4LCBmbG9h
dCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gbWluICsgc3RhdGljX2Nhc3Q8aW50Pihwb3NpdGlv
biAqIChtYXggLSBtaW4pKTsKLX0KLQotc3RhdGljIGlubGluZSBDb2xvciBpbnRlcnBvbGF0ZShj
b25zdCBDb2xvciYgY29sb3IxLCBjb25zdCBDb2xvciYgY29sb3IyLCBmbG9hdCBwb3NpdGlvbikK
LXsKLSAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIERvZXNuJ3Qgd29yayB3aXRoIGV4dGVu
ZGVkIGNvbG9ycywgYW5kIHJlYWxseSBzaG91bGQgYmUgYSBoZWxwZXIgaW4gQ29sb3IuaCwgbm90
IGhlcmUuCi0gICAgaW50IHJlZCA9IGludGVycG9sYXRlKGNvbG9yMS5yZWQoKSwgY29sb3IyLnJl
ZCgpLCBwb3NpdGlvbik7Ci0gICAgaW50IGdyZWVuID0gaW50ZXJwb2xhdGUoY29sb3IxLmdyZWVu
KCksIGNvbG9yMi5ncmVlbigpLCBwb3NpdGlvbik7Ci0gICAgaW50IGJsdWUgPSBpbnRlcnBvbGF0
ZShjb2xvcjEuYmx1ZSgpLCBjb2xvcjIuYmx1ZSgpLCBwb3NpdGlvbik7Ci0gICAgaW50IGFscGhh
ID0gaW50ZXJwb2xhdGUoY29sb3IxLmFscGhhKCksIGNvbG9yMi5hbHBoYSgpLCBwb3NpdGlvbik7
Ci0KLSAgICByZXR1cm4gQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotfQotCiBjbGFz
cyBMaW5lYXJHcmFkaWVudEFkYXB0ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IExpbmVhckdy
YWRpZW50QWRhcHRlcihHcmFkaWVudDo6TGluZWFyRGF0YSYgZGF0YSkKQEAgLTQyMSw4ICs0MDUs
OSBAQCBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIENTU0dyYWRpZW50VmFsdWU6OmNvbXB1dGVT
dG9wcyhHcmFkaWVudEFkYXB0ZXImIGdyYWRpZQogICAgICAgICAvLyBjYWxjdWxhdGUgY29sb3Jz
CiAgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgOTsgKyt5KSB7CiAgICAgICAgICAgICBm
bG9hdCByZWxhdGl2ZU9mZnNldCA9IChuZXdTdG9wc1t5XS5vZmZzZXQgLSBvZmZzZXQxKSAvIChv
ZmZzZXQyIC0gb2Zmc2V0MSk7Ci0gICAgICAgICAgICBmbG9hdCBtdWx0aXBsaWVyID0gcG93Zihy
ZWxhdGl2ZU9mZnNldCwgbG9nZiguNWYpIC8gbG9nZihtaWRwb2ludCkpOwotICAgICAgICAgICAg
bmV3U3RvcHNbeV0uY29sb3IgPSBpbnRlcnBvbGF0ZShjb2xvcjEsIGNvbG9yMiwgbXVsdGlwbGll
cik7CisgICAgICAgICAgICBmbG9hdCBtdWx0aXBsaWVyID0gc3RkOjpwb3cocmVsYXRpdmVPZmZz
ZXQsIHN0ZDo6bG9nKC41ZikgLyBzdGQ6OmxvZyhtaWRwb2ludCkpOworICAgICAgICAgICAgLy8g
RklYTUU6IFdoeSBub3QgcHJlbXVsdGlwbHkgaGVyZT8KKyAgICAgICAgICAgIG5ld1N0b3BzW3ld
LmNvbG9yID0gYmxlbmQoY29sb3IxLCBjb2xvcjIsIG11bHRpcGxpZXIsIGZhbHNlIC8qIGRvIG5v
dCBwcmVtdWx0aXBseSAqLyk7CiAgICAgICAgIH0KIAogICAgICAgICBzdG9wcy5yZW1vdmUoeCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMTNiMGE0ZWEwZWJmMTA4NDAy
MzA5NDAyY2ZlYzE0MmY0MDdmZmVmOC4uN2ZkMjViOGFhZDVhYmM3MGRlMTA5YjI0MTQ2MjY0N2Zk
NzlmMDU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgwMCw4ICsx
ODAwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpzZXRGb250U2l6ZShGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGZsb2F0IHMKIAogYm9vbCBTdHlsZVJlc29sdmVyOjpj
b2xvckZyb21QcmltaXRpdmVWYWx1ZUlzRGVyaXZlZEZyb21FbGVtZW50KGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpbnQgaWRlbnQgPSB2YWx1ZS52YWx1ZUlEKCk7Ci0g
ICAgc3dpdGNoIChpZGVudCkgeworICAgIHN3aXRjaCAodmFsdWUudmFsdWVJRCgpKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZVdlYmtpdFRleHQ6CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdExpbms6CiAg
ICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEFjdGl2ZWxpbms6CkBAIC0xODE3LDI2ICsxODE2LDIzIEBA
IENvbG9yIFN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGNvbnN0IENTU1By
aW1pdGl2ZVZhbHVlJiB2YWx1ZSwgYm9vCiAgICAgaWYgKHZhbHVlLmlzUkdCQ29sb3IoKSkKICAg
ICAgICAgcmV0dXJuIHZhbHVlLmNvbG9yKCk7CiAKLSAgICBjb25zdCBTdGF0ZSYgc3RhdGUgPSBt
X3N0YXRlOwotICAgIENTU1ZhbHVlSUQgaWRlbnQgPSB2YWx1ZS52YWx1ZUlEKCk7Ci0gICAgc3dp
dGNoIChpZGVudCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAg
YXV0byBpZGVudGlmaWVyID0gdmFsdWUudmFsdWVJRCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmll
cikgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRUZXh0OgogICAgICAgICByZXR1cm4gZG9jdW1l
bnQoKS50ZXh0Q29sb3IoKTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGluazoKLSAgICAgICAg
cmV0dXJuIChzdGF0ZS5lbGVtZW50KCktPmlzTGluaygpICYmIGZvclZpc2l0ZWRMaW5rKSA/IGRv
Y3VtZW50KCkudmlzaXRlZExpbmtDb2xvcigpIDogZG9jdW1lbnQoKS5saW5rQ29sb3IoKTsKKyAg
ICAgICAgcmV0dXJuIChtX3N0YXRlLmVsZW1lbnQoKS0+aXNMaW5rKCkgJiYgZm9yVmlzaXRlZExp
bmspID8gZG9jdW1lbnQoKS52aXNpdGVkTGlua0NvbG9yKCkgOiBkb2N1bWVudCgpLmxpbmtDb2xv
cigpOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rOgogICAgICAgICByZXR1cm4g
ZG9jdW1lbnQoKS5hY3RpdmVMaW5rQ29sb3IoKTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Rm9j
dXNSaW5nQ29sb3I6CiAgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Io
KTsKICAgICBjYXNlIENTU1ZhbHVlQ3VycmVudGNvbG9yOgogICAgICAgICAvLyBDb2xvciBpcyBh
biBpbmhlcml0ZWQgcHJvcGVydHkgc28gZGVwZW5kaW5nIG9uIGl0IGVmZmVjdGl2ZWx5IG1ha2Vz
IHRoZSBwcm9wZXJ0eSBpbmhlcml0ZWQuCi0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhhc0V4
cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIHJldHVybiBzdGF0ZS5zdHls
ZSgpLT5jb2xvcigpOwotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgcmV0dXJuIFN0eWxlQ29sb3I6
OmNvbG9yRnJvbUtleXdvcmQoaWRlbnQpOwotICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFNldHRp
bmcgdGhlIGZsYWcgYXMgYSBzaWRlIGVmZmVjdCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMg
YSBiaXQgb2JsaXF1ZS4gQ2FuIHdlIGRvIGJldHRlcj8KKyAgICAgICAgbV9zdGF0ZS5zdHlsZSgp
LT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOworICAgICAgICByZXR1cm4g
bV9zdGF0ZS5zdHlsZSgpLT5jb2xvcigpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBT
dHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKGlkZW50aWZpZXIpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCA4ZTE1MmUzYjE1MTdiZDNiY2Vj
MmIzYWQwYWFmZGEwMWE3YWQ2NzBjLi5kNGRmMTNjMzJmMTkzY2FkNGEwMzA3NTA3ZjJhOGU1N2Iy
MzIzZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ1
LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY29w
ZWRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtNTUsMzIgKzU0LDI4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
c3RhdGljIGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
CisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVy
ZS5odG1sI3ZhbGlkLXNpbXBsZS1jb2xvdXIKK3N0YXRpYyBib29sIGlzVmFsaWRTaW1wbGVDb2xv
cihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICAvLyBTZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN2YWxpZC1zaW1wbGUtY29sb3Vy
Ci0KLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKHZhbHVlWzBdICE9ICcjJykKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgpICE9IDcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gNykKKyAgICBpZiAo
c3RyaW5nWzBdICE9ICcjJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh2YWx1ZS5p
czhCaXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IHZhbHVlLmNoYXJh
Y3RlcnM4KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEsIGxlbmd0aCA9IHZhbHVlLmxl
bmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KGNoYXJhY3RlcnNbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdmFs
dWUuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEsIGxlbmd0aCA9
IHZhbHVlLmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghaXNB
U0NJSUhleERpZ2l0KGNoYXJhY3RlcnNbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCA3OyArK2kpIHsKKyAg
ICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoc3RyaW5nW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NvbW1vbi1taWNyb3N5bnRheGVzLmh0bWwjcnVsZXMt
Zm9yLXBhcnNpbmctc2ltcGxlLWNvbG91ci12YWx1ZXMKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJH
QkEzMj4gcGFyc2VTaW1wbGVDb2xvclZhbHVlKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlm
ICghaXNWYWxpZFNpbXBsZUNvbG9yKHN0cmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIG1ha2VSR0IodG9BU0NJSUhleFZhbHVlKHN0cmluZ1sxXSwgc3RyaW5n
WzJdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9BU0NJSUhleFZh
bHVlKHN0cmluZ1s1XSwgc3RyaW5nWzZdKSk7Cit9CisKIENvbG9ySW5wdXRUeXBlOjp+Q29sb3JJ
bnB1dFR5cGUoKQogewogICAgIGVuZENvbG9yQ2hvb3NlcigpOwpAQCAtMTA4LDcgKzEwMyw3IEBA
IFN0cmluZyBDb2xvcklucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CiAKIFN0cmluZyBD
b2xvcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUp
IGNvbnN0CiB7Ci0gICAgaWYgKCFpc1ZhbGlkU2ltcGxlQ29sb3JTdHJpbmcocHJvcG9zZWRWYWx1
ZSkpCisgICAgaWYgKCFpc1ZhbGlkU2ltcGxlQ29sb3IocHJvcG9zZWRWYWx1ZSkpCiAgICAgICAg
IHJldHVybiBmYWxsYmFja1ZhbHVlKCk7CiAKICAgICByZXR1cm4gcHJvcG9zZWRWYWx1ZS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpAQCAtMTE2LDcgKzExMSw3IEBAIFN0cmluZyBDb2xvcklu
cHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0
CiAKIENvbG9yIENvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IoKSBjb25zdAogewotICAgIHJl
dHVybiBDb2xvcihlbGVtZW50KCkudmFsdWUoKSk7CisgICAgcmV0dXJuIHBhcnNlU2ltcGxlQ29s
b3JWYWx1ZShlbGVtZW50KCkudmFsdWUoKSkudmFsdWUoKTsKIH0KIAogdm9pZCBDb2xvcklucHV0
VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCkBAIC0xMzAsNyArMTI1LDcgQEAgdm9pZCBDb2xv
cklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgY29sb3JTd2F0Y2gtPnNldFBz
ZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtY29sb3Itc3dhdGNoIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHdyYXBwZXJFbGVtZW50LT5hcHBlbmRDaGlsZChj
b2xvclN3YXRjaCk7CiAgICAgZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5k
Q2hpbGQod3JhcHBlckVsZW1lbnQpOwotICAgIAorCiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsK
IH0KIApAQCAtMTc2LDcgKzE3MSw3IEBAIGJvb2wgQ29sb3JJbnB1dFR5cGU6OnNob3VsZFJlc3Bl
Y3RMaXN0QXR0cmlidXRlKCkKIAogYm9vbCBDb2xvcklucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9y
KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFpc1ZhbGlkU2ltcGxl
Q29sb3JTdHJpbmcodmFsdWUpOworICAgIHJldHVybiAhaXNWYWxpZFNpbXBsZUNvbG9yKHZhbHVl
KTsKIH0KIAogYm9vbCBDb2xvcklucHV0VHlwZTo6c2hvdWxkUmVzZXRPbkRvY3VtZW50QWN0aXZh
dGlvbigpCkBAIC0yNjYsOSArMjYxLDEwIEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJbnB1dFR5cGU6
OnN1Z2dlc3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7CiB9CiAKLXZvaWQg
Q29sb3JJbnB1dFR5cGU6OnNlbGVjdENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgQ29s
b3JJbnB1dFR5cGU6OnNlbGVjdENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIGRpZENo
b29zZUNvbG9yKGNvbG9yKTsKKyAgICBpZiAoYXV0byBjb2xvciA9IHBhcnNlU2ltcGxlQ29sb3JW
YWx1ZShzdHJpbmcpKQorICAgICAgICBkaWRDaG9vc2VDb2xvcihjb2xvci52YWx1ZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5o
CmluZGV4IDVjODJkMDg5N2Q5OWI0YjRkMDJlM2UzMTRjYmZhNjgzMTM3OWNkMDEuLjY0NmQ0NTI2
M2Y2Y2I1NzViZGMyZDgyNTIwZTUwYTk1NmFmMTA2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmgKQEAgLTQ1LDI2ICs0NSwyNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29s
b3JJbnB1dFR5cGUoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0
IENvbG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRFbmRDaG9vc2VyKCkgb3ZlcnJpZGU7Ci0g
ICAgSW50UmVjdCBlbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpIGNvbnN0IG92ZXJyaWRl
OwotICAgIENvbG9yIGN1cnJlbnRDb2xvcigpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxkU2hv
d1N1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPENvbG9yPiBzdWdnZXN0
aW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNDb2xvckNvbnRyb2woKSBjb25zdCBv
dmVycmlkZTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFN0cmluZyBmYWxsYmFja1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJp
bmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkZXRhY2goKSBvdmVycmlkZTsKLSAgICBib29sIHNob3VsZFJlc3BlY3RMaXN0QXR0cmli
dXRlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzaG91bGRSZXNldE9uRG9jdW1lbnRBY3RpdmF0aW9u
KCkgb3ZlcnJpZGU7Ci0gICAgQ29sb3IgdmFsdWVBc0NvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZWxlY3RDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
Q2hvb3NlQ29sb3IoY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZENob29zZXIo
KSBmaW5hbDsKKyAgICBJbnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29u
c3QgZmluYWw7CisgICAgQ29sb3IgY3VycmVudENvbG9yKCkgZmluYWw7CisgICAgYm9vbCBzaG91
bGRTaG93U3VnZ2VzdGlvbnMoKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8Q29sb3I+IHN1Z2dl
c3Rpb25zKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0NvbG9yQ29udHJvbCgpIGNvbnN0IGZp
bmFsOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5n
IGZhbGxiYWNrVmFsdWUoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2FuaXRpemVWYWx1ZShj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUo
KSBmaW5hbDsKKyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFu
Z2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZURPTUFj
dGl2YXRlRXZlbnQoRXZlbnQmKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaCgpIGZpbmFsOworICAg
IGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBmaW5hbDsKKyAgICBib29sIHR5cGVN
aXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFJl
c2V0T25Eb2N1bWVudEFjdGl2YXRpb24oKSBmaW5hbDsKKyAgICBDb2xvciB2YWx1ZUFzQ29sb3Io
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNlbGVjdENvbG9yKFN0cmluZ1ZpZXcpIGZpbmFsOwog
CiAgICAgdm9pZCBlbmRDb2xvckNob29zZXIoKTsKICAgICB2b2lkIHVwZGF0ZUNvbG9yU3dhdGNo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzZDg2Yzdl
N2VjZmM5MzlmNjA0MDNiZWQ2ZmE4ZGI4YzkyYzZhZGUyLi4wYmRjY2ZiZmRmYzYyMGM4MWUyNTY5
ZTAzYWI0ZjE5YTMzYmU0MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTE2MDUsMTIgKzE2MDUsMTMgQEAgQ29sb3IgSFRNTElucHV0RWxlbWVudDo6dmFs
dWVBc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnZhbHVlQXNDb2xvcigp
OwogfQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdENvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6c2VsZWN0Q29sb3IoU3RyaW5nVmlldyBjb2xv
cikKIHsKICAgICBtX2lucHV0VHlwZS0+c2VsZWN0Q29sb3IoY29sb3IpOwogfQogCiAjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisKIFJlZlB0cjxIVE1MRWxlbWVudD4gSFRNTElucHV0RWxl
bWVudDo6bGlzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRhdGFMaXN0KCk7CkBAIC0xNjQzLDYg
KzE2NDQsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Omxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFu
Z2VkKCkKIHsKICAgICBtX2lucHV0VHlwZS0+bGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKTsK
IH0KKwogI2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogCiBib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OmlzU3RlcHBhYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKaW5kZXggNGVjNDk0NjY0M2IwOWI3OGYzN2QzMDUwYWExZjFlYjY3ZmY4NDU5ZC4u
ODE1NDQ0YmZjNmJiYzFhMjMyNGYwYTA5ZTUzZWE1MWZlZTA4ZWQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI5Myw3ICsyOTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjYWNoZVNlbGVjdGlvbkluUmVzcG9uc2VUb1NldFZhbHVlKGludCBjYXJldE9mZnNldCkg
eyBjYWNoZVNlbGVjdGlvbihjYXJldE9mZnNldCwgY2FyZXRPZmZzZXQsIFNlbGVjdGlvbkhhc05v
RGlyZWN0aW9uKTsgfQogCiAgICAgQ29sb3IgdmFsdWVBc0NvbG9yKCkgY29uc3Q7IC8vIFJldHVy
bnMgdHJhbnNwYXJlbnQgY29sb3IgaWYgbm90IHR5cGU9Y29sb3IuCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZWxlY3RDb2xvcihjb25zdCBDb2xvciYpOyAvLyBEb2VzIG5vdGhpbmcgaWYgbm90
IHR5cGU9Y29sb3IuIFNpbXVsYXRlcyB1c2VyIHNlbGVjdGlvbiBvZiBjb2xvcjsgaW50ZW5kZWQg
Zm9yIHRlc3RpbmcuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWxlY3RDb2xvcihTdHJpbmdW
aWV3KTsgLy8gRG9lcyBub3RoaW5nIGlmIG5vdCB0eXBlPWNvbG9yLiBTaW11bGF0ZXMgdXNlciBz
ZWxlY3Rpb24gb2YgY29sb3I7IGludGVuZGVkIGZvciB0ZXN0aW5nLgogCiAgICAgU3RyaW5nIGRl
ZmF1bHRUb29sVGlwKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCAx
MjAzZWRhYjkwYWFhMmMzMWMyOTkyNmM3ODRhYzkzNWM0ODQ4NDI3Li4xYTZkYjQ5NmI1NGVlZjM0
N2ZjNTEzMTQxOTEzZjJlNjY1ODVmYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBA
IC0xMTQyLDcgKzExNDIsNyBAQCBDb2xvciBJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcigpIGNvbnN0
CiAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIH0KIAotdm9pZCBJbnB1dFR5cGU6OnNl
bGVjdENvbG9yKGNvbnN0IENvbG9yJikKK3ZvaWQgSW5wdXRUeXBlOjpzZWxlY3RDb2xvcihTdHJp
bmdWaWV3KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCBjNzM5YThmMjRmYzAx
YTVlMWJjZWFjZjFmZjM5ZjUwMjc2ODU5YjNiLi5iNjg1MDQzMWY1MGRkZWI3YTE2NTczOWRjMzcw
OTk3MDA3ZTJhMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTI3Miw3ICsyNzIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3Rpb25BUEkoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIENvbG9yIHZhbHVlQXNDb2xvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBz
ZWxlY3RDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RDb2xvcihT
dHJpbmdWaWV3KTsKIAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhl
IHR5cGUsIGFuZCByZXR1cm4KICAgICAvLyB0aGUgRGVjaW1hbCB2YWx1ZSBmb3IgdGhlIHBhcnNp
bmcgcmVzdWx0IGlmIHRoZSBwYXJzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggN2U0MTM2ZjBiYmIwYTBjOGI1N2Y4N2Q1NzVkOGRmNWUwZDE4YTZiMS4uMTJjNjYyYjE4
Mjc4MWY0ZjRkYjhlYzA3Y2NlY2NmNTk0ODRkOTgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTIzNyw3ICsxMjM3LDcgQEAgU3RyaW5nIEludGVybmFsczo6dmlzaWJs
ZVBsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQpCiAKIHZvaWQgSW50ZXJuYWxzOjpzZWxlY3RD
b2xvckluQ29sb3JDaG9vc2VyKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmlu
ZyYgY29sb3JWYWx1ZSkKIHsKLSAgICBlbGVtZW50LnNlbGVjdENvbG9yKENvbG9yKGNvbG9yVmFs
dWUpKTsKKyAgICBlbGVtZW50LnNlbGVjdENvbG9yKGNvbG9yVmFsdWUpOwogfQogCiBFeGNlcHRp
b25PcjxWZWN0b3I8U3RyaW5nPj4gSW50ZXJuYWxzOjpmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91
c0hpc3RvcnlJdGVtKCkKQEAgLTE1NjUsOCArMTU2NSwxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJ
bnRlcm5hbHM6OnNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3JW
YWx1ZQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAotICAgIGRvY3VtZW50LT52
aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3IoY29sb3JWYWx1ZSkpOwotICAgIHJl
dHVybiB7IH07CisgICAgaWYgKGNvbG9yVmFsdWUgPT0gInRyYW5zcGFyZW50IikgeworICAgICAg
ICBkb2N1bWVudC0+dmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmIChjb2xvclZhbHVlID09
ICJ3aGl0ZSIpIHsKKyAgICAgICAgZG9jdW1lbnQtPnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRD
b2xvcihDb2xvcjo6d2hpdGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW50
ZXJuYWxzOjpzZXRQYWdpbmF0aW9uKGNvbnN0IFN0cmluZyYgbW9kZSwgaW50IGdhcCwgaW50IHBh
Z2VMZW5ndGgpCg==
</data>
<flag name="review"
          id="347949"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>