<?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>41817</bug_id>
          
          <creation_ts>2010-07-07 17:31:47 -0700</creation_ts>
          <short_desc>AX: Misspellings not shown in AXAttributedStringForTextMarkerRange when selection is on word</short_desc>
          <delta_ts>2010-07-27 12:39:05 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>bdakin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>enrica</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>247880</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-07 17:31:47 -0700</bug_when>
    <thetext>the misspelling attribute should continue to be returned even when the selection is on that piece of misspelled.   The red underline for misspelled text temporarily disappear when the insertion point is within the misspelled text.  That does not mean the misspelled attribute is not available.  The misspelled attribute should still be returned in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248246</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-08 09:02:26 -0700</bug_when>
    <thetext>Right now when asking for an attributed string for a range, it returns appropriate markers like misspelled, color, font, etc.

the problem is that when the cursor is on a misspelled word, the misspelled underline disappears visually and AX no longer says that this word is misspelled

The fix I have here is to not rely on the document&apos;s cached markings, because they don&apos;t account for this case, and instead just check the spelling of the range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248407</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-08 12:03:17 -0700</bug_when>
    <thetext>I have two layout tests. One to handle the case where misspelled attribute was not returned when selection was on the word

and 2) to generally test the misspelled attributed string stuff since there was no layout test before and because i re-wrote the method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248411</commentid>
    <comment_count>3</comment_count>
      <attachid>60924</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-08 12:05:46 -0700</bug_when>
    <thetext>Created attachment 60924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248458</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 12:58:36 -0700</bug_when>
    <thetext>Attachment 60924 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3453042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248566</commentid>
    <comment_count>5</comment_count>
      <attachid>60965</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-08 14:51:22 -0700</bug_when>
    <thetext>Created attachment 60965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255783</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-24 19:51:21 -0700</bug_when>
    <thetext>i added the DRT changes and the other layout test in a separate bug. this bug will now just address the actual issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255785</commentid>
    <comment_count>7</comment_count>
      <attachid>62519</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-24 20:31:08 -0700</bug_when>
    <thetext>Created attachment 62519
patch to test against other bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255794</commentid>
    <comment_count>8</comment_count>
      <attachid>62519</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-24 22:21:43 -0700</bug_when>
    <thetext>Comment on attachment 62519
patch to test against other bots

WebCore/ChangeLog:10
 +          circumstances (like when selection has not moved across words, of if the cursor is in the middle

Typo: &quot;of if the cursor&quot; should be &quot;or if the cursor&quot;.

WebCore/accessibility/mac/AccessibilityObjectWrapper.mm:396
 +      // Check the spelling directly since document-&gt;markersForNode() does not store the misspelled marking when the cursor is in a word.

Should document-&gt;markersforNode() store the misspelled marking?  I&apos;m not an editing expert, but that fix may be simpler if it makes sense (and doesn&apos;t cause any performance issues).  I CCed Enrica on this bug in case she has input.

Other than that the patch looks fine, but I think someone with more text editing knowledge should look over the patch before I r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255805</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-24 23:23:32 -0700</bug_when>
    <thetext>
&gt; Should document-&gt;markersforNode() store the misspelled marking?  I&apos;m not an editing expert, but that fix may be simpler if it makes sense (and doesn&apos;t cause any performance issues).  I CCed Enrica on this bug in case she has input.
&gt; 

From what I discovered that method mirrors what is displayed and when the visuals update it relies on the cache inside there. It also doesn&apos;t get updated until selection is moved within the range


&gt; Other than that the patch looks fine, but I think someone with more text editing knowledge should look over the patch before I r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256727</commentid>
    <comment_count>10</comment_count>
      <attachid>62519</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-27 11:56:55 -0700</bug_when>
    <thetext>Comment on attachment 62519
patch to test against other bots

I looked over the patch again and this seems fine.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256760</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-07-27 12:39:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64149</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60924</attachid>
            <date>2010-07-08 12:05:46 -0700</date>
            <delta_ts>2010-07-08 14:51:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41817-20100708120545.patch</filename>
            <type>text/plain</type>
            <size>21734</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjgxMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDctMDggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogUmVwcmVzZW50IG1pc3NwZWxsaW5ncyBpbiBBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxODE3CisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0
dHJpYnV0ZWQtc3RyaW5nLWluY2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAor
ICAgICAgICAgICAgICAgcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRy
aWJ1dGVkLXN0cmluZy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3Bl
bGxpbmcpOgorICAgICAgICAoQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dCk6CisgICAgICAg
ICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlOl0pOgorCiAyMDEwLTA3LTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbQkocmV2aXNpb24gNjI3ODkpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSw3IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbi5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkVk
aXRvckNsaWVudC5oIgogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkhUTUxBbmNob3JFbGVt
ZW50LmgiCiAjaW1wb3J0ICJIVE1MQXJlYUVsZW1lbnQuaCIKQEAgLTM5MCwzMiArMzkxLDI0IEBA
IHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW8KICAgICAgICAgW2F0dHJT
dHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJp
YnV0ZSByYW5nZTpyYW5nZV07CiB9CiAKLXN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0
U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTm9kZSogbm9k
ZSwgaW50IG9mZnNldCwgTlNSYW5nZSByYW5nZSkKK3N0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3Ry
aW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTm9k
ZSogbm9kZSwgY29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgY2hhckxlbmd0aCwgTlNSYW5nZSByYW5n
ZSkKIHsKLSAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBub2RlLT5yZW5kZXJl
cigpLT5kb2N1bWVudCgpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKLSAgICBWZWN0b3I8RG9jdW1l
bnRNYXJrZXI+OjppdGVyYXRvciBtYXJrZXJJdCA9IG1hcmtlcnMuYmVnaW4oKTsKLQotICAgIHVu
c2lnbmVkIGVuZE9mZnNldCA9ICh1bnNpZ25lZClvZmZzZXQgKyByYW5nZS5sZW5ndGg7Ci0gICAg
Zm9yICggOyBtYXJrZXJJdCAhPSBtYXJrZXJzLmVuZCgpOyBtYXJrZXJJdCsrKSB7Ci0gICAgICAg
IERvY3VtZW50TWFya2VyIG1hcmtlciA9ICptYXJrZXJJdDsKLSAgICAgICAgCi0gICAgICAgIGlm
IChtYXJrZXIudHlwZSAhPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtYXJrZXIuZW5kT2Zmc2V0IDw9ICh1bnNp
Z25lZClvZmZzZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGlm
IChtYXJrZXIuc3RhcnRPZmZzZXQgPiBlbmRPZmZzZXQpCisgICAgLy8gQ2hlY2sgdGhlIHNwZWxs
aW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgpIGRvZXMgbm90IHN0
b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlzIGluIGEgd29yZC4K
KyAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+ZWRp
dG9yQ2xpZW50KCk7CisgICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKGNo
YXJMZW5ndGggPiAwKSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsg
Y3VycmVudFBvc2l0aW9uOworCisgICAgICAgIGludCBtaXNzcGVsbGluZ0xvY2F0aW9uID0gLTE7
CisgICAgICAgIGludCBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7CisgICAgICAgIGNsaWVudC0+Y2hl
Y2tTcGVsbGluZ09mU3RyaW5nKGNoYXJEYXRhLCBjaGFyTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRp
b24gPT0gLTEgfHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIAotICAgICAgICAvLyBhZGQgbWlzc3BlbGxpbmcgYXR0cmlidXRlIGZvciB0aGUgaW50ZXJz
ZWN0aW9uIG9mIHRoZSBtYXJrZXIgYW5kIHRoZSByYW5nZQotICAgICAgICBpbnQgclN0YXJ0ID0g
cmFuZ2UubG9jYXRpb24gKyAobWFya2VyLnN0YXJ0T2Zmc2V0IC0gb2Zmc2V0KTsKLSAgICAgICAg
aW50IHJMZW5ndGggPSBtaW4obWFya2VyLmVuZE9mZnNldCwgZW5kT2Zmc2V0KSAtIG1hcmtlci5z
dGFydE9mZnNldDsKLSAgICAgICAgTlNSYW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFuZ2UoclN0
YXJ0LCByTGVuZ3RoKTsKKyAgICAgICAgTlNSYW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFuZ2Uo
cmFuZ2UubG9jYXRpb24gKyBjdXJyZW50UG9zaXRpb24gKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBt
aXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgc3BlbGxSYW5nZSk7Ci0gICAgICAgIAotICAgICAgICBp
ZiAobWFya2VyLmVuZE9mZnNldCA+IGVuZE9mZnNldCArIDEpCi0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5n
TGVuZ3RoKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xvY2F0aW9u
ICsgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIH0KIH0KIApAQCAtNDU5LDcgKzQ1Miw3IEBAIHN0
YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudCgKICAgICAgICAgW2F0dHJTdHJp
bmcgcmVtb3ZlQXR0cmlidXRlOmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiB9CiAKLXN0YXRpYyB2
b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywgTm9kZSogbm9kZSwgaW50IG9mZnNldCwgY29uc3QgVUNoYXIqIGNoYXJz
LCBpbnQgbGVuZ3RoKQorc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOb2RlKiBub2RlLCBjb25zdCBV
Q2hhciogY2hhcnMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gc2tpcCBpbnZpc2libGUgdGV4dAog
ICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKQEAgLTQ3OCw2ICs0NzEsNyBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0CiAKICAgICAvLyByZW1vdmUgaW5oZXJpdGVk
IGF0dGFjaG1lbnQgZnJvbSBwcmlvciBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRSZXBsYWNlZAog
ICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50
VGV4dEF0dHJpYnV0ZSByYW5nZTphdHRyU3RyaW5nUmFuZ2VdOworICAgIFthdHRyU3RyaW5nIHJl
bW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSByYW5n
ZTphdHRyU3RyaW5nUmFuZ2VdOwogICAgIAogICAgIC8vIHNldCBuZXcgYXR0cmlidXRlcwogICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwg
YXR0clN0cmluZ1JhbmdlKTsKQEAgLTQ4Niw3ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZWRTdHJpbmdBcHBlbmRUZXh0CiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUxpbmtUZXh0QXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZShub2RlKSwgYXR0clN0cmluZ1JhbmdlKTsKICAg
ICAKICAgICAvLyBkbyBzcGVsbGluZyBsYXN0IGJlY2F1c2UgaXQgdGVuZHMgdG8gYnJlYWsgdXAg
dGhlIHJhbmdlCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhhdHRyU3RyaW5nLCBu
b2RlLCBvZmZzZXQsIGF0dHJTdHJpbmdSYW5nZSk7CisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
cGVsbGluZyhhdHRyU3RyaW5nLCBub2RlLCBjaGFycywgbGVuZ3RoLCBhdHRyU3RyaW5nUmFuZ2Up
OwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKE5vZGUqIHJl
cGxhY2VkTm9kZSkKQEAgLTUzOCw5ICs1MzIsOSBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcqKWRv
QVhBdHRyaWJ1dGVkU3RyCiAgICAgICAgICAgICAvLyBBZGQgdGhlIHRleHQgb2YgdGhlIGxpc3Qg
bWFya2VyIGl0ZW0gaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJU
ZXh0ID0gbV9vYmplY3QtPmxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKG5vZGUsIFZp
c2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKICAgICAgICAgICAg
IGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIEFYQXR0cmli
dXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgbm9kZSwgb2Zmc2V0LCBsaXN0TWFya2Vy
VGV4dC5jaGFyYWN0ZXJzKCksIGxpc3RNYXJrZXJUZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsIG5vZGUsIGxpc3RN
YXJrZXJUZXh0LmNoYXJhY3RlcnMoKSwgbGlzdE1hcmtlclRleHQubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJp
bmcsIG5vZGUsIG9mZnNldCwgaXQuY2hhcmFjdGVycygpLCBpdC5sZW5ndGgoKSk7CisgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsIG5vZGUsIGl0LmNo
YXJhY3RlcnMoKSwgaXQubGVuZ3RoKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Tm9kZSogcmVwbGFjZWROb2RlID0gbm9kZS0+Y2hpbGROb2RlKG9mZnNldCk7CiAgICAgICAgICAg
ICBOU1N0cmluZyAqYXR0YWNobWVudFN0cmluZyA9IG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKHJl
cGxhY2VkTm9kZSk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjgxMykKKysrIFdlYktpdFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEwLTA3LTA4ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVg6IFJlcHJlc2VudCBtaXNzcGVsbGluZ3MgaW4g
QVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgxNworCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChhdHRyaWJ1dGVkU3Ry
aW5nRm9yUmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01p
c3NwZWxsZWRDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRK
U0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRH
dGsuY3BwOgorICAgICAgICAoYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKGF0
dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6
CisgICAgICAgIChhdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoYXR0cmlidXRl
ZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKwogMjAxMC0wNy0wOCAgSmF5IENpdmVsbGkgIDxq
Y2l2ZWxsaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkaW5nIG15c2Vs
ZiBhcyBhIGNvbW1pdHRlci4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MjY5MCkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDI5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHN0cmluZ0Zv
clJhbmdlQ2FsbGJhY2sKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgc3Ry
aW5nRGVzY3JpcHRpb24uZ2V0KCkpOyAgICAKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgYXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIHVuc2lnbmVkIGxvY2F0aW9uID0gVUlOVF9NQVgsIGxlbmd0aCA9IDA7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPT0gMikgeworICAgICAgICBsb2NhdGlvbiA9IEpTVmFsdWVUb051bWJl
cihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgICAgIGxlbmd0aCA9IEpT
VmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7CisgICAgfQor
ICAgIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdEZXNjcmlwdGlvbihBZG9w
dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZShsb2Nh
dGlvbiwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHN0
cmluZ0Rlc2NyaXB0aW9uLmdldCgpKTsgICAgCit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGF0dHJp
YnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IFVJTlRfTUFYLCBsZW5ndGggPSAw
OworICAgIGlmIChhcmd1bWVudENvdW50ID09IDIpIHsKKyAgICAgICAgbG9jYXRpb24gPSBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAgICBs
ZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24p
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRv
QVhFbGVtZW50KHRoaXNPYmplY3QpLT5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQo
bG9jYXRpb24sIGxlbmd0aCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBpbmRleE9mQ2hpbGRD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFyZ3VtZW50
Q291bnQgIT0gMSkKQEAgLTcxMSw2ICs3MzQsOCBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgImxpbmVGb3JJbmRleCIsIGxpbmVGb3JJbmRleENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImJvdW5kc0ZvclJhbmdlIiwgYm91bmRzRm9yUmFu
Z2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzdHJpbmdGb3JSYW5nZSIsIHN0cmluZ0Zv
clJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYXR0cmlidXRlZFN0cmluZ0ZvclJh
bmdlIiwgYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAiYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkIiwgYXR0cmlidXRlZFN0cmluZ1Jh
bmdlSXNNaXNzcGVsbGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2hpbGRBdEluZGV4
IiwgY2hpbGRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibGlua2VkVUlFbGVt
ZW50QXRJbmRleCIsIGxpbmtlZFVJRWxlbWVudEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJpbmRleE9mQ2hpbGQiLCBpbmRleE9mQ2hpbGRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaAkocmV2aXNpb24gNjI2OTApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw2ICsxNzcsOCBA
QCBwdWJsaWM6CiAgICAgSlNTdHJpbmdSZWYgYm91bmRzRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRp
b24sIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZSh1bnNp
Z25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdG
b3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgYm9vbCBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5z
aWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgLy8gVGFibGUtc3Bl
Y2lmaWMKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNlbGxGb3JDb2x1bW5BbmRSb3codW5z
aWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNw
cAkocmV2aXNpb24gNjI2OTApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSw2ICs0OTks
MTggQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaQogICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogfSAKIAorSlNTdHJpbmdSZWYg
YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Cit9CisKK2Jvb2wgYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBmYWxzZTsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5z
aWduZWQgcm93KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCShyZXZpc2lvbiA2MjY5MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NTUs
NiArODU1LDM3IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmkKICAg
ICByZXR1cm4gMDsKIH0KIAorSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOwor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3Ry
aW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5QXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJh
bWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcg
aXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIE5TU3RyaW5nKiBzdHJpbmdXaXRoQXR0cnMgPSBbc3RyaW5nIGRlc2Ny
aXB0aW9uXTsKKyAgICByZXR1cm4gW3N0cmluZ1dpdGhBdHRycyBjcmVhdGVKU1N0cmluZ1JlZl07
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3Bl
bGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2Ug
cmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZWRTdHJp
bmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZh
bHVlV2l0aFJhbmdlOnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05T
QXR0cmlidXRlZFN0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBO
U0RpY3Rpb25hcnkqIGF0dHJzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDowIGVmZmVjdGl2
ZVJhbmdlOm5pbF07CisgICAgaWYoW1thdHRycyBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5
TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGVdIGJvb2xWYWx1ZV0pCisgICAgICAgIHJldHVybiB0cnVl
OyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZD
b2x1bW5IZWFkZXJzKCkKIHsKICAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4gQXBwS2l0Li4uIG9k
ZApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gNjI2OTApCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1MCw2ICs0NTAsMTYgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaQogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIDApOwogfQogCitKU1N0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5z
aWduZWQsIHVuc2lnbmVkKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIDApOworfQorCitib29sIGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1
bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3co
dW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpCiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjgxMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA3LTA4ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQVg6IFJlcHJlc2VudCBtaXNzcGVsbGluZ3MgaW4gQVhBdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MTgxNworCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0
cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxlZC13aXRoLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0dHJp
YnV0ZWQtc3RyaW5nLWluY2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRy
aWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L21pc3NwZWxsZWQtYXR0cmlidXRlZC1zdHJpbmcuaHRtbDogQWRkZWQu
CisKIDIwMTAtMDctMDUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IE9saXZlciBIdW50LgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5jbHVk
ZXMtbWlzc3BlbGxlZC13aXRoLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmct
aW5jbHVkZXMtbWlzc3BlbGxlZC13aXRoLXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hdHRyaWJ1dGVk
LXN0cmluZy1pbmNsdWRlcy1taXNzcGVsbGVkLXdpdGgtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAord29yZCBtaXNwZWxsZWQgd29yZAorVGhpcyB0
ZXN0cyB0aGF0IGlmIHRoZSBjdXJzb3IgaXMgb24gYSBtaXNzcGVsbGVkIHdvcmQsIHRoZSBtaXNz
cGVsbGVkIG1hcmtlciB3aWxsIHN0aWxsIGJlIHJldHVybmVkIGZvciB0aGF0IHJhbmdlLiBUaGUg
dGVzdCBwbGFjZXMgc2VsZWN0aW9uIGluIHRoZSBtaWRkbGUgb2YgJ21pc3BlbGxlZCcgYW5kIHRo
ZW4gcXVlcmllcyBmb3IgdGhlIGF0dHJpYnV0ZWQgc3RyaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBhdHRyU3RyaW5nLmluZGV4T2YoJ0FYTWlzc3BlbGxlZCA9IDEn
KSAhPSAtMSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
YXR0cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxlZC13aXRoLXNlbGVjdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0
dHJpYnV0ZWQtc3RyaW5nLWluY2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0
dHJpYnV0ZWQtc3RyaW5nLWluY2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBjb250ZW50ZWRp
dGFibGU9dHJ1ZSBpZD0iY29udGVudCIgcm9sZT0idGV4dGJveCI+CisKK3dvcmQgbWlzcGVsbGVk
IHdvcmQKKworPC9kaXY+CisKKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgaWYgdGhlIGN1cnNvciBpcyBvbiBhIG1pc3NwZWxsZWQgd29yZCwgdGhlIG1pc3NwZWxs
ZWQgbWFya2VyIHdpbGwgc3RpbGwgYmUgcmV0dXJuZWQgZm9yIHRoYXQgcmFuZ2UuIFRoZSB0ZXN0
IHBsYWNlcyBzZWxlY3Rpb24gaW4gdGhlIG1pZGRsZSBvZiAnbWlzcGVsbGVkJyBhbmQgdGhlbiBx
dWVyaWVzIGZvciB0aGUgYXR0cmlidXRlZCBzdHJpbmcuIik7CisKKyAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgY29udGVudC5mb2N1cygpOworCisg
ICAgICAgIHZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICBzLnNldFBvc2l0
aW9uKGNvbnRlbnQsIDApOworICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDEwOyBrKyspIHsK
KyAgICAgICAgICAgIHMubW9kaWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAiY2hhcmFjdGVyIik7ICAg
CisgICAgICAgIH0KKworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgYXR0clN0cmluZyA9IHRleHQuYXR0cmlidXRl
ZFN0cmluZ0ZvclJhbmdlKDAsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuaW5u
ZXJUZXh0Lmxlbmd0aCk7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJhdHRyU3RyaW5nLmluZGV4
T2YoJ0FYTWlzc3BlbGxlZCA9IDEnKSAhPSAtMSIpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3Bl
bGxlZC1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVkLXN0
cmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9taXNzcGVsbGVkLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAord3JvZHMgaXMgbWlzc3BlbGxlZCBhYSBs
b3RzaSBub3dhZGF5cy4gZXVlcC4KK1RoaXMgdGVzdHMgdGhhdCBtaXNzcGVsbGVkIHdvcmRzIGFy
ZSBjb3JyZWN0bHkgbWFya2VkIHdoZW4gYXNraW5nIGZvciBhbiBhdHRyaWJ1dGVkIHN0cmluZy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGV4dC5zdHJpbmdGb3JSYW5n
ZSgwLCA1KSBpcyAnd3JvZHMnCitQQVNTIHRleHQuYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNz
cGVsbGVkKDAsIDUpIGlzIHRydWUKK1BBU1MgdGV4dC5zdHJpbmdGb3JSYW5nZSg2LCAyKSBpcyAn
aXMnCitQQVNTIHRleHQuYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKDYsIDIpIGlz
IGZhbHNlCitQQVNTIHRleHQuc3RyaW5nRm9yUmFuZ2UoOSwgMTApIGlzICdtaXNzcGVsbGVkJwor
UEFTUyB0ZXh0LmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCg5LCAxMCkgaXMgZmFs
c2UKK1BBU1MgdGV4dC5zdHJpbmdGb3JSYW5nZSgyMCwgMikgaXMgJ2FhJworUEFTUyB0ZXh0LmF0
dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCgyMCwgMikgaXMgdHJ1ZQorUEFTUyB0ZXh0
LnN0cmluZ0ZvclJhbmdlKDIzLCA1KSBpcyAnbG90c2knCitQQVNTIHRleHQuYXR0cmlidXRlZFN0
cmluZ1JhbmdlSXNNaXNzcGVsbGVkKDIzLCA1KSBpcyB0cnVlCitQQVNTIHRleHQuc3RyaW5nRm9y
UmFuZ2UoMjksIDgpIGlzICdub3dhZGF5cycKK1BBU1MgdGV4dC5hdHRyaWJ1dGVkU3RyaW5nUmFu
Z2VJc01pc3NwZWxsZWQoMjksIDgpIGlzIGZhbHNlCitQQVNTIHRleHQuc3RyaW5nRm9yUmFuZ2Uo
MzksIDUpIGlzICdldWVwLicKK1BBU1MgdGV4dC5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3Nw
ZWxsZWQoMzksIDUpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9taXNzcGVsbGVkLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVk
LXN0cmluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVkLXN0cmluZy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZT10cnVl
IGlkPSJjb250ZW50IiByb2xlPSJ0ZXh0Ym94Ij4KK3dyb2RzIGlzIG1pc3NwZWxsZWQgYWEgbG90
c2kgbm93YWRheXMuIGV1ZXAuCis8L2Rpdj4KKworCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBtaXNzcGVsbGVkIHdvcmRzIGFyZSBjb3JyZWN0bHkgbWFya2VkIHdo
ZW4gYXNraW5nIGZvciBhbiBhdHRyaWJ1dGVkIHN0cmluZy4iKTsKKworICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICBjb250ZW50LmZvY3VzKCk7CisK
KyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKKyAgICAgICAgLy8gd3JvZHMKKyAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yUmFu
Z2UoMCwgNSkiLCAiJ3dyb2RzJyIpOworICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYXR0cmli
dXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKDAsIDUpIik7CisKKyAgICAgICAgLy8gaXMKKyAg
ICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yUmFuZ2UoNiwgMikiLCAiJ2lzJyIpOworICAg
ICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0LmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxl
ZCg2LCAyKSIpOworCisgICAgICAgIC8vIG1pc3NwZWxsZWQKKyAgICAgICAgc2hvdWxkQmUoInRl
eHQuc3RyaW5nRm9yUmFuZ2UoOSwgMTApIiwgIidtaXNzcGVsbGVkJyIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJ0ZXh0LmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCg5LCAxMCki
KTsKKworICAgICAgICAvLyBhYQorICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JSYW5n
ZSgyMCwgMikiLCAiJ2FhJyIpOworICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYXR0cmlidXRl
ZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKDIwLCAyKSIpOworICAgCisgICAgICAgIC8vIGxvdHNp
CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclJhbmdlKDIzLCA1KSIsICInbG90c2kn
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01p
c3NwZWxsZWQoMjMsIDUpIik7CisKKyAgICAgICAgLy8gbm93YWRheXMKKyAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yUmFuZ2UoMjksIDgpIiwgIidub3dhZGF5cyciKTsKKyAgICAgICAg
c2hvdWxkQmVGYWxzZSgidGV4dC5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQoMjks
IDgpIik7CisKKyAgICAgICAgLy8gZXVlOQorICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdG
b3JSYW5nZSgzOSwgNSkiLCAiJ2V1ZXAuJyIpOworICAgICAgICBzaG91bGRCZVRydWUoInRleHQu
YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKDM5LCA1KSIpOworICAgIH0KKworICAg
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60965</attachid>
            <date>2010-07-08 14:51:22 -0700</date>
            <delta_ts>2010-07-24 20:31:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41817-20100708145121.patch</filename>
            <type>text/plain</type>
            <size>21830</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjgxMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDctMDggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogUmVwcmVzZW50IG1pc3NwZWxsaW5ncyBpbiBBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxODE3CisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0
dHJpYnV0ZWQtc3RyaW5nLWluY2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAor
ICAgICAgICAgICAgICAgcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRy
aWJ1dGVkLXN0cmluZy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3Bl
bGxpbmcpOgorICAgICAgICAoQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dCk6CisgICAgICAg
ICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlOl0pOgorCiAyMDEwLTA3LTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbQkocmV2aXNpb24gNjI3ODkpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSw3IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbi5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkVk
aXRvckNsaWVudC5oIgogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkhUTUxBbmNob3JFbGVt
ZW50LmgiCiAjaW1wb3J0ICJIVE1MQXJlYUVsZW1lbnQuaCIKQEAgLTM5MCwzMiArMzkxLDI0IEBA
IHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW8KICAgICAgICAgW2F0dHJT
dHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJp
YnV0ZSByYW5nZTpyYW5nZV07CiB9CiAKLXN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0
U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTm9kZSogbm9k
ZSwgaW50IG9mZnNldCwgTlNSYW5nZSByYW5nZSkKK3N0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3Ry
aW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTm9k
ZSogbm9kZSwgY29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgY2hhckxlbmd0aCwgTlNSYW5nZSByYW5n
ZSkKIHsKLSAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBub2RlLT5yZW5kZXJl
cigpLT5kb2N1bWVudCgpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKLSAgICBWZWN0b3I8RG9jdW1l
bnRNYXJrZXI+OjppdGVyYXRvciBtYXJrZXJJdCA9IG1hcmtlcnMuYmVnaW4oKTsKLQotICAgIHVu
c2lnbmVkIGVuZE9mZnNldCA9ICh1bnNpZ25lZClvZmZzZXQgKyByYW5nZS5sZW5ndGg7Ci0gICAg
Zm9yICggOyBtYXJrZXJJdCAhPSBtYXJrZXJzLmVuZCgpOyBtYXJrZXJJdCsrKSB7Ci0gICAgICAg
IERvY3VtZW50TWFya2VyIG1hcmtlciA9ICptYXJrZXJJdDsKLSAgICAgICAgCi0gICAgICAgIGlm
IChtYXJrZXIudHlwZSAhPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtYXJrZXIuZW5kT2Zmc2V0IDw9ICh1bnNp
Z25lZClvZmZzZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGlm
IChtYXJrZXIuc3RhcnRPZmZzZXQgPiBlbmRPZmZzZXQpCisgICAgLy8gQ2hlY2sgdGhlIHNwZWxs
aW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgpIGRvZXMgbm90IHN0
b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlzIGluIGEgd29yZC4K
KyAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+ZWRp
dG9yQ2xpZW50KCk7CisgICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKGNo
YXJMZW5ndGggPiAwKSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsg
Y3VycmVudFBvc2l0aW9uOworCisgICAgICAgIGludCBtaXNzcGVsbGluZ0xvY2F0aW9uID0gLTE7
CisgICAgICAgIGludCBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7CisgICAgICAgIGNsaWVudC0+Y2hl
Y2tTcGVsbGluZ09mU3RyaW5nKGNoYXJEYXRhLCBjaGFyTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRp
b24gPT0gLTEgfHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIAotICAgICAgICAvLyBhZGQgbWlzc3BlbGxpbmcgYXR0cmlidXRlIGZvciB0aGUgaW50ZXJz
ZWN0aW9uIG9mIHRoZSBtYXJrZXIgYW5kIHRoZSByYW5nZQotICAgICAgICBpbnQgclN0YXJ0ID0g
cmFuZ2UubG9jYXRpb24gKyAobWFya2VyLnN0YXJ0T2Zmc2V0IC0gb2Zmc2V0KTsKLSAgICAgICAg
aW50IHJMZW5ndGggPSBtaW4obWFya2VyLmVuZE9mZnNldCwgZW5kT2Zmc2V0KSAtIG1hcmtlci5z
dGFydE9mZnNldDsKLSAgICAgICAgTlNSYW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFuZ2UoclN0
YXJ0LCByTGVuZ3RoKTsKKyAgICAgICAgTlNSYW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFuZ2Uo
cmFuZ2UubG9jYXRpb24gKyBjdXJyZW50UG9zaXRpb24gKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBt
aXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgc3BlbGxSYW5nZSk7Ci0gICAgICAgIAotICAgICAgICBp
ZiAobWFya2VyLmVuZE9mZnNldCA+IGVuZE9mZnNldCArIDEpCi0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5n
TGVuZ3RoKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xvY2F0aW9u
ICsgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIH0KIH0KIApAQCAtNDU5LDcgKzQ1Miw3IEBAIHN0
YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudCgKICAgICAgICAgW2F0dHJTdHJp
bmcgcmVtb3ZlQXR0cmlidXRlOmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiB9CiAKLXN0YXRpYyB2
b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywgTm9kZSogbm9kZSwgaW50IG9mZnNldCwgY29uc3QgVUNoYXIqIGNoYXJz
LCBpbnQgbGVuZ3RoKQorc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOb2RlKiBub2RlLCBjb25zdCBV
Q2hhciogY2hhcnMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gc2tpcCBpbnZpc2libGUgdGV4dAog
ICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKQEAgLTQ3OCw2ICs0NzEsNyBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0CiAKICAgICAvLyByZW1vdmUgaW5oZXJpdGVk
IGF0dGFjaG1lbnQgZnJvbSBwcmlvciBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRSZXBsYWNlZAog
ICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50
VGV4dEF0dHJpYnV0ZSByYW5nZTphdHRyU3RyaW5nUmFuZ2VdOworICAgIFthdHRyU3RyaW5nIHJl
bW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSByYW5n
ZTphdHRyU3RyaW5nUmFuZ2VdOwogICAgIAogICAgIC8vIHNldCBuZXcgYXR0cmlidXRlcwogICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwg
YXR0clN0cmluZ1JhbmdlKTsKQEAgLTQ4Niw3ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZWRTdHJpbmdBcHBlbmRUZXh0CiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUxpbmtUZXh0QXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZShub2RlKSwgYXR0clN0cmluZ1JhbmdlKTsKICAg
ICAKICAgICAvLyBkbyBzcGVsbGluZyBsYXN0IGJlY2F1c2UgaXQgdGVuZHMgdG8gYnJlYWsgdXAg
dGhlIHJhbmdlCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhhdHRyU3RyaW5nLCBu
b2RlLCBvZmZzZXQsIGF0dHJTdHJpbmdSYW5nZSk7CisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
cGVsbGluZyhhdHRyU3RyaW5nLCBub2RlLCBjaGFycywgbGVuZ3RoLCBhdHRyU3RyaW5nUmFuZ2Up
OwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKE5vZGUqIHJl
cGxhY2VkTm9kZSkKQEAgLTUzOCw5ICs1MzIsOSBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcqKWRv
QVhBdHRyaWJ1dGVkU3RyCiAgICAgICAgICAgICAvLyBBZGQgdGhlIHRleHQgb2YgdGhlIGxpc3Qg
bWFya2VyIGl0ZW0gaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJU
ZXh0ID0gbV9vYmplY3QtPmxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKG5vZGUsIFZp
c2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKICAgICAgICAgICAg
IGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIEFYQXR0cmli
dXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgbm9kZSwgb2Zmc2V0LCBsaXN0TWFya2Vy
VGV4dC5jaGFyYWN0ZXJzKCksIGxpc3RNYXJrZXJUZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsIG5vZGUsIGxpc3RN
YXJrZXJUZXh0LmNoYXJhY3RlcnMoKSwgbGlzdE1hcmtlclRleHQubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJp
bmcsIG5vZGUsIG9mZnNldCwgaXQuY2hhcmFjdGVycygpLCBpdC5sZW5ndGgoKSk7CisgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsIG5vZGUsIGl0LmNo
YXJhY3RlcnMoKSwgaXQubGVuZ3RoKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Tm9kZSogcmVwbGFjZWROb2RlID0gbm9kZS0+Y2hpbGROb2RlKG9mZnNldCk7CiAgICAgICAgICAg
ICBOU1N0cmluZyAqYXR0YWNobWVudFN0cmluZyA9IG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKHJl
cGxhY2VkTm9kZSk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjgxMykKKysrIFdlYktpdFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEwLTA3LTA4ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVg6IFJlcHJlc2VudCBtaXNzcGVsbGluZ3MgaW4g
QVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgxNworCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChhdHRyaWJ1dGVkU3Ry
aW5nRm9yUmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01p
c3NwZWxsZWRDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRK
U0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRH
dGsuY3BwOgorICAgICAgICAoYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKGF0
dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6
CisgICAgICAgIChhdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoYXR0cmlidXRl
ZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKwogMjAxMC0wNy0wOCAgSmF5IENpdmVsbGkgIDxq
Y2l2ZWxsaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkaW5nIG15c2Vs
ZiBhcyBhIGNvbW1pdHRlci4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MjY5MCkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDI5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHN0cmluZ0Zv
clJhbmdlQ2FsbGJhY2sKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgc3Ry
aW5nRGVzY3JpcHRpb24uZ2V0KCkpOyAgICAKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgYXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIHVuc2lnbmVkIGxvY2F0aW9uID0gVUlOVF9NQVgsIGxlbmd0aCA9IDA7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPT0gMikgeworICAgICAgICBsb2NhdGlvbiA9IEpTVmFsdWVUb051bWJl
cihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgICAgIGxlbmd0aCA9IEpT
VmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7CisgICAgfQor
ICAgIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdEZXNjcmlwdGlvbihBZG9w
dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZShsb2Nh
dGlvbiwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHN0
cmluZ0Rlc2NyaXB0aW9uLmdldCgpKTsgICAgCit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGF0dHJp
YnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IFVJTlRfTUFYLCBsZW5ndGggPSAw
OworICAgIGlmIChhcmd1bWVudENvdW50ID09IDIpIHsKKyAgICAgICAgbG9jYXRpb24gPSBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAgICBs
ZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24p
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRv
QVhFbGVtZW50KHRoaXNPYmplY3QpLT5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQo
bG9jYXRpb24sIGxlbmd0aCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBpbmRleE9mQ2hpbGRD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFyZ3VtZW50
Q291bnQgIT0gMSkKQEAgLTcxMSw2ICs3MzQsOCBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgImxpbmVGb3JJbmRleCIsIGxpbmVGb3JJbmRleENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImJvdW5kc0ZvclJhbmdlIiwgYm91bmRzRm9yUmFu
Z2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzdHJpbmdGb3JSYW5nZSIsIHN0cmluZ0Zv
clJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYXR0cmlidXRlZFN0cmluZ0ZvclJh
bmdlIiwgYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAiYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkIiwgYXR0cmlidXRlZFN0cmluZ1Jh
bmdlSXNNaXNzcGVsbGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2hpbGRBdEluZGV4
IiwgY2hpbGRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibGlua2VkVUlFbGVt
ZW50QXRJbmRleCIsIGxpbmtlZFVJRWxlbWVudEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJpbmRleE9mQ2hpbGQiLCBpbmRleE9mQ2hpbGRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaAkocmV2aXNpb24gNjI2OTApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw2ICsxNzcsOCBA
QCBwdWJsaWM6CiAgICAgSlNTdHJpbmdSZWYgYm91bmRzRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRp
b24sIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZSh1bnNp
Z25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdG
b3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgYm9vbCBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5z
aWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgLy8gVGFibGUtc3Bl
Y2lmaWMKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNlbGxGb3JDb2x1bW5BbmRSb3codW5z
aWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNw
cAkocmV2aXNpb24gNjI2OTApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSw2ICs0OTks
MTggQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaQogICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogfSAKIAorSlNTdHJpbmdSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVk
LCB1bnNpZ25lZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVkIGxvY2F0
aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJl
dHVybiBmYWxzZTsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
CShyZXZpc2lvbiA2MjY5MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NTUsNiArODU1LDM3
IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmkKICAgICByZXR1cm4g
MDsKIH0KIAorSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
TlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5QXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05T
VmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZD
bGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIE5TU3RyaW5nKiBzdHJpbmdXaXRoQXR0cnMgPSBbc3RyaW5nIGRlc2NyaXB0aW9uXTsK
KyAgICByZXR1cm4gW3N0cmluZ1dpdGhBdHRycyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNp
Z25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBO
U01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5n
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJh
bmdlOnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRl
ZFN0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBOU0RpY3Rpb25h
cnkqIGF0dHJzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDowIGVmZmVjdGl2ZVJhbmdlOm5p
bF07CisgICAgaWYoW1thdHRycyBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxl
ZFRleHRBdHRyaWJ1dGVdIGJvb2xWYWx1ZV0pCisgICAgICAgIHJldHVybiB0cnVlOyAgICAKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBK
U1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFk
ZXJzKCkKIHsKICAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4gQXBwS2l0Li4uIG9kZApJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gNjI2OTApCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1MCw2ICs0NTAsMTYgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaQogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OwogfQogCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3Ry
aW5nRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKQoreworICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCwgdW5zaWduZWQp
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1
bnNpZ25lZCByb3cpCiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjgxMykK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEwLTA3LTA4ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVg6IFJlcHJlc2Vu
dCBtaXNzcGVsbGluZ3MgaW4gQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgxNworCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5j
bHVkZXMtbWlzc3BlbGxlZC13aXRoLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0dHJpYnV0ZWQtc3RyaW5nLWluY2x1
ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVkLXN0cmluZy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21p
c3NwZWxsZWQtYXR0cmlidXRlZC1zdHJpbmcuaHRtbDogQWRkZWQuCisKIDIwMTAtMDctMDUgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJl
ciBzdGFtcGVkIGJ5IE9saXZlciBIdW50LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxlZC13aXRo
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxl
ZC13aXRoLXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hdHRyaWJ1dGVkLXN0cmluZy1pbmNsdWRlcy1t
aXNzcGVsbGVkLXdpdGgtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMSBAQAord29yZCBtaXNwZWxsZWQgd29yZAorVGhpcyB0ZXN0cyB0aGF0IGlmIHRoZSBj
dXJzb3IgaXMgb24gYSBtaXNzcGVsbGVkIHdvcmQsIHRoZSBtaXNzcGVsbGVkIG1hcmtlciB3aWxs
IHN0aWxsIGJlIHJldHVybmVkIGZvciB0aGF0IHJhbmdlLiBUaGUgdGVzdCBwbGFjZXMgc2VsZWN0
aW9uIGluIHRoZSBtaWRkbGUgb2YgJ21pc3BlbGxlZCcgYW5kIHRoZW4gcXVlcmllcyBmb3IgdGhl
IGF0dHJpYnV0ZWQgc3RyaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBhdHRyU3RyaW5nLmluZGV4T2YoJ0FYTWlzc3BlbGxlZCA9IDEnKSAhPSAtMSBpcyB0cnVlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmct
aW5jbHVkZXMtbWlzc3BlbGxlZC13aXRoLXNlbGVjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0dHJpYnV0ZWQtc3RyaW5nLWlu
Y2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0dHJpYnV0ZWQtc3RyaW5nLWlu
Y2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBjb250ZW50ZWRpdGFibGU9dHJ1ZSBpZD0iY29u
dGVudCIgcm9sZT0idGV4dGJveCI+CisKK3dvcmQgbWlzcGVsbGVkIHdvcmQKKworPC9kaXY+CisK
KworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaWYgdGhlIGN1cnNv
ciBpcyBvbiBhIG1pc3NwZWxsZWQgd29yZCwgdGhlIG1pc3NwZWxsZWQgbWFya2VyIHdpbGwgc3Rp
bGwgYmUgcmV0dXJuZWQgZm9yIHRoYXQgcmFuZ2UuIFRoZSB0ZXN0IHBsYWNlcyBzZWxlY3Rpb24g
aW4gdGhlIG1pZGRsZSBvZiAnbWlzcGVsbGVkJyBhbmQgdGhlbiBxdWVyaWVzIGZvciB0aGUgYXR0
cmlidXRlZCBzdHJpbmcuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CisgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnRlbnQiKTsKKyAgICAgICAgY29udGVudC5mb2N1cygpOworCisgICAgICAgIHZhciBzID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICBzLnNldFBvc2l0aW9uKGNvbnRlbnQsIDApOwor
ICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDEwOyBrKyspIHsKKyAgICAgICAgICAgIHMubW9k
aWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAiY2hhcmFjdGVyIik7ICAgCisgICAgICAgIH0KKworICAg
ICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Owor
ICAgICAgICB2YXIgYXR0clN0cmluZyA9IHRleHQuYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAs
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuaW5uZXJUZXh0Lmxlbmd0aCk7CisK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJhdHRyU3RyaW5nLmluZGV4T2YoJ0FYTWlzc3BlbGxlZCA9
IDEnKSAhPSAtMSIpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVkLXN0
cmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9t
aXNzcGVsbGVkLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNCBAQAord3JvZHMgaXMgbWlzc3BlbGxlZCBhYSBsb3RzaSBub3dhZGF5cy4gZXVl
cC4KK1RoaXMgdGVzdHMgdGhhdCBtaXNzcGVsbGVkIHdvcmRzIGFyZSBjb3JyZWN0bHkgbWFya2Vk
IHdoZW4gYXNraW5nIGZvciBhbiBhdHRyaWJ1dGVkIHN0cmluZy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgdGV4dC5zdHJpbmdGb3JSYW5nZSgwLCA1KSBpcyAnd3JvZHMn
CitQQVNTIHRleHQuYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKDAsIDUpIGlzIHRy
dWUKK1BBU1MgdGV4dC5zdHJpbmdGb3JSYW5nZSg2LCAyKSBpcyAnaXMnCitQQVNTIHRleHQuYXR0
cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKDYsIDIpIGlzIGZhbHNlCitQQVNTIHRleHQu
c3RyaW5nRm9yUmFuZ2UoOSwgMTApIGlzICdtaXNzcGVsbGVkJworUEFTUyB0ZXh0LmF0dHJpYnV0
ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCg5LCAxMCkgaXMgZmFsc2UKK1BBU1MgdGV4dC5zdHJp
bmdGb3JSYW5nZSgyMCwgMikgaXMgJ2FhJworUEFTUyB0ZXh0LmF0dHJpYnV0ZWRTdHJpbmdSYW5n
ZUlzTWlzc3BlbGxlZCgyMCwgMikgaXMgdHJ1ZQorUEFTUyB0ZXh0LnN0cmluZ0ZvclJhbmdlKDIz
LCA1KSBpcyAnbG90c2knCitQQVNTIHRleHQuYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVs
bGVkKDIzLCA1KSBpcyB0cnVlCitQQVNTIHRleHQuc3RyaW5nRm9yUmFuZ2UoMjksIDgpIGlzICdu
b3dhZGF5cycKK1BBU1MgdGV4dC5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQoMjks
IDgpIGlzIGZhbHNlCitQQVNTIHRleHQuc3RyaW5nRm9yUmFuZ2UoMzksIDUpIGlzICdldWVwLicK
K1BBU1MgdGV4dC5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQoMzksIDUpIGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9taXNzcGVsbGVkLWF0
dHJpYnV0ZWQtc3RyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvbWlzc3BlbGxlZC1hdHRyaWJ1dGVkLXN0cmluZy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWlzc3Bl
bGxlZC1hdHRyaWJ1dGVkLXN0cmluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZT10cnVlIGlkPSJjb250ZW50IiByb2xl
PSJ0ZXh0Ym94Ij4KK3dyb2RzIGlzIG1pc3NwZWxsZWQgYWEgbG90c2kgbm93YWRheXMuIGV1ZXAu
Cis8L2Rpdj4KKworCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBt
aXNzcGVsbGVkIHdvcmRzIGFyZSBjb3JyZWN0bHkgbWFya2VkIHdoZW4gYXNraW5nIGZvciBhbiBh
dHRyaWJ1dGVkIHN0cmluZy4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29udGVudCIpOworICAgICAgICBjb250ZW50LmZvY3VzKCk7CisKKyAgICAgICAgdmFyIHRleHQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgLy8gd3Jv
ZHMKKyAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yUmFuZ2UoMCwgNSkiLCAiJ3dyb2Rz
JyIpOworICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNN
aXNzcGVsbGVkKDAsIDUpIik7CisKKyAgICAgICAgLy8gaXMKKyAgICAgICAgc2hvdWxkQmUoInRl
eHQuc3RyaW5nRm9yUmFuZ2UoNiwgMikiLCAiJ2lzJyIpOworICAgICAgICBzaG91bGRCZUZhbHNl
KCJ0ZXh0LmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCg2LCAyKSIpOworCisgICAg
ICAgIC8vIG1pc3NwZWxsZWQKKyAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yUmFuZ2Uo
OSwgMTApIiwgIidtaXNzcGVsbGVkJyIpOworICAgICAgICBzaG91bGRCZUZhbHNlKCJ0ZXh0LmF0
dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCg5LCAxMCkiKTsKKworICAgICAgICAvLyBh
YQorICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JSYW5nZSgyMCwgMikiLCAiJ2FhJyIp
OworICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNz
cGVsbGVkKDIwLCAyKSIpOworICAgCisgICAgICAgIC8vIGxvdHNpCisgICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclJhbmdlKDIzLCA1KSIsICInbG90c2knIik7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidGV4dC5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQoMjMsIDUpIik7
CisKKyAgICAgICAgLy8gbm93YWRheXMKKyAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9y
UmFuZ2UoMjksIDgpIiwgIidub3dhZGF5cyciKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgidGV4
dC5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQoMjksIDgpIik7CisKKyAgICAgICAg
Ly8gZXVlOQorICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JSYW5nZSgzOSwgNSkiLCAi
J2V1ZXAuJyIpOworICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYXR0cmlidXRlZFN0cmluZ1Jh
bmdlSXNNaXNzcGVsbGVkKDM5LCA1KSIpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62519</attachid>
            <date>2010-07-24 20:31:08 -0700</date>
            <delta_ts>2010-07-27 11:56:55 -0700</delta_ts>
            <desc>patch to test against other bots</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9715</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDAxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDctMjQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogTWlzc3BlbGxpbmdzIG5vdCBzaG93biBpbiBBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2Ugd2hlbiBzZWxlY3Rpb24gaXMgb24gd29yZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MTcKKworICAgICAgICBDaGFuZ2UgaG93
IG1pc3NwZWxsZWQgd29yZHMgYXJlIGlkZW50aWZpZWQgZm9yIGFjY2Vzc2liaWxpdHkuIE5vIGxv
bmdlciByZWx5IG9uIHRoZSAKKyAgICAgICAgY2FjaGVkIG1hcmtlcnMgaW4gRG9jdW1lbnQuIENh
bGN1bGF0ZSBvbiB0aGUgZmx5LCB3aGljaCBpcyBtb3JlIGFjY3VyYXRlIGluIGEgdmFyaWV0eSBv
ZiAKKyAgICAgICAgY2lyY3Vtc3RhbmNlcyAobGlrZSB3aGVuIHNlbGVjdGlvbiBoYXMgbm90IG1v
dmVkIGFjcm9zcyB3b3Jkcywgb2YgaWYgdGhlIGN1cnNvciBpcyBpbiB0aGUgbWlkZGxlCisgICAg
ICAgIG9mIGEgbWlzc3BlbGxlZCB3b3JkKS4gCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxlZC13aXRo
LXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxp
bmcpOgorICAgICAgICAoQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dCk6CisgICAgICAgICgt
W0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlOl0pOgorCiAyMDEwLTA3LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
bW0JKHJldmlzaW9uIDY0MDEyKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAog
I2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCisjaW1wb3J0ICJFZGl0b3JDbGll
bnQuaCIKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJIVE1MQW5jaG9yRWxlbWVudC5oIgog
I2ltcG9ydCAiSFRNTEFyZWFFbGVtZW50LmgiCkBAIC0zOTAsMzIgKzM5MSwyNCBAQAogICAgICAg
ICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxl
dmVsQXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKIH0KIAotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVT
dHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBO
b2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBOU1JhbmdlIHJhbmdlKQorc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLCBOb2RlKiBub2RlLCBjb25zdCBVQ2hhciogY2hhcnMsIGludCBjaGFyTGVuZ3RoLCBOU1Jh
bmdlIHJhbmdlKQogewotICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2VycyA9IG5vZGUt
PnJlbmRlcmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnNGb3JOb2RlKG5vZGUpOwotICAgIFZlY3Rv
cjxEb2N1bWVudE1hcmtlcj46Oml0ZXJhdG9yIG1hcmtlckl0ID0gbWFya2Vycy5iZWdpbigpOwor
ICAgIC8vIENoZWNrIHRoZSBzcGVsbGluZyBkaXJlY3RseSBzaW5jZSBkb2N1bWVudC0+bWFya2Vy
c0Zvck5vZGUoKSBkb2VzIG5vdCBzdG9yZSB0aGUgbWlzc3BlbGxlZCBtYXJraW5nIHdoZW4gdGhl
IGN1cnNvciBpcyBpbiBhIHdvcmQuCisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBub2RlLT5k
b2N1bWVudCgpLT5wYWdlKCktPmVkaXRvckNsaWVudCgpOworICAgIGludCBjdXJyZW50UG9zaXRp
b24gPSAwOworICAgIHdoaWxlIChjaGFyTGVuZ3RoID4gMCkgeworICAgICAgICBjb25zdCBVQ2hh
ciogY2hhckRhdGEgPSBjaGFycyArIGN1cnJlbnRQb3NpdGlvbjsKIAotICAgIHVuc2lnbmVkIGVu
ZE9mZnNldCA9ICh1bnNpZ25lZClvZmZzZXQgKyByYW5nZS5sZW5ndGg7Ci0gICAgZm9yICggOyBt
YXJrZXJJdCAhPSBtYXJrZXJzLmVuZCgpOyBtYXJrZXJJdCsrKSB7Ci0gICAgICAgIERvY3VtZW50
TWFya2VyIG1hcmtlciA9ICptYXJrZXJJdDsKLSAgICAgICAgCi0gICAgICAgIGlmIChtYXJrZXIu
dHlwZSAhPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChtYXJrZXIuZW5kT2Zmc2V0IDw9ICh1bnNpZ25lZClvZmZz
ZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtYXJrZXIu
c3RhcnRPZmZzZXQgPiBlbmRPZmZzZXQpCisgICAgICAgIGludCBtaXNzcGVsbGluZ0xvY2F0aW9u
ID0gLTE7CisgICAgICAgIGludCBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7CisgICAgICAgIGNsaWVu
dC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNoYXJEYXRhLCBjaGFyTGVuZ3RoLCAmbWlzc3BlbGxp
bmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1pc3NwZWxsaW5n
TG9jYXRpb24gPT0gLTEgfHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAotICAgICAgICAvLyBhZGQgbWlzc3BlbGxpbmcgYXR0cmlidXRlIGZvciB0aGUg
aW50ZXJzZWN0aW9uIG9mIHRoZSBtYXJrZXIgYW5kIHRoZSByYW5nZQotICAgICAgICBpbnQgclN0
YXJ0ID0gcmFuZ2UubG9jYXRpb24gKyAobWFya2VyLnN0YXJ0T2Zmc2V0IC0gb2Zmc2V0KTsKLSAg
ICAgICAgaW50IHJMZW5ndGggPSBtaW4obWFya2VyLmVuZE9mZnNldCwgZW5kT2Zmc2V0KSAtIG1h
cmtlci5zdGFydE9mZnNldDsKLSAgICAgICAgTlNSYW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFu
Z2UoclN0YXJ0LCByTGVuZ3RoKTsKKyAgICAgICAgTlNSYW5nZSBzcGVsbFJhbmdlID0gTlNNYWtl
UmFuZ2UocmFuZ2UubG9jYXRpb24gKyBjdXJyZW50UG9zaXRpb24gKyBtaXNzcGVsbGluZ0xvY2F0
aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVt
YmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgc3BlbGxSYW5nZSk7Ci0gICAgICAgIAotICAg
ICAgICBpZiAobWFya2VyLmVuZE9mZnNldCA+IGVuZE9mZnNldCArIDEpCi0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3Nw
ZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xv
Y2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIH0KIH0KIApAQCAtNDU5LDcgKzQ1Miw3
IEBACiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6
cmFuZ2VdOwogfQogCi1zdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5vZGUqIG5vZGUsIGludCBvZmZz
ZXQsIGNvbnN0IFVDaGFyKiBjaGFycywgaW50IGxlbmd0aCkKK3N0YXRpYyB2b2lkIEFYQXR0cmli
dXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmlu
ZywgTm9kZSogbm9kZSwgY29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgbGVuZ3RoKQogewogICAgIC8v
IHNraXAgaW52aXNpYmxlIHRleHQKICAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCkBAIC00Nzgs
NiArNDcxLDcgQEAKIAogICAgIC8vIHJlbW92ZSBpbmhlcml0ZWQgYXR0YWNobWVudCBmcm9tIHBy
aW9yIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFJlcGxhY2VkCiAgICAgW2F0dHJTdHJpbmcgcmVt
b3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnRUZXh0QXR0cmlidXRlIHJhbmdl
OmF0dHJTdHJpbmdSYW5nZV07CisgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNj
ZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07
CiAgICAgCiAgICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXRTdHlsZShhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOwpA
QCAtNDg2LDcgKzQ4MCw3IEBACiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eUxpbmtUZXh0QXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZShub2RlKSwgYXR0clN0cmluZ1JhbmdlKTsKICAgICAK
ICAgICAvLyBkbyBzcGVsbGluZyBsYXN0IGJlY2F1c2UgaXQgdGVuZHMgdG8gYnJlYWsgdXAgdGhl
IHJhbmdlCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhhdHRyU3RyaW5nLCBub2Rl
LCBvZmZzZXQsIGF0dHJTdHJpbmdSYW5nZSk7CisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyhhdHRyU3RyaW5nLCBub2RlLCBjaGFycywgbGVuZ3RoLCBhdHRyU3RyaW5nUmFuZ2UpOwog
fQogCiBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKE5vZGUqIHJlcGxh
Y2VkTm9kZSkKQEAgLTUzOCw5ICs1MzIsOSBAQAogICAgICAgICAgICAgLy8gQWRkIHRoZSB0ZXh0
IG9mIHRoZSBsaXN0IG1hcmtlciBpdGVtIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICAgIFN0cmlu
ZyBsaXN0TWFya2VyVGV4dCA9IG1fb2JqZWN0LT5saXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3Np
dGlvbihub2RlLCBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpKSk7
CiAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsIG5vZGUsIG9mZnNl
dCwgbGlzdE1hcmtlclRleHQuY2hhcmFjdGVycygpLCBsaXN0TWFya2VyVGV4dC5sZW5ndGgoKSk7
CisgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5n
LCBub2RlLCBsaXN0TWFya2VyVGV4dC5jaGFyYWN0ZXJzKCksIGxpc3RNYXJrZXJUZXh0Lmxlbmd0
aCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5k
VGV4dChhdHRyU3RyaW5nLCBub2RlLCBvZmZzZXQsIGl0LmNoYXJhY3RlcnMoKSwgaXQubGVuZ3Ro
KCkpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5n
LCBub2RlLCBpdC5jaGFyYWN0ZXJzKCksIGl0Lmxlbmd0aCgpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIE5vZGUqIHJlcGxhY2VkTm9kZSA9IG5vZGUtPmNoaWxkTm9kZShvZmZzZXQp
OwogICAgICAgICAgICAgTlNTdHJpbmcgKmF0dGFjaG1lbnRTdHJpbmcgPSBuc1N0cmluZ0ZvclJl
cGxhY2VkTm9kZShyZXBsYWNlZE5vZGUpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxlZC13aXRo
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxl
ZC13aXRoLXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hdHRyaWJ1dGVkLXN0cmluZy1pbmNsdWRlcy1t
aXNzcGVsbGVkLXdpdGgtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMSBAQAord29yZCBtaXNwZWxsZWQgd29yZAorVGhpcyB0ZXN0cyB0aGF0IGlmIHRoZSBj
dXJzb3IgaXMgb24gYSBtaXNzcGVsbGVkIHdvcmQsIHRoZSBtaXNzcGVsbGVkIG1hcmtlciB3aWxs
IHN0aWxsIGJlIHJldHVybmVkIGZvciB0aGF0IHJhbmdlLiBUaGUgdGVzdCBwbGFjZXMgc2VsZWN0
aW9uIGluIHRoZSBtaWRkbGUgb2YgJ21pc3BlbGxlZCcgYW5kIHRoZW4gcXVlcmllcyBmb3IgdGhl
IGF0dHJpYnV0ZWQgc3RyaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBhdHRyU3RyaW5nLmluZGV4T2YoJ0FYTWlzc3BlbGxlZCA9IDEnKSAhPSAtMSBpcyB0cnVlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmct
aW5jbHVkZXMtbWlzc3BlbGxlZC13aXRoLXNlbGVjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0dHJpYnV0ZWQtc3RyaW5nLWlu
Y2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2F0dHJpYnV0ZWQtc3RyaW5nLWlu
Y2x1ZGVzLW1pc3NwZWxsZWQtd2l0aC1zZWxlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBjb250ZW50ZWRpdGFibGU9dHJ1ZSBpZD0iY29u
dGVudCIgcm9sZT0idGV4dGJveCI+CisKK3dvcmQgbWlzcGVsbGVkIHdvcmQKKworPC9kaXY+CisK
KworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaWYgdGhlIGN1cnNv
ciBpcyBvbiBhIG1pc3NwZWxsZWQgd29yZCwgdGhlIG1pc3NwZWxsZWQgbWFya2VyIHdpbGwgc3Rp
bGwgYmUgcmV0dXJuZWQgZm9yIHRoYXQgcmFuZ2UuIFRoZSB0ZXN0IHBsYWNlcyBzZWxlY3Rpb24g
aW4gdGhlIG1pZGRsZSBvZiAnbWlzcGVsbGVkJyBhbmQgdGhlbiBxdWVyaWVzIGZvciB0aGUgYXR0
cmlidXRlZCBzdHJpbmcuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CisgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnRlbnQiKTsKKyAgICAgICAgY29udGVudC5mb2N1cygpOworCisgICAgICAgIHZhciBzID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICBzLnNldFBvc2l0aW9uKGNvbnRlbnQsIDApOwor
ICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDEwOyBrKyspIHsKKyAgICAgICAgICAgIHMubW9k
aWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAiY2hhcmFjdGVyIik7ICAgCisgICAgICAgIH0KKworICAg
ICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Owor
ICAgICAgICB2YXIgYXR0clN0cmluZyA9IHRleHQuYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAs
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuaW5uZXJUZXh0Lmxlbmd0aCk7CisK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJhdHRyU3RyaW5nLmluZGV4T2YoJ0FYTWlzc3BlbGxlZCA9
IDEnKSAhPSAtMSIpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNjQwMTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSwxNSBAQAogMjAxMC0wNy0yNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFYOiBNaXNzcGVsbGluZ3Mgbm90IHNob3duIGluIEFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSB3aGVuIHNlbGVjdGlvbiBpcyBvbiB3b3JkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgxNworCisgICAgICAgICogcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvYXR0cmlidXRlZC1zdHJpbmctaW5jbHVkZXMtbWlzc3BlbGxlZC13
aXRoLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2F0dHJpYnV0ZWQtc3RyaW5nLWluY2x1ZGVzLW1pc3NwZWxsZWQtd2l0
aC1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisKKzIwMTAtMDctMjQgIENocmlzIEZsZWl6YWNoICA8
Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIu
CiAKICAgICAgICAgQVg6IG5lZWQgYSBsYXlvdXQgdGVzdCB0ZXN0aW5nIG1pc3NwZWxsZWQgd29y
ZHMgaW4gYXR0cmlidXRlZCBzdHJpbmdzCg==
</data>
<flag name="review"
          id="50744"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>