<?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>7928</bug_id>
          
          <creation_ts>2006-03-23 03:08:15 -0800</creation_ts>
          <short_desc>Autogenerate UIEvent, MouseEvent and KeyboardEvent</short_desc>
          <delta_ts>2006-04-14 18:00:28 -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>WebKit Misc.</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>37400</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-03-23 03:08:15 -0800</bug_when>
    <thetext>Autogenerate UIEvent, MouseEvent and KeyboardEvent

I decided it was time to get my hands dirty with the autogenerated bindings...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37401</commentid>
    <comment_count>1</comment_count>
      <attachid>7248</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-03-23 03:18:48 -0800</bug_when>
    <thetext>Created attachment 7248
Incomplete first attempt at autogenerating UIEvent, MouseEvent &amp; KeyboardEvent

I&apos;m marking this patch for review even though I know it is incomplete.  Currently it doesn&apos;t properly handle marking of the clipboard object on MouseEvent when MouseEvent is marked.  There are probably other things it doesn&apos;t quite do right too. I&apos;m posting this for review now so that we can hash out the details all having looked at the same patch.

I also think that this code will need at least one test case which tries to dispatch to a DocType node or something else which is a node but not an EventTarget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37404</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-23 07:19:07 -0800</bug_when>
    <thetext>Anders said he had already completed the event classes, so you might want to talk to him about it.

In cases like mouse event where you have something custom to do, you need to create a base class that is hand-written to go along with the autogenerated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37499</commentid>
    <comment_count>3</comment_count>
      <attachid>7248</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-24 08:24:01 -0800</bug_when>
    <thetext>Comment on attachment 7248
Incomplete first attempt at autogenerating UIEvent, MouseEvent &amp; KeyboardEvent

Either we have to mark the clipboard or prove that we don&apos;t need to mark it -- I&apos;d like to see a test that explores this.

Patch otherwise looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37805</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-03-28 14:57:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 7248 [edit])
&gt; Either we have to mark the clipboard or prove that we don&apos;t need to mark it --
&gt; I&apos;d like to see a test that explores this.

I&apos;m not even sure what clipboard is used for.  It looks like it&apos;s used during Dragging and Clipboard events, but only seems to be marked when dragging.  I&apos;ve moved that code down onto DOMEvent, as that is where the clipboard pointer was being stored anyway.

&gt; Patch otherwise looks fine to me.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39300</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-04-14 18:00:28 -0700</bug_when>
    <thetext>This has been since fixed and landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7248</attachid>
            <date>2006-03-23 03:18:48 -0800</date>
            <delta_ts>2006-03-24 08:24:01 -0800</delta_ts>
            <desc>Incomplete first attempt at autogenerating UIEvent, MouseEvent &amp; KeyboardEvent</desc>
            <filename>events.patch</filename>
            <type>text/plain</type>
            <size>50110</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1jaGFpbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWNoYWluLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTM0NTIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5
cGUtY2hhaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIE5P
VEU6IFRoaXMgdGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgaWYgeW8KIAogW29iamVjdCBET01FdmVu
dF0KIAotW29iamVjdCBET01VSUV2ZW50XQorW29iamVjdCBKU1VJRXZlbnRdCiAKIC0tLS0tIFtv
YmplY3QgTW91c2VFdmVudF0gKDQgcHJvdG90eXBlcykgLS0tLS0KIApAQCAtMzgsOSArMzgsOSBA
QCBOT1RFOiBUaGlzIHRlc3Qgd2lsbCBzdGFydCBmYWlsaW5nIGlmIHlvCiAKIFtvYmplY3QgRE9N
RXZlbnRdCiAKLVtvYmplY3QgRE9NVUlFdmVudF0KK1tvYmplY3QgSlNVSUV2ZW50XQogCi1bb2Jq
ZWN0IERPTU1vdXNlRXZlbnRdCitbb2JqZWN0IEpTTW91c2VFdmVudF0KIAogLS0tLS0gW29iamVj
dCBLZXlib2FyZEV2ZW50XSAoNCBwcm90b3R5cGVzKSAtLS0tLQogCkBAIC00OCw4ICs0OCw4IEBA
IE5PVEU6IFRoaXMgdGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgaWYgeW8KIAogW29iamVjdCBET01F
dmVudF0KIAotW29iamVjdCBET01VSUV2ZW50XQorW29iamVjdCBKU1VJRXZlbnRdCiAKLVtvYmpl
Y3QgRE9NS2V5Ym9hcmRFdmVudF0KK1tvYmplY3QgSlNLZXlib2FyZEV2ZW50XQogCiAKSW5kZXg6
IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2todG1sL2VjbWEva2pzX2V2ZW50cy5jcHAJKHJldmlzaW9uIDEzNDUyKQorKysgV2ViQ29yZS9r
aHRtbC9lY21hL2tqc19ldmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuaCIKICNpbmNs
dWRlICJKU1doZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJKU01vdXNlRXZlbnQuaCIKKyNpbmNsdWRl
ICJKU0tleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJkb20yX2V2ZW50c2ltcGwuaCIKICNpbmNs
dWRlICJBYnN0cmFjdFZpZXcuaCIKICNpbmNsdWRlICJodG1sX2ltYWdlaW1wbC5oIgpAQCAtMzc4
LDEyICszODAsMTIgQEAgRE9NRXZlbnQ6On5ET01FdmVudCgpCiB9CiAKIC8vIHBhc3MgbWFya3Mg
dGhyb3VnaCB0byBKUyBvYmplY3RzIHdlIGhvbGQgZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbgot
dm9pZCBET01Nb3VzZUV2ZW50OjptYXJrKCkKLXsKLSAgICBKU09iamVjdDo6bWFyaygpOwotICAg
IGlmIChjbGlwYm9hcmQgJiYgIWNsaXBib2FyZC0+bWFya2VkKCkpCi0gICAgICAgIGNsaXBib2Fy
ZC0+bWFyaygpOwotfQorLy92b2lkIEpTTW91c2VFdmVudDo6bWFyaygpCisvL3sKKy8vICAgIEpT
T2JqZWN0OjptYXJrKCk7CisvLyAgICBpZiAoY2xpcGJvYXJkICYmICFjbGlwYm9hcmQtPm1hcmtl
ZCgpKQorLy8gICAgICAgIGNsaXBib2FyZC0+bWFyaygpOworLy99CiAKIGJvb2wgRE9NRXZlbnQ6
OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewpAQCAtNDk0LDEzICs0OTYsMTMgQEAg
SlNWYWx1ZSAqdG9KUyhFeGVjU3RhdGUgKmV4ZWMsIEV2ZW50ICplKQogICBET01PYmplY3QgKnJl
dCA9IGludGVycC0+Z2V0RE9NT2JqZWN0KGUpOwogICBpZiAoIXJldCkgewogICAgIGlmIChlLT5p
c0tleWJvYXJkRXZlbnQoKSkKLSAgICAgIHJldCA9IG5ldyBET01LZXlib2FyZEV2ZW50KGV4ZWMs
IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQgKj4oZSkpOworICAgICAgcmV0ID0gbmV3IEpTS2V5
Ym9hcmRFdmVudChleGVjLCBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50ICo+KGUpKTsKICAgICBl
bHNlIGlmIChlLT5pc01vdXNlRXZlbnQoKSkKLSAgICAgIHJldCA9IG5ldyBET01Nb3VzZUV2ZW50
KGV4ZWMsIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQgKj4oZSkpOworICAgICAgcmV0ID0gbmV3IEpT
TW91c2VFdmVudChleGVjLCBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50ICo+KGUpKTsKICAgICBlbHNl
IGlmIChlLT5pc1doZWVsRXZlbnQoKSkKICAgICAgIHJldCA9IG5ldyBKU1doZWVsRXZlbnQoZXhl
Yywgc3RhdGljX2Nhc3Q8V2hlZWxFdmVudCAqPihlKSk7CiAgICAgZWxzZSBpZiAoZS0+aXNVSUV2
ZW50KCkpCi0gICAgICByZXQgPSBuZXcgRE9NVUlFdmVudChleGVjLCBzdGF0aWNfY2FzdDxVSUV2
ZW50ICo+KGUpKTsKKyAgICAgIHJldCA9IG5ldyBKU1VJRXZlbnQoZXhlYywgc3RhdGljX2Nhc3Q8
VUlFdmVudCAqPihlKSk7CiAgICAgZWxzZSBpZiAoZS0+aXNNdXRhdGlvbkV2ZW50KCkpCiAgICAg
ICByZXQgPSBuZXcgSlNNdXRhdGlvbkV2ZW50KGV4ZWMsIHN0YXRpY19jYXN0PE11dGF0aW9uRXZl
bnQgKj4oZSkpOwogICAgIGVsc2UKQEAgLTU0NiwyNzMgKzU0OCw2IEBAIEpTVmFsdWUgKmdldEV2
ZW50RXhjZXB0aW9uQ29uc3RydWN0b3IoRXgKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25z
dCBDbGFzc0luZm8gRE9NVUlFdmVudDo6aW5mbyA9IHsgIlVJRXZlbnQiLCAmRE9NRXZlbnQ6Omlu
Zm8sICZET01VSUV2ZW50VGFibGUsIDAgfTsKLS8qCi1AYmVnaW4gRE9NVUlFdmVudFRhYmxlIDgK
LSAgdmlldyAgICAgICAgICBET01VSUV2ZW50OjpWaWV3ICAgICAgICBEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIGRldGFpbCAgICAgICAgRE9NVUlFdmVudDo6RGV0YWlsICAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQotICBrZXlDb2RlICAgICAgIERPTVVJRXZlbnQ6OktleUNvZGUgICAgIERvbnREZWxl
dGV8UmVhZE9ubHkKLSAgY2hhckNvZGUgICAgICBET01VSUV2ZW50OjpDaGFyQ29kZSAgICBEb250
RGVsZXRlfFJlYWRPbmx5Ci0gIGxheWVyWCAgICAgICAgRE9NVUlFdmVudDo6TGF5ZXJYICAgICAg
RG9udERlbGV0ZXxSZWFkT25seQotICBsYXllclkgICAgICAgIERPTVVJRXZlbnQ6OkxheWVyWSAg
ICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgcGFnZVggICAgICAgICBET01VSUV2ZW50OjpQYWdl
WCAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHBhZ2VZICAgICAgICAgRE9NVUlFdmVudDo6
UGFnZVkgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICB3aGljaCAgICAgICAgIERPTVVJRXZl
bnQ6OldoaWNoICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLUBlbmQKLUBiZWdpbiBET01VSUV2
ZW50UHJvdG9UYWJsZSAxCi0gIGluaXRVSUV2ZW50ICAgRE9NVUlFdmVudDo6SW5pdFVJRXZlbnQg
RG9udERlbGV0ZXxGdW5jdGlvbiA1Ci1AZW5kCi0qLwotS0pTX0RFRklORV9QUk9UT1RZUEVfV0lU
SF9QUk9UT1RZUEUoRE9NVUlFdmVudFByb3RvLCBET01FdmVudFByb3RvKQotS0pTX0lNUExFTUVO
VF9QUk9UT0ZVTkMoRE9NVUlFdmVudFByb3RvRnVuYykKLUtKU19JTVBMRU1FTlRfUFJPVE9UWVBF
KCJET01VSUV2ZW50IiwgRE9NVUlFdmVudFByb3RvLCBET01VSUV2ZW50UHJvdG9GdW5jKQotCi1E
T01VSUV2ZW50OjpET01VSUV2ZW50KEV4ZWNTdGF0ZSAqZXhlYywgVUlFdmVudCAqZSkKLSAgOiBE
T01FdmVudChleGVjLCBlKQotewotICBzZXRQcm90b3R5cGUoRE9NVUlFdmVudFByb3RvOjpzZWxm
KGV4ZWMpKTsKLX0KLQotYm9vbCBET01VSUV2ZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKLXsKLSAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxET01VSUV2ZW50LCBET01FdmVu
dD4oZXhlYywgJkRPTVVJRXZlbnRUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0K
LQotSlNWYWx1ZSAqRE9NVUlFdmVudDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMs
IGludCB0b2tlbikgY29uc3QKLXsKLSAgVUlFdmVudCAmZXZlbnQgPSAqc3RhdGljX2Nhc3Q8VUlF
dmVudCAqPihpbXBsKCkpOwotICBzd2l0Y2ggKHRva2VuKSB7Ci0gIGNhc2UgVmlldzoKLSAgICBy
ZXR1cm4gdG9KUyhleGVjLCBldmVudC52aWV3KCkpOwotICBjYXNlIERldGFpbDoKLSAgICByZXR1
cm4ganNOdW1iZXIoZXZlbnQuZGV0YWlsKCkpOwotICBjYXNlIEtleUNvZGU6Ci0gICAgcmV0dXJu
IGpzTnVtYmVyKGV2ZW50LmtleUNvZGUoKSk7Ci0gIGNhc2UgQ2hhckNvZGU6Ci0gICAgcmV0dXJu
IGpzTnVtYmVyKGV2ZW50LmNoYXJDb2RlKCkpOwotICBjYXNlIExheWVyWDoKLSAgICByZXR1cm4g
anNOdW1iZXIoZXZlbnQubGF5ZXJYKCkpOwotICBjYXNlIExheWVyWToKLSAgICByZXR1cm4ganNO
dW1iZXIoZXZlbnQubGF5ZXJZKCkpOwotICBjYXNlIFBhZ2VYOgotICAgIHJldHVybiBqc051bWJl
cihldmVudC5wYWdlWCgpKTsKLSAgY2FzZSBQYWdlWToKLSAgICByZXR1cm4ganNOdW1iZXIoZXZl
bnQucGFnZVkoKSk7Ci0gIGNhc2UgV2hpY2g6Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV2ZW50Lndo
aWNoKCkpOwotICBkZWZhdWx0OgotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICB9Ci19Ci0K
LUpTVmFsdWUgKkRPTVVJRXZlbnRQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSAq
ZXhlYywgSlNPYmplY3QgKnRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3MpCi17Ci0gIGlmICghdGhp
c09iai0+aW5oZXJpdHMoJkRPTVVJRXZlbnQ6OmluZm8pKQotICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7Ci0gIFVJRXZlbnQgJnVpRXZlbnQgPSAqc3RhdGljX2Nhc3Q8VUlF
dmVudCAqPihzdGF0aWNfY2FzdDxET01VSUV2ZW50ICo+KHRoaXNPYmopLT5pbXBsKCkpOwotICBz
d2l0Y2ggKGlkKSB7Ci0gICAgY2FzZSBET01VSUV2ZW50OjpJbml0VUlFdmVudDoKLSAgICAgIHVp
RXZlbnQuaW5pdFVJRXZlbnQoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1sxXS0+dG9Cb29sZWFuKGV4ZWMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvQWJzdHJhY3RWaWV3KGFyZ3NbM10pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmdzWzRdLT50b0ludDMyKGV4ZWMpKTsKLSAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICB9Ci0gIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLWNvbnN0IENsYXNzSW5mbyBET01Nb3VzZUV2ZW50OjppbmZvID0geyAiTW91
c2VFdmVudCIsICZET01VSUV2ZW50OjppbmZvLCAmRE9NTW91c2VFdmVudFRhYmxlLCAwIH07Ci0K
LS8qCi1AYmVnaW4gRE9NTW91c2VFdmVudFRhYmxlIDE2Ci0gIHNjcmVlblggICAgICAgRE9NTW91
c2VFdmVudDo6U2NyZWVuWCAgRG9udERlbGV0ZXxSZWFkT25seQotICBzY3JlZW5ZICAgICAgIERP
TU1vdXNlRXZlbnQ6OlNjcmVlblkgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgY2xpZW50WCAgICAg
ICBET01Nb3VzZUV2ZW50OjpDbGllbnRYICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHggICAgICAg
ICAgICAgRE9NTW91c2VFdmVudDo6WCAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBjbGll
bnRZICAgICAgIERPTU1vdXNlRXZlbnQ6OkNsaWVudFkgIERvbnREZWxldGV8UmVhZE9ubHkKLSAg
eSAgICAgICAgICAgICBET01Nb3VzZUV2ZW50OjpZICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5
Ci0gIG9mZnNldFggICAgICAgRE9NTW91c2VFdmVudDo6T2Zmc2V0WCAgRG9udERlbGV0ZXxSZWFk
T25seQotICBvZmZzZXRZICAgICAgIERPTU1vdXNlRXZlbnQ6Ok9mZnNldFkgIERvbnREZWxldGV8
UmVhZE9ubHkKLSAgY3RybEtleSAgICAgICBET01Nb3VzZUV2ZW50OjpDdHJsS2V5ICBEb250RGVs
ZXRlfFJlYWRPbmx5Ci0gIHNoaWZ0S2V5ICAgICAgRE9NTW91c2VFdmVudDo6U2hpZnRLZXkgRG9u
dERlbGV0ZXxSZWFkT25seQotICBhbHRLZXkgICAgICAgIERPTU1vdXNlRXZlbnQ6OkFsdEtleSAg
IERvbnREZWxldGV8UmVhZE9ubHkKLSAgbWV0YUtleSAgICAgICBET01Nb3VzZUV2ZW50OjpNZXRh
S2V5ICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGJ1dHRvbiAgICAgICAgRE9NTW91c2VFdmVudDo6
QnV0dG9uICAgRG9udERlbGV0ZXxSZWFkT25seQotICByZWxhdGVkVGFyZ2V0IERPTU1vdXNlRXZl
bnQ6OlJlbGF0ZWRUYXJnZXQgRG9udERlbGV0ZXxSZWFkT25seQotICBmcm9tRWxlbWVudCAgIERP
TU1vdXNlRXZlbnQ6OkZyb21FbGVtZW50IERvbnREZWxldGV8UmVhZE9ubHkKLSAgdG9FbGVtZW50
ICAgICBET01Nb3VzZUV2ZW50OjpUb0VsZW1lbnQgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkK
LUBlbmQKLUBiZWdpbiBET01Nb3VzZUV2ZW50UHJvdG9UYWJsZSAxCi0gIGluaXRNb3VzZUV2ZW50
ICAgICAgICBET01Nb3VzZUV2ZW50OjpJbml0TW91c2VFdmVudCAgIERvbnREZWxldGV8RnVuY3Rp
b24gMTUKLUBlbmQKLSovCi1LSlNfREVGSU5FX1BST1RPVFlQRV9XSVRIX1BST1RPVFlQRShET01N
b3VzZUV2ZW50UHJvdG8sIERPTVVJRXZlbnRQcm90bykKLUtKU19JTVBMRU1FTlRfUFJPVE9GVU5D
KERPTU1vdXNlRXZlbnRQcm90b0Z1bmMpCi1LSlNfSU1QTEVNRU5UX1BST1RPVFlQRSgiRE9NTW91
c2VFdmVudCIsIERPTU1vdXNlRXZlbnRQcm90bywgRE9NTW91c2VFdmVudFByb3RvRnVuYykKLQot
RE9NTW91c2VFdmVudDo6RE9NTW91c2VFdmVudChFeGVjU3RhdGUgKmV4ZWMsIE1vdXNlRXZlbnQg
KmUpCi0gIDogRE9NVUlFdmVudChleGVjLCBlKQotewotICBzZXRQcm90b3R5cGUoRE9NTW91c2VF
dmVudFByb3RvOjpzZWxmKGV4ZWMpKTsKLX0KLQotYm9vbCBET01Nb3VzZUV2ZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxE
T01Nb3VzZUV2ZW50LCBET01VSUV2ZW50PihleGVjLCAmRE9NTW91c2VFdmVudFRhYmxlLCB0aGlz
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1ZhbHVlICpET01Nb3VzZUV2ZW50OjpnZXRW
YWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBjb25zdAotewotICBNb3Vz
ZUV2ZW50ICZldmVudCA9ICpzdGF0aWNfY2FzdDxNb3VzZUV2ZW50ICo+KGltcGwoKSk7Ci0gIHN3
aXRjaCAodG9rZW4pIHsKLSAgY2FzZSBTY3JlZW5YOgotICAgIHJldHVybiBqc051bWJlcihldmVu
dC5zY3JlZW5YKCkpOwotICBjYXNlIFNjcmVlblk6Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV2ZW50
LnNjcmVlblkoKSk7Ci0gIGNhc2UgQ2xpZW50WDoKLSAgICByZXR1cm4ganNOdW1iZXIoZXZlbnQu
Y2xpZW50WCgpKTsKLSAgY2FzZSBDbGllbnRZOgotICAgIHJldHVybiBqc051bWJlcihldmVudC5j
bGllbnRZKCkpOwotICBjYXNlIE9mZnNldFg6Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV2ZW50Lm9m
ZnNldFgoKSk7Ci0gIGNhc2UgT2Zmc2V0WToKLSAgICByZXR1cm4ganNOdW1iZXIoZXZlbnQub2Zm
c2V0WSgpKTsKLSAgY2FzZSBDdHJsS2V5OgotICAgIHJldHVybiBqc0Jvb2xlYW4oZXZlbnQuY3Ry
bEtleSgpKTsKLSAgY2FzZSBTaGlmdEtleToKLSAgICByZXR1cm4ganNCb29sZWFuKGV2ZW50LnNo
aWZ0S2V5KCkpOwotICBjYXNlIEFsdEtleToKLSAgICByZXR1cm4ganNCb29sZWFuKGV2ZW50LmFs
dEtleSgpKTsKLSAgY2FzZSBNZXRhS2V5OgotICAgIHJldHVybiBqc0Jvb2xlYW4oZXZlbnQubWV0
YUtleSgpKTsKLSAgY2FzZSBCdXR0b246Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV2ZW50LmJ1dHRv
bigpKTsKLSAgY2FzZSBUb0VsZW1lbnQ6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZXZlbnQudG9F
bGVtZW50KCkpOwotICBjYXNlIEZyb21FbGVtZW50OgotICAgIHJldHVybiB0b0pTKGV4ZWMsIGV2
ZW50LmZyb21FbGVtZW50KCkpOwotICBjYXNlIFJlbGF0ZWRUYXJnZXQ6Ci0gICAgcmV0dXJuIHRv
SlMoZXhlYywgZXZlbnQucmVsYXRlZFRhcmdldCgpKTsKLSAgY2FzZSBYOgotICAgIHJldHVybiBq
c051bWJlcihldmVudC54KCkpOwotICBjYXNlIFk6Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV2ZW50
LnkoKSk7Ci0gIGRlZmF1bHQ6Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotSlNWYWx1ZSAq
RE9NTW91c2VFdmVudFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlICpleGVjLCBK
U09iamVjdCAqdGhpc09iaiwgY29uc3QgTGlzdCAmYXJncykKLXsKLSAgaWYgKCF0aGlzT2JqLT5p
bmhlcml0cygmRE9NTW91c2VFdmVudDo6aW5mbykpCi0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgVHlwZUVycm9yKTsKLSAgTW91c2VFdmVudCAmbW91c2VFdmVudCA9ICpzdGF0aWNfY2FzdDxN
b3VzZUV2ZW50ICo+KHN0YXRpY19jYXN0PERPTU1vdXNlRXZlbnQgKj4odGhpc09iaiktPmltcGwo
KSk7Ci0gIHN3aXRjaCAoaWQpIHsKLSAgICBjYXNlIERPTU1vdXNlRXZlbnQ6OkluaXRNb3VzZUV2
ZW50OgotICAgICAgbW91c2VFdmVudC5pbml0TW91c2VFdmVudChBdG9taWNTdHJpbmcoYXJnc1sw
XS0+dG9TdHJpbmcoZXhlYykpLCAvLyB0eXBlQXJnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3NbMV0tPnRvQm9vbGVhbihleGVjKSwgLy8gY2FuQnViYmxlQXJnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSwgLy8gY2Fu
Y2VsYWJsZUFyZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0Fic3RyYWN0Vmll
dyhhcmdzWzNdKSwgLy8gdmlld0FyZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmdzWzRdLT50b0ludDMyKGV4ZWMpLCAvLyBkZXRhaWxBcmcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnc1s1XS0+dG9JbnQzMihleGVjKSwgLy8gc2NyZWVuWEFyZwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzZdLT50b0ludDMyKGV4ZWMpLCAvLyBzY3Jl
ZW5ZQXJnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbN10tPnRvSW50MzIo
ZXhlYyksIC8vIGNsaWVudFhBcmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c1s4XS0+dG9JbnQzMihleGVjKSwgLy8gY2xpZW50WUFyZwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmdzWzldLT50b0Jvb2xlYW4oZXhlYyksIC8vIGN0cmxLZXlBcmcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1sxMF0tPnRvQm9vbGVhbihleGVjKSwgLy8g
YWx0S2V5QXJnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMTFdLT50b0Jv
b2xlYW4oZXhlYyksIC8vIHNoaWZ0S2V5QXJnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3NbMTJdLT50b0Jvb2xlYW4oZXhlYyksIC8vIG1ldGFLZXlBcmcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJnc1sxM10tPnRvSW50MzIoZXhlYyksIC8vIGJ1dHRvbkFy
ZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b05vZGUoYXJnc1sxNF0pKTsgLy8g
cmVsYXRlZFRhcmdldEFyZwotICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIH0KLSAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY29uc3QgQ2xh
c3NJbmZvIERPTUtleWJvYXJkRXZlbnQ6OmluZm8gPSB7ICJLZXlib2FyZEV2ZW50IiwgJkRPTVVJ
RXZlbnQ6OmluZm8sICZET01LZXlib2FyZEV2ZW50VGFibGUsIDAgfTsKLQotLyoKLUBiZWdpbiBE
T01LZXlib2FyZEV2ZW50VGFibGUgNQotICBrZXlJZGVudGlmaWVyIERPTUtleWJvYXJkRXZlbnQ6
OktleUlkZW50aWZpZXIgRG9udERlbGV0ZXxSZWFkT25seQotICBrZXlMb2NhdGlvbiAgIERPTUtl
eWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uICAgRG9udERlbGV0ZXxSZWFkT25seQotICBjdHJsS2V5
ICAgICAgIERPTUtleWJvYXJkRXZlbnQ6OkN0cmxLZXkgICAgICAgRG9udERlbGV0ZXxSZWFkT25s
eQotICBzaGlmdEtleSAgICAgIERPTUtleWJvYXJkRXZlbnQ6OlNoaWZ0S2V5ICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQotICBhbHRLZXkgICAgICAgIERPTUtleWJvYXJkRXZlbnQ6OkFsdEtleSAg
ICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBtZXRhS2V5ICAgICAgIERPTUtleWJvYXJkRXZl
bnQ6Ok1ldGFLZXkgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBhbHRHcmFwaEtleSAgIERP
TUtleWJvYXJkRXZlbnQ6OkFsdEdyYXBoS2V5ICAgRG9udERlbGV0ZXxSZWFkT25seQotQGVuZAot
QGJlZ2luIERPTUtleWJvYXJkRXZlbnRQcm90b1RhYmxlIDEKLSAgaW5pdEtleWJvYXJkRXZlbnQg
ICAgIERPTUtleWJvYXJkRXZlbnQ6OkluaXRLZXlib2FyZEV2ZW50ICAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDExCi1AZW5kCi0qLwotS0pTX0RFRklORV9QUk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUo
RE9NS2V5Ym9hcmRFdmVudFByb3RvLCBET01VSUV2ZW50UHJvdG8pCi1LSlNfSU1QTEVNRU5UX1BS
T1RPRlVOQyhET01LZXlib2FyZEV2ZW50UHJvdG9GdW5jKQotS0pTX0lNUExFTUVOVF9QUk9UT1RZ
UEUoIkRPTUtleWJvYXJkRXZlbnQiLCBET01LZXlib2FyZEV2ZW50UHJvdG8sIERPTUtleWJvYXJk
RXZlbnRQcm90b0Z1bmMpCi0KLURPTUtleWJvYXJkRXZlbnQ6OkRPTUtleWJvYXJkRXZlbnQoRXhl
Y1N0YXRlICpleGVjLCBLZXlib2FyZEV2ZW50ICplKQotICA6IERPTVVJRXZlbnQoZXhlYywgZSkK
LXsKLSAgc2V0UHJvdG90eXBlKERPTUtleWJvYXJkRXZlbnRQcm90bzo6c2VsZihleGVjKSk7Ci19
Ci0KLWJvb2wgRE9NS2V5Ym9hcmRFdmVudDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8RE9NS2V5Ym9hcmRFdmVudCwgRE9NVUlF
dmVudD4oZXhlYywgJkRPTUtleWJvYXJkRXZlbnRUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBz
bG90KTsKLX0KLQotSlNWYWx1ZSAqRE9NS2V5Ym9hcmRFdmVudDo6Z2V0VmFsdWVQcm9wZXJ0eShF
eGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikgY29uc3QKLXsKLSAgS2V5Ym9hcmRFdmVudCAmZXZl
bnQgPSAqc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCAqPihpbXBsKCkpOwotICBzd2l0Y2ggKHRv
a2VuKSB7Ci0gIGNhc2UgS2V5SWRlbnRpZmllcjoKLSAgICByZXR1cm4ganNTdHJpbmcoZXZlbnQu
a2V5SWRlbnRpZmllcigpKTsKLSAgY2FzZSBLZXlMb2NhdGlvbjoKLSAgICByZXR1cm4ganNOdW1i
ZXIoZXZlbnQua2V5TG9jYXRpb24oKSk7Ci0gIGNhc2UgQ3RybEtleToKLSAgICByZXR1cm4ganNC
b29sZWFuKGV2ZW50LmN0cmxLZXkoKSk7Ci0gIGNhc2UgU2hpZnRLZXk6Ci0gICAgcmV0dXJuIGpz
Qm9vbGVhbihldmVudC5zaGlmdEtleSgpKTsKLSAgY2FzZSBBbHRLZXk6Ci0gICAgcmV0dXJuIGpz
Qm9vbGVhbihldmVudC5hbHRLZXkoKSk7Ci0gIGNhc2UgTWV0YUtleToKLSAgICByZXR1cm4ganNC
b29sZWFuKGV2ZW50Lm1ldGFLZXkoKSk7Ci0gIGNhc2UgQWx0R3JhcGhLZXk6Ci0gICAgcmV0dXJu
IGpzQm9vbGVhbihldmVudC5hbHRHcmFwaEtleSgpKTsKLSAgZGVmYXVsdDoKLSAgICByZXR1cm4g
TlVMTDsKLSAgfQotfQotCi1KU1ZhbHVlICpET01LZXlib2FyZEV2ZW50UHJvdG9GdW5jOjpjYWxs
QXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0
ICZhcmdzKQotewotICBpZiAoIXRoaXNPYmotPmluaGVyaXRzKCZET01LZXlib2FyZEV2ZW50Ojpp
bmZvKSkKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICBLZXlib2Fy
ZEV2ZW50ICZldmVudCA9ICpzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50ICo+KHN0YXRpY19jYXN0
PERPTVVJRXZlbnQgKj4odGhpc09iaiktPmltcGwoKSk7Ci0gIHN3aXRjaCAoaWQpIHsKLSAgICBj
YXNlIERPTUtleWJvYXJkRXZlbnQ6OkluaXRLZXlib2FyZEV2ZW50OgotICAgICAgZXZlbnQuaW5p
dEtleWJvYXJkRXZlbnQoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSwgLy8g
dHlwZUFyZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1sxXS0+dG9Cb29sZWFu
KGV4ZWMpLCAvLyBjYW5CdWJibGVBcmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3NbMl0tPnRvQm9vbGVhbihleGVjKSwgLy8gY2FuY2VsYWJsZUFyZwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG9BYnN0cmFjdFZpZXcoYXJnc1szXSksIC8vIHZpZXdBcmcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbNF0tPnRvU3RyaW5nKGV4ZWMpLCAvLyBrZXlJ
ZGVudGlmaWVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzVdLT50b0ludDMy
KGV4ZWMpLCAvLyBrZXlMb2NhdGlvbkFyZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJnc1s2XS0+dG9Cb29sZWFuKGV4ZWMpLCAvLyBjdHJsS2V5QXJnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmdzWzddLT50b0Jvb2xlYW4oZXhlYyksIC8vIGFsdEtleUFyZwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1s4XS0+dG9Cb29sZWFuKGV4ZWMpLCAvLyBz
aGlmdEtleUFyZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1s5XS0+dG9Cb29s
ZWFuKGV4ZWMpLCAvLyBtZXRhS2V5QXJnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmdzWzEwXS0+dG9Cb29sZWFuKGV4ZWMpKTsgLy8gYWx0R3JhcGhLZXlBcmcKLSAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICB9Ci0gIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KIGNvbnN0IENsYXNzSW5mbyBDbGlwYm9hcmQ6OmluZm8gPSB7ICJD
bGlwYm9hcmQiLCAwLCAmQ2xpcGJvYXJkVGFibGUsIDAgfTsKIAogLyogU291cmNlIGZvciBDbGlw
Ym9hcmRUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCkluZGV4OiBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX2V2ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2h0
bWwvZWNtYS9ranNfZXZlbnRzLmgJKHJldmlzaW9uIDEzNDUyKQorKysgV2ViQ29yZS9raHRtbC9l
Y21hL2tqc19ldmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDQ0ICsxNDUsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICB9OwogCiAgICAgSlNWYWx1ZSogZ2V0RXZlbnRFeGNlcHRpb25Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqKTsKLQotICAgIGNsYXNzIERPTVVJRXZlbnQgOiBwdWJsaWMgRE9N
RXZlbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgRE9NVUlFdmVudChFeGVjU3RhdGUqLCBXZWJD
b3JlOjpVSUV2ZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBK
U1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7Ci0g
ICAgICAgIC8vIG5vIHB1dCAtIGFsbCByZWFkLW9ubHkKLSAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLSAgICAgICAgZW51bSB7IFZpZXcsIERldGFpbCwg
S2V5Q29kZSwgQ2hhckNvZGUsIExheWVyWCwgTGF5ZXJZLCBQYWdlWCwgUGFnZVksIFdoaWNoLCBJ
bml0VUlFdmVudCB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBET01Nb3VzZUV2ZW50IDogcHVibGlj
IERPTVVJRXZlbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgRE9NTW91c2VFdmVudChFeGVjU3Rh
dGUqLCBXZWJDb3JlOjpNb3VzZUV2ZW50ICptZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0
b2tlbikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7Ci0gICAgICAgIC8vIG5v
IHB1dCAtIGFsbCByZWFkLW9ubHkKLSAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBD
bGFzc0luZm8gaW5mbzsKLSAgICAgICAgZW51bSB7IFNjcmVlblgsIFNjcmVlblksIENsaWVudFgs
IFgsIENsaWVudFksIFksIE9mZnNldFgsIE9mZnNldFksCi0gICAgICAgICAgICAgICBDdHJsS2V5
LCBTaGlmdEtleSwgQWx0S2V5LAotICAgICAgICAgICAgICAgTWV0YUtleSwgQnV0dG9uLCBSZWxh
dGVkVGFyZ2V0LCBGcm9tRWxlbWVudCwgVG9FbGVtZW50LAotICAgICAgICAgICAgICAgSW5pdE1v
dXNlRXZlbnQgfTsKLSAgICB9OwotCi0gICAgY2xhc3MgRE9NS2V5Ym9hcmRFdmVudCA6IHB1Ymxp
YyBET01VSUV2ZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERPTUtleWJvYXJkRXZlbnQoRXhl
Y1N0YXRlKiwgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCAqa2UpOwotICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICAgICAgSlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUq
LCBpbnQgdG9rZW4pIGNvbnN0OwotICAgICAgICAvLyBubyBwdXQgLSBhbGwgcmVhZC1vbmx5Ci0g
ICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVy
biAmaW5mbzsgfQotICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87Ci0gICAgICAg
IGVudW0geyBLZXlJZGVudGlmaWVyLCBLZXlMb2NhdGlvbiwgQ3RybEtleSwgU2hpZnRLZXksIEFs
dEtleSwgTWV0YUtleSwgQWx0R3JhcGhLZXksIEluaXRLZXlib2FyZEV2ZW50fTsKLSAgICB9Owot
CisgCiAgICAgY2xhc3MgQ2xpcGJvYXJkIDogcHVibGljIERPTU9iamVjdCB7CiAgICAgZnJpZW5k
IGNsYXNzIENsaXBib2FyZFByb3RvRnVuYzsKICAgICBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2to
dG1sL2VjbWEva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tq
c19kb20uY3BwCShyZXZpc2lvbiAxMzQ1MikKKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCwxMyBAQCBKU1ZhbHVlICpET01Ob2Rl
UHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvCiAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCitF
dmVudFRhcmdldE5vZGUgKnRvRXZlbnRUYXJnZXROb2RlKEpTVmFsdWUgKnZhbCkKK3sKKyAgICBp
ZiAoIXZhbCB8fCAhdmFsLT5pc09iamVjdCgmRE9NRXZlbnRUYXJnZXROb2RlOjppbmZvKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2ZW50VGFyZ2V0Tm9kZSo+
KHN0YXRpY19jYXN0PERPTUV2ZW50VGFyZ2V0Tm9kZSAqPih2YWwpLT5pbXBsKCkpOworfQorCiBO
b2RlICp0b05vZGUoSlNWYWx1ZSAqdmFsKQogewogICAgIGlmICghdmFsIHx8ICF2YWwtPmlzT2Jq
ZWN0KCZET01Ob2RlOjppbmZvKSkKQEAgLTM0MSw3ICszNDgsNiBAQCBOb2RlICp0b05vZGUoSlNW
YWx1ZSAqdmFsKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Ob2RlICo+KHZhbCktPmltcGwo
KTsKIH0KIAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8qIFNvdXJjZSBmb3IgRE9NRXZlbnRU
YXJnZXROb2RlVGFibGUKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19kb20uaAkocmV2aXNpb24gMTM0NTIpCisr
KyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyAr
MTA5LDggQEAgcHJvdGVjdGVkOgogICAgICAgRE9NRXZlbnRUYXJnZXROb2RlKFdlYkNvcmU6Ok5v
ZGUgKm4pOwogICB9OwogCi0gIFdlYkNvcmU6Ok5vZGUgKnRvTm9kZShKU1ZhbHVlICopOyAvLyBy
ZXR1cm5zIDAgaWYgcGFzc2VkLWluIHZhbHVlIGlzIG5vdCBhIERPTU5vZGUgb2JqZWN0CisgIFdl
YkNvcmU6OkV2ZW50VGFyZ2V0Tm9kZSogdG9FdmVudFRhcmdldE5vZGUoSlNWYWx1ZSopOyAvLyBy
ZXR1cm5zIDAgaWYgcGFzc2VkLWluIHZhbHVlIGlzIG5vdCBhIEV2ZW50VGFyZ2V0Tm9kZSBvYmpl
Y3QKKyAgV2ViQ29yZTo6Tm9kZSogdG9Ob2RlKEpTVmFsdWUqKTsgLy8gcmV0dXJucyAwIGlmIHBh
c3NlZC1pbiB2YWx1ZSBpcyBub3QgYSBET01Ob2RlIG9iamVjdAogCiAgIGNsYXNzIERPTU5vZGVM
aXN0IDogcHVibGljIERPTU9iamVjdCB7CiAgIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvZ2VuZXJh
dGUtZGVyaXZlZC1zb3VyY2VzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZ2VuZXJhdGUtZGVyaXZl
ZC1zb3VyY2VzCShyZXZpc2lvbiAxMzQ1MikKKysrIFdlYkNvcmUvZ2VuZXJhdGUtZGVyaXZlZC1z
b3VyY2VzCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNiArMjE5LDE1IEBAIGlmIFsgZG9tL011dGF0
aW9uRXZlbnQuaWRsIC1udCAiJERlcml2ZWQKICAgcGVybCAtSWJpbmRpbmdzL3NjcmlwdHMgYmlu
ZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAtLWdlbmVyYXRvciBKUyAtLWluY2x1
ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0tb3V0cHV0ZGlyICIkRGVyaXZlZFNvdXJjZXNEaXIiIGRv
bS9NdXRhdGlvbkV2ZW50LmlkbAogZmkKIAoraWYgWyBkb20vVUlFdmVudC5pZGwgLW50ICIkRGVy
aXZlZFNvdXJjZXNEaXIvSlNVSUV2ZW50LmgiIC1vIFwKKyAgICAgYmluZGluZ3Mvc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy5wbCAtbnQgIiREZXJpdmVkU291cmNlc0Rpci9KU1VJRXZlbnQuaCIg
LW8gXAorICAgICBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gLW50ICIkRGVyaXZl
ZFNvdXJjZXNEaXIvSlNVSUV2ZW50LmgiIC1vIFwKKyAgICAgYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNVSUV2ZW50LmgiIC1vIFwK
KyAgICAgYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gLW50ICIkRGVyaXZlZFNvdXJjZXNE
aXIvSlNVSUV2ZW50LmgiIC1vIFwKKyAgICAgYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUu
cG0gLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNVSUV2ZW50LmgiIF07IHRoZW4KKyAgcGVybCAt
SWJpbmRpbmdzL3NjcmlwdHMgYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAt
LWdlbmVyYXRvciBKUyAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0tb3V0cHV0ZGlyICIk
RGVyaXZlZFNvdXJjZXNEaXIiIGRvbS9VSUV2ZW50LmlkbAorZmkKKwogaWYgWyBkb20vTm90YXRp
b24uaWRsIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTTm90YXRpb24uaCIgLW8gXAogICAgICBi
aW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC1udCAiJERlcml2ZWRTb3VyY2Vz
RGlyL0pTTm90YXRpb24uaCIgLW8gXAogICAgICBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0gLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNOb3RhdGlvbi5oIiAtbyBcCkBAIC0yNTUs
MTMgKzI2NCwyMiBAQCBpZiBbIGRvbS9UZXh0LmlkbCAtbnQgIiREZXJpdmVkU291cmNlc0RpCiAg
IHBlcmwgLUliaW5kaW5ncy9zY3JpcHRzIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGlu
Z3MucGwgLS1nZW5lcmF0b3IgSlMgLS1pbmNsdWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLW91dHB1
dGRpciAiJERlcml2ZWRTb3VyY2VzRGlyIiBkb20vVGV4dC5pZGwKIGZpCiAKLWlmIFsgZG9tL1do
ZWVsRXZlbnQuaWRsIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTV2hlZWxFdmVudC5oIiAtbyBc
Ci0gICAgIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLW50ICIkRGVyaXZl
ZFNvdXJjZXNEaXIvSlNXaGVlbEV2ZW50LmgiIC1vIFwKLSAgICAgYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTV2hlZWxFdmVudC5oIiAt
byBcCi0gICAgIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIC1udCAiJERlcml2
ZWRTb3VyY2VzRGlyL0pTV2hlZWxFdmVudC5oIiAtbyBcCi0gICAgIGJpbmRpbmdzL3NjcmlwdHMv
SURMUGFyc2VyLnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTV2hlZWxFdmVudC5oIiAtbyBc
Ci0gICAgIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIC1udCAiJERlcml2ZWRTb3Vy
Y2VzRGlyL0pTV2hlZWxFdmVudC5oIiBdOyB0aGVuCi0gIHBlcmwgLUliaW5kaW5ncy9zY3JpcHRz
IGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1nZW5lcmF0b3IgSlMgLS1p
bmNsdWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLW91dHB1dGRpciAiJERlcml2ZWRTb3VyY2VzRGly
IiBkb20vV2hlZWxFdmVudC5pZGwKK2lmIFsgZG9tL0tleWJvYXJkRXZlbnQuaWRsIC1udCAiJERl
cml2ZWRTb3VyY2VzRGlyL0pTS2V5Ym9hcmRFdmVudC5oIiAtbyBcCisgICAgIGJpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNLZXli
b2FyZEV2ZW50LmgiIC1vIFwKKyAgICAgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
IC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTS2V5Ym9hcmRFdmVudC5oIiAtbyBcCisgICAgIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGly
L0pTS2V5Ym9hcmRFdmVudC5oIiAtbyBcCisgICAgIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2Vy
LnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTS2V5Ym9hcmRFdmVudC5oIiAtbyBcCisgICAg
IGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGly
L0pTS2V5Ym9hcmRFdmVudC5oIiBdOyB0aGVuCisgIHBlcmwgLUliaW5kaW5ncy9zY3JpcHRzIGJp
bmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1nZW5lcmF0b3IgSlMgLS1pbmNs
dWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLW91dHB1dGRpciAiJERlcml2ZWRTb3VyY2VzRGlyIiBk
b20vS2V5Ym9hcmRFdmVudC5pZGwKK2ZpCisKK2lmIFsgZG9tL01vdXNlRXZlbnQuaWRsIC1udCAi
JERlcml2ZWRTb3VyY2VzRGlyL0pTTW91c2VFdmVudC5oIiAtbyBcCisgICAgIGJpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNNb3Vz
ZUV2ZW50LmgiIC1vIFwKKyAgICAgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIC1u
dCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTTW91c2VFdmVudC5oIiAtbyBcCisgICAgIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTTW91
c2VFdmVudC5oIiAtbyBcCisgICAgIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIC1udCAi
JERlcml2ZWRTb3VyY2VzRGlyL0pTTW91c2VFdmVudC5oIiAtbyBcCisgICAgIGJpbmRpbmdzL3Nj
cmlwdHMvSURMU3RydWN0dXJlLnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTTW91c2VFdmVu
dC5oIiBdOyB0aGVuCisgIHBlcmwgLUliaW5kaW5ncy9zY3JpcHRzIGJpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MucGwgLS1nZW5lcmF0b3IgSlMgLS1pbmNsdWRlIGRvbSAtLWluY2x1
ZGUgaHRtbCAtLW91dHB1dGRpciAiJERlcml2ZWRTb3VyY2VzRGlyIiBkb20vTW91c2VFdmVudC5p
ZGwKIGZpCiAKIGlmIFsgZG9tL1doZWVsRXZlbnQuaWRsIC1udCAiJERlcml2ZWRTb3VyY2VzRGly
L0pTV2hlZWxFdmVudC5oIiAtbyBcCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEzNDUyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw5
IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgfSBlbHNpZiAoJHR5cGUgZXEgIkhUTUxEb2N1
bWVudCIpIHsKICAgICAkaW1wbEluY2x1ZGVzeyJIVE1MRG9jdW1lbnQuaCJ9ID0gMTsKICAgfSBl
bHNpZiAoJHR5cGUgZXEgIk11dGF0aW9uRXZlbnQiIG9yCisgICAgICAgICAgICR0eXBlIGVxICJL
ZXlib2FyZEV2ZW50IiBvcgorICAgICAgICAgICAkdHlwZSBlcSAiTW91c2VFdmVudCIgb3IKKyAg
ICAgICAgICAgJHR5cGUgZXEgIlVJRXZlbnQiIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJXaGVl
bEV2ZW50IikgewogICAgICRpbXBsSW5jbHVkZXN7ImRvbTJfZXZlbnRzaW1wbC5oIn0gPSAxOwog
ICB9IGVsc2lmICgkdHlwZSBlcSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uIiBvcgpAQCAtNzEzLDgg
KzcxNiwxMCBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAgIHJldHVybiAiJHt0eXBlfSoiOwogICB9
IGVsc2lmICgkdHlwZSBlcSAiQ29tcGFyZUhvdyIpIHsKICAgICByZXR1cm4gIlJhbmdlOjpDb21w
YXJlSG93IjsKKyAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IikgeworICAgIHJldHVy
biAiRXZlbnRUYXJnZXROb2RlKiI7CiAgIH0gZWxzZSB7Ci0gICAgZGllICJEb24ndCBrbm93IGhv
dyB0aGUgbmF0aXZlIHR5cGUgb2YgJHR5cGUiOworICAgIGRpZSAiRG9uJ3Qga25vdyB0aGUgbmF0
aXZlIHR5cGUgb2YgJHR5cGUiOwogICB9CiB9CiAKQEAgLTc0Nyw3ICs3NTIsOSBAQCBzdWIgVHlw
ZUNhbkZhaWxDb252ZXJzaW9uCiAgICAgICByZXR1cm4gMTsKICAgfSBlbHNpZiAoJHR5cGUgZXEg
IkRvY3VtZW50VHlwZSIpIHsKICAgICAgIHJldHVybiAwOwotICB9IGVsc2lmICgkdHlwZSBlcSAi
UmFuZ2UiKSB7CisgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKKyAgICAgIHJl
dHVybiAwOworICB9ICBlbHNpZiAoJHR5cGUgZXEgIlJhbmdlIikgewogICAgICAgcmV0dXJuIDA7
CiAgIH0gZWxzZSB7CiAgICAgZGllICJEb24ndCBrbm93IHdoZXRoZXIgYSBKUyB2YWx1ZSBjYW4g
ZmFpbCBjb252ZXJzaW9uIHRvIHR5cGUgJHR5cGUuIgpAQCAtNzg3LDcgKzc5NCwxMCBAQCBzdWIg
SlNWYWx1ZVRvTmF0aXZlCiAgIH0gZWxzaWYgKCR0eXBlIGVxICJOb2RlIikgewogICAgICRpbXBs
SW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICByZXR1cm4gInRvTm9kZSgkdmFsdWUpIjsK
LSAgfSBlbHNpZiAoJHR5cGUgZXEgIkF0dHIiKSB7CisgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVu
dFRhcmdldCIpIHsKKyAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CisgICAgcmV0
dXJuICJ0b0V2ZW50VGFyZ2V0Tm9kZSgkdmFsdWUpIjsKKyAgfSAgZWxzaWYgKCR0eXBlIGVxICJB
dHRyIikgewogICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICByZXR1cm4g
InRvQXR0cigkdmFsdWUke21heWJlT2tQYXJhbX0pIjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRv
Y3VtZW50VHlwZSIpIHsKQEAgLTgzOSw2ICs4NDksMTEgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQog
ICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyJO
b2RlLmgifSA9IDE7CiAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1ZSkiOworICB9IGVsc2lm
ICgkdHlwZSBlcSAiRXZlbnRUYXJnZXQiKSB7CisgICAgIyBBZGQgbmVjZXNzYXJ5IGluY2x1ZGVz
CisgICAgJGltcGxJbmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7
IkV2ZW50VGFyZ2V0Tm9kZS5oIn0gPSAxOworICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUp
IjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIk5vZGVMaXN0IiBvciAkdHlwZSBlcSAiTmFtZWROb2Rl
TWFwIikgewogICAgICMgQWRkIG5lY2Vzc2FyeSBpbmNsdWRlcwogICAgICRpbXBsSW5jbHVkZXN7
Imtqc19kb20uaCJ9ID0gMTsKQEAgLTg2NCw2ICs4NzksOSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVl
CiAgIH0gZWxzaWYgKCR0eXBlIGVxICJSYW5nZSIpIHsKICAgICAkaW1wbEluY2x1ZGVzeyJKU1Jh
bmdlLmgifSA9IDE7CiAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1ZSkiOworICB9IGVsc2lm
ICgkdHlwZSBlcSAidmlld3M6OkFic3RyYWN0VmlldyIpIHsKKyAgICAkaW1wbEluY2x1ZGVzeyJr
anNfdmlld3MuaCJ9ID0gMTsKKyAgICByZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlKSI7CiAgIH0g
ZWxzZSB7CiAgICAgZGllICJEb24ndCBrbm93IGhvdyB0byBjb252ZXJ0IGEgdmFsdWUgb2YgdHlw
ZSAkdHlwZSB0byBhIEpTIFZhbHVlIjsKICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUV2ZW50cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZl
bnRzLm1tCShyZXZpc2lvbiAxMzQ1MikKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVu
dHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCw3IEBACiAjaW1wb3J0ICJBYnN0cmFj
dFZpZXcuaCIKICNpbXBvcnQgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4KIAotdXNpbmcgV2ViQ29y
ZTo6RXZlbnQ7Ci11c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwotdXNpbmcgV2ViQ29yZTo6
TW91c2VFdmVudDsKLXVzaW5nIFdlYkNvcmU6Ok11dGF0aW9uRXZlbnQ7Ci11c2luZyBXZWJDb3Jl
OjpVSUV2ZW50OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEFMTE9XX0RPTV9DQVNUKEV2
ZW50KQogCkBAIC03NCw3ICs3MCw3IEBAIEFMTE9XX0RPTV9DQVNUKEV2ZW50KQogICAgIHJldHVy
biBbc2VsZiBfZXZlbnRdLT5jYW5jZWxhYmxlKCk7CiB9CiAKLS0gKERPTVRpbWVTdGFtcCl0aW1l
U3RhbXAKKy0gKDo6RE9NVGltZVN0YW1wKXRpbWVTdGFtcAogewogICAgIHJldHVybiBbc2VsZiBf
ZXZlbnRdLT50aW1lU3RhbXAoKTsKIH0KQEAgLTE5OCwxMSArMTk0LDE0IEBAIEFMTE9XX0RPTV9D
QVNUKEV2ZW50KQogCiAtICh2b2lkKWluaXRNb3VzZUV2ZW50OihOU1N0cmluZyAqKXR5cGVBcmcg
OihCT09MKWNhbkJ1YmJsZUFyZyA6KEJPT0wpY2FuY2VsYWJsZUFyZyA6KERPTUFic3RyYWN0Vmll
dyAqKXZpZXdBcmcgOihpbnQpZGV0YWlsQXJnIDooaW50KXNjcmVlblhBcmcgOihpbnQpc2NyZWVu
WUFyZyA6KGludCljbGllbnRYIDooaW50KWNsaWVudFkgOihCT09MKWN0cmxLZXlBcmcgOihCT09M
KWFsdEtleUFyZyA6KEJPT0wpc2hpZnRLZXlBcmcgOihCT09MKW1ldGFLZXlBcmcgOih1bnNpZ25l
ZCBzaG9ydClidXR0b25BcmcgOihpZCA8RE9NRXZlbnRUYXJnZXQ+KXJlbGF0ZWRUYXJnZXRBcmcK
IHsKLSAgICBET01Ob2RlICpyZWxhdGVkVGFyZ2V0ID0gcmVsYXRlZFRhcmdldEFyZzsKKyAgICBE
T01Ob2RlICpyZWxhdGVkVGFyZ2V0T2JqYyA9IHJlbGF0ZWRUYXJnZXRBcmc7CisgICAgTm9kZSog
cmVsVGFyZ2V0Tm9kZSA9IFtyZWxhdGVkVGFyZ2V0T2JqYyBfbm9kZV07CisgICAgRXZlbnRUYXJn
ZXROb2RlKiByZWxhdGVkVGFyZ2V0ID0gKHJlbFRhcmdldE5vZGUgJiYgcmVsVGFyZ2V0Tm9kZS0+
aXNFdmVudFRhcmdldE5vZGUoKSkgPyBzdGF0aWNfY2FzdDxFdmVudFRhcmdldE5vZGUqPihyZWxU
YXJnZXROb2RlKSA6IDA7CisgICAgCiAgICAgW3NlbGYgX21vdXNlRXZlbnRdLT5pbml0TW91c2VF
dmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsCiAgICAgICAgIFt2aWV3
QXJnIF9hYnN0cmFjdFZpZXddLCBkZXRhaWxBcmcsIHNjcmVlblhBcmcsIHNjcmVlbllBcmcsIGNs
aWVudFgsIGNsaWVudFksCiAgICAgICAgIHNoaWZ0S2V5QXJnLCBjdHJsS2V5QXJnLCBhbHRLZXlB
cmcsIG1ldGFLZXlBcmcsIGJ1dHRvbkFyZywKLSAgICAgICAgW3JlbGF0ZWRUYXJnZXQgX25vZGVd
KTsKKyAgICAgICAgcmVsYXRlZFRhcmdldCk7CiB9CiAKIEBlbmQKSW5kZXg6IFdlYkNvcmUvZG9t
L2RvbTJfZXZlbnRzaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vZG9tMl9ldmVu
dHNpbXBsLmNwcAkocmV2aXNpb24gMTM0NTIpCisrKyBXZWJDb3JlL2RvbS9kb20yX2V2ZW50c2lt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNyArMzMwLDcgQEAgTW91c2VFdmVudDo6TW91
c2VFdmVudCgpCiB7CiB9CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nICZldmVudFR5cGUsCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnVi
YmxlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFy
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdFZpZXcgKnZpZXdBcmcs
CkBAIC0zNDQsOCArMzQ0LDggQEAgTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNT
dHJpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hpZnRLZXlBcmcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtZXRhS2V5QXJnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbkFyZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlICpyZWxhdGVkVGFyZ2V0QXJnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCAqY2xpcGJvYXJkQXJnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZSogcmVsYXRlZFRhcmdldEFyZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZEFyZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2ltdWxhdGVkKQogICAgIDog
TW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcs
IHZpZXdBcmcsIGRldGFpbEFyZywKICAgICAgICAgc2NyZWVuWEFyZywgc2NyZWVuWUFyZywgY2xp
ZW50WEFyZywgY2xpZW50WUFyZywKQEAgLTM2MSwxMCArMzYxLDEwIEBAIE1vdXNlRXZlbnQ6On5N
b3VzZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcgJnR5cGVBcmcsCit2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWJzdHJhY3RWaWV3ICp2aWV3QXJnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWJzdHJhY3RWaWV3KiB2aWV3QXJnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGRldGFpbEFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzY3JlZW5YQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNjcmVlbllBcmcsCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBNb3VzZUV2ZW50
Ojppbml0TW91c2VFdmVudChjb25zdCBBdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBzaGlmdEtleUFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgbWV0YUtleUFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbkFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vZGUgKnJlbGF0ZWRUYXJnZXRBcmcpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFdmVudFRhcmdldE5vZGUqIHJlbGF0ZWRUYXJnZXRBcmcpCiB7CiAgICAgaWYg
KGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9kb20vTW91c2VF
dmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21v
ZHVsZSBldmVudHMgeworCisgICAgaW50ZXJmYWNlIE1vdXNlRXZlbnQgOiBVSUV2ZW50IHsKKwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBzY3JlZW5YOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBzY3JlZW5ZOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBjbGllbnRYOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBjbGllbnRZOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBvZmZzZXRYOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICBvZmZzZXRZOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICB4OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyAgICAgICAgICAgICB5OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAg
ICAgICAgICBjdHJsS2V5OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAg
ICAgICBzaGlmdEtleTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gICAgICAg
ICAgYWx0S2V5OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBt
ZXRhS2V5OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgICBidXR0
b247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFdmVudFRhcmdldCAgICAgIHJlbGF0ZWRU
YXJnZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIGZyb21F
bGVtZW50OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICB0b0Vs
ZW1lbnQ7CisgICAgICAgIAorICAgICAgICB2b2lkICAgICAgICAgICAgICAgaW5pdE1vdXNlRXZl
bnQoaW4gQXRvbWljU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHZpZXdzOjpBYnN0cmFj
dFZpZXcgdmlld0FyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBsb25nIGRldGFpbEFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBsb25nIHNjcmVlblhBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gbG9uZyBzY3JlZW5ZQXJnLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgY2xpZW50WEFyZywgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25nIGNsaWVudFlBcmcsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjdHJsS2V5QXJn
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4g
YWx0S2V5QXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGJvb2xlYW4gc2hpZnRLZXlBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gYm9vbGVhbiBtZXRhS2V5QXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIHNob3J0IGJ1dHRvbkFyZywgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudFRhcmdldCByZWxhdGVk
VGFyZ2V0QXJnKTsKKyAgICB9OworCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBkb20vTW91c2VF
dmVudC5pZGwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgoKUHJv
cGVydHkgY2hhbmdlcyBvbjogZG9tL1JhbmdlLmlkbApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wt
c3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxl
IGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudCA6IFVJRXZlbnQgeworCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgIGtleUlkZW50aWZpZXI7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgIGtleUxvY2F0aW9u
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBhbHRLZXk7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgIGN0cmxLZXk7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgIG1ldGFLZXk7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgIHNoaWZ0S2V5OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBhbHRHcmFwaEtleTsKKworICAgICAg
ICB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGluIEF0b21pY1N0cmluZyB0eXBlQXJnLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB2aWV3czo6QWJzdHJhY3RWaWV3IHZpZXdB
cmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBrZXlJZGVu
dGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcg
a2V5TG9jYXRpb25BcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVh
biBjdHJsS2V5QXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4g
YWx0S2V5QXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gc2hp
ZnRLZXlBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBtZXRh
S2V5QXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gYWx0R3Jh
cGhLZXlBcmcpOworICAgIH07CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IGRvbS9LZXlib2Fy
ZEV2ZW50LmlkbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCklu
ZGV4OiBXZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9XaGVlbEV2ZW50LmlkbAkocmV2aXNpb24gMTM0NTIpCisrKyBXZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogCiBtb2R1bGUgZXZlbnRz
IHsKIAotICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NVUlFdmVudF0gV2hlZWxF
dmVudCA6IFVJRXZlbnQgeworICAgIGludGVyZmFjZSBXaGVlbEV2ZW50IDogVUlFdmVudCB7CiAK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYWx0S2V5OwogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyAgICBjbGllbnRYOwpJbmRleDogV2ViQ29yZS9kb20vVUlFdmVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVUlFdmVudC5pZGwJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBldmVu
dHMgeworCisgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKKworICAgIGludGVyZmFj
ZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NRXZlbnRdIFVJRXZlbnQgOiBFdmVudCB7CisKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHZpZXdzOjpBYnN0cmFjdFZpZXcgIHZpZXc7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgICAgICBkZXRhaWw7CisgICAgICAg
IAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgICAga2V5Q29k
ZQorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgICAgY2hhckNv
ZGUKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgICAgIGxheWVy
WDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgICAgIGxheWVy
WTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgICAgIHBhZ2VY
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgICAgcGFnZVk7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgICAgICB3aGljaDsK
KyAgICAgICAgCisgICAgICAgIHZvaWQgICAgICAgICAgICAgICBpbml0VUlFdmVudChpbiBBdG9t
aWNTdHJpbmcgdHlwZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gdmlld3M6OkFic3RyYWN0VmlldyB2aWV3QXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgZGV0YWlsQXJnKTsK
KyAgICB9OworCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBkb20vVUlFdmVudC5pZGwKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudFRhcmdl
dE5vZGUuY3BwCShyZXZpc2lvbiAxMzQ1MikKKysrIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw3ICszNzMsNyBAQCBib29sIEV2ZW50VGFyZ2V0
Tm9kZTo6ZGlzcGF0Y2hTaW11bGF0ZWRNCiBib29sIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hN
b3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgYnV0dG9uLCBpbnQg
ZGV0YWlsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGNsaWVudFgsIGludCBjbGllbnRZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NpbXVsYXRlZCwgTm9kZSogcmVsYXRl
ZFRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNTaW11bGF0ZWQsIE5vZGUqIHJlbGF0ZWRUYXJnZXRBcmcpCiB7CiAgICAgYXNzZXJ0KCFl
dmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIGlmIChkaXNhYmxlZCgpKSAvLyBEb24ndCBl
dmVuIHNlbmQgRE9NIGV2ZW50cyBmb3IgZGlzYWJsZWQgY29udHJvbHMuLgpAQCAtMzkzLDYgKzM5
Myw5IEBAIGJvb2wgRXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaE1vdXNlRXZlbnQKICAgICAKICAg
ICBib29sIHN3YWxsb3dFdmVudCA9IGZhbHNlOwogICAgIAorICAgIC8vIEF0dGVtcHRpbmcgdG8g
ZGlzcGF0Y2ggd2l0aCBhIG5vbi1FdmVudFRhcmdldCByZWxhdGVkVGFyZ2V0IGNhdXNlcyB0aGUg
cmVsYXRlZFRhcmdldCB0byBiZSBzaWxlbnRseSBpZ25vcmVkLgorICAgIEV2ZW50VGFyZ2V0Tm9k
ZSAqcmVsYXRlZFRhcmdldCA9IChyZWxhdGVkVGFyZ2V0QXJnICYmIHJlbGF0ZWRUYXJnZXRBcmct
PmlzRXZlbnRUYXJnZXROb2RlKCkpID8gc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2RlKj4ocmVs
YXRlZFRhcmdldEFyZykgOiAwOworICAgIAogICAgIFJlZlB0cjxFdmVudD4gbWUgPSBuZXcgTW91
c2VFdmVudChldmVudFR5cGUsIHRydWUsIGNhbmNlbGFibGUsIGdldERvY3VtZW50KCktPmRlZmF1
bHRWaWV3KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV0YWlsLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGJ1dHRvbiwKSW5kZXg6IFdlYkNvcmUvZG9tL2RvbTJfZXZlbnRzaW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL2RvbTJfZXZlbnRzaW1wbC5oCShyZXZpc2lvbiAx
MzQ1MikKKysrIFdlYkNvcmUvZG9tL2RvbTJfZXZlbnRzaW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2xpcGJvYXJkOwog
Y2xhc3MgRXZlbnRMaXN0ZW5lcjsKK2NsYXNzIEV2ZW50VGFyZ2V0Tm9kZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CkBAIC0yMTYs
MTAgKzIxNywxMCBAQCBwcml2YXRlOgogY2xhc3MgTW91c2VFdmVudCA6IHB1YmxpYyBNb3VzZVJl
bGF0ZWRFdmVudCB7CiBwdWJsaWM6CiAgICAgTW91c2VFdmVudCgpOwotICAgIE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nICZ0eXBlLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLAogICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAogICAgICAg
ICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFyZywKLSAgICAgICAgICAgICAgICAgICBBYnN0
cmFjdFZpZXcgKnZpZXdBcmcsCisgICAgICAgICAgICAgICAgICAgQWJzdHJhY3RWaWV3KiB2aWV3
QXJnLAogICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWxBcmcsCiAgICAgICAgICAgICAgICAg
ICAgaW50IHNjcmVlblhBcmcsCiAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbllBcmcsCkBA
IC0yMzAsMjEgKzIzMSwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgYm9vbCBzaGlm
dEtleUFyZywKICAgICAgICAgICAgICAgICAgICBib29sIG1ldGFLZXlBcmcsCiAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uQXJnLAotICAgICAgICAgICAgICAgICAgIE5v
ZGUgKnJlbGF0ZWRUYXJnZXRBcmcsCi0gICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkICpjbGlw
Ym9hcmRBcmcgPSAwLAorICAgICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZSogcmVsYXRl
ZFRhcmdldEFyZywKKyAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZEFyZyA9
IDAsCiAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NpbXVsYXRlZCA9IGZhbHNlKTsKICAgICB2
aXJ0dWFsIH5Nb3VzZUV2ZW50KCk7CiAgICAgLy8gV2luSUUgdXNlcyAxLDQsMiBmb3IgbGVmdC9t
aWRkbGUvcmlnaHQgYnV0IG5vdCBmb3IgY2xpY2sgKGp1c3QgZm9yIG1vdXNlZG93bi91cCwgbWF5
YmUgb3RoZXJzKSwgYnV0IHdlIHdpbGwgbWF0Y2ggdGhlIHN0YW5kYXJkIERPTS4KICAgICB1bnNp
Z25lZCBzaG9ydCBidXR0b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQotICAgIE5vZGUg
KnJlbGF0ZWRUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbGF0ZWRUYXJnZXQuZ2V0KCk7IH0K
LSAgICBDbGlwYm9hcmQgKmNsaXBib2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcGJvYXJkLmdl
dCgpOyB9CisgICAgRXZlbnRUYXJnZXROb2RlKiByZWxhdGVkVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWxhdGVkVGFyZ2V0LmdldCgpOyB9CisgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQoKSBj
b25zdCB7IHJldHVybiBtX2NsaXBib2FyZC5nZXQoKTsgfQogICAgIGJvb2wgaXNTaW11bGF0ZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzU2ltdWxhdGVkOyB9Ci0gICAgTm9kZSAqdG9FbGVtZW50KCkg
Y29uc3Q7Ci0gICAgTm9kZSAqZnJvbUVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIGluaXRNb3Vz
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmdHlwZUFyZywKKyAgICBOb2RlKiB0b0VsZW1lbnQo
KSBjb25zdDsKKyAgICBOb2RlKiBmcm9tRWxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgaW5pdE1v
dXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlQXJnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNh
bmNlbGFibGVBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdFZpZXcgKnZpZXdB
cmcsCisgICAgICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdFZpZXcqIHZpZXdBcmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZGV0YWlsQXJnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNjcmVlblhBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuWUFy
ZywKQEAgLTI1NSwxMyArMjU2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgc2hpZnRLZXlBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1ldGFLZXlB
cmcsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b25BcmcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlICpyZWxhdGVkVGFyZ2V0QXJnKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZSogcmVsYXRlZFRhcmdldEFyZyk7CiAgICAg
dmlydHVhbCBib29sIGlzTW91c2VFdmVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Ry
YWdFdmVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IHdoaWNoKCkgY29uc3Q7CiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIHNob3J0IG1fYnV0dG9uOwotICAgIFJlZlB0cjxOb2RlPiBtX3JlbGF0
ZWRUYXJnZXQ7CisgICAgUmVmUHRyPEV2ZW50VGFyZ2V0Tm9kZT4gbV9yZWxhdGVkVGFyZ2V0Owog
ICAgIFJlZlB0cjxDbGlwYm9hcmQ+IG1fY2xpcGJvYXJkOwogICAgIGJvb2wgbV9pc1NpbXVsYXRl
ZDsKIH07CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTM0NTIpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODk4LDYgKzg5OCwxNSBAQAogCQlBODhBRDUxRTA5NTI0
OTlGMDAxREQxOTYgLyogU1ZHTmFtZXNXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4ODQyODM4MDkzMDhDMUMwMEI2RDQ2MSAvKiBTVkdO
YW1lc1dyYXBwZXIuY3BwICovOyB9OwogCQlBODhBRDUyRjA5NTI0QjkyMDAxREQxOTYgLyogUXVh
cnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODVEN0EyRjA4NzlFQkE5MDA2QTkxNzIgLyogUXVhcnR6Q29yZS5mcmFtZXdv
cmsgKi87IH07CiAJCUE4OEFENUFBMDk1MjUxMzEwMDFERDE5NiAvKiBTVkdDU1NTdHlsZVNlbGVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzBGNkZCMDg5NzAxRjEwMEJBNTExNCAvKiBTVkdDU1NTdHlsZVNlbGVjdG9yLmNwcCAqLzsgfTsK
KwkJQThENDczNDkwOUQyOTUxNzAwODIyOTI4IC8qIFVJRXZlbnQuaWRsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQ0NzM0ODA5RDI5NTE3MDA4MjI5
MjggLyogVUlFdmVudC5pZGwgKi87IH07CisJCUE4RDQ3MzZEMDlEMjk3QjEwMDgyMjkyOCAvKiBN
b3VzZUV2ZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThENDczNkMwOUQyOTdCMTAwODIyOTI4IC8qIE1vdXNlRXZlbnQuaWRsICovOyB9Owor
CQlBOEQ0NzM3MDA5RDI5N0JFMDA4MjI5MjggLyogS2V5Ym9hcmRFdmVudC5pZGwgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDQ3MzZGMDlEMjk3QkUw
MDgyMjkyOCAvKiBLZXlib2FyZEV2ZW50LmlkbCAqLzsgfTsKKwkJQThENDc5MkMwOUQyQTg2NzAw
ODIyOTI4IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThENDc5MjgwOUQyQTg2NzAwODIyOTI4IC8qIEpTTW91c2VFdmVudC5o
ICovOyB9OworCQlBOEQ0NzkyRDA5RDJBODY3MDA4MjI5MjggLyogSlNNb3VzZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDQ3OTI5MDlE
MkE4NjcwMDgyMjkyOCAvKiBKU01vdXNlRXZlbnQuY3BwICovOyB9OworCQlBOEQ0NzkyRTA5RDJB
ODY3MDA4MjI5MjggLyogSlNLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQ0NzkyQTA5RDJBODY3MDA4MjI5MjggLyogSlNLZXli
b2FyZEV2ZW50LmggKi87IH07CisJCUE4RDQ3OTJGMDlEMkE4NjcwMDgyMjkyOCAvKiBKU0tleWJv
YXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThENDc5MkIwOUQyQTg2NzAwODIyOTI4IC8qIEpTS2V5Ym9hcmRFdmVudC5jcHAgKi87IH07
CisJCUE4RDQ3OTMyMDlEMkE4NzIwMDgyMjkyOCAvKiBKU1VJRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDQ3OTMwMDlEMkE4NzIwMDgyMjky
OCAvKiBKU1VJRXZlbnQuaCAqLzsgfTsKKwkJQThENDc5MzMwOUQyQTg3MjAwODIyOTI4IC8qIEpT
VUlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEQ0NzkzMTA5RDJBODcyMDA4MjI5MjggLyogSlNVSUV2ZW50LmNwcCAqLzsgfTsKIAkJQThE
RjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAwNTI5
ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oICovOyB9OwogCQlBOERGM0ZDRjA5N0ZBMEZDMDA1
Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9y
bUNvbGxlY3Rpb24uY3BwICovOyB9OwogCQlBOERGM0ZEMDA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRN
TENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4REYzRkM4MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oICovOyB9OwpA
QCAtMjA4MCw2ICsyMDg5LDE1IEBACiAJCUE4QzMyOTY3MDkzQkI3QjIwMDBCOUNBQyAvKiBTVkdG
RVBvaW50TGlnaHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMzMkQ4
OTA5M0Q4QkZBMDAwQjlDQUMgLyogeGxpbmthdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IHhsaW5rYXR0cnMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMzMkQ5NjA5M0Q4RUE0MDAwQjlD
QUMgLyogWExpbmtOYW1lc1dyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTGlua05hbWVzV3JhcHBlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQlBOEQ0NzM0
ODA5RDI5NTE3MDA4MjI5MjggLyogVUlFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFVJRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQ0NzM2QzA5RDI5
N0IxMDA4MjI5MjggLyogTW91c2VFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1v
dXNlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQ0NzM2RjA5RDI5
N0JFMDA4MjI5MjggLyogS2V5Ym9hcmRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEtleWJvYXJkRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQ0Nzky
ODA5RDJBODY3MDA4MjI5MjggLyogSlNNb3VzZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQThENDc5MjkwOUQyQTg2NzAwODIyOTI4IC8qIEpTTW91c2VFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb3VzZUV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThENDc5MkEwOUQyQTg2NzAwODIyOTI4IC8qIEpTS2V5Ym9h
cmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNLZXlib2FyZEV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RDQ3OTJCMDlEMkE4NjcwMDgy
MjkyOCAvKiBKU0tleWJvYXJkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTS2V5Ym9hcmRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE4RDQ3OTMwMDlEMkE4NzIwMDgyMjkyOCAvKiBKU1VJRXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVUlFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBOEQ0NzkzMTA5RDJBODcyMDA4MjI5MjggLyogSlNVSUV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VJRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1D
b2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9ybUNv
bGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQzcwOTdGQTBG
QjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThERjNGQzgwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ29sbGVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU2Nyw2ICsyNTg1LDEwIEBACiAJCQkJNjVE
RjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1wbGVtZW50YXRpb24uaCAqLywKIAkJCQk2
NURGMzFFNTA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmNwcCAqLywKIAkJCQk2NURGMzFF
NjA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggKi8sCisJCQkJQThENDc5MjgwOUQyQTg2
NzAwODIyOTI4IC8qIEpTTW91c2VFdmVudC5oICovLAorCQkJCUE4RDQ3OTI5MDlEMkE4NjcwMDgy
MjkyOCAvKiBKU01vdXNlRXZlbnQuY3BwICovLAorCQkJCUE4RDQ3OTJBMDlEMkE4NjcwMDgyMjky
OCAvKiBKU0tleWJvYXJkRXZlbnQuaCAqLywKKwkJCQlBOEQ0NzkyQjA5RDJBODY3MDA4MjI5Mjgg
LyogSlNLZXlib2FyZEV2ZW50LmNwcCAqLywKIAkJCQk2NURGMzFFNzA5RDFDQzYwMDAwQkUzMjUg
LyogSlNNdXRhdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk2NURGMzFFODA5RDFDQzYwMDAwQkUzMjUg
LyogSlNNdXRhdGlvbkV2ZW50LmggKi8sCiAJCQkJNjVERjMxRTkwOUQxQ0M2MDAwMEJFMzI1IC8q
IEpTTm90YXRpb24uY3BwICovLApAQCAtMjU3Nyw2ICsyNTk5LDggQEAKIAkJCQk2NURGMzFFRTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNSYW5nZS5oICovLAogCQkJCTY1REYzMUVGMDlEMUNDNjAwMDBC
RTMyNSAvKiBKU1RleHQuY3BwICovLAogCQkJCTY1REYzMUYwMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U1RleHQuaCAqLywKKwkJCQlBOEQ0NzkzMDA5RDJBODcyMDA4MjI5MjggLyogSlNVSUV2ZW50Lmgg
Ki8sCisJCQkJQThENDc5MzEwOUQyQTg3MjAwODIyOTI4IC8qIEpTVUlFdmVudC5jcHAgKi8sCiAJ
CQkJNjVERjMxRjEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5jcHAgKi8sCiAJCQkJ
NjVERjMxRjIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5oICovLAogCQkJCTY1REYz
MUQ4MDlEMUMxMjIwMDBCRTMyNSAvKiBKU0F0dHIuY3BwICovLApAQCAtNDA0OCw2ICs0MDcyLDgg
QEAKIAkJCQkxNEVDMjY3RTA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNwcCAq
LywKIAkJCQkxNEVDMjY3RDA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmggKi8s
CiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKKwkJ
CQlBOEQ0NzM2RjA5RDI5N0JFMDA4MjI5MjggLyogS2V5Ym9hcmRFdmVudC5pZGwgKi8sCisJCQkJ
QThENDczNkMwOUQyOTdCMTAwODIyOTI4IC8qIE1vdXNlRXZlbnQuaWRsICovLAogCQkJCTkzRUVD
MUYzMDlDMjg3NzcwMEM1MTVEMSAvKiBNdXRhdGlvbkV2ZW50LmlkbCAqLywKIAkJCQlBODE4NzIx
ODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJQTgxODcyMTkwOTc3
RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgKi8sCkBAIC00MDY4LDYgKzQwOTQsNyBA
QAogCQkJCTY1NTBCNjlCMDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0LmNwcCAqLywKIAkJCQk2NTUw
QjY5QzA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oICovLAogCQkJCTkzRUVDMUY2MDlDMjg3Nzcw
MEM1MTVEMSAvKiBUZXh0LmlkbCAqLywKKwkJCQlBOEQ0NzM0ODA5RDI5NTE3MDA4MjI5MjggLyog
VUlFdmVudC5pZGwgKi8sCiAJCQkJOTNFRUMxRjcwOUMyODc3NzAwQzUxNUQxIC8qIFdoZWVsRXZl
bnQuaWRsICovLAogCQkJCUY1MjNEMzA5MDJERTQ0NzYwMTg2MzVDQSAvKiB4bWxfdG9rZW5pemVy
LmNwcCAqLywKIAkJCQlGNTIzRDMwQTAyREU0NDc2MDE4NjM1Q0EgLyogeG1sX3Rva2VuaXplci5o
ICovLApAQCAtNDcxNSw2ICs0NzQyLDkgQEAKIAkJCQk2NURGMzIzQTA5RDFERTY1MDAwQkUzMjUg
LyogSlNDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyM0MwOUQxREU2
NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMy
M0UwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBOEQ0NzkyQzA5RDJBODY3MDA4MjI5MjggLyogSlNNb3VzZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBOEQ0NzkyRTA5RDJBODY3MDA4MjI5MjggLyogSlNLZXlib2Fy
ZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEQ0NzkzMjA5RDJBODcyMDA4MjI5MjggLyog
SlNVSUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ5MDQsNiArNDkzNCw5IEBACiAJCQkJOTMw
Q0FCOTAwOUM0OUYxQjAwMjI5QzA0IC8qIENhbnZhc1BhdHRlcm4uaWRsIGluIFJlc291cmNlcyAq
LywKIAkJCQk5MzBDQUI5NzA5QzQ5RkFBMDAyMjlDMDQgLyogQ29kZUdlbmVyYXRvckpTLnBtIGlu
IFJlc291cmNlcyAqLywKIAkJCQk5MzZERDAzQjA5Q0VBQzI3MDA1NkFFOEMgLyogUmFuZ2UuaWRs
IGluIFJlc291cmNlcyAqLywKKwkJCQlBOEQ0NzM0OTA5RDI5NTE3MDA4MjI5MjggLyogVUlFdmVu
dC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE4RDQ3MzZEMDlEMjk3QjEwMDgyMjkyOCAvKiBN
b3VzZUV2ZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQThENDczNzAwOUQyOTdCRTAwODIy
OTI4IC8qIEtleWJvYXJkRXZlbnQuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU0MjksNiArNTQ2
Miw5IEBACiAJCQkJNjVERjMyM0IwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIzRDA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMyNjEwOUQx
RTE5OTAwMEJFMzI1IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBOEQ0NzkyRDA5RDJBODY3MDA4MjI5MjggLyogSlNNb3VzZUV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUE4RDQ3OTJGMDlEMkE4NjcwMDgyMjkyOCAvKiBKU0tleWJvYXJkRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThENDc5MzMwOUQyQTg3MjAwODIyOTI4IC8qIEpT
VUlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzQ1MikKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNDAgQEAKIDIwMDYtMDMtMjMgIEVy
aWMgU2VpZGVsICA8ZXNlaWRlbEBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIFVJRXZlbnQsIE1vdXNlRXZlbnQgYW5kIEtl
eWJvYXJkRXZlbnQgb3ZlciB0bworICAgICAgICBiZSBuZXcgYXV0by1nZW5lcmF0ZWQgYmluZGlu
Z3MuCisgICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzkyOAorCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdF
RAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tOgorICAgICAgICAoLVtET01FdmVudCA6Ol0p
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50Ojo6Ojo6Ojo6Ojo6Ojo6
XSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRh
cmdldE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZl
bnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGRvbS9VSUV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL1doZWVsRXZlbnQu
aWRsOgorICAgICAgICAqIGRvbS9kb20yX2V2ZW50c2ltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW91c2VFdmVudDo6TW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50
Ojppbml0TW91c2VFdmVudCk6CisgICAgICAgICogZG9tL2RvbTJfZXZlbnRzaW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6cmVsYXRlZFRhcmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpNb3VzZUV2ZW50OjpjbGlwYm9hcmQpOgorICAgICAgICAqIGdlbmVyYXRlLWRlcml2ZWQt
c291cmNlczoKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19kb20uY3BwOgorICAgICAgICAoS0pT
Ojp0b0V2ZW50VGFyZ2V0Tm9kZSk6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfZG9tLmg6Cisg
ICAgICAgICoga2h0bWwvZWNtYS9ranNfZXZlbnRzLmNwcDoKKyAgICAgICAgKEtKUzo6dG9KUyk6
CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfZXZlbnRzLmg6CisKKzIwMDYtMDMtMjMgIEVyaWMg
U2VpZGVsICA8ZXNlaWRlbEBhcHBsZS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgbWpzLgog
CiAgICAgICAgIFJFR1JFU1NJT046IERhc2hlZCBib3JkZXJzIHBhaW50IHdpdGggdGhlIHdyb25n
IHBoYXNlCg==
</data>
<flag name="review"
          id="1924"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>