<?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>5999</bug_id>
          
          <creation_ts>2005-12-08 00:57:26 -0800</creation_ts>
          <short_desc>Fix several simple issues caught in SVG team code review</short_desc>
          <delta_ts>2005-12-11 01:25:16 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25693</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 00:57:26 -0800</bug_when>
    <thetext>Fix several simple issues caught in SVG team code review

Patch attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25694</commentid>
    <comment_count>1</comment_count>
      <attachid>4997</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 00:59:11 -0800</bug_when>
    <thetext>Created attachment 4997
Simple patch fixing issues caught in today&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25695</commentid>
    <comment_count>2</comment_count>
      <attachid>4997</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 01:02:34 -0800</bug_when>
    <thetext>Comment on attachment 4997
Simple patch fixing issues caught in today&apos;s review.

oops, I didn&apos;t mean to include the xml_tokenizer fix in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25732</commentid>
    <comment_count>3</comment_count>
      <attachid>5006</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 15:42:58 -0800</bug_when>
    <thetext>Created attachment 5006
Slightly larger patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25733</commentid>
    <comment_count>4</comment_count>
      <attachid>5006</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-12-08 15:52:22 -0800</bug_when>
    <thetext>Comment on attachment 5006
Slightly larger patch.

Eric fixed the DataRef == and != operators (which are incorrect in this patch).
 r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25799</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-11 01:25:16 -0800</bug_when>
    <thetext>*** Bug 5995 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4997</attachid>
            <date>2005-12-08 00:59:11 -0800</date>
            <delta_ts>2005-12-08 15:43:21 -0800</delta_ts>
            <desc>Simple patch fixing issues caught in today&apos;s review.</desc>
            <filename>review.patch</filename>
            <type>text/plain</type>
            <size>15022</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2todG1sX3BhcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9raHRtbC9raHRtbF9wYXJ0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTQxCmRp
ZmYgLXAgLXUgLXIxLjE0MSBraHRtbC9raHRtbF9wYXJ0LmgKLS0tIGtodG1sL2todG1sX3BhcnQu
aAk0IERlYyAyMDA1IDExOjM1OjAyIC0wMDAwCTEuMTQxCisrKyBraHRtbC9raHRtbF9wYXJ0LmgJ
OCBEZWMgMjAwNSAwODo1ODoyMSAtMDAwMApAQCAtODksMTIgKzg5LDYgQEAgbmFtZXNwYWNlIGto
dG1sCiAgIGNsYXNzIFhNTFRva2VuaXplcjsKIH0KIAotI2lmZGVmIFNWR19TVVBQT1JUCi1uYW1l
c3BhY2UgS1NWRyB7Ci0gICAgY2xhc3MgU1ZHQUVsZW1lbnRJbXBsOwotfQotI2VuZGlmCi0KIG5h
bWVzcGFjZSBLSlMgewogICAgIGNsYXNzIERPTURvY3VtZW50OwogICAgIGNsYXNzIFNlbGVjdGlv
bjsKQEAgLTE3Nyw5ICsxNzEsNiBAQCBjbGFzcyBLSFRNTFBhcnQgOiBwdWJsaWMgS1BhcnRzOjpS
ZWFkT25sCiAgIGZyaWVuZCBjbGFzcyBraHRtbDo6UmVuZGVyV2lkZ2V0OwogICBmcmllbmQgY2xh
c3Mga2h0bWw6OkNTU1N0eWxlU2VsZWN0b3I7CiAgIGZyaWVuZCBjbGFzcyBLSFRNTFBhcnRJZmFj
ZTsKLSNpZmRlZiBTVkdfU1VQUE9SVAotICAgIGZyaWVuZCBjbGFzcyBLU1ZHOjpTVkdBRWxlbWVu
dEltcGw7Ci0jZW5kaWYKIAogICBRX1BST1BFUlRZKCBib29sIGphdmFTY3JpcHRFbmFibGVkIFJF
QUQgalNjcmlwdEVuYWJsZWQgV1JJVEUgc2V0SlNjcmlwdEVuYWJsZWQgKQogICBRX1BST1BFUlRZ
KCBib29sIGphdmFFbmFibGVkIFJFQUQgamF2YUVuYWJsZWQgV1JJVEUgc2V0SmF2YUVuYWJsZWQg
KQpAQCAtOTA5LDggKzkwMCw2IEBAIHB1YmxpYzoKICAgICovCiAgIEtVUkwgY29tcGxldGVVUkwo
IGNvbnN0IFFTdHJpbmcgJnVybCApOwogCi1wcm90ZWN0ZWQ6Ci0KICAgLyoqCiAgICAqIHByZXNl
bnRzIGEgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZSB0byB0aGUgdXNlci4KICAgICogQHAgZXJyb3JD
b2RlIGtpbyBlcnJvciBjb2RlLCBlZyBLSU86OkVSUl9TRVJWRVJfVElNRU9VVC4KSW5kZXg6IGto
dG1sL2Nzcy9jc3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJD
b3JlL2todG1sL2Nzcy9jc3NwYXJzZXIuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjExNQpk
aWZmIC1wIC11IC1yMS4xMTUga2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAKLS0tIGtodG1sL2Nzcy9j
c3NwYXJzZXIuY3BwCTggRGVjIDIwMDUgMDg6NDA6MjUgLTAwMDAJMS4xMTUKKysrIGtodG1sL2Nz
cy9jc3NwYXJzZXIuY3BwCTggRGVjIDIwMDUgMDg6NTg6MjQgLTAwMDAKQEAgLTEyNDgsMTIgKzEy
NDgsOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSggaW50IHByb3BJZCwgCiAJcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKICAgICB9
CiAgICAgZGVmYXVsdDoKLS8vICNpZmRlZiBDU1NfREVCVUcKLS8vIAlrZERlYnVnKCA2MDgwICkg
PDwgImlsbGVnYWwgb3IgQ1NTMiBBdXJhbCBwcm9wZXJ0eTogIiA8PCB2YWwgPDwgZW5kbDsKLS8v
ICNlbmRpZgogI2lmIFNWR19TVVBQT1JUCi0gICAgaWYgKHBhcnNlU1ZHVmFsdWUocHJvcElkLCBp
bXBvcnRhbnQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHBhcnNlU1ZHVmFs
dWUocHJvcElkLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYK
IAlicmVhazsKICAgICB9CkluZGV4OiBraHRtbC9jc3MvY3NzcGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNlci5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjM0CmRpZmYgLXAgLXUgLXIxLjM0IGtodG1sL2Nzcy9jc3NwYXJzZXIu
aAotLS0ga2h0bWwvY3NzL2Nzc3BhcnNlci5oCTcgRGVjIDIwMDUgMDE6MTI6MzYgLTAwMDAJMS4z
NAorKysga2h0bWwvY3NzL2Nzc3BhcnNlci5oCTggRGVjIDIwMDUgMDg6NTg6MjQgLTAwMDAKQEAg
LTE0Nyw3ICsxNDcsNyBAQCBuYW1lc3BhY2UgRE9NIHsKIAlDU1NQcmltaXRpdmVWYWx1ZUltcGwg
KnBhcnNlQ29sb3JGcm9tVmFsdWUoVmFsdWUqIHZhbCk7CiAgICAgICAgIAogI2lmIFNWR19TVVBQ
T1JUCi0gICAgICAgIGJvb2wgcGFyc2VTVkdWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCwgaW50IGV4cGVjdGVkID0gMSk7CisgICAgICAgIGJvb2wgcGFyc2VTVkdWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIENTU1ZhbHVlSW1wbCAqcGFyc2VTVkdQYWlu
dCgpOwogICAgICAgICBDU1NWYWx1ZUltcGwgKnBhcnNlU1ZHQ29sb3IoKTsKICAgICAgICAgQ1NT
VmFsdWVJbXBsICpwYXJzZVNWR1N0cm9rZURhc2hhcnJheSgpOwpJbmRleDoga2h0bWwvY3NzL2Nz
c3N0eWxlc2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4y
MjcKZGlmZiAtcCAtdSAtcjEuMjI3IGtodG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAotLS0g
a2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCTggRGVjIDIwMDUgMDg6NDA6MjUgLTAwMDAJ
MS4yMjcKKysrIGtodG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAk4IERlYyAyMDA1IDA4OjU4
OjI4IC0wMDAwCkBAIC0zMzUsMTYgKzMzNSwxNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Omxv
YWREZWZhdWx0U3R5bGUoCiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgp
OwogICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQs
ICJwcmludCIpOwogCi0gICAgLy8gQ29sbGVjdCBvbmx5IHF1aXJrcy1tb2RlIHJ1bGVzLgotICAg
IHF1aXJrc1NoZWV0ID0gcGFyc2VVQVNoZWV0KDAsICJraHRtbC9jc3MvcXVpcmtzLmNzcyIpOwot
ICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG5ldyBDU1NSdWxlU2V0KCk7Ci0gICAgZGVmYXVsdFF1
aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwgInNjcmVlbiIpOwotICAg
IAogI2lmIFNWR19TVVBQT1JUCiAgICAgc3ZnU2hlZXQgPSBwYXJzZVVBU2hlZXQoMCwgImtzdmcy
L2Nzcy9zdmcuY3NzIik7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdmdT
aGVldCwgInNjcmVlbiIpOwogICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChzdmdTaGVldCwgInByaW50Iik7CiAjZW5kaWYKKworICAgIC8vIENvbGxlY3Qgb25seSBxdWly
a3MtbW9kZSBydWxlcy4KKyAgICBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldCgwLCAia2h0bWwv
Y3NzL3F1aXJrcy5jc3MiKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBuZXcgQ1NTUnVsZVNl
dCgpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hl
ZXQsICJzY3JlZW4iKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRNYXRjaGVkUnVs
ZShDU1NSdWxlRGF0YSogcnVsZSkKQEAgLTQwNTAsNyArNDA1MCw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSggaW4KICAgICAgICAgLy8gVHJ5IHRoZSBTVkcgcHJvcGVy
dGllcwogICAgICAgICBhcHBseVNWR1Byb3BlcnR5KGlkLCB2YWx1ZSk7CiAjZW5kaWYKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKSW5kZXg6IGtodG1sL2Nzcy9j
c3NzdHlsZXNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUv
a2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40Nwpk
aWZmIC1wIC11IC1yMS40NyBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCi0tLSBraHRtbC9j
c3MvY3Nzc3R5bGVzZWxlY3Rvci5oCTcgRGVjIDIwMDUgMDE6MTI6MzYgLTAwMDAJMS40NworKysg
a2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAk4IERlYyAyMDA1IDA4OjU4OjI4IC0wMDAwCkBA
IC0yMDAsNyArMjAwLDYgQEAgcHVibGljOgogICAgICAgICB2b2lkIG1hcEJhY2tncm91bmRYUG9z
aXRpb24oQmFja2dyb3VuZExheWVyKiBsYXllciwgRE9NOjpDU1NWYWx1ZUltcGwqIHZhbHVlKTsK
ICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5kWVBvc2l0aW9uKEJhY2tncm91bmRMYXllciogbGF5
ZXIsIERPTTo6Q1NTVmFsdWVJbXBsKiB2YWx1ZSk7CiAgICAgICAgIAotICAgIHByb3RlY3RlZDoK
ICAgICAgICAgLy8gV2UgY29sbGVjdCB0aGUgc2V0IG9mIGRlY2xzIHRoYXQgbWF0Y2ggaW4gfG1f
bWF0Y2hlZERlY2xzfC4gIFdlIHRoZW4gd2FsayB0aGUKICAgICAgICAgLy8gc2V0IG9mIG1hdGNo
ZWQgZGVjbHMgZm91ciB0aW1lcywgb25jZSBmb3IgdGhvc2UgcHJvcGVydGllcyB0aGF0IG90aGVy
cyBkZXBlbmQgb24gKGxpa2UgZm9udC1zaXplKSwKICAgICAgICAgLy8gYW5kIHRoZW4gYSBzZWNv
bmQgdGltZSBmb3IgYWxsIHRoZSByZW1haW5pbmcgcHJvcGVydGllcy4gIFdlIHRoZW4gZG8gdGhl
IHNhbWUgdHdvIHBhc3NlcwpJbmRleDoga2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmpl
Y3RpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44OQpkaWZmIC1wIC11IC1yMS44OSBr
aHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHAKLS0tIGtodG1sL2h0bWwvaHRtbF9vYmplY3Rp
bXBsLmNwcAkyMSBOb3YgMjAwNSAwMToyMDoxMyAtMDAwMAkxLjg5CisrKyBraHRtbC9odG1sL2h0
bWxfb2JqZWN0aW1wbC5jcHAJOCBEZWMgMjAwNSAwODo1ODoyOSAtMDAwMApAQCAtODEzLDEyICs4
MTMsNiBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50SW1wbDo6aXNJbWFnZVR5cGUoCiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0jaWYgU1ZHX1NVUFBPUlQKLSAgICAvLyBFdmVuIGlmIHRoZSBpbWFn
ZSBzeXN0ZW0gc3VwcG9ydHMgaXQsIHdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIFNWR3MgYXMgaW1h
Z2VzLgotICAgIGlmIChzZXJ2aWNlVHlwZSA9PSAiaW1hZ2Uvc3ZnK3htbCIpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIGNhblJlbmRlckltYWdlVHlwZShzZXJ2
aWNlVHlwZSk7CiB9CiAKSW5kZXg6IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfY2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVu
ZGVyX2NhbnZhcy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzcKZGlmZiAtcCAtdSAtcjEu
Mzcga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuY3BwCi0tLSBraHRtbC9yZW5kZXJpbmcv
cmVuZGVyX2NhbnZhcy5jcHAJMjcgTm92IDIwMDUgMTE6MDI6MTggLTAwMDAJMS4zNworKysga2h0
bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuY3BwCTggRGVjIDIwMDUgMDg6NTg6MjkgLTAwMDAK
QEAgLTI5LDEwICsyOSw2IEBACiAKICNpbmNsdWRlICJraHRtbF9wYXJ0LmgiCiAKLSNpZiBTVkdf
U1VQUE9SVAotI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2Uga2h0bWw7CiAKIC8vI2RlZmluZSBCT1hfREVCVUcKSW5kZXg6IGtodG1s
L3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4xNjkKZGlmZiAtcCAtdSAtcjEuMTY5IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfb2Jq
ZWN0LmgKLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmgJMjMgTm92IDIwMDUgMTU6
MTQ6MDggLTAwMDAJMS4xNjkKKysrIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmgJOCBE
ZWMgMjAwNSAwODo1ODozMCAtMDAwMApAQCAtMjgsOSArMjgsNyBAQAogI2luY2x1ZGUgPHFjb2xv
ci5oPgogI2luY2x1ZGUgPHFyZWN0Lmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaWYgU1ZHX1NV
UFBPUlQKICNpbmNsdWRlIDxxd21hdHJpeC5oPgotI2VuZGlmCiAKICNpbmNsdWRlICJlZGl0aW5n
L3RleHRfYWZmaW5pdHkuaCIKICNpbmNsdWRlICJtaXNjL2todG1sbGF5b3V0LmgiCkBAIC0yODMs
NyArMjgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclBhdGgoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgUVJlY3QgcmVsYXRpdmVCQm94KGJvb2wg
aW5jbHVkZVN0cm9rZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIFFSZWN0KCk7IH0KICAgICAvLyBX
ZSBtYXkgZXZlbnR1YWxseSB3YW50IHRvIG1ha2UgdGhlc2Ugbm9uLXZpcnR1YWwKLSAgICB2aXJ0
dWFsIFFNYXRyaXggbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBRTWF0cml4KDEsMCww
LDEseFBvcygpLHhQb3MoKSk7IH0KKyAgICB2aXJ0dWFsIFFNYXRyaXggbG9jYWxUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBRTWF0cml4KDEsIDAsIDAsIDEsIHhQb3MoKSwgeVBvcygpKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFRyYW5zZm9ybShjb25zdCBRTWF0cml4JikgeyB9CiAg
ICAgdmlydHVhbCBRTWF0cml4IGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3Q7CiAjZW5kaWYKSW5k
ZXg6IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjc4CmRpZmYgLXAgLXUgLXIxLjc4IGtodG1sL3JlbmRlcmluZy9y
ZW5kZXJfc3R5bGUuY3BwCi0tLSBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAk2IERl
YyAyMDA1IDAxOjUzOjEzIC0wMDAwCTEuNzgKKysrIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfc3R5
bGUuY3BwCTggRGVjIDIwMDUgMDg6NTg6MzEgLTAwMDAKQEAgLTcwMiw3ICs3MDIsNyBAQCBSZW5k
ZXJTdHlsZTo6RGlmZiBSZW5kZXJTdHlsZTo6ZGlmZiggY29uCiB7CiAjaWYgU1ZHX1NVUFBPUlQK
ICAgICAvLyBUaGlzIGlzIGhvcnJpYmx5IGluZWZmaWNpZW50LiAgRXZlbnR1YWxseSB3ZSdsbCBo
YXZlIHRvIGludGVncmF0ZQotICAgIC8vIHRoaXMgbW9yZSBkaXJlY3RseSBieSBjYWxpbmc6IERp
ZmYgc3ZnRGlmZiA9IHN2Z1N0eWxlLT5kaWZmKG90aGVyKQorICAgIC8vIHRoaXMgbW9yZSBkaXJl
Y3RseSBieSBjYWxsaW5nOiBEaWZmIHN2Z0RpZmYgPSBzdmdTdHlsZS0+ZGlmZihvdGhlcikKICAg
ICAvLyBhbmQgdGhlbiBjaGVja2luZyBzdmdEaWZmIGFuZCByZXR1cm5pbmcgZnJvbSB0aGUgYXBw
cm9wcmFpdGUgcGxhY2VzIGJlbG93LgogICAgIGlmIChtX3N2Z1N0eWxlICE9IG90aGVyLT5tX3N2
Z1N0eWxlKQogICAgICAgICByZXR1cm4gTGF5b3V0OwpJbmRleDoga2h0bWwveG1sL2RvbV9kb2Np
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC94bWwv
ZG9tX2RvY2ltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI4MgpkaWZmIC1wIC11IC1y
MS4yODIga2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcAotLS0ga2h0bWwveG1sL2RvbV9kb2NpbXBs
LmNwcAk0IERlYyAyMDA1IDIwOjU1OjQ2IC0wMDAwCTEuMjgyCisrKyBraHRtbC94bWwvZG9tX2Rv
Y2ltcGwuY3BwCTggRGVjIDIwMDUgMDg6NTg6MzQgLTAwMDAKQEAgLTc4OSw3ICs3ODksNyBAQCBF
bGVtZW50SW1wbCAqRG9jdW1lbnRJbXBsOjpjcmVhdGVFbGVtZW50CiAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9Ci0jaWZkZWYgU1ZHX1NVUFBPUlQKKyNpZiBTVkdf
U1VQUE9SVAogICAgIGVsc2UgaWYgKF9uYW1lc3BhY2VVUkkgPT0gS1NWRzo6U1ZHTmFtZXM6OnN2
Z05hbWVzcGFjZVVSSSkKICAgICAgICAgZSA9IEtTVkc6OlNWR0VsZW1lbnRGYWN0b3J5OjpjcmVh
dGVTVkdFbGVtZW50KHFOYW1lLCB0aGlzLCBmYWxzZSk7CiAjZW5kaWYKQEAgLTI0MTEsOCArMjQx
MSw2IEBAIEFic3RyYWN0Vmlld0ltcGwgKkRvY3VtZW50SW1wbDo6ZGVmYXVsdFYKIAogRXZlbnRJ
bXBsICpEb2N1bWVudEltcGw6OmNyZWF0ZUV2ZW50KGNvbnN0IERPTVN0cmluZyAmZXZlbnRUeXBl
LCBpbnQgJmV4Y2VwdGlvbmNvZGUpCiB7Ci0gICAgLy8gY3JlYXRlRXZlbnQgb3VnaHQgdG8gYmUg
YXQgYSB0aW1lIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBET00gbW9kaWZpY2F0aW9ucyB0aGF0
IGZvcmJpZEV2ZW50RGlzcGF0Y2gKLSAgICAvLyAob2YgY291cnNlLCB0aGUgZXZlbnQgX2NvdWxk
XyBiZSBzZW50IGxhdGVyLCBidXQgdGhpcyBzZWVtcyBsaWtlIGEgZ29vZCBib3R0bGVuZWNrKQog
ICAgIGlmIChldmVudFR5cGUgPT0gIlVJRXZlbnRzIiB8fCBldmVudFR5cGUgPT0gIlVJRXZlbnQi
KQogICAgICAgICByZXR1cm4gbmV3IFVJRXZlbnRJbXBsKCk7CiAgICAgZWxzZSBpZiAoZXZlbnRU
eXBlID09ICJNb3VzZUV2ZW50cyIgfHwgZXZlbnRUeXBlID09ICJNb3VzZUV2ZW50IikKQEAgLTI0
MjMsMTAgKzI0MjEsMTAgQEAgRXZlbnRJbXBsICpEb2N1bWVudEltcGw6OmNyZWF0ZUV2ZW50KGNv
bgogICAgICAgICByZXR1cm4gbmV3IEtleWJvYXJkRXZlbnRJbXBsKCk7CiAgICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09ICJIVE1MRXZlbnRzIiB8fCBldmVudFR5cGUgPT0gIkV2ZW50IiB8fCBldmVu
dFR5cGUgPT0gIkV2ZW50cyIpCiAgICAgICAgIHJldHVybiBuZXcgRXZlbnRJbXBsKCk7Ci0jaWZk
ZWYgU1ZHX1NVUFBPUlQKKyNpZiBTVkdfU1VQUE9SVAogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9
PSAiU1ZHRXZlbnRzIikKICAgICAgICAgcmV0dXJuIG5ldyBFdmVudEltcGwoKTsKLSAgICBlbHNl
IGlmKGV2ZW50VHlwZSA9PSAiU1ZHWm9vbUV2ZW50cyIpCisgICAgZWxzZSBpZiAoZXZlbnRUeXBl
ID09ICJTVkdab29tRXZlbnRzIikKICAgICAgICAgcmV0dXJuIG5ldyBLU1ZHOjpTVkdab29tRXZl
bnRJbXBsKCk7CiAjZW5kaWYKICAgICBlbHNlIHsKSW5kZXg6IGtodG1sL3htbC94bWxfdG9rZW5p
emVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC94bWwv
eG1sX3Rva2VuaXplci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTQKZGlmZiAtcCAtdSAt
cjEuNTQga2h0bWwveG1sL3htbF90b2tlbml6ZXIuY3BwCi0tLSBraHRtbC94bWwveG1sX3Rva2Vu
aXplci5jcHAJMjggTm92IDIwMDUgMTg6MjM6NDYgLTAwMDAJMS41NAorKysga2h0bWwveG1sL3ht
bF90b2tlbml6ZXIuY3BwCTggRGVjIDIwMDUgMDg6NTg6MzQgLTAwMDAKQEAgLTM3NSwxMiArMzc1
LDEwIEBAIHZvaWQgWE1MVG9rZW5pemVyOjplbmRFbGVtZW50TnMoKQogCiAgICAgaWYgKG1fY3Vy
cmVudE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQogICAgICAgICBleGl0VGV4
dCgpOwotICAgIGlmIChtX2N1cnJlbnROb2RlLT5wYXJlbnROb2RlKCkgIT0gMCkgewotICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gbV9jdXJyZW50Tm9kZS0+cGFyZW50
Tm9kZSgpOwotICAgICAgICB9IHdoaWxlIChtX2N1cnJlbnROb2RlICYmIG1fY3VycmVudE5vZGUt
PmltcGxpY2l0Tm9kZSgpKTsKLSAgICB9Ci0vLyAjIyMgIGVsc2UgZXJyb3IKKyAgICB3aGlsZSAo
bV9jdXJyZW50Tm9kZS0+aW1wbGljaXROb2RlKCkpCisgICAgICAgIG1fY3VycmVudE5vZGUgPSBt
X2N1cnJlbnROb2RlLT5wYXJlbnROb2RlKCk7CisgICAgbV9jdXJyZW50Tm9kZS0+Y2xvc2VSZW5k
ZXJlcigpOworICAgIG1fY3VycmVudE5vZGUgPSBtX2N1cnJlbnROb2RlLT5wYXJlbnROb2RlKCk7
CiB9CiAKIHZvaWQgWE1MVG9rZW5pemVyOjpjaGFyYWN0ZXJzKGNvbnN0IHhtbENoYXIgKnMsIGlu
dCBsZW4pCkluZGV4OiBrc3ZnMi9jc3MvS1NWR0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3N2ZzIvY3NzL0tTVkdDU1NQYXJzZXIuY3BwLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjEwCmRpZmYgLXAgLXUgLXIxLjEwIGtzdmcyL2Nzcy9LU1ZHQ1NT
UGFyc2VyLmNwcAotLS0ga3N2ZzIvY3NzL0tTVkdDU1NQYXJzZXIuY3BwCTggRGVjIDIwMDUgMDg6
NDQ6NDcgLTAwMDAJMS4xMAorKysga3N2ZzIvY3NzL0tTVkdDU1NQYXJzZXIuY3BwCTggRGVjIDIw
MDUgMDg6NTg6MzUgLTAwMDAKQEAgLTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtTVkc7
CiB0eXBlZGVmIERPTTo6VmFsdWUgS0RPTUNTU1ZhbHVlOwogdHlwZWRlZiBET006OlZhbHVlTGlz
dCBLRE9NQ1NTVmFsdWVMaXN0OwogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCwgaW50IGV4cGVjdGVkKQorYm9vbCBDU1NQYXJzZXI6OnBh
cnNlU1ZHVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgaWYoIXZhbHVl
TGlzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIsMTMgKzQyLDEwIEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaW50IGlkID0gdmFsdWUtPmlkOwotICAgIGlmKGlkID09IENTU19WQUxfSU5IRVJJVCAm
JiBleHBlY3RlZCA9PSAxKQotICAgIHsKKyAgICBpZiAoaWQgPT0gQ1NTX1ZBTF9JTkhFUklUKSB7
CiAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgbmV3IENTU0luaGVyaXRlZFZhbHVlSW1wbCgp
LCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZSBpZihp
ZCA9PSBDU1NfVkFMX0lOSVRJQUwgJiYgZXhwZWN0ZWQgPT0gMSkKLSAgICB7CisgICAgfSBlbHNl
IGlmIChpZCA9PSBDU1NfVkFMX0lOSVRJQUwpIHsKICAgICAgICAgYWRkUHJvcGVydHkocHJvcElk
LCBuZXcgQ1NTSW5pdGlhbFZhbHVlSW1wbCgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zMTAsMTAgKzMwNyw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNW
R1ZhbHVlKGludCBwcm9wSWQKICAgICAgICAgICAgIC8vIHFEZWJ1ZygiIG5ldyBxdWlya3MgdmFs
dWU6IHZhbHVlPSUuMmYsIHVuaXQ9JWQiLCB2YWx1ZS0+ZlZhbHVlLCB2YWx1ZS0+dW5pdCk7CiAg
ICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NRdWlya1ByaW1pdGl2ZVZhbHVlSW1wbCh2
YWx1ZS0+ZlZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIH0KLSAg
ICAgICAgLS1leHBlY3RlZDsKICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAgIGlm
KHZhbHVlTGlzdC0+Y3VycmVudCgpICYmIGV4cGVjdGVkID09IDApCi0gICAgICAgIHsKKyAgICAg
ICAgaWYgKHZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CiAgICAgICAgICAgICBkZWxldGUgcGFyc2Vk
VmFsdWU7CiAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IDA7CiAgICAgICAgIH0KSW5kZXg6IGtz
dmcyL2Nzcy9zdmcuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tz
dmcyL2Nzcy9zdmcuY3NzLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEu
MiBrc3ZnMi9jc3Mvc3ZnLmNzcwotLS0ga3N2ZzIvY3NzL3N2Zy5jc3MJMzAgTm92IDIwMDUgMDA6
MTE6MTAgLTAwMDAJMS4yCisrKyBrc3ZnMi9jc3Mvc3ZnLmNzcwk4IERlYyAyMDA1IDA4OjU4OjM1
IC0wMDAwCkBAIC0xLDEwICsxLDMxIEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwotIAorCiBAbmFtZXNw
YWNlICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7CiAKIHN2Zywgc3ltYm9sLCBtYXJrZXIs
IHBhdHRlcm4sIGZvcmVpZ25PYmplY3QKIHsKLQlvdmVyZmxvdzogaGlkZGVuOworICAgIG92ZXJm
bG93OiBoaWRkZW47CiB9Ci0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVu
dEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1CmRpZmYgLXAgLXUgLXIxLjE1IGtz
dmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnRJbXBs
LmNwcAk2IERlYyAyMDA1IDAxOjUzOjE2IC0wMDAwCTEuMTUKKysrIGtzdmcyL3N2Zy9TVkdEb2N1
bWVudEltcGwuY3BwCTggRGVjIDIwMDUgMDg6NTg6MzYgLTAwMDAKQEAgLTE0MCwxOSArMTQwLDYg
QEAgS1NWR1ZpZXcgKlNWR0RvY3VtZW50SW1wbDo6c3ZnVmlldygpIGNvbgogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxLU1ZHVmlldyAqPihtX3ZpZXcpOwogfQogCi0jaWYgMAotS0RPTTo6RWNtYSAq
U1ZHRG9jdW1lbnRJbXBsOjplY21hRW5naW5lKCkgY29uc3QKLXsKLSAgICBpZihtX2VjbWFFbmdp
bmUpIC8vIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbnltb3JlLi4uCi0gICAgICAgIHJldHVybiBt
X2VjbWFFbmdpbmU7Ci0KLSAgICBtX2VjbWFFbmdpbmUgPSBuZXcgRWNtYShjb25zdF9jYXN0PFNW
R0RvY3VtZW50SW1wbCAqPih0aGlzKSk7Ci0gICAgbV9lY21hRW5naW5lLT5zZXR1cChpbXBsZW1l
bnRhdGlvbigpLT5jZGZJbnRlcmZhY2UoKSk7Ci0KLSAgICByZXR1cm4gbV9lY21hRW5naW5lOwot
fQotI2VuZGlmCi0KIHZvaWQgU1ZHRG9jdW1lbnRJbXBsOjpmaW5pc2hlZFBhcnNpbmcoKQogewog
ICAgIGFkZFNjcmlwdHMocm9vdEVsZW1lbnQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5006</attachid>
            <date>2005-12-08 15:42:58 -0800</date>
            <delta_ts>2005-12-08 15:52:22 -0800</delta_ts>
            <desc>Slightly larger patch.</desc>
            <filename>review.patch</filename>
            <type>text/plain</type>
            <size>21709</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUrU1ZHL0RyYXdEb2N1bWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9XZWJDb3JlK1NWRy9EcmF3RG9jdW1lbnQubW0sdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuOApkaWZmIC1wIC11IC1yMS44IFdlYkNvcmUrU1ZHL0RyYXdEb2N1bWVudC5t
bQotLS0gV2ViQ29yZStTVkcvRHJhd0RvY3VtZW50Lm1tCTIxIE5vdiAyMDA1IDA4OjI5OjA4IC0w
MDAwCTEuOAorKysgV2ViQ29yZStTVkcvRHJhd0RvY3VtZW50Lm1tCTggRGVjIDIwMDUgMjM6Mzk6
MzMgLTAwMDAKQEAgLTIzOCwxMiArMjM4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKIC0g
KE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKLSAgICAvLyBEZXRlY3QgZGVzY3JpcHRpb24gaWYg
cG9zc2libGUuLi4KLS8vICBLRE9NOjpOb2RlTGlzdEltcGwgKmRlc2NMaXN0ID0gX3ByaXZhdGUt
PnN2Z0RvY3VtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGVzYyIpOwotLy8gIGlmKGRlc2NM
aXN0ICYmIChkZXNjTGlzdC0+bGVuZ3RoKCkgPiAwKSkgewotLy8gIFNWR0Rlc2NFbGVtZW50SW1w
bCAqZGVzY0ltcGwgPSBkeW5hbWljX2Nhc3Q8U1ZHRGVzY0VsZW1lbnRJbXBsICo+KGRlc2NMaXN0
LT5pdGVtKDApKTsKLS8vICByZXR1cm4gZGVzY0ltcGwtPmRlc2NyaXB0aW9uKCkuc3RyaW5nKCku
Z2V0TlNTdHJpbmcoKTsKLS8vICB9CiAgICAgcmV0dXJuIG5pbDsKIH0KIApJbmRleDoga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJR
dWFydHoubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcKZGlmZiAtcCAtdSAtcjEuMTcga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0KLS0tIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCTI4IE5vdiAyMDA1IDIzOjMzOjU5IC0w
MDAwCTEuMTcKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1t
CTggRGVjIDIwMDUgMjM6Mzk6MzMgLTAwMDAKQEAgLTY1Miw3ICs2NTIsNyBAQCBDSUZpbHRlciAq
S0NhbnZhc0ZFSW1hZ2VRdWFydHo6OmdldENJRmlsCiAKIENJRmlsdGVyICpLQ2FudmFzRkVHYXVz
c2lhbkJsdXJRdWFydHo6OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZp
bHRlcikgY29uc3QKIHsKLQlGRV9RVUFSVFpfU0VUVVBfSU5QVVQoQCJDSUdhdXNzaWFuQmx1ciIp
OworCUZFX1FVQVJUWl9TRVRVUF9JTlBVVChAIkNJR2F1c3NpYW5QeXJhbWlkIik7CiAJCiAJZmxv
YXQgaW5wdXRSYWRpdXMgPSBzdGREZXZpYXRpb25YKCk7CiAJaWYgKGlucHV0UmFkaXVzICE9IHN0
ZERldmlhdGlvblkoKSkgewpJbmRleDoga2h0bWwva2h0bWxfcGFydC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2todG1sX3BhcnQuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xNDEKZGlmZiAtcCAtdSAtcjEuMTQxIGtodG1sL2todG1sX3BhcnQuaAotLS0g
a2h0bWwva2h0bWxfcGFydC5oCTQgRGVjIDIwMDUgMTE6MzU6MDIgLTAwMDAJMS4xNDEKKysrIGto
dG1sL2todG1sX3BhcnQuaAk4IERlYyAyMDA1IDIzOjM5OjMzIC0wMDAwCkBAIC04OSwxMiArODks
NiBAQCBuYW1lc3BhY2Uga2h0bWwKICAgY2xhc3MgWE1MVG9rZW5pemVyOwogfQogCi0jaWZkZWYg
U1ZHX1NVUFBPUlQKLW5hbWVzcGFjZSBLU1ZHIHsKLSAgICBjbGFzcyBTVkdBRWxlbWVudEltcGw7
Ci19Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgRE9NRG9jdW1lbnQ7CiAg
ICAgY2xhc3MgU2VsZWN0aW9uOwpAQCAtMTc3LDkgKzE3MSw2IEBAIGNsYXNzIEtIVE1MUGFydCA6
IHB1YmxpYyBLUGFydHM6OlJlYWRPbmwKICAgZnJpZW5kIGNsYXNzIGtodG1sOjpSZW5kZXJXaWRn
ZXQ7CiAgIGZyaWVuZCBjbGFzcyBraHRtbDo6Q1NTU3R5bGVTZWxlY3RvcjsKICAgZnJpZW5kIGNs
YXNzIEtIVE1MUGFydElmYWNlOwotI2lmZGVmIFNWR19TVVBQT1JUCi0gICAgZnJpZW5kIGNsYXNz
IEtTVkc6OlNWR0FFbGVtZW50SW1wbDsKLSNlbmRpZgogCiAgIFFfUFJPUEVSVFkoIGJvb2wgamF2
YVNjcmlwdEVuYWJsZWQgUkVBRCBqU2NyaXB0RW5hYmxlZCBXUklURSBzZXRKU2NyaXB0RW5hYmxl
ZCApCiAgIFFfUFJPUEVSVFkoIGJvb2wgamF2YUVuYWJsZWQgUkVBRCBqYXZhRW5hYmxlZCBXUklU
RSBzZXRKYXZhRW5hYmxlZCApCkBAIC05MDksOCArOTAwLDYgQEAgcHVibGljOgogICAgKi8KICAg
S1VSTCBjb21wbGV0ZVVSTCggY29uc3QgUVN0cmluZyAmdXJsICk7CiAKLXByb3RlY3RlZDoKLQog
ICAvKioKICAgICogcHJlc2VudHMgYSBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIHRvIHRoZSB1c2Vy
LgogICAgKiBAcCBlcnJvckNvZGUga2lvIGVycm9yIGNvZGUsIGVnIEtJTzo6RVJSX1NFUlZFUl9U
SU1FT1VULgpJbmRleDoga2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMTE1CmRpZmYgLXAgLXUgLXIxLjExNSBraHRtbC9jc3MvY3NzcGFyc2VyLmNw
cAotLS0ga2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAJOCBEZWMgMjAwNSAwODo0MDoyNSAtMDAwMAkx
LjExNQorKysga2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAJOCBEZWMgMjAwNSAyMzozOTozNCAtMDAw
MApAQCAtMTI0OCwxMiArMTI0OCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKCBpbnQg
cHJvcElkLCAKIAlyZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBp
bXBvcnRhbnQpOwogICAgIH0KICAgICBkZWZhdWx0OgotLy8gI2lmZGVmIENTU19ERUJVRwotLy8g
CWtkRGVidWcoIDYwODAgKSA8PCAiaWxsZWdhbCBvciBDU1MyIEF1cmFsIHByb3BlcnR5OiAiIDw8
IHZhbCA8PCBlbmRsOwotLy8gI2VuZGlmCiAjaWYgU1ZHX1NVUFBPUlQKLSAgICBpZiAocGFyc2VT
VkdWYWx1ZShwcm9wSWQsIGltcG9ydGFudCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAocGFyc2VTVkdWYWx1ZShwcm9wSWQsIGltcG9ydGFudCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogCWJyZWFrOwogICAgIH0KSW5kZXg6IGtodG1sL2Nzcy9jc3NwYXJz
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3Nz
cGFyc2VyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzQKZGlmZiAtcCAtdSAtcjEuMzQga2h0
bWwvY3NzL2Nzc3BhcnNlci5oCi0tLSBraHRtbC9jc3MvY3NzcGFyc2VyLmgJNyBEZWMgMjAwNSAw
MToxMjozNiAtMDAwMAkxLjM0CisrKyBraHRtbC9jc3MvY3NzcGFyc2VyLmgJOCBEZWMgMjAwNSAy
MzozOTozNCAtMDAwMApAQCAtMTQ3LDcgKzE0Nyw3IEBAIG5hbWVzcGFjZSBET00gewogCUNTU1By
aW1pdGl2ZVZhbHVlSW1wbCAqcGFyc2VDb2xvckZyb21WYWx1ZShWYWx1ZSogdmFsKTsKICAgICAg
ICAgCiAjaWYgU1ZHX1NVUFBPUlQKLSAgICAgICAgYm9vbCBwYXJzZVNWR1ZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50LCBpbnQgZXhwZWN0ZWQgPSAxKTsKKyAgICAgICAgYm9vbCBwYXJz
ZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAgQ1NTVmFsdWVJ
bXBsICpwYXJzZVNWR1BhaW50KCk7CiAgICAgICAgIENTU1ZhbHVlSW1wbCAqcGFyc2VTVkdDb2xv
cigpOwogICAgICAgICBDU1NWYWx1ZUltcGwgKnBhcnNlU1ZHU3Ryb2tlRGFzaGFycmF5KCk7Cklu
ZGV4OiBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjIyNwpkaWZmIC1wIC11IC1yMS4yMjcga2h0bWwvY3NzL2Nzc3N0eWxl
c2VsZWN0b3IuY3BwCi0tLSBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJOCBEZWMgMjAw
NSAwODo0MDoyNSAtMDAwMAkxLjIyNworKysga2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3Bw
CTggRGVjIDIwMDUgMjM6Mzk6MzQgLTAwMDAKQEAgLTMzNSwxNiArMzM1LDE2IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bG9hZERlZmF1bHRTdHlsZSgKICAgICBkZWZhdWx0UHJpbnRTdHlsZSA9
IG5ldyBDU1NSdWxlU2V0KCk7CiAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KGRlZmF1bHRTaGVldCwgInByaW50Iik7CiAKLSAgICAvLyBDb2xsZWN0IG9ubHkgcXVpcmtz
LW1vZGUgcnVsZXMuCi0gICAgcXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQoMCwgImtodG1sL2Nz
cy9xdWlya3MuY3NzIik7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbmV3IENTU1J1bGVTZXQo
KTsKLSAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0
LCAic2NyZWVuIik7Ci0gICAgCiAjaWYgU1ZHX1NVUFBPUlQKICAgICBzdmdTaGVldCA9IHBhcnNl
VUFTaGVldCgwLCAia3N2ZzIvY3NzL3N2Zy5jc3MiKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1
bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCAic2NyZWVuIik7CiAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCAicHJpbnQiKTsKICNlbmRpZgorCisgICAgLy8g
Q29sbGVjdCBvbmx5IHF1aXJrcy1tb2RlIHJ1bGVzLgorICAgIHF1aXJrc1NoZWV0ID0gcGFyc2VV
QVNoZWV0KDAsICJraHRtbC9jc3MvcXVpcmtzLmNzcyIpOworICAgIGRlZmF1bHRRdWlya3NTdHls
ZSA9IG5ldyBDU1NSdWxlU2V0KCk7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zy
b21TaGVldChxdWlya3NTaGVldCwgInNjcmVlbiIpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFkZE1hdGNoZWRSdWxlKENTU1J1bGVEYXRhKiBydWxlKQpAQCAtNDA1MCw3ICs0MDUwLDcg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KCBpbgogICAgICAgICAvLyBU
cnkgdGhlIFNWRyBwcm9wZXJ0aWVzCiAgICAgICAgIGFwcGx5U1ZHUHJvcGVydHkoaWQsIHZhbHVl
KTsKICNlbmRpZgotICAgICAgICByZXR1cm47CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApJ
bmRleDoga2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjQ3CmRpZmYgLXAgLXUgLXIxLjQ3IGtodG1sL2Nzcy9jc3NzdHlsZXNlbGVj
dG9yLmgKLS0tIGtodG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmgJNyBEZWMgMjAwNSAwMToxMjoz
NiAtMDAwMAkxLjQ3CisrKyBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCTggRGVjIDIwMDUg
MjM6Mzk6MzUgLTAwMDAKQEAgLTIwMCw3ICsyMDAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQg
bWFwQmFja2dyb3VuZFhQb3NpdGlvbihCYWNrZ3JvdW5kTGF5ZXIqIGxheWVyLCBET006OkNTU1Zh
bHVlSW1wbCogdmFsdWUpOwogICAgICAgICB2b2lkIG1hcEJhY2tncm91bmRZUG9zaXRpb24oQmFj
a2dyb3VuZExheWVyKiBsYXllciwgRE9NOjpDU1NWYWx1ZUltcGwqIHZhbHVlKTsKICAgICAgICAg
Ci0gICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBXZSBjb2xsZWN0IHRoZSBzZXQgb2YgZGVjbHMg
dGhhdCBtYXRjaCBpbiB8bV9tYXRjaGVkRGVjbHN8LiAgV2UgdGhlbiB3YWxrIHRoZQogICAgICAg
ICAvLyBzZXQgb2YgbWF0Y2hlZCBkZWNscyBmb3VyIHRpbWVzLCBvbmNlIGZvciB0aG9zZSBwcm9w
ZXJ0aWVzIHRoYXQgb3RoZXJzIGRlcGVuZCBvbiAobGlrZSBmb250LXNpemUpLAogICAgICAgICAv
LyBhbmQgdGhlbiBhIHNlY29uZCB0aW1lIGZvciBhbGwgdGhlIHJlbWFpbmluZyBwcm9wZXJ0aWVz
LiAgV2UgdGhlbiBkbyB0aGUgc2FtZSB0d28gcGFzc2VzCkluZGV4OiBraHRtbC9lY21hL2tqc193
aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2Vj
bWEva2pzX3dpbmRvdy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkzCmRpZmYgLXAgLXUg
LXIxLjE5MyBraHRtbC9lY21hL2tqc193aW5kb3cuY3BwCi0tLSBraHRtbC9lY21hL2tqc193aW5k
b3cuY3BwCTQgRGVjIDIwMDUgMDA6MzI6MzQgLTAwMDAJMS4xOTMKKysrIGtodG1sL2VjbWEva2pz
X3dpbmRvdy5jcHAJOCBEZWMgMjAwNSAyMzozOTozNSAtMDAwMApAQCAtMzcxLDEzICszNzEsOCBA
QCBXaW5kb3cgKldpbmRvdzo6cmV0cmlldmVXaW5kb3coS0hUTUxQYXJ0CiAgIE9iamVjdEltcCAq
b2JqID0gcmV0cmlldmUocCktPmdldE9iamVjdCgpOwogI2lmbmRlZiBOREVCVUcKICAgLy8gb2Jq
IHNob3VsZCBuZXZlciBiZSBudWxsLCBleGNlcHQgd2hlbiBqYXZhc2NyaXB0IGhhcyBiZWVuIGRp
c2FibGVkIGluIHRoYXQgcGFydC4KLSAgaWYgKCBwICYmIHAtPmpTY3JpcHRFbmFibGVkKCkgKQot
ICB7CisgIGlmIChwICYmIHAtPmpTY3JpcHRFbmFibGVkKCkpCiAgICAgYXNzZXJ0KG9iaik7Ci0j
aWZuZGVmIFFXUwotICAgIC8vYXNzZXJ0KCBkeW5hbWljX2Nhc3Q8V2luZG93Kj4ob2JqKSApOyAv
LyB0eXBlIGNoZWNraW5nCi0jZW5kaWYKLSAgfQogI2VuZGlmCiAgIGlmICghb2JqKSAvLyBKUyBk
aXNhYmxlZAogICAgIHJldHVybiAwOwpAQCAtMzg3LDEwICszODIsNyBAQCBXaW5kb3cgKldpbmRv
dzo6cmV0cmlldmVXaW5kb3coS0hUTUxQYXJ0CiBXaW5kb3cgKldpbmRvdzo6cmV0cmlldmVBY3Rp
dmUoRXhlY1N0YXRlICpleGVjKQogewogICBWYWx1ZUltcCAqaW1wID0gZXhlYy0+ZHluYW1pY0lu
dGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpOwotICBhc3NlcnQoIGltcCApOwotI2lmbmRlZiBR
V1MKLSAgLy9hc3NlcnQoIGR5bmFtaWNfY2FzdDxXaW5kb3cqPihpbXApICk7Ci0jZW5kaWYKKyAg
YXNzZXJ0KGltcCk7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxXaW5kb3cqPihpbXApOwogfQogCklu
ZGV4OiBraHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1dlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjg5CmRpZmYgLXAgLXUgLXIxLjg5IGtodG1sL2h0bWwvaHRtbF9vYmpl
Y3RpbXBsLmNwcAotLS0ga2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwCTIxIE5vdiAyMDA1
IDAxOjIwOjEzIC0wMDAwCTEuODkKKysrIGtodG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmNwcAk4
IERlYyAyMDA1IDIzOjM5OjM1IC0wMDAwCkBAIC04MTMsMTIgKzgxMyw2IEBAIGJvb2wgSFRNTE9i
amVjdEVsZW1lbnRJbXBsOjppc0ltYWdlVHlwZSgKICAgICAgICAgfQogICAgIH0KICAgICAKLSNp
ZiBTVkdfU1VQUE9SVAotICAgIC8vIEV2ZW4gaWYgdGhlIGltYWdlIHN5c3RlbSBzdXBwb3J0cyBp
dCwgd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgU1ZHcyBhcyBpbWFnZXMuCi0gICAgaWYgKHNlcnZp
Y2VUeXBlID09ICJpbWFnZS9zdmcreG1sIikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
Ci0KICAgICByZXR1cm4gY2FuUmVuZGVySW1hZ2VUeXBlKHNlcnZpY2VUeXBlKTsKIH0KIApJbmRl
eDoga2h0bWwvcmVuZGVyaW5nL0RhdGFSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvRGF0YVJlZi5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjEKZGlmZiAtcCAtdSAtcjEuMSBraHRtbC9yZW5kZXJpbmcvRGF0YVJlZi5oCi0tLSBraHRt
bC9yZW5kZXJpbmcvRGF0YVJlZi5oCTYgRGVjIDIwMDUgMDE6NTM6MTMgLTAwMDAJMS4xCisrKyBr
aHRtbC9yZW5kZXJpbmcvRGF0YVJlZi5oCTggRGVjIDIwMDUgMjM6Mzk6MzUgLTAwMDAKQEAgLTg3
LDEyICs4NywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yID09IChjb25zdCBEYXRh
UmVmPERBVEE+JiBvKSBjb25zdAogICAgIHsKLQlyZXR1cm4gKCptX2RhdGEgPT0gKihvLm1fZGF0
YSkpOworCXJldHVybiAoKG1fZGF0YSA9PSBvLm1fZGF0YSkgJiYgKCptX2RhdGEgPT0gKihvLm1f
ZGF0YSkpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgRGF0YVJl
ZjxEQVRBPiYgbykgY29uc3QKICAgICB7Ci0JcmV0dXJuICgqbV9kYXRhICE9ICooby5tX2RhdGEp
KTsKKwlyZXR1cm4gKChtX2RhdGEgIT0gby5tX2RhdGEpIHx8ICgqbV9kYXRhICE9ICooby5tX2Rh
dGEpKSk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9j
YW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3Jl
bmRlcmluZy9yZW5kZXJfY2FudmFzLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNwpkaWZm
IC1wIC11IC1yMS4zNyBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5jcHAKLS0tIGtodG1s
L3JlbmRlcmluZy9yZW5kZXJfY2FudmFzLmNwcAkyNyBOb3YgMjAwNSAxMTowMjoxOCAtMDAwMAkx
LjM3CisrKyBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5jcHAJOCBEZWMgMjAwNSAyMzoz
OTozNSAtMDAwMApAQCAtMjksMTAgKzI5LDYgQEAKIAogI2luY2x1ZGUgImtodG1sX3BhcnQuaCIK
IAotI2lmIFNWR19TVVBQT1JUCi0jaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgot
I2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBraHRtbDsKIAogLy8jZGVmaW5lIEJPWF9ERUJVRwpJ
bmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX29iamVjdC5oLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjE2OQpkaWZmIC1wIC11IC1yMS4xNjkga2h0bWwvcmVuZGVyaW5n
L3JlbmRlcl9vYmplY3QuaAotLS0ga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaAkyMyBO
b3YgMjAwNSAxNToxNDowOCAtMDAwMAkxLjE2OQorKysga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9v
YmplY3QuaAk4IERlYyAyMDA1IDIzOjM5OjM1IC0wMDAwCkBAIC0yOCw5ICsyOCw3IEBACiAjaW5j
bHVkZSA8cWNvbG9yLmg+CiAjaW5jbHVkZSA8cXJlY3QuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4K
LSNpZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgPHF3bWF0cml4Lmg+Ci0jZW5kaWYKIAogI2luY2x1
ZGUgImVkaXRpbmcvdGV4dF9hZmZpbml0eS5oIgogI2luY2x1ZGUgIm1pc2Mva2h0bWxsYXlvdXQu
aCIKQEAgLTI4Myw3ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBRUmVjdCByZWxhdGl2
ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gUVJlY3QoKTsg
fQogICAgIC8vIFdlIG1heSBldmVudHVhbGx5IHdhbnQgdG8gbWFrZSB0aGVzZSBub24tdmlydHVh
bAotICAgIHZpcnR1YWwgUU1hdHJpeCBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIFFN
YXRyaXgoMSwwLDAsMSx4UG9zKCkseFBvcygpKTsgfQorICAgIHZpcnR1YWwgUU1hdHJpeCBsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIFFNYXRyaXgoMSwgMCwgMCwgMSwgeFBvcygpLCB5
UG9zKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExvY2FsVHJhbnNmb3JtKGNvbnN0IFFNYXRy
aXgmKSB7IH0KICAgICB2aXJ0dWFsIFFNYXRyaXggYWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdDsK
ICNlbmRpZgpJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9zdHls
ZS5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNzgKZGlmZiAtcCAtdSAtcjEuNzgga2h0bWwv
cmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAKLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfc3R5
bGUuY3BwCTYgRGVjIDIwMDUgMDE6NTM6MTMgLTAwMDAJMS43OAorKysga2h0bWwvcmVuZGVyaW5n
L3JlbmRlcl9zdHlsZS5jcHAJOCBEZWMgMjAwNSAyMzozOTozNSAtMDAwMApAQCAtNzAyLDcgKzcw
Miw3IEBAIFJlbmRlclN0eWxlOjpEaWZmIFJlbmRlclN0eWxlOjpkaWZmKCBjb24KIHsKICNpZiBT
VkdfU1VQUE9SVAogICAgIC8vIFRoaXMgaXMgaG9ycmlibHkgaW5lZmZpY2llbnQuICBFdmVudHVh
bGx5IHdlJ2xsIGhhdmUgdG8gaW50ZWdyYXRlCi0gICAgLy8gdGhpcyBtb3JlIGRpcmVjdGx5IGJ5
IGNhbGluZzogRGlmZiBzdmdEaWZmID0gc3ZnU3R5bGUtPmRpZmYob3RoZXIpCisgICAgLy8gdGhp
cyBtb3JlIGRpcmVjdGx5IGJ5IGNhbGxpbmc6IERpZmYgc3ZnRGlmZiA9IHN2Z1N0eWxlLT5kaWZm
KG90aGVyKQogICAgIC8vIGFuZCB0aGVuIGNoZWNraW5nIHN2Z0RpZmYgYW5kIHJldHVybmluZyBm
cm9tIHRoZSBhcHByb3ByYWl0ZSBwbGFjZXMgYmVsb3cuCiAgICAgaWYgKG1fc3ZnU3R5bGUgIT0g
b3RoZXItPm1fc3ZnU3R5bGUpCiAgICAgICAgIHJldHVybiBMYXlvdXQ7CkluZGV4OiBraHRtbC94
bWwvZG9tX2RvY2ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2todG1sL3htbC9kb21fZG9jaW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjgyCmRp
ZmYgLXAgLXUgLXIxLjI4MiBraHRtbC94bWwvZG9tX2RvY2ltcGwuY3BwCi0tLSBraHRtbC94bWwv
ZG9tX2RvY2ltcGwuY3BwCTQgRGVjIDIwMDUgMjA6NTU6NDYgLTAwMDAJMS4yODIKKysrIGtodG1s
L3htbC9kb21fZG9jaW1wbC5jcHAJOCBEZWMgMjAwNSAyMzozOTozNiAtMDAwMApAQCAtNzg5LDcg
Kzc4OSw3IEBAIEVsZW1lbnRJbXBsICpEb2N1bWVudEltcGw6OmNyZWF0ZUVsZW1lbnQKICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KLSNpZmRlZiBTVkdfU1VQUE9S
VAorI2lmIFNWR19TVVBQT1JUCiAgICAgZWxzZSBpZiAoX25hbWVzcGFjZVVSSSA9PSBLU1ZHOjpT
VkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQogICAgICAgICBlID0gS1NWRzo6U1ZHRWxlbWVudEZh
Y3Rvcnk6OmNyZWF0ZVNWR0VsZW1lbnQocU5hbWUsIHRoaXMsIGZhbHNlKTsKICNlbmRpZgpAQCAt
MjQxMSw4ICsyNDExLDYgQEAgQWJzdHJhY3RWaWV3SW1wbCAqRG9jdW1lbnRJbXBsOjpkZWZhdWx0
VgogCiBFdmVudEltcGwgKkRvY3VtZW50SW1wbDo6Y3JlYXRlRXZlbnQoY29uc3QgRE9NU3RyaW5n
ICZldmVudFR5cGUsIGludCAmZXhjZXB0aW9uY29kZSkKIHsKLSAgICAvLyBjcmVhdGVFdmVudCBv
dWdodCB0byBiZSBhdCBhIHRpbWUgY29tcGxldGVseSBzZXBhcmF0ZSBmcm9tIERPTSBtb2RpZmlj
YXRpb25zIHRoYXQgZm9yYmlkRXZlbnREaXNwYXRjaAotICAgIC8vIChvZiBjb3Vyc2UsIHRoZSBl
dmVudCBfY291bGRfIGJlIHNlbnQgbGF0ZXIsIGJ1dCB0aGlzIHNlZW1zIGxpa2UgYSBnb29kIGJv
dHRsZW5lY2spCiAgICAgaWYgKGV2ZW50VHlwZSA9PSAiVUlFdmVudHMiIHx8IGV2ZW50VHlwZSA9
PSAiVUlFdmVudCIpCiAgICAgICAgIHJldHVybiBuZXcgVUlFdmVudEltcGwoKTsKICAgICBlbHNl
IGlmIChldmVudFR5cGUgPT0gIk1vdXNlRXZlbnRzIiB8fCBldmVudFR5cGUgPT0gIk1vdXNlRXZl
bnQiKQpAQCAtMjQyMywxMCArMjQyMSwxMCBAQCBFdmVudEltcGwgKkRvY3VtZW50SW1wbDo6Y3Jl
YXRlRXZlbnQoY29uCiAgICAgICAgIHJldHVybiBuZXcgS2V5Ym9hcmRFdmVudEltcGwoKTsKICAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gIkhUTUxFdmVudHMiIHx8IGV2ZW50VHlwZSA9PSAiRXZl
bnQiIHx8IGV2ZW50VHlwZSA9PSAiRXZlbnRzIikKICAgICAgICAgcmV0dXJuIG5ldyBFdmVudElt
cGwoKTsKLSNpZmRlZiBTVkdfU1VQUE9SVAorI2lmIFNWR19TVVBQT1JUCiAgICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09ICJTVkdFdmVudHMiKQogICAgICAgICByZXR1cm4gbmV3IEV2ZW50SW1wbCgp
OwotICAgIGVsc2UgaWYoZXZlbnRUeXBlID09ICJTVkdab29tRXZlbnRzIikKKyAgICBlbHNlIGlm
IChldmVudFR5cGUgPT0gIlNWR1pvb21FdmVudHMiKQogICAgICAgICByZXR1cm4gbmV3IEtTVkc6
OlNWR1pvb21FdmVudEltcGwoKTsKICNlbmRpZgogICAgIGVsc2UgewpJbmRleDoga2h0bWwveG1s
L2RvbV9lbGVtZW50aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
OTcKZGlmZiAtcCAtdSAtcjEuOTcga2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5jcHAKLS0tIGto
dG1sL3htbC9kb21fZWxlbWVudGltcGwuY3BwCTIgRGVjIDIwMDUgMDM6NDg6MTAgLTAwMDAJMS45
NworKysga2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5jcHAJOCBEZWMgMjAwNSAyMzozOTozNyAt
MDAwMApAQCAtMzcsMTAgKzM3LDYgQEAKIAogI2luY2x1ZGUgImh0bWwvaHRtbHBhcnNlci5oIgog
Ci0jaWYgU1ZHX1NVUFBPUlQKLSNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2VuZGlmCi0KICNpbmNs
dWRlICJyZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5oIgogI2luY2x1ZGUgImNzcy9jc3NfdmFsdWVp
bXBsLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc3Byb3BlcnRpZXMuaCIKQEAgLTUyMSwxNiArNTE3LDYg
QEAgdm9pZCBFbGVtZW50SW1wbDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAgICAgQ29udGFpbmVy
Tm9kZUltcGw6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0KIAotI2lmIFNWR19TVVBQT1JUCi1i
b29sIEVsZW1lbnRJbXBsOjpyZW5kZXJlcklzTmVlZGVkKGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5
bGUpCi17Ci0gICAgLy8gU1ZHIGlnbm9yZXMgYXJiaXRyYXJ5IHhtbCBlbGVtZW50cyBpbiBpdHMg
cmVuZGVyIHRyZWUgY29udHJhcnkgdG8gdGhlIG5vcm1hbCBDU1MvWE1MIGJlaGF2aW9yLgotICAg
IGlmICgoS1NWRzo6U1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSA9PSBwYXJlbnROb2RlKCktPm5h
bWVzcGFjZVVSSSgpKSkgLy8gRklYTUU6ICYmICFwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoS1NW
Rzo6U1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gTm9kZUltcGw6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwotfQotI2VuZGlmCi0K
IHZvaWQgRWxlbWVudEltcGw6OmF0dGFjaCgpCiB7CiAjaWYgU1BFRURfREVCVUcgPCAxCkluZGV4
OiBraHRtbC94bWwvZG9tX2VsZW1lbnRpbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5oLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjY0CmRpZmYgLXAgLXUgLXIxLjY0IGtodG1sL3htbC9kb21fZWxlbWVudGltcGwuaAot
LS0ga2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5oCTEgRGVjIDIwMDUgMTA6MzI6MjcgLTAwMDAJ
MS42NAorKysga2h0bWwveG1sL2RvbV9lbGVtZW50aW1wbC5oCTggRGVjIDIwMDUgMjM6Mzk6Mzcg
LTAwMDAKQEAgLTIzOSw5ICsyMzksNiBAQCBwdWJsaWM6CiAgICAgLy8gU3RhdGUgb2YgdGhlIGVs
ZW1lbnQuCiAgICAgdmlydHVhbCBRU3RyaW5nIHN0YXRlKCkgeyByZXR1cm4gUVN0cmluZzo6bnVs
bDsgfQogCi0jaWYgU1ZHX1NVUFBPUlQKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChraHRtbDo6UmVuZGVyU3R5bGUgKik7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAgICAgdmlydHVhbCBraHRtbDo6UmVuZGVyU3R5bGUgKnN0eWxlRm9yUmVuZGVyZXIoa2h0
bWw6OlJlbmRlck9iamVjdCAqcGFyZW50KTsKICAgICB2aXJ0dWFsIGtodG1sOjpSZW5kZXJPYmpl
Y3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICosIGtodG1sOjpSZW5kZXJTdHlsZSAqKTsK
SW5kZXg6IGtodG1sL3htbC9kb21fdGV4dGltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL2todG1sL3htbC9kb21fdGV4dGltcGwuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjM3CmRpZmYgLXAgLXUgLXIxLjM3IGtodG1sL3htbC9kb21fdGV4dGltcGwuY3Bw
Ci0tLSBraHRtbC94bWwvZG9tX3RleHRpbXBsLmNwcAkyMSBOb3YgMjAwNSAwNDowMTo1OSAtMDAw
MAkxLjM3CisrKyBraHRtbC94bWwvZG9tX3RleHRpbXBsLmNwcAk4IERlYyAyMDA1IDIzOjM5OjM3
IC0wMDAwCkBAIC0zMSwxMCArMzEsNiBAQAogCiAjaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl90
ZXh0LmgiCiAKLSNpZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jZW5kaWYK
LQogI2luY2x1ZGUgPGtkZWJ1Zy5oPgogCiB1c2luZyBuYW1lc3BhY2UgRE9NOwpAQCAtNDU4LDEx
ICs0NTQsNiBAQCBib29sIFRleHRJbXBsOjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotI2lmIFNWR19TVVBQT1JUCi0gICAg
aWYgKHBhci0+ZWxlbWVudCgpLT5uYW1lc3BhY2VVUkkoKSA9PSBLU1ZHOjpTVkdOYW1lczo6c3Zn
TmFtZXNwYWNlVVJJKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDoga3N2ZzIvY3NzL0tTVkdDU1NQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tzdmcyL2Nzcy9LU1ZHQ1NTUGFyc2Vy
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCBrc3ZnMi9j
c3MvS1NWR0NTU1BhcnNlci5jcHAKLS0tIGtzdmcyL2Nzcy9LU1ZHQ1NTUGFyc2VyLmNwcAk4IERl
YyAyMDA1IDA4OjQ0OjQ3IC0wMDAwCTEuMTAKKysrIGtzdmcyL2Nzcy9LU1ZHQ1NTUGFyc2VyLmNw
cAk4IERlYyAyMDA1IDIzOjM5OjM4IC0wMDAwCkBAIC0zMiw3ICszMiw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBLU1ZHOwogdHlwZWRlZiBET006OlZhbHVlIEtET01DU1NWYWx1ZTsKIHR5cGVkZWYgRE9N
OjpWYWx1ZUxpc3QgS0RPTUNTU1ZhbHVlTGlzdDsKIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZH
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQsIGludCBleHBlY3RlZCkKK2Jvb2wgQ1NT
UGFyc2VyOjpwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewogICAg
IGlmKCF2YWx1ZUxpc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyLDEzICs0MiwxMCBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShpbnQgcHJvcElkCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGludCBpZCA9IHZhbHVlLT5pZDsKLSAgICBpZihpZCA9PSBDU1NfVkFM
X0lOSEVSSVQgJiYgZXhwZWN0ZWQgPT0gMSkKLSAgICB7CisgICAgaWYgKGlkID09IENTU19WQUxf
SU5IRVJJVCkgewogICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIG5ldyBDU1NJbmhlcml0ZWRW
YWx1ZUltcGwoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IGVsc2UgaWYoaWQgPT0gQ1NTX1ZBTF9JTklUSUFMICYmIGV4cGVjdGVkID09IDEpCi0gICAgewor
ICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTX1ZBTF9JTklUSUFMKSB7CiAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BJZCwgbmV3IENTU0luaXRpYWxWYWx1ZUltcGwoKSwgaW1wb3J0YW50KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzEwLDEwICszMDcsOCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VTVkdWYWx1ZShpbnQgcHJvcElkCiAgICAgICAgICAgICAvLyBxRGVidWcoIiBuZXcg
cXVpcmtzIHZhbHVlOiB2YWx1ZT0lLjJmLCB1bml0PSVkIiwgdmFsdWUtPmZWYWx1ZSwgdmFsdWUt
PnVuaXQpOwogICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTUXVpcmtQcmltaXRpdmVW
YWx1ZUltcGwodmFsdWUtPmZWYWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAg
ICAgICB9Ci0gICAgICAgIC0tZXhwZWN0ZWQ7CiAgICAgICAgIHZhbHVlTGlzdC0+bmV4dCgpOwot
ICAgICAgICBpZih2YWx1ZUxpc3QtPmN1cnJlbnQoKSAmJiBleHBlY3RlZCA9PSAwKQotICAgICAg
ICB7CisgICAgICAgIGlmICh2YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICAgICAgZGVs
ZXRlIHBhcnNlZFZhbHVlOwogICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSAwOwogICAgICAgICB9
CkluZGV4OiBrc3ZnMi9jc3Mvc3ZnLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9rc3ZnMi9jc3Mvc3ZnLmNzcyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYg
LXAgLXUgLXIxLjIga3N2ZzIvY3NzL3N2Zy5jc3MKLS0tIGtzdmcyL2Nzcy9zdmcuY3NzCTMwIE5v
diAyMDA1IDAwOjExOjEwIC0wMDAwCTEuMgorKysga3N2ZzIvY3NzL3N2Zy5jc3MJOCBEZWMgMjAw
NSAyMzozOTozOCAtMDAwMApAQCAtMSwxMCArMSwzMSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KLSAK
KwogQG5hbWVzcGFjZSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOwogCiBzdmcsIHN5bWJv
bCwgbWFya2VyLCBwYXR0ZXJuLCBmb3JlaWduT2JqZWN0CiB7Ci0Jb3ZlcmZsb3c6IGhpZGRlbjsK
KyAgICBvdmVyZmxvdzogaGlkZGVuOwogfQotCkluZGV4OiBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnRJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHRG9jdW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNQpkaWZmIC1wIC11
IC1yMS4xNSBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR0Rv
Y3VtZW50SW1wbC5jcHAJNiBEZWMgMjAwNSAwMTo1MzoxNiAtMDAwMAkxLjE1CisrKyBrc3ZnMi9z
dmcvU1ZHRG9jdW1lbnRJbXBsLmNwcAk4IERlYyAyMDA1IDIzOjM5OjM4IC0wMDAwCkBAIC0xNDAs
MTkgKzE0MCw2IEBAIEtTVkdWaWV3ICpTVkdEb2N1bWVudEltcGw6OnN2Z1ZpZXcoKSBjb24KICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8S1NWR1ZpZXcgKj4obV92aWV3KTsKIH0KIAotI2lmIDAKLUtE
T006OkVjbWEgKlNWR0RvY3VtZW50SW1wbDo6ZWNtYUVuZ2luZSgpIGNvbnN0Ci17Ci0gICAgaWYo
bV9lY21hRW5naW5lKSAvLyBObyBuZWVkIHRvIGluaXRpYWxpemUgYW55bW9yZS4uLgotICAgICAg
ICByZXR1cm4gbV9lY21hRW5naW5lOwotCi0gICAgbV9lY21hRW5naW5lID0gbmV3IEVjbWEoY29u
c3RfY2FzdDxTVkdEb2N1bWVudEltcGwgKj4odGhpcykpOwotICAgIG1fZWNtYUVuZ2luZS0+c2V0
dXAoaW1wbGVtZW50YXRpb24oKS0+Y2RmSW50ZXJmYWNlKCkpOwotCi0gICAgcmV0dXJuIG1fZWNt
YUVuZ2luZTsKLX0KLSNlbmRpZgotCiB2b2lkIFNWR0RvY3VtZW50SW1wbDo6ZmluaXNoZWRQYXJz
aW5nKCkKIHsKICAgICBhZGRTY3JpcHRzKHJvb3RFbGVtZW50KCkpOwpJbmRleDoga3N2ZzIvc3Zn
L1NWR0VsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0
CmRpZmYgLXAgLXUgLXIxLjE0IGtzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcy
L3N2Zy9TVkdFbGVtZW50SW1wbC5jcHAJMzAgTm92IDIwMDUgMDA6MTE6MTAgLTAwMDAJMS4xNAor
Kysga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmNwcAk4IERlYyAyMDA1IDIzOjM5OjM4IC0wMDAw
CkBAIC0xMzUsNCArMTM1LDExIEBAIHZvaWQgU1ZHRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0
cmlidXQKICAgICAgICAgS0RPTTo6U3R5bGVkRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHIpOwogfQogCitib29sIFNWR0VsZW1lbnRJbXBsOjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKERPTTo6Tm9kZUltcGwgKmNoaWxkKSBjb25zdAoreworICAgIGlmIChjaGlsZC0+aXNT
VkdFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50SW1wbCAq
PihjaGlsZCktPmlzVmFsaWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IGtzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjExCmRpZmYgLXAgLXUgLXIxLjExIGtzdmcyL3N2Zy9TVkdFbGVtZW50
SW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuaAk2IERlYyAyMDA1IDAxOjUzOjE2
IC0wMDAwCTEuMTEKKysrIGtzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5oCTggRGVjIDIwMDUgMjM6
Mzk6MzggLTAwMDAKQEAgLTY5LDEwICs2OSwxMSBAQCBuYW1lc3BhY2UgS1NWRwogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNHcmFkaWVudFN0b3AoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICAKICAgICAgICAgLy8gRm9yIFNWR1Rlc3RzSW1wbAotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAKICAgICAgICAgdmlydHVh
bCB2b2lkIGNsb3NlUmVuZGVyZXIoKSB7IG1fY2xvc2VkID0gdHJ1ZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChraHRtbDo6UmVuZGVyU3R5bGUgKikgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
RE9NOjpOb2RlSW1wbCAqKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIC8vIGhlbHBlcjoKICAg
ICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkOyB9Cg==
</data>
<flag name="review"
          id="977"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>