<?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>70469</bug_id>
          
          <creation_ts>2011-10-19 20:12:39 -0700</creation_ts>
          <short_desc>Document.cpp shouldn&apos;t need to know about every event for every feature</short_desc>
          <delta_ts>2011-10-19 22:04:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487255</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 20:12:39 -0700</bug_when>
    <thetext>Document.cpp shouldn&apos;t need to know about every event for every feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487256</commentid>
    <comment_count>1</comment_count>
      <attachid>111714</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 20:13:56 -0700</bug_when>
    <thetext>Created attachment 111714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487257</commentid>
    <comment_count>2</comment_count>
      <attachid>111715</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 20:14:47 -0700</bug_when>
    <thetext>Created attachment 111715
The generated file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487259</commentid>
    <comment_count>3</comment_count>
      <attachid>111714</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 20:17:49 -0700</bug_when>
    <thetext>Comment on attachment 111714
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=111714&amp;action=review

LGTM.

&gt; Source/WebCore/WebCore.gyp/scripts/action_makenames.py:120
&gt; +        if inputBasename == &apos;make_names.pl&apos; \
&gt; +            or inputBasename == &apos;make_event_factory.pl&apos;:

Really?

&gt; Source/WebCore/dom/EventFactory.h:38
&gt; +    static PassRefPtr&lt;Event&gt; create(const String&amp; eventType);

AtomicString?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487290</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 21:02:20 -0700</bug_when>
    <thetext>Yeah, I would have thought atomic string too, but that&apos;s not how the old code worked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487316</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 21:49:12 -0700</bug_when>
    <thetext>Committed r97933: &lt;http://trac.webkit.org/changeset/97933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487323</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-19 22:00:30 -0700</bug_when>
    <thetext>Looks like this probably changed the behavior for the TouchEvent interface when the RuntimeSwitch was off.  Was that intentional?  Do we care?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487324</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 22:01:47 -0700</bug_when>
    <thetext>Yeah, I decided I didn&apos;t care.  None of the other features work that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487325</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-19 22:01:55 -0700</bug_when>
    <thetext>I should have noted that in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487327</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-19 22:04:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I should have noted that in the ChangeLog.

Ok, just making sure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111714</attachid>
            <date>2011-10-19 20:13:56 -0700</date>
            <delta_ts>2011-10-19 20:17:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70469-20111019201355.patch</filename>
            <type>text/plain</type>
            <size>29481</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3OTI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTAtMTkgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBEb2N1bWVudC5jcHAgc2hvdWxkbid0
IG5lZWQgdG8ga25vdyBhYm91dCBldmVyeSBldmVudCBmb3IgZXZlcnkgZmVhdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBtYWtlX2V2ZW50X2ZhY3Rv
cnkucGwgZ2VuZXJhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBFdmVudEZhY3RvcnkKKyAgICAg
ICAgYmFzZWQgb24gYSBzaW1wbGUgIi5pbiIgZmlsZS4KKworICAgICAgICAqIENvZGVHZW5lcmF0
b3JzLnByaToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weToKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFdmVudCk6CisgICAgICAgICog
ZG9tL0V2ZW50RmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRXZlbnRGYWN0b3J5Lmlu
OiBBZGRlZC4KKyAgICAgICAgKiBkb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsOiBBZGRlZC4KKyAg
ICAgICAgKGRlZmF1bHRFdmVudFByb3BlcnR5SGFzaCk6CisgICAgICAgIChldmVudEhhbmRsZXIp
OgorICAgICAgICAocGFyYW1ldGVyc0hhbmRsZXIpOgorICAgICAgICAocmVhZE5hbWVzKToKKyAg
ICAgICAgKHJlYWRFdmVudHMpOgorICAgICAgICAoaW50ZXJmYWNlRm9yRXZlbnQpOgorICAgICAg
ICAocHJpbnRDcHBGaWxlKToKKyAgICAgICAgKHByaW50TGljZW5zZUhlYWRlcik6CisKIDIwMTEt
MTAtMTkgIEFubmEgQ2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFk
ZGluZyBzb21lIElETCBmaWxlcyBmb3IgPHRyYWNrPi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Nv
ZGVHZW5lcmF0b3JzLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJh
dG9ycy5wcmkJKHJldmlzaW9uIDk3ODgyKQorKysgU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRv
cnMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIFhNTE5TX05BTUVTID0gJCRQ
V0QveG1sL3htbG5zYXR0cnMuaW4KIAogSFRNTF9FTlRJVElFUyA9ICQkUFdEL2h0bWwvcGFyc2Vy
L0hUTUxFbnRpdHlOYW1lcy5pbgogCitFVkVOVF9GQUNUT1JZID0gJCRQV0QvZG9tL0V2ZW50RmFj
dG9yeS5pbgorCiBDT0xPUkRBVEFfR1BFUkYgPSAkJFBXRC9wbGF0Zm9ybS9Db2xvckRhdGEuZ3Bl
cmYKIAogV0FMRE9DU1NQUk9QUyA9ICQkUFdEL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC03
NzEsNiArNzczLDE0IEBAIGZvbnRuYW1lcy5jb21tYW5kcyA9IHBlcmwgLUkkJFBXRC9iaW5kaW4K
IGVudGl0aWVzLmRlcGVuZHMgPSAkJFBXRC9kb20vbWFrZV9uYW1lcy5wbCAkJEZPTlRfTkFNRVMK
IGFkZEV4dHJhQ29tcGlsZXIoZm9udG5hbWVzKQogCisjIEdFTkVSQVRPUiA1LUU6CitldmVudGZh
Y3Rvcnkub3V0cHV0ID0gJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS9FdmVudEZhY3Rvcnku
Y3BwCit4bWxuc25hbWVzLmlucHV0ID0gRVZFTlRfRkFDVE9SWQorZXZlbnRmYWN0b3J5LndrU2Ny
aXB0ID0gJCRQV0QvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAorZXZlbnRmYWN0b3J5LmNvbW1h
bmRzID0gcGVybCAtSSQkUFdEL2JpbmRpbmdzL3NjcmlwdHMgJCRmb250bmFtZXMud2tTY3JpcHQg
LS1ldmVudHMgJCRFVkVOVF9GQUNUT1JZIC0tb3V0cHV0RGlyICQkV0NfR0VORVJBVEVEX1NPVVJD
RVNfRElSCitlbnRpdGllcy5kZXBlbmRzID0gJCRQV0QvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5w
bCAkJEVWRU5UX0ZBQ1RPUlkKK2FkZEV4dHJhQ29tcGlsZXIoZXZlbnRmYWN0b3J5KQorCiAjIEdF
TkVSQVRPUiA4LUE6CiBlbnRpdGllcy5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNFU19E
SVJ9L0hUTUxFbnRpdHlUYWJsZS5jcHAKIGVudGl0aWVzLmlucHV0ID0gSFRNTF9FTlRJVElFUwpJ
bmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA5Nzg4MikKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw2
ICs1OTUsNyBAQCBhbGwgOiBcCiAgICAgQ1NTUHJvcGVydHlOYW1lcy5oIFwKICAgICBDU1NWYWx1
ZUtleXdvcmRzLmggXAogICAgIENvbG9yRGF0YS5jcHAgXAorICAgIEV2ZW50RmFjdG9yeS5jcHAg
XAogICAgIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogICAgIEhUTUxFbnRpdHlUYWJsZS5jcHAg
XAogICAgIEhUTUxOYW1lcy5jcHAgXApAQCAtODU1LDYgKzg1NiwxMyBAQCBYTGlua05hbWVzLmNw
cCA6IGRvbS9tYWtlX25hbWVzLnBsIHN2Zy94CiAKICMgLS0tLS0tLS0KICAKKyMgUmVnaXN0ZXIg
ZXZlbnQgY29uc3RydWN0b3JzCisKK0V2ZW50RmFjdG9yeS5jcHAgOiBkb20vbWFrZV9ldmVudF9m
YWN0b3J5LnBsIGRvbS9FdmVudEZhY3RvcnkuaW4KKwlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGlu
Z3Mvc2NyaXB0cyAkPCAtLWV2ZW50cyAkKFdlYkNvcmUpL2RvbS9FdmVudEZhY3RvcnkuaW4KKwor
IyAtLS0tLS0tLQorIAogIyBNYXRoTUwgdGFnIGFuZCBhdHRyaWJ1dGUgbmFtZXMsIGFuZCBlbGVt
ZW50IGZhY3RvcnkKIAogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIE1hdGhNTE5hbWVzLmNwcCA6
IGRvbS9tYWtlX25hbWVzLnBsIG1hdGhtbC9tYXRodGFncy5pbiBtYXRobWwvbWF0aGF0dHJzLmlu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gOTc4ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNjgxLDYgKzY4MSw5IEBAIERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTlNOYW1lcy5jcHAgRGUKIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvWE1MTmFtZXMuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTmFtZXMuaDogJChX
ZWJDb3JlKS9kb20vbWFrZV9uYW1lcy5wbCAkKFdlYkNvcmUpL3htbC94bWxhdHRycy5pbgogCSQo
QU1fVl9HRU4pJChQRVJMKSAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLWF0dHJz
ICQoV2ViQ29yZSkveG1sL3htbGF0dHJzLmluIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VC
Q09SRSkiCiAKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0b3J5LmNwcDogJChXZWJD
b3JlKS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsICQoV2ViQ29yZSkvZG9tL0V2ZW50RmFjdG9y
eS5pbgorCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAk
PCAtLWV2ZW50cyAkKFdlYkNvcmUpL3htbC9FdmVudEZhY3RvcnkuaW4gLS1vdXRwdXREaXIgIiQo
R0VOU09VUkNFU19XRUJDT1JFKSIKKwogIyBBbGwgV2ViIEluc3BlY3RvciBnZW5lcmF0ZWQgZmls
ZXMgYXJlIGNyZWF0ZWQgd2l0aCB0aGlzIG9uZSBjYWxsIHRvIENvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9uLmgg
OiAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiAkKFdlYkNvcmUpL2luc3BlY3Rv
ci9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtdmVyc2lvbgogCSQoUFlUSE9OKSAkKFdlYkNv
cmUpL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtdmVyc2lvbiAtbyAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkvSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9uLmggJChXZWJDb3JlKS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCShyZXZpc2lvbiA5Nzg4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC03MDAsNiArNzAwLDIzIEBACiAgICAgICAg
ICAgXSwKICAgICAgICAgfSwKICAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdF
dmVudEZhY3RvcnknLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnLi4vZG9t
L21ha2VfZXZlbnRfZmFjdG9yeS5wbCcsCisgICAgICAgICAgICAnLi4vZG9tL0V2ZW50RmFjdG9y
eS5pbicsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAg
ICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRGYWN0b3J5LmNwcCcsCisg
ICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9uJzogWworICAgICAgICAgICAgJ3B5dGhvbics
CisgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5JywKKyAgICAgICAgICAg
ICc8QChfb3V0cHV0cyknLAorICAgICAgICAgICAgJy0tJywKKyAgICAgICAgICAgICc8QChfaW5w
dXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICdh
Y3Rpb25fbmFtZSc6ICdNYXRoTUxOYW1lcycsCiAgICAgICAgICAgJ2lucHV0cyc6IFsKICAgICAg
ICAgICAgICcuLi9kb20vbWFrZV9uYW1lcy5wbCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5CShyZXZpc2lv
biA5Nzg4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21h
a2VuYW1lcy5weQkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw4IEBAIGRlZiBtYWluKGFy
Z3MpOgogICAgICAgICBpbnB1dEFicyA9IG9zLnBhdGguYWJzcGF0aChpbnB1dCkKICAgICAgICAg
aW5wdXRBYnNQb3NpeCA9IGlucHV0QWJzLnJlcGxhY2Uob3MucGF0aC5zZXAsIHBvc2l4cGF0aC5z
ZXApCiAgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGlucHV0KQotICAg
ICAgICBpZiBpbnB1dEJhc2VuYW1lID09ICdtYWtlX25hbWVzLnBsJzoKKyAgICAgICAgaWYgaW5w
dXRCYXNlbmFtZSA9PSAnbWFrZV9uYW1lcy5wbCcgXAorICAgICAgICAgICAgb3IgaW5wdXRCYXNl
bmFtZSA9PSAnbWFrZV9ldmVudF9mYWN0b3J5LnBsJzoKICAgICAgICAgICAgIGFzc2VydCBtYWtl
TmFtZXNJbnB1dCA9PSBOb25lCiAgICAgICAgICAgICBtYWtlTmFtZXNJbnB1dCA9IGlucHV0QWJz
CiAgICAgICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnVGFnTmFtZXMuaW4nKSBcCkBA
IC0xMjcsMTMgKzEyOCwxNSBAQCBkZWYgbWFpbihhcmdzKToKICAgICAgICAgICAgICBvciBpbnB1
dEJhc2VuYW1lLmVuZHN3aXRoKCdhdHRycy5pbicpOgogICAgICAgICAgICAgYXNzZXJ0IGF0dHJJ
bnB1dCA9PSBOb25lCiAgICAgICAgICAgICBhdHRySW5wdXQgPSBpbnB1dEFic1Bvc2l4CisgICAg
ICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRGYWN0b3J5LmluJyk6CisgICAg
ICAgICAgICBldmVudHNJbnB1dCA9IGlucHV0QWJzUG9zaXgKICAgICAgICAgZWxpZiBpbnB1dEJh
c2VuYW1lLmVuZHN3aXRoKCdOYW1lcy5pbicpOgogICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQo
aW5wdXRBYnNQb3NpeCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzc2VydCBGYWxzZQog
CiAgICAgYXNzZXJ0IG1ha2VOYW1lc0lucHV0ICE9IE5vbmUKLSAgICBhc3NlcnQgdGFnSW5wdXQg
IT0gTm9uZSBvciBhdHRySW5wdXQgIT0gTm9uZSBvciAoJy0tZm9udHMnIGluIG9wdGlvbnMpCisg
ICAgYXNzZXJ0IHRhZ0lucHV0ICE9IE5vbmUgb3IgYXR0cklucHV0ICE9IE5vbmUgb3IgZXZlbnRz
SW5wdXQgIT0gTm9uZSBvciAoJy0tZm9udHMnIGluIG9wdGlvbnMpCiAKICAgICAjIHNjcmlwdHNQ
YXRoIGlzIGEgUGVybCBpbmNsdWRlIGRpcmVjdG9yeSwgbG9jYXRlZCByZWxhdGl2ZSB0bwogICAg
ICMgbWFrZU5hbWVzSW5wdXQuCkBAIC0xNTAsNiArMTUzLDggQEAgZGVmIG1haW4oYXJncyk6CiAg
ICAgICAgIGNvbW1hbmQuZXh0ZW5kKFsnLS10YWdzJywgdGFnSW5wdXRdKQogICAgIGlmIGF0dHJJ
bnB1dCAhPSBOb25lOgogICAgICAgICBjb21tYW5kLmV4dGVuZChbJy0tYXR0cnMnLCBhdHRySW5w
dXRdKQorICAgIGlmIGV2ZW50c0lucHV0ICE9IE5vbmU6CisgICAgICAgIGNvbW1hbmQuZXh0ZW5k
KFsnLS1ldmVudHMnLCBldmVudHNJbnB1dF0pCiAgICAgY29tbWFuZC5leHRlbmQob3B0aW9ucykK
IAogICAgICMgRG8gaXQuIGNoZWNrX2NhbGwgaXMgbmV3IGluIDIuNSwgc28gc2ltdWxhdGUgaXRz
IGJlaGF2aW9yIHdpdGggY2FsbCBhbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk3ODgyKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjIxLDYgKzMyMjEsOCBAQAogCQk5NzVDQTI4QjEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5
cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzVD
QTI4ODEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggKi87IH07CiAJCTk3NUNBMkExMTMwMzY3
OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzVDQTI5RjEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uY3Bw
ICovOyB9OwogCQk5NzVDQTJBMjEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NUNBMkEwMTMwMzY3OUQw
MEU5OUFEOSAvKiBKU0NyeXB0by5oICovOyB9OworCQk5NzY2NTAxMzE0NEZBQTQyMDBGNkJCNTEg
LyogRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzY2NTAxMTE0NEZBQTQyMDBGNkJCNTEgLyogRXZlbnRGYWN0b3J5LmggKi87IH07
CisJCTk3NjY1MDRGMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2NjUwNEUxNDRGQkZGRTAw
RjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCTk3NkQ2Qzc3MTIyQjhBM0QwMDFG
RDFGNyAvKiBBc3luY0ZpbGVXcml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzU4MTIyQjhBM0QwMDFGRDFGNyAvKiBBc3luY0ZpbGVXcml0
ZXIuaCAqLzsgfTsKIAkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTkxMjJCOEEz
RDAwMUZEMUY3IC8qIEJsb2IuY3BwICovOyB9OwogCQk5NzZENkM3OTEyMkI4QTNEMDAxRkQxRjcg
LyogQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTc2RDZDNUExMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCAqLzsgfTsKQEAgLTEwMzg2LDYgKzEw
Mzg4LDggQEAKIAkJOTc1Q0EyODkxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQ3J5cHRvLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTc1Q0EyOUYxMzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTc1Q0EyQTAxMzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk3NjY1MDExMTQ0RkFBNDIwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRGYWN0b3J5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NjY1MDRFMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZh
Y3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRGYWN0
b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNTgxMjJCOEEzRDAw
MUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBBc3luY0ZpbGVXcml0ZXIuaDsgcGF0aCA9IGZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NkQ2QzU5MTIyQjhBM0QwMDFGRDFGNyAv
KiBCbG9iLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJsb2IuY3Bw
OyBwYXRoID0gZmlsZWFwaS9CbG9iLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTc2RDZDNUExMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQmxvYi5oOyBwYXRoID0gZmlsZWFwaS9CbG9iLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNTIyNCw2ICsxNTIyOCw3IEBACiAJCQkJRTQxRUEwMzkxMTk4Mzc0
OTAwNzEwQkM1IC8qIENTU1ZhbHVlS2V5d29yZHMuY3BwICovLAogCQkJCTY1NjU4MTQ3MDlEMTMw
NDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCisJCQkJOTc2NjUwNEUxNDRG
QkZGRTAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5jcHAgKi8sCiAJCQkJQTE3QzgxMjAwRjJBNUNG
NzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8sCiAJCQkJQTE3QzgxMjEwRjJB
NUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovLAogCQkJCUE4QkMwNDkxMTIx
NEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUuY3BwICovLApAQCAtMjEwNTQsNiArMjEw
NTksNyBAQAogCQkJCTQxOEEwNkNFMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIu
aCAqLywKIAkJCQlCQzYwRDkwOTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaCAq
LywKIAkJCQlCQzYwRDkwQTBEMkExN0NFMDBCOTkxOEYgLyogRXZlbnRFeGNlcHRpb24uaWRsICov
LAorCQkJCTk3NjY1MDExMTQ0RkFBNDIwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuaCAqLywKIAkJ
CQk5MzVGQkM0NDA5QkEwMEI5MDBFMjMwQjEgLyogRXZlbnRMaXN0ZW5lci5oICovLAogCQkJCTg1
QUZBNzQxMEFBRjI5ODQwMEU4NDMwNSAvKiBFdmVudExpc3RlbmVyLmlkbCAqLywKIAkJCQlBRDQ0
OTVGMTE0MUZDMDg5MDA1NDFFREYgLyogRXZlbnRMaXN0ZW5lck1hcC5jcHAgKi8sCkBAIC0yNDYx
Niw2ICsyNDYyMiw3IEBACiAJCQkJNzFDQ0I0OUQxNDQ4MjRBQzAwQzY3NkQ2IC8qIEltYWdlQnlT
aXplQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAv
KiBDYWNoZWRDdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzcz
NTAgLyogQ1NTUmVnaW9uU3R5bGVSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzY2NTAxMzE0
NEZBQTQyMDBGNkJCNTEgLyogRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3NDY5
LDYgKzI3NDc2LDcgQEAKIAkJCQk3MUNDQjQ5QzE0NDgyNEFDMDBDNjc2RDYgLyogSW1hZ2VCeVNp
emVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIg
LyogQ2FjaGVkQ3Vlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QUE2MUNGRjE0NEQ1OTVCMDBG
MzczNTAgLyogQ1NTUmVnaW9uU3R5bGVSdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3NjY1
MDRGMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDk3ODgyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQmVmb3JlTG9hZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiQ0RBVEFTZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5oIgog
I2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKQEAgLTQyLDE2ICs0MSwxMiBAQAogI2luY2x1
ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbW1l
bnQuaCIKLSNpbmNsdWRlICJDb21wb3NpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5o
IgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNvb2tpZUph
ci5oIgotI2luY2x1ZGUgIkN1c3RvbUV2ZW50LmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5o
IgotI2luY2x1ZGUgIkRldmljZU1vdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiRGV2aWNlT3JpZW50
YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgpA
QCAtNjAsOCArNTUsOCBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFbnRpdHlSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJFcnJvckV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRl
ICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgpAQCAtNzUsNiArNzAsNyBAQAogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5j
bHVkZSAiSGFzaENoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVu
dC5oIgpAQCAtOTQsMzMgKzkwLDI2IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgot
I2luY2x1ZGUgIkhhc2hDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5o
IgogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50
LmgiCi0jaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuaCIKLSNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFt
ZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNs
dWRlICJOZXdYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNp
bmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCi0jaW5j
bHVkZSAiT3ZlcmZsb3dFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgogI2luY2x1
ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIK
ICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlJlbmRlckFy
ZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTEzOSwyMSArMTI4LDE0IEBACiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAi
U3RhdGljSGFzaFNldE5vZGVMaXN0LmgiCi0jaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAjaW5j
bHVkZSAiU3R5bGVTaGVldExpc3QuaCIKLSNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJU
cmFuc2Zvcm1Tb3VyY2UuaCIKICNpbmNsdWRlICJUcmVlV2Fsa2VyLmgiCi0jaW5jbHVkZSAiVUlF
dmVudC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgotI2luY2x1ZGUgIldl
YktpdEFuaW1hdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmgi
Ci0jaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgi
CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKLSNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJYUGF0aEV2YWx1YXRvci5oIgpAQCAtMTgxLDE0ICsxNjMsOSBAQAog
I2luY2x1ZGUgIlNWR0VsZW1lbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNp
bmNsdWRlICJTVkdTdHlsZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdab29tRXZlbnQuaCIKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSNpZiBVU0UoVjgpCi0jaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgotI2VuZGlmCi0jaW5jbHVkZSAiVG91Y2hFdmVudC5o
IgogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgogI2VuZGlmCiAKQEAgLTIwNywyNyArMTg0LDYgQEAK
ICNpbmNsdWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNlbmRpZgogCi0jaWYg
RU5BQkxFKFdFQl9BVURJTykKLSNpbmNsdWRlICJBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIgotI2lu
Y2x1ZGUgIk9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSNpbmNsdWRlICJTcGVlY2hJbnB1dEV2ZW50Lmgi
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSNpbmNsdWRlICJDbG9zZUV2ZW50
LmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJXZWJHTENvbnRleHRF
dmVudC5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogI2luY2x1ZGUgIk1pY3Jv
RGF0YUl0ZW1MaXN0LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCkBAIC0zNDg3LDk1ICsz
NDQzLDcgQEAgdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZURvY3VtZW50RXZlbnQoUGFzcwogCiBQYXNz
UmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudFR5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7Ci0gICAg
aWYgKGV2ZW50VHlwZSA9PSAiRXZlbnQiIHx8IGV2ZW50VHlwZSA9PSAiRXZlbnRzIiB8fCBldmVu
dFR5cGUgPT0gIkhUTUxFdmVudHMiKQotICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoKTsK
LSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gIkJlZm9yZUxvYWRFdmVudCIpCi0gICAgICAgIGV2
ZW50ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUg
PT0gIkNvbXBvc2l0aW9uRXZlbnQiKQotICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6
OmNyZWF0ZSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiQ3VzdG9tRXZlbnQiKQotICAg
ICAgICBldmVudCA9IEN1c3RvbUV2ZW50OjpjcmVhdGUoKTsKLSAgICBlbHNlIGlmIChldmVudFR5
cGUgPT0gIkVycm9yRXZlbnQiKQotICAgICAgICBldmVudCA9IEVycm9yRXZlbnQ6OmNyZWF0ZSgp
OwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiSGFzaENoYW5nZUV2ZW50IikKLSAgICAgICAg
ZXZlbnQgPSBIYXNoQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlw
ZSA9PSAiS2V5Ym9hcmRFdmVudCIgfHwgZXZlbnRUeXBlID09ICJLZXlib2FyZEV2ZW50cyIpCi0g
ICAgICAgIGV2ZW50ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09ICJNZXNzYWdlRXZlbnQiKQotICAgICAgICBldmVudCA9IE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJNb3VzZUV2ZW50IiB8fCBldmVu
dFR5cGUgPT0gIk1vdXNlRXZlbnRzIikKLSAgICAgICAgZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVh
dGUoKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gIk11dGF0aW9uRXZlbnQiIHx8IGV2ZW50
VHlwZSA9PSAiTXV0YXRpb25FdmVudHMiKQotICAgICAgICBldmVudCA9IE11dGF0aW9uRXZlbnQ6
OmNyZWF0ZSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiT3ZlcmZsb3dFdmVudCIpCi0g
ICAgICAgIGV2ZW50ID0gT3ZlcmZsb3dFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09ICJQYWdlVHJhbnNpdGlvbkV2ZW50IikKLSAgICAgICAgZXZlbnQgPSBQYWdlVHJh
bnNpdGlvbkV2ZW50OjpjcmVhdGUoKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gIlBvcFN0
YXRlRXZlbnQiKQotICAgICAgICBldmVudCA9IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSgpOyAKLSAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gIlByb2dyZXNzRXZlbnQiKQotICAgICAgICBldmVudCA9
IFByb2dyZXNzRXZlbnQ6OmNyZWF0ZSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiVGV4
dEV2ZW50IikKLSAgICAgICAgZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZSgpOwotICAgIGVsc2Ug
aWYgKGV2ZW50VHlwZSA9PSAiVUlFdmVudCIgfHwgZXZlbnRUeXBlID09ICJVSUV2ZW50cyIpCi0g
ICAgICAgIGV2ZW50ID0gVUlFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBl
ID09ICJXZWJLaXRBbmltYXRpb25FdmVudCIpCi0gICAgICAgIGV2ZW50ID0gV2ViS2l0QW5pbWF0
aW9uRXZlbnQ6OmNyZWF0ZSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiV2ViS2l0VHJh
bnNpdGlvbkV2ZW50IikKLSAgICAgICAgZXZlbnQgPSBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OmNy
ZWF0ZSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiV2hlZWxFdmVudCIpCi0gICAgICAg
IGV2ZW50ID0gV2hlZWxFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
ICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQiKQotICAgICAgICBldmVudCA9IFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKCk7Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gIkF1ZGlvUHJvY2Vzc2luZ0V2ZW50IikKLSAgICAgICAg
ZXZlbnQgPSBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09ICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQiKQotICAgICAgICBldmVudCA9
IE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKCk7Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiTWVkaWFTdHJlYW1F
dmVudCIpCi0gICAgICAgIGV2ZW50ID0gTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKCk7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAi
U3BlZWNoSW5wdXRFdmVudCIpCi0gICAgICAgIGV2ZW50ID0gU3BlZWNoSW5wdXRFdmVudDo6Y3Jl
YXRlKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09ICJDbG9zZUV2ZW50IikKLSAgICAgICAgZXZlbnQgPSBDbG9zZUV2ZW50OjpjcmVh
dGUoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJHTCkKLSAgICBlbHNlIGlmIChldmVudFR5cGUg
PT0gIldlYkdMQ29udGV4dEV2ZW50IikKLSAgICAgICAgZXZlbnQgPSBXZWJHTENvbnRleHRFdmVu
dDo6Y3JlYXRlKCk7Ci0jZW5kaWYKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gIlN0b3JhZ2VF
dmVudCIpCi0gICAgICAgIGV2ZW50ID0gU3RvcmFnZUV2ZW50OjpjcmVhdGUoKTsKLSNpZiBFTkFC
TEUoU1ZHKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiU1ZHRXZlbnRzIikKLSAgICAgICAg
ZXZlbnQgPSBFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJTVkda
b29tRXZlbnQiIHx8IGV2ZW50VHlwZSA9PSAiU1ZHWm9vbUV2ZW50cyIpCi0gICAgICAgIGV2ZW50
ID0gU1ZHWm9vbUV2ZW50OjpjcmVhdGUoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0jaWYgVVNFKFY4KQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiVG91Y2hFdmVudCIg
JiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91Y2hFbmFibGVkKCkpCi0jZWxzZQotICAgIGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSAiVG91Y2hFdmVudCIpCi0jZW5kaWYKLSAgICAgICAgZXZlbnQg
PSBUb3VjaEV2ZW50OjpjcmVhdGUoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCi0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJEZXZpY2VNb3Rpb25FdmVudCIpCi0g
ICAgICAgIGV2ZW50ID0gRGV2aWNlTW90aW9uRXZlbnQ6OmNyZWF0ZSgpOwotICAgIGVsc2UgaWYg
KGV2ZW50VHlwZSA9PSAiRGV2aWNlT3JpZW50YXRpb25FdmVudCIpCi0gICAgICAgIGV2ZW50ID0g
RGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y3JlYXRlKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoT1JJ
RU5UQVRJT05fRVZFTlRTKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiT3JpZW50YXRpb25F
dmVudCIpCi0gICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZSgpOwotI2VuZGlmCisgICAgUmVm
UHRyPEV2ZW50PiBldmVudCA9IEV2ZW50RmFjdG9yeTo6Y3JlYXRlKGV2ZW50VHlwZSk7CiAgICAg
aWYgKGV2ZW50KQogICAgICAgICByZXR1cm4gZXZlbnQucmVsZWFzZSgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RmFjdG9yeS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RmFjdG9yeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV2ZW50RmFjdG9y
eV9oCisjZGVmaW5lIEV2ZW50RmFjdG9yeV9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEV2ZW50OworCitjbGFzcyBFdmVudEZhY3RvcnkgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBldmVudFR5cGUp
OworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudEZhY3Rv
cnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RmFjdG9yeS5pbgko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudEZhY3RvcnkuaW4JKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKK25hbWVzcGFjZT0iRXZlbnQiCisKK0V2ZW50CitFdmVu
dHMgaW50ZXJmYWNlTmFtZT1FdmVudAorSFRNTEV2ZW50cyBpbnRlcmZhY2VOYW1lPUV2ZW50CitC
ZWZvcmVMb2FkRXZlbnQKK0NvbXBvc2l0aW9uRXZlbnQKK0N1c3RvbUV2ZW50CitFcnJvckV2ZW50
CitIYXNoQ2hhbmdlRXZlbnQKK0tleWJvYXJkRXZlbnQKK0tleWJvYXJkRXZlbnRzIGludGVyZmFj
ZU5hbWU9S2V5Ym9hcmRFdmVudAorTWVzc2FnZUV2ZW50CitNb3VzZUV2ZW50CitNb3VzZUV2ZW50
cyBpbnRlcmZhY2VOYW1lPU1vdXNlRXZlbnQKK011dGF0aW9uRXZlbnQKK011dGF0aW9uRXZlbnRz
IGludGVyZmFjZU5hbWU9TXV0YXRpb25FdmVudAorT3ZlcmZsb3dFdmVudAorUGFnZVRyYW5zaXRp
b25FdmVudAorUG9wU3RhdGVFdmVudAorUHJvZ3Jlc3NFdmVudAorVGV4dEV2ZW50CitVSUV2ZW50
CitVSUV2ZW50cyBpbnRlcmZhY2VOYW1lPVVJRXZlbnQKK1dlYktpdEFuaW1hdGlvbkV2ZW50CitX
ZWJLaXRUcmFuc2l0aW9uRXZlbnQKK1doZWVsRXZlbnQKK1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudAorQXVkaW9Qcm9jZXNzaW5nRXZlbnQgY29uZGl0aW9uYWw9V0VCX0FVRElPCitPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQgY29uZGl0aW9uYWw9V0VCX0FVRElPCitNZWRpYVN0cmVhbUV2
ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorU3BlZWNoSW5wdXRFdmVudCBjb25kaXRpb25h
bD1JTlBVVF9TUEVFQ0gKK0Nsb3NlRXZlbnQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKK1dlYkdM
Q29udGV4dEV2ZW50IGNvbmRpdGlvbmFsPVdFQkdMCitTdG9yYWdlRXZlbnQKK1NWR0V2ZW50cyBp
bnRlcmZhY2VOYW1lPUV2ZW50LCBjb25kaXRpb25hbD1TVkcKK1NWR1pvb21FdmVudCBjb25kaXRp
b25hbD1TVkcKK1NWR1pvb21FdmVudHMgaW50ZXJmYWNlTmFtZT1TVkdab29tRXZlbnQsIGNvbmRp
dGlvbmFsPVNWRworVG91Y2hFdmVudCBjb25kaXRpb25hbD1UT1VDSF9FVkVOVFMKK0RldmljZU1v
dGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTgorRGV2aWNlT3JpZW50YXRp
b25FdmVudCBjb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04KK09yaWVudGF0aW9uRXZlbnQg
aW50ZXJmYWNlTmFtZT1FdmVudCwgY29uZGl0aW9uYWw9T1JJRU5UQVRJT05fRVZFTlRTCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIwNSBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisKKyMgQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDA5LCBKdWxpZW4gQ2hhZmZyYWl4IDxqY2hhZmZyYWl4QHdlYmtpdC5v
cmc+CisjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKwordXNlIHN0cmljdDsKKwordXNlIENvbmZpZzsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1
c2UgRmlsZTo6UGF0aDsKK3VzZSBGaWxlOjpTcGVjOwordXNlIElPOjpGaWxlOwordXNlIEluRmls
ZXNQYXJzZXI7CisKK3N1YiByZWFkRXZlbnRzKCQpOworCitteSAkZXZlbnRzRmlsZSA9ICIiOwor
bXkgJG91dHB1dERpciA9ICIuIjsKK215ICVwYXJzZWRFdmVudHMgPSAoKTsKKworcmVxdWlyZSBD
b25maWc7CisKK0dldE9wdGlvbnMoCisgICAgJ2V2ZW50cz1zJyA9PiBcJGV2ZW50c0ZpbGUsCisg
ICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKKyk7CisKK21rcGF0aCgkb3V0cHV0RGly
KTsKKworZGllICJZb3UgbXVzdCBzcGVjaWZ5IC0tZXZlbnRzIDxmaWxlPiIgdW5sZXNzIGxlbmd0
aCgkZXZlbnRzRmlsZSk7CisKK215ICVldmVudHMgPSAle3JlYWRFdmVudHMoJGV2ZW50c0ZpbGUp
fTsKKworcHJpbnRDcHBGaWxlKCIkb3V0cHV0RGlyL0V2ZW50RmFjdG9yeS5jcHAiKTsKKworc3Vi
IGRlZmF1bHRFdmVudFByb3BlcnR5SGFzaAoreworICAgIHJldHVybiAoCisgICAgICAgICdpbnRl
cmZhY2VOYW1lJyA9PiAwLAorICAgICAgICAnY29uZGl0aW9uYWwnID0+IDAKKyAgICApOworfQor
CitzdWIgZXZlbnRIYW5kbGVyKCQkJCkKK3sKKyAgICBteSAoJGV2ZW50LCAkcHJvcGVydHksICR2
YWx1ZSkgPSBAXzsKKworICAgICRwYXJzZWRFdmVudHN7JGV2ZW50fSA9IHsgZGVmYXVsdEV2ZW50
UHJvcGVydHlIYXNoKCRldmVudCkgfSBpZiAhZGVmaW5lZCgkcGFyc2VkRXZlbnRzeyRldmVudH0p
OworCisgICAgaWYgKCRwcm9wZXJ0eSkgeworICAgICAgICBkaWUgIlVua25vd24gcHJvcGVydHkg
JHByb3BlcnR5IGZvciBldmVudCAkZXZlbnRcbiIgaWYgIWRlZmluZWQoJHBhcnNlZEV2ZW50c3sk
ZXZlbnR9eyRwcm9wZXJ0eX0pOworICAgICAgICAkcGFyc2VkRXZlbnRzeyRldmVudH17JHByb3Bl
cnR5fSA9ICR2YWx1ZTsKKyAgICB9Cit9CisKK3N1YiBwYXJhbWV0ZXJzSGFuZGxlcgoreworICAg
IG15ICgkcGFyYW1ldGVyLCAkdmFsdWUpID0gQF87CisKKyAgICBkaWUgIlVua25vd24gcGFyYW1l
dGVyICRwYXJhbWV0ZXIgZm9yIGV2ZW50c1xuIiB1bmxlc3MgJHBhcmFtZXRlciBlcSAibmFtZXNw
YWNlIjsKK30KKworc3ViIHJlYWROYW1lcygkJCQpCit7CisgICAgbXkgKCRuYW1lc0ZpbGUsICRo
YXNoVG9GaWxsUmVmLCAkaGFuZGxlcikgPSBAXzsKKworICAgIG15ICRuYW1lcyA9IG5ldyBJTzo6
RmlsZTsKKyAgICBvcGVuKCRuYW1lcywgJG5hbWVzRmlsZSkgb3IgZGllICJGYWlsZWQgdG8gb3Bl
biBmaWxlOiAkbmFtZXNGaWxlIjsKKworICAgIG15ICRJblBhcnNlciA9IEluRmlsZXNQYXJzZXIt
Pm5ldygpOworICAgICRJblBhcnNlci0+cGFyc2UoJG5hbWVzLCBcJnBhcmFtZXRlcnNIYW5kbGVy
LCAkaGFuZGxlcik7CisKKyAgICBjbG9zZSgkbmFtZXMpOworICAgIGRpZSAiRmFpbGVkIHRvIHJl
YWQgbmFtZXMgZnJvbSBmaWxlOiAkbmFtZXNGaWxlIiBpZiAoa2V5cyAleyRoYXNoVG9GaWxsUmVm
fSA9PSAwKTsKKyAgICByZXR1cm4gJGhhc2hUb0ZpbGxSZWY7Cit9CisKK3N1YiByZWFkRXZlbnRz
KCQpCit7CisgICAgbXkgKCRuYW1lc0ZpbGUpID0gQF87CisgICAgJXBhcnNlZEV2ZW50cyA9ICgp
OworICAgIHJldHVybiByZWFkTmFtZXMoJG5hbWVzRmlsZSwgXCVwYXJzZWRFdmVudHMsIFwmZXZl
bnRIYW5kbGVyKTsKK30KKworc3ViIGludGVyZmFjZUZvckV2ZW50KCQpCit7CisgICAgbXkgKCRl
dmVudE5hbWUpID0gQF87CisKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRwYXJzZWRFdmVudHN7
JGV2ZW50TmFtZX17ImludGVyZmFjZU5hbWUifTsKKyAgICAkaW50ZXJmYWNlTmFtZSA9ICRldmVu
dE5hbWUgdW5sZXNzICRpbnRlcmZhY2VOYW1lOworCisgICAgcmV0dXJuICRpbnRlcmZhY2VOYW1l
OworfQorCitzdWIgcHJpbnRDcHBGaWxlCit7CisgICAgbXkgJGNwcFBhdGggPSBzaGlmdDsKKyAg
ICBteSAkRjsKKworICAgIG9wZW4gRiwgIj4kY3BwUGF0aCI7CisKKyAgICBwcmludExpY2Vuc2VI
ZWFkZXIoJEYpOworCisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iOworICAg
IHByaW50IEYgIiNpbmNsdWRlIFwiRXZlbnRGYWN0b3J5LmhcIlxuXG4iOworCisgICAgbXkgJWlu
Y2x1ZGVkSW50ZXJmYWNlcyA9ICgpOworCisgICAgZm9yIG15ICRldmVudE5hbWUgKHNvcnQga2V5
cyAlcGFyc2VkRXZlbnRzKSB7CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRwYXJzZWRFdmVu
dHN7JGV2ZW50TmFtZX17ImNvbmRpdGlvbmFsIn07CisgICAgICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gaW50ZXJmYWNlRm9yRXZlbnQoJGV2ZW50TmFtZSk7CisKKyAgICAgICAgbmV4dCBpZiBkZWZp
bmVkKCRpbmNsdWRlZEludGVyZmFjZXN7JGludGVyZmFjZU5hbWV9KTsKKyAgICAgICAgJGluY2x1
ZGVkSW50ZXJmYWNlc3skaW50ZXJmYWNlTmFtZX0gPSAxOworCisgICAgICAgIHByaW50IEYgIiNp
ZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIiBpZiAkY29uZGl0aW9uYWw7CisgICAgICAgIHByaW50
IEYgIiNpbmNsdWRlIFwiJGludGVyZmFjZU5hbWUuaFwiXG4iOworICAgICAgICBwcmludCBGICIj
ZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOworICAgIH0KKworICAgIHByaW50IEYgIlxubmFtZXNw
YWNlIFdlYkNvcmUge1xuXG4iOworCisgICAgcHJpbnQgRiAiUGFzc1JlZlB0cjxFdmVudD4gRXZl
bnRGYWN0b3J5OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBldmVudFR5cGUpXG4iOworICAgIHByaW50
IEYgIntcbiI7CisKKyAgICBmb3IgbXkgJGV2ZW50TmFtZSAoc29ydCBrZXlzICVwYXJzZWRFdmVu
dHMpIHsKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHBhcnNlZEV2ZW50c3skZXZlbnROYW1l
fXsiY29uZGl0aW9uYWwifTsKKyAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBpbnRlcmZhY2VG
b3JFdmVudCgkZXZlbnROYW1lKTsKKworICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25k
aXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOworICAgICAgICBwcmludCBGICIgICAgaWYgKGV2
ZW50VHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7CisgICAgICAgIHByaW50IEYgIiAgICAgICAg
cmV0dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgpO1xuIjsKKyAgICAgICAgcHJpbnQgRiAi
I2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKKyAgICB9CisKKyAgICBwcmludCBGICIgICAgcmV0
dXJuIDA7XG4iOworICAgIHByaW50IEYgIn1cbiI7CisKKyAgICBwcmludCBGICJcbn0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmVcbiI7CisgICAgY2xvc2UgRjsKK30KKworc3ViIHByaW50TGljZW5zZUhl
YWRlcigkKQoreworICAgIG15ICgkRikgPSBAXzsKKworICAgIHByaW50IEYgIi8qCisgKiBUSElT
IEZJTEUgV0FTIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVELCBETyBOT1QgRURJVC4KKyAqCisgKiBU
aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSB0aGUgZG9tL21ha2VfZXZlbnRzLnBsIHNjcmlwdC4K
KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyI7Cit9CisK
</data>
<flag name="review"
          id="109615"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>111715</attachid>
            <date>2011-10-19 20:14:47 -0700</date>
            <delta_ts>2011-10-19 20:15:00 -0700</delta_ts>
            <desc>The generated file</desc>
            <filename>EventFactory.cpp</filename>
            <type>text/plain</type>
            <size>6388</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">LyoKICogVEhJUyBGSUxFIFdBUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCwgRE8gTk9UIEVESVQu
CiAqCiAqIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBkb20vbWFrZV9ldmVudHMucGwg
c2NyaXB0LgogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICogYXJlIG1ldDoKICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgogKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCiAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCiAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKi8KCiNpbmNsdWRlICJjb25m
aWcuaCIKI2luY2x1ZGUgIkV2ZW50RmFjdG9yeS5oIgoKI2lmIEVOQUJMRShXRUJfQVVESU8pCiNp
bmNsdWRlICJBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIgojZW5kaWYKI2luY2x1ZGUgIkJlZm9yZUxv
YWRFdmVudC5oIgojaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQojaW5jbHVkZSAiQ2xvc2VFdmVudC5o
IgojZW5kaWYKI2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIKI2luY2x1ZGUgIkN1c3RvbUV2
ZW50LmgiCiNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQojaW5jbHVkZSAiRGV2aWNlTW90
aW9uRXZlbnQuaCIKI2VuZGlmCiNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQojaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIgojZW5kaWYKI2luY2x1ZGUgIkVycm9yRXZlbnQu
aCIKI2luY2x1ZGUgIkV2ZW50LmgiCiNpbmNsdWRlICJIYXNoQ2hhbmdlRXZlbnQuaCIKI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCIKI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiNpbmNsdWRlICJN
ZWRpYVN0cmVhbUV2ZW50LmgiCiNlbmRpZgojaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCiNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiNpZiBFTkFCTEUo
V0VCX0FVRElPKQojaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCiNlbmRp
ZgojaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5oIgojaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVu
dC5oIgojaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgojaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5o
IgojaWYgRU5BQkxFKFNWRykKI2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgojZW5kaWYKI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCiNpbmNsdWRlICJTcGVlY2hJbnB1dEV2ZW50LmgiCiNlbmRpZgoj
aW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiNpbmNsdWRlICJUZXh0RXZlbnQuaCIKI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCiNlbmRpZgojaW5jbHVkZSAi
VUlFdmVudC5oIgojaWYgRU5BQkxFKFdFQkdMKQojaW5jbHVkZSAiV2ViR0xDb250ZXh0RXZlbnQu
aCIKI2VuZGlmCiNpbmNsdWRlICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgojaW5jbHVkZSAiV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmgiCiNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiNpbmNsdWRlICJY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCIKCm5hbWVzcGFjZSBXZWJDb3JlIHsKClBhc3NS
ZWZQdHI8RXZlbnQ+IEV2ZW50RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZXZlbnRUeXBl
KQp7CiNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgaWYgKGV2ZW50VHlwZSA9PSAiQXVkaW9Qcm9j
ZXNzaW5nRXZlbnQiKQogICAgICAgIHJldHVybiBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6Y3JlYXRl
KCk7CiNlbmRpZgogICAgaWYgKGV2ZW50VHlwZSA9PSAiQmVmb3JlTG9hZEV2ZW50IikKICAgICAg
ICByZXR1cm4gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoKTsKI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKICAgIGlmIChldmVudFR5cGUgPT0gIkNsb3NlRXZlbnQiKQogICAgICAgIHJldHVybiBDbG9z
ZUV2ZW50OjpjcmVhdGUoKTsKI2VuZGlmCiAgICBpZiAoZXZlbnRUeXBlID09ICJDb21wb3NpdGlv
bkV2ZW50IikKICAgICAgICByZXR1cm4gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKCk7CiAgICBp
ZiAoZXZlbnRUeXBlID09ICJDdXN0b21FdmVudCIpCiAgICAgICAgcmV0dXJuIEN1c3RvbUV2ZW50
OjpjcmVhdGUoKTsKI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICBpZiAoZXZlbnRU
eXBlID09ICJEZXZpY2VNb3Rpb25FdmVudCIpCiAgICAgICAgcmV0dXJuIERldmljZU1vdGlvbkV2
ZW50OjpjcmVhdGUoKTsKI2VuZGlmCiNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAg
aWYgKGV2ZW50VHlwZSA9PSAiRGV2aWNlT3JpZW50YXRpb25FdmVudCIpCiAgICAgICAgcmV0dXJu
IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZSgpOwojZW5kaWYKICAgIGlmIChldmVudFR5
cGUgPT0gIkVycm9yRXZlbnQiKQogICAgICAgIHJldHVybiBFcnJvckV2ZW50OjpjcmVhdGUoKTsK
ICAgIGlmIChldmVudFR5cGUgPT0gIkV2ZW50IikKICAgICAgICByZXR1cm4gRXZlbnQ6OmNyZWF0
ZSgpOwogICAgaWYgKGV2ZW50VHlwZSA9PSAiRXZlbnRzIikKICAgICAgICByZXR1cm4gRXZlbnQ6
OmNyZWF0ZSgpOwogICAgaWYgKGV2ZW50VHlwZSA9PSAiSFRNTEV2ZW50cyIpCiAgICAgICAgcmV0
dXJuIEV2ZW50OjpjcmVhdGUoKTsKICAgIGlmIChldmVudFR5cGUgPT0gIkhhc2hDaGFuZ2VFdmVu
dCIpCiAgICAgICAgcmV0dXJuIEhhc2hDaGFuZ2VFdmVudDo6Y3JlYXRlKCk7CiAgICBpZiAoZXZl
bnRUeXBlID09ICJLZXlib2FyZEV2ZW50IikKICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKCk7CiAgICBpZiAoZXZlbnRUeXBlID09ICJLZXlib2FyZEV2ZW50cyIpCiAgICAgICAg
cmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZSgpOwojaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgIGlmIChldmVudFR5cGUgPT0gIk1lZGlhU3RyZWFtRXZlbnQiKQogICAgICAgIHJldHVybiBN
ZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoKTsKI2VuZGlmCiAgICBpZiAoZXZlbnRUeXBlID09ICJN
ZXNzYWdlRXZlbnQiKQogICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOwogICAg
aWYgKGV2ZW50VHlwZSA9PSAiTW91c2VFdmVudCIpCiAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnQ6
OmNyZWF0ZSgpOwogICAgaWYgKGV2ZW50VHlwZSA9PSAiTW91c2VFdmVudHMiKQogICAgICAgIHJl
dHVybiBNb3VzZUV2ZW50OjpjcmVhdGUoKTsKICAgIGlmIChldmVudFR5cGUgPT0gIk11dGF0aW9u
RXZlbnQiKQogICAgICAgIHJldHVybiBNdXRhdGlvbkV2ZW50OjpjcmVhdGUoKTsKICAgIGlmIChl
dmVudFR5cGUgPT0gIk11dGF0aW9uRXZlbnRzIikKICAgICAgICByZXR1cm4gTXV0YXRpb25FdmVu
dDo6Y3JlYXRlKCk7CiNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgaWYgKGV2ZW50VHlwZSA9PSAi
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50IikKICAgICAgICByZXR1cm4gT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUoKTsKI2VuZGlmCiNpZiBFTkFCTEUoT1JJRU5UQVRJT05f
RVZFTlRTKQogICAgaWYgKGV2ZW50VHlwZSA9PSAiT3JpZW50YXRpb25FdmVudCIpCiAgICAgICAg
cmV0dXJuIEV2ZW50OjpjcmVhdGUoKTsKI2VuZGlmCiAgICBpZiAoZXZlbnRUeXBlID09ICJPdmVy
Zmxvd0V2ZW50IikKICAgICAgICByZXR1cm4gT3ZlcmZsb3dFdmVudDo6Y3JlYXRlKCk7CiAgICBp
ZiAoZXZlbnRUeXBlID09ICJQYWdlVHJhbnNpdGlvbkV2ZW50IikKICAgICAgICByZXR1cm4gUGFn
ZVRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKCk7CiAgICBpZiAoZXZlbnRUeXBlID09ICJQb3BTdGF0
ZUV2ZW50IikKICAgICAgICByZXR1cm4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKCk7CiAgICBpZiAo
ZXZlbnRUeXBlID09ICJQcm9ncmVzc0V2ZW50IikKICAgICAgICByZXR1cm4gUHJvZ3Jlc3NFdmVu
dDo6Y3JlYXRlKCk7CiNpZiBFTkFCTEUoU1ZHKQogICAgaWYgKGV2ZW50VHlwZSA9PSAiU1ZHRXZl
bnRzIikKICAgICAgICByZXR1cm4gRXZlbnQ6OmNyZWF0ZSgpOwojZW5kaWYKI2lmIEVOQUJMRShT
VkcpCiAgICBpZiAoZXZlbnRUeXBlID09ICJTVkdab29tRXZlbnQiKQogICAgICAgIHJldHVybiBT
Vkdab29tRXZlbnQ6OmNyZWF0ZSgpOwojZW5kaWYKI2lmIEVOQUJMRShTVkcpCiAgICBpZiAoZXZl
bnRUeXBlID09ICJTVkdab29tRXZlbnRzIikKICAgICAgICByZXR1cm4gU1ZHWm9vbUV2ZW50Ojpj
cmVhdGUoKTsKI2VuZGlmCiNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgaWYgKGV2ZW50VHlw
ZSA9PSAiU3BlZWNoSW5wdXRFdmVudCIpCiAgICAgICAgcmV0dXJuIFNwZWVjaElucHV0RXZlbnQ6
OmNyZWF0ZSgpOwojZW5kaWYKICAgIGlmIChldmVudFR5cGUgPT0gIlN0b3JhZ2VFdmVudCIpCiAg
ICAgICAgcmV0dXJuIFN0b3JhZ2VFdmVudDo6Y3JlYXRlKCk7CiAgICBpZiAoZXZlbnRUeXBlID09
ICJUZXh0RXZlbnQiKQogICAgICAgIHJldHVybiBUZXh0RXZlbnQ6OmNyZWF0ZSgpOwojaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICAgIGlmIChldmVudFR5cGUgPT0gIlRvdWNoRXZlbnQiKQogICAg
ICAgIHJldHVybiBUb3VjaEV2ZW50OjpjcmVhdGUoKTsKI2VuZGlmCiAgICBpZiAoZXZlbnRUeXBl
ID09ICJVSUV2ZW50IikKICAgICAgICByZXR1cm4gVUlFdmVudDo6Y3JlYXRlKCk7CiAgICBpZiAo
ZXZlbnRUeXBlID09ICJVSUV2ZW50cyIpCiAgICAgICAgcmV0dXJuIFVJRXZlbnQ6OmNyZWF0ZSgp
OwojaWYgRU5BQkxFKFdFQkdMKQogICAgaWYgKGV2ZW50VHlwZSA9PSAiV2ViR0xDb250ZXh0RXZl
bnQiKQogICAgICAgIHJldHVybiBXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKCk7CiNlbmRpZgog
ICAgaWYgKGV2ZW50VHlwZSA9PSAiV2ViS2l0QW5pbWF0aW9uRXZlbnQiKQogICAgICAgIHJldHVy
biBXZWJLaXRBbmltYXRpb25FdmVudDo6Y3JlYXRlKCk7CiAgICBpZiAoZXZlbnRUeXBlID09ICJX
ZWJLaXRUcmFuc2l0aW9uRXZlbnQiKQogICAgICAgIHJldHVybiBXZWJLaXRUcmFuc2l0aW9uRXZl
bnQ6OmNyZWF0ZSgpOwogICAgaWYgKGV2ZW50VHlwZSA9PSAiV2hlZWxFdmVudCIpCiAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnQ6OmNyZWF0ZSgpOwogICAgaWYgKGV2ZW50VHlwZSA9PSAiWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50IikKICAgICAgICByZXR1cm4gWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50OjpjcmVhdGUoKTsKICAgIHJldHVybiAwOwp9Cgp9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>