<?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>47714</bug_id>
          
          <creation_ts>2010-10-15 01:44:27 -0700</creation_ts>
          <short_desc>Replace some String::format() usages by StringConcatenate in WebKit</short_desc>
          <delta_ts>2019-02-03 11:11:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          
          <blocked>30342</blocked>
    
    <blocked>18994</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294640</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 01:44:27 -0700</bug_when>
    <thetext>As done in patch 47664 for WebCore, do the same in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294641</commentid>
    <comment_count>1</comment_count>
      <attachid>70839</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 01:48:07 -0700</bug_when>
    <thetext>Created attachment 70839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294642</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-15 01:51:16 -0700</bug_when>
    <thetext>Attachment 70839 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/BackForwardListClientImpl.cpp:106:  url_string is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294643</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 01:54:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 70839 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
&gt; WebKit/chromium/src/BackForwardListClientImpl.cpp:106:  url_string is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
&gt; Total errors found: 1 in 14 files

I&apos;m not planing to rename existing variables in chromium code, I think it&apos;s safe to ignore this error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294648</commentid>
    <comment_count>4</comment_count>
      <attachid>70842</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 02:12:01 -0700</bug_when>
    <thetext>Created attachment 70842
Patch v2

Fix a typo s/char/UChar/ in the new StringTypeAdapter. Also changed my mind, renamed url_string to urlString, to have a green style bot result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294656</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-15 02:28:16 -0700</bug_when>
    <thetext>Attachment 70839 did not build on chromium:
Build output: http://queues.webkit.org/results/4462042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294664</commentid>
    <comment_count>6</comment_count>
      <attachid>70845</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 02:44:16 -0700</bug_when>
    <thetext>Created attachment 70845
Patch v3

Add explicit cast from WebString -&gt; String, attempting to fix the chromium build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294680</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-15 04:16:48 -0700</bug_when>
    <thetext>Attachment 70845 did not build on chromium:
Build output: http://queues.webkit.org/results/4455056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294687</commentid>
    <comment_count>8</comment_count>
      <attachid>70850</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 04:34:16 -0700</bug_when>
    <thetext>Created attachment 70850
Patch v4

Arrgl, missed another WebString -&gt; String conversion in WebPageSerializer. Fix and optimize it even further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294698</commentid>
    <comment_count>9</comment_count>
      <attachid>70854</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 05:12:05 -0700</bug_when>
    <thetext>Created attachment 70854
Patch v5

*sigh* Forgot to include JavaScriptCore changes. Added StringTypeAdapter&lt;UChar&gt; to avoid having to convert UChars, we can directly append them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294700</commentid>
    <comment_count>10</comment_count>
      <attachid>70854</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-15 05:21:21 -0700</bug_when>
    <thetext>Comment on attachment 70854
Patch v5

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

LGTM. r=me

&gt; WebKit/chromium/src/BackForwardListClientImpl.cpp:107
&gt; +    m_pendingHistoryItem = HistoryItem::create(urlString, String(), 0.0);

Please use 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294706</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-15 05:30:53 -0700</bug_when>
    <thetext>Committed r69850: &lt;http://trac.webkit.org/changeset/69850&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70839</attachid>
            <date>2010-10-15 01:48:07 -0700</date>
            <delta_ts>2010-10-15 02:12:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>KillStringFormatPart2.diff</filename>
            <type>text/plain</type>
            <size>16920</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMTUgIE5pa29s
YXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0
KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAqIHNyYy9C
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbDo6aXRlbUF0SW5kZXgpOgorICAgICAgICAqIHNyYy9EZWJ1Z2dlckFn
ZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpk
ZWJ1Z0RldGFjaCk6CisgICAgICAgICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlTWV0YUNo
YXJzZXREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxpemVyOjpn
ZW5lcmF0ZUJhc2VUYWdEZWNsYXJhdGlvbik6CisKIDIwMTAtMTAtMTQgIFdlaSBKaWEgIDx3amlh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDY5NzgzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9CYWNrRm9yd2FyZExp
c3RDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUg
IldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMiw5ICsxMDMsNyBAQCBIaXN0b3J5
SXRlbSogQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6CiAgICAgLy8gZGlmZmVyZW50bHkuICBJ
dCBzaG91bGQgcGVyaGFwcyBqdXN0IGFzayB0aGUgRnJhbWVMb2FkZXJDbGllbnQgdG8KICAgICAv
LyBwZXJmb3JtIHRob3NlIG5hdmlnYXRpb25zLgogCi0gICAgU3RyaW5nIHVybF9zdHJpbmcgPSBT
dHJpbmc6OmZvcm1hdCgKLSAgICAgICAgIiVzOi8vZ28vJWQiLCBiYWNrRm9yd2FyZE5hdmlnYXRp
b25TY2hlbWUsIGluZGV4KTsKLQorICAgIFN0cmluZyB1cmxfc3RyaW5nID0gbWFrZVN0cmluZyhi
YWNrRm9yd2FyZE5hdmlnYXRpb25TY2hlbWUsICI6Ly9nby8iLCBTdHJpbmc6Om51bWJlcihpbmRl
eCkpOwogICAgIG1fcGVuZGluZ0hpc3RvcnlJdGVtID0KICAgICAgICAgSGlzdG9yeUl0ZW06OmNy
ZWF0ZSh1cmxfc3RyaW5nLCBTdHJpbmcoKSwgMC4wKTsKICAgICByZXR1cm4gbV9wZW5kaW5nSGlz
dG9yeUl0ZW0uZ2V0KCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdl
bnRNYW5hZ2VyLmNwcAkocmV2aXNpb24gNjk3ODMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Rl
YnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAog
I2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTUzLDEwICsxNTQsOSBAQCB2b2lk
IERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpkZWJ1Z0RldGFjaChECiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgLy8gUmVtb3ZlIGFsbCBicmVha3BvaW50cyBzZXQgYnkgdGhlIGFnZW50Lgot
ICAgICAgV1RGOjpTdHJpbmcgY2xlYXJCcmVha3BvaW50R3JvdXBDbWQgPSBXVEY6OlN0cmluZzo6
Zm9ybWF0KAorICAgICAgU3RyaW5nIGNsZWFyQnJlYWtwb2ludEdyb3VwQ21kID0gbWFrZVN0cmlu
ZygKICAgICAgICAgICAie1wic2VxXCI6MSxcInR5cGVcIjpcInJlcXVlc3RcIixcImNvbW1hbmRc
IjpcImNsZWFyYnJlYWtwb2ludGdyb3VwXCIsIgotICAgICAgICAgICAgICAiXCJhcmd1bWVudHNc
Ijp7XCJncm91cElkXCI6JWR9fSIsCi0gICAgICAgICAgaG9zdElkKTsKKyAgICAgICAgICAgICAg
IlwiYXJndW1lbnRzXCI6e1wiZ3JvdXBJZFwiOiIsIFN0cmluZzo6bnVtYmVyKGhvc3RJZCksICJ9
fSIpOwogICAgICAgc2VuZENvbW1hbmRUb1Y4KGNsZWFyQnJlYWtwb2ludEdyb3VwQ21kLCBuZXcg
Q2FsbGVySWRXcmFwcGVyKCkpOwogCiAgICAgICBpZiAoaXNPbkJyZWFrcG9pbnQpIHsKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24gNjk3ODMp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTQsNyArMjE0LDYgQEAgU3RyaW5nIGtleWdlbk1lbnVNZWRpdW1HcmFkZUtleVNp
emUoKQogLy8gVXNlZCBpbiBJbWFnZURvY3VtZW50LmNwcCBhcyB0aGUgdGl0bGUgZm9yIHBhZ2Vz
IHdoZW4gdGhhdCBwYWdlIGlzIGFuIGltYWdlLgogU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICAvLyBOb3RlIHRoYXQg
d2UgY2Fubm90IHVzZSBTdHJpbmc6OmZvcm1hdCBiZWNhdXNlIGl0IHdvcmtzIGZvciBBU0NJSSBv
bmx5LgogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5hcHBlbmQoZmlsZW5h
bWUpOwogICAgIHJlc3VsdC5hcHBlbmQoIiAoIik7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBhZ2VTZXJpYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBhZ2VTZXJpYWxpemVyLmNwcAkocmV2aXNpb24gNjk3ODMpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIldlYlBhZ2VTZXJpYWxpemVyLmgiCiAKICNpbmNsdWRlICJLVVJMLmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXJDbGllbnQuaCIKQEAgLTQxLDYgKzQwLDggQEAKICNp
bmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDggKzYwLDcgQEAgYm9vbCBXZWJQYWdlU2VyaWFs
aXplcjo6c2VyaWFsaXplKFdlYkZyYQogCiBXZWJTdHJpbmcgV2ViUGFnZVNlcmlhbGl6ZXI6Omdl
bmVyYXRlTWV0YUNoYXJzZXREZWNsYXJhdGlvbihjb25zdCBXZWJTdHJpbmcmIGNoYXJzZXQpCiB7
Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCI8bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1U
eXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD0lc1wiPiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXJzZXQudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1s
OyBjaGFyc2V0PSIsIGNoYXJzZXQgLCAiXCI+Iik7CiB9CiAKIFdlYlN0cmluZyBXZWJQYWdlU2Vy
aWFsaXplcjo6Z2VuZXJhdGVNYXJrT2ZUaGVXZWJEZWNsYXJhdGlvbihjb25zdCBXZWJVUkwmIHVy
bCkKQEAgLTc0LDggKzc0LDggQEAgV2ViU3RyaW5nIFdlYlBhZ2VTZXJpYWxpemVyOjpnZW5lcmF0
ZUJhcwogewogICAgIFN0cmluZyB0YXJnZXREZWNsYXJhdGlvbjsKICAgICBpZiAoIWJhc2VUYXJn
ZXQuaXNFbXB0eSgpKQotICAgICAgICB0YXJnZXREZWNsYXJhdGlvbiA9IFN0cmluZzo6Zm9ybWF0
KCIgdGFyZ2V0PVwiJXNcIiIsIGJhc2VUYXJnZXQudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJu
IFN0cmluZzo6Zm9ybWF0KCI8YmFzZSBocmVmPVwiLlwiJXM+IiwgdGFyZ2V0RGVjbGFyYXRpb24u
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHRhcmdldERlY2xhcmF0aW9uID0gbWFrZVN0cmluZygi
IHRhcmdldD1cIiIsIGJhc2VUYXJnZXQgLCAiXCIiKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygi
PGJhc2UgaHJlZj1cIi5cIiIsIHRhcmdldERlY2xhcmF0aW9uLCAnPicpOwogfQogCiB9ICAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDUpCisrKyBXZWJLaXQvZWZsL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTE1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBTdHJpbmc6OmZvcm1h
dCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0ZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzE0CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
Z2VudE9TKToKKwogMjAxMC0xMC0xNCAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHBy
b2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDog
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAJKHJldmlzaW9uIDY5NzgzKQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNs
dWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAKICNpZiBQTEFURk9STShVTklYKQogI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+
CkBAIC05Miw3ICs5Myw3IEBAIHN0YXRpYyBTdHJpbmcgYWdlbnRPUygpCiAjZWxpZiBQTEFURk9S
TShVTklYKQogICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7CiAgICAgaWYgKHVuYW1lKCZuYW1lKSAh
PSAtMSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lzbmFt
ZSwgbmFtZS5tYWNoaW5lKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobmFtZS5zeXNuYW1l
LCAnICcsIG5hbWUubWFjaGluZSk7CiAKICAgICByZXR1cm4gIlVua25vd24iOwogI2VsaWYgUExB
VEZPUk0oV0lOX09TKQpJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODQ1KQorKysgV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMC0xNSAgTmlrb2xh
cyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHNvbWUgU3RyaW5nOjpmb3JtYXQo
KSB1c2FnZXMgYnkgU3RyaW5nQ29uY2F0ZW5hdGUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdE9TVmVyc2lvbik6CisgICAgICAg
ICh3ZWJraXRVc2VyQWdlbnQpOgorCiAyMDEwLTEwLTE0ICBKb29uZSBIdXIgIDxqb29uZUBrbGRw
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpJbmRleDogV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJl
dmlzaW9uIDY5NzgzKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlICJN
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdl
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgpAQCAtNjcsNiArNjYsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgi
CiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KQEAgLTExMTks
MTMgKzExMTksMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTAog
ICAgIGdfZnJlZShlcnJvclVSSSk7CiAKICAgICBpZiAoIWVycm9yRmlsZSkKLSAgICAgICAgY29u
dGVudCA9IFN0cmluZzo6Zm9ybWF0KCI8aHRtbD48Ym9keT4lczwvYm9keT48L2h0bWw+Iiwgd2Vi
RXJyb3ItPm1lc3NhZ2UpOworICAgICAgICBjb250ZW50ID0gbWFrZVN0cmluZygiPGh0bWw+PGJv
ZHk+Iiwgd2ViRXJyb3ItPm1lc3NhZ2UsICI8L2JvZHk+PC9odG1sPiIpOwogICAgIGVsc2Ugewog
ICAgICAgICBnYm9vbGVhbiBsb2FkZWQgPSBnX2ZpbGVfbG9hZF9jb250ZW50cyhlcnJvckZpbGUs
IDAsICZmaWxlQ29udGVudCwgMCwgMCwgMCk7CiAgICAgICAgIGlmICghbG9hZGVkKQotICAgICAg
ICAgICAgY29udGVudCA9IFN0cmluZzo6Zm9ybWF0KCI8aHRtbD48Ym9keT4lczwvYm9keT48L2h0
bWw+Iiwgd2ViRXJyb3ItPm1lc3NhZ2UpOworICAgICAgICAgICAgY29udGVudCA9IG1ha2VTdHJp
bmcoIjxodG1sPjxib2R5PiIsIHdlYkVycm9yLT5tZXNzYWdlLCAiPC9ib2R5PjwvaHRtbD4iKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGVudCA9IFN0cmluZzo6Zm9ybWF0KGZpbGVD
b250ZW50LCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgd2ViRXJyb3ItPm1lc3Nh
Z2UpOworICAgICAgICAgICAgY29udGVudCA9IG1ha2VTdHJpbmcoZmlsZUNvbnRlbnQsIGVycm9y
LmZhaWxpbmdVUkwoKSwgd2ViRXJyb3ItPm1lc3NhZ2UpOwogICAgIH0KIAogICAgIHdlYmtpdF93
ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nKG1fZnJhbWUsIGNvbnRlbnQudXRmOCgpLmRh
dGEoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAkocmV2aXNpb24gNjk3ODMpCisrKyBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDggKzMzLDggQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2lmIE9T
KFVOSVgpCkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIFN0cmluZyB3ZWJraXRPU1ZlcnNpb24o
KQogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICBpZiAodW5hbWUoJm5hbWUpICE9IC0x
KQotICAgICAgICB1YU9TVmVyc2lvbiA9IFN0cmluZzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lz
bmFtZSwgbmFtZS5tYWNoaW5lKTsKKyAgICAgICAgdWFPU1ZlcnNpb24gPSBtYWtlU3RyaW5nKG5h
bWUuc3lzbmFtZSwgJyAnLCBuYW1lLm1hY2hpbmUpOwogICAgIGVsc2UKICAgICAgICAgdWFPU1Zl
cnNpb24gPSBTdHJpbmcoIlVua25vd24iKTsKICNlbGlmIE9TKFdJTkRPV1MpCkBAIC0yMTgsOSAr
MjE4LDkgQEAgU3RyaW5nIHdlYmtpdFVzZXJBZ2VudCgpCiAgICAgLy8gV2UgbWVudGlvbiBTYWZh
cmkgc2luY2UgbWFueSBicm9rZW4gc2l0ZXMgY2hlY2sgZm9yIGl0IChPbW5pV2ViIGRvZXMgdGhp
cyB0b28pCiAgICAgLy8gV2UgcmUtdXNlIHRoZSBXZWJLaXQgdmVyc2lvbiwgdGhvdWdoIGl0IGRv
ZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVjaCBpbiBwcmFjdGljZQogCi0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBTdHJpbmcsIHVhVmVyc2lvbiwgKFN0cmluZzo6Zm9ybWF0KCIlZC4lZCsi
LCBXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfVVNFUl9BR0VOVF9NSU5P
Ul9WRVJTSU9OKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdGF0
aWNVQSwgKFN0cmluZzo6Zm9ybWF0KCJNb3ppbGxhLzUuMCAoJXM7IFU7ICVzOyAlcykgQXBwbGVX
ZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvJXMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYmtpdFBsYXRmb3JtKCkudXRmOCgpLmRhdGEoKSwgd2Via2l0T1NWZXJzaW9uKCkudXRm
OCgpLmRhdGEoKSwgZGVmYXVsdExhbmd1YWdlKCkudXRmOCgpLmRhdGEoKSwgdWFWZXJzaW9uLnV0
ZjgoKS5kYXRhKCksIHVhVmVyc2lvbi51dGY4KCkuZGF0YSgpKSkpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCB1YVZlcnNpb24sIChtYWtlU3RyaW5nKFN0cmluZzo6bnVt
YmVyKFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04pLCAnLicsIFN0cmluZzo6bnVtYmVy
KFdFQktJVF9VU0VSX0FHRU5UX01JTk9SX1ZFUlNJT04pLCAnKycpKSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0YXRpY1VBLCAobWFrZVN0cmluZygiTW96aWxsYS81
LjAgKCIsIHdlYmtpdFBsYXRmb3JtKCksICI7IFU7ICIsIHdlYmtpdE9TVmVyc2lvbigpLCAiOyAi
LCBkZWZhdWx0TGFuZ3VhZ2UoKSwgIikgQXBwbGVXZWJLaXQvIiwgdWFWZXJzaW9uKSArCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVN0cmluZygi
IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLyIsIHVhVmVyc2lvbikpKTsK
IAogICAgIHJldHVybiBzdGF0aWNVQTsKIH0KSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTg0NSkKKysrIFdl
YktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAt
MTAtMTUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0
cmluZzo6Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUpOgorICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBw
bGljYXRpb25OYW1lKToKKyAgICAgICAgKG9zVmVyc2lvbik6CisKIDIwMTAtMTAtMTQgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDY5NzgzKQorKysgV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw3IEBACiAjaW5jbHVk
ZSA8d2luZG93c3guaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiAvLyBTb2Z0IGxpbmsgZnVuY3Rpb25zIGZvciBnZXN0dXJlcyBhbmQgcGFubmluZyBmZWVkYmFj
awogU09GVF9MSU5LX0xJQlJBUlkoVVNFUjMyKTsKQEAgLTEyMDAsNyArMTIwMSw5IEBAIGJvb2wg
V2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWIKIAogU3RyaW5nIFdlYlZpZXc6OnN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0
aW9uTmFtZSkKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIk1vemlsbGEvNS4wIChXaW5k
b3dzOyBVOyAlczsgJXMpIEFwcGxlV2ViS2l0LyVzIChLSFRNTCwgbGlrZSBHZWNrbyklcyVzIiwg
b3NWZXJzaW9uKCkubGF0aW4xKCkuZGF0YSgpLCBkZWZhdWx0TGFuZ3VhZ2UoKS5sYXRpbjEoKS5k
YXRhKCksIHdlYktpdFZlcnNpb24oKS5sYXRpbjEoKS5kYXRhKCksIChhcHBsaWNhdGlvbk5hbWUu
bGVuZ3RoKCkgPyAiICIgOiAiIiksIGFwcGxpY2F0aW9uTmFtZS5sYXRpbjEoKS5kYXRhKCkpOwor
ICAgIGlmIChhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVN0
cmluZygiTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7ICIsIG9zVmVyc2lvbigpLCAiOyAiLCBkZWZh
dWx0TGFuZ3VhZ2UoKSwgIikgQXBwbGVXZWJLaXQvIiwgd2ViS2l0VmVyc2lvbigpLCAiIChLSFRN
TCwgbGlrZSBHZWNrbykiKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKFdp
bmRvd3M7IFU7ICIsIG9zVmVyc2lvbigpLCAiOyAiLCBkZWZhdWx0TGFuZ3VhZ2UoKSwgIikgQXBw
bGVXZWJLaXQvIiwgd2ViS2l0VmVyc2lvbigpLCAiIChLSFRNTCwgbGlrZSBHZWNrbykgIiwgYXBw
bGljYXRpb25OYW1lKTsKIH0KIAogUGFnZSogV2ViVmlldzo6cGFnZSgpCkBAIC0yMzEwLDExICsy
MzEzLDEwIEBAIHN0YXRpYyBTdHJpbmcgb3NWZXJzaW9uKCkKICAgICAgICAgICAgICAgICBvc1Zl
cnNpb24gPSAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmICh2ZXJzaW9uSW5mby5kd1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRGT1JNX1dJTjMyX05UKQot
ICAgICAgICBvc1ZlcnNpb24gPSBTdHJpbmc6OmZvcm1hdCgiV2luZG93cyBOVCAlZC4lZCIsIHZl
cnNpb25JbmZvLmR3TWFqb3JWZXJzaW9uLCB2ZXJzaW9uSW5mby5kd01pbm9yVmVyc2lvbik7Cisg
ICAgICAgIG9zVmVyc2lvbiA9IG1ha2VTdHJpbmcoIldpbmRvd3MgTlQgIiwgU3RyaW5nOjpudW1i
ZXIodmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24pLCAnLicsIFN0cmluZzo6bnVtYmVyKHZlcnNp
b25JbmZvLmR3TWlub3JWZXJzaW9uKSk7CiAKICAgICBpZiAoIW9zVmVyc2lvbi5sZW5ndGgoKSkK
LSAgICAgICAgb3NWZXJzaW9uID0gU3RyaW5nOjpmb3JtYXQoIldpbmRvd3MgJWQuJWQiLCB2ZXJz
aW9uSW5mby5kd01ham9yVmVyc2lvbiwgdmVyc2lvbkluZm8uZHdNaW5vclZlcnNpb24pOwotCisg
ICAgICAgIG9zVmVyc2lvbiA9IG1ha2VTdHJpbmcoIldpbmRvd3MgIiwgU3RyaW5nOjpudW1iZXIo
dmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24pLCAnLicsIFN0cmluZzo6bnVtYmVyKHZlcnNpb25J
bmZvLmR3TWlub3JWZXJzaW9uKSk7CiAgICAgcmV0dXJuIG9zVmVyc2lvbjsKIH0KIApJbmRleDog
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAko
cmV2aXNpb24gNjk3ODMpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOSwxMiArNDE5LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpCiB7Ci0gICAgLy8gRklYTUU6IFRoZSBzZXJp
ZXMgb2YgYXBwZW5kcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhIGNhbGwgdG8gU3RyaW5nOjpm
b3JtYXQoKQotICAgIC8vIHdoZW4gaXQgY2FuIGJlIGZpZ3VyZWQgb3V0IGhvdyB0byBnZXQgdGhl
IHVuaWNvZGUgZW0tZGFzaCB0byBzaG93IHVwLgotICAgIFN0cmluZyB0aXRsZSA9ICJXZWIgSW5z
cGVjdG9yICI7Ci0gICAgdGl0bGUuYXBwZW5kKChVQ2hhcikweDIwMTQpOyAvLyBlbS1kYXNoCi0g
ICAgdGl0bGUuYXBwZW5kKCcgJyk7Ci0gICAgdGl0bGUuYXBwZW5kKG1faW5zcGVjdGVkVVJMKTsK
KyAgICBTdHJpbmcgdGl0bGUgPSBtYWtlU3RyaW5nKCJXZWIgSW5zcGVjdG9yICIsIHN0YXRpY19j
YXN0PFVDaGFyPigweDIwMTQpLCAnICcsIG1faW5zcGVjdGVkVVJMKTsKICAgICA6OlNldFdpbmRv
d1RleHQobV9mcm9udGVuZEh3bmQsIHRpdGxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkpOwogfQogCkluZGV4OiBXZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODQ1KQorKysgV2ViS2l0L3dpbmNlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTEwLTE1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBTdHJpbmc6OmZvcm1h
dCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0ZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzE0CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHA6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6aW1hZ2VUaXRsZSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRTo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCk6CisKIDIwMTAtMDktMjggIEplbm4gQnJh
aXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1p
dHJ5IFRpdG92LgpJbmRleDogV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCShyZXZpc2lvbiA2OTc4MykKKysrIFdlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDE0ICsyNywxNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFLmgiCiAKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTWF0aEV4dHJhcy5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KIAotI2RlZmluZSBVSV9TVFJJTkcodGV4dCwgZGVzY2lwcmlvbikgdGV4dAotI2RlZmlu
ZSBVSV9TVFJJTkdfS0VZKHRleHQsIGtleSwgZGVzY2lwcmlvbikgdGV4dAorI2RlZmluZSBVSV9T
VFJJTkcodGV4dCwgZGVzY3JpcHRpb24pIHRleHQKKyNkZWZpbmUgVUlfU1RSSU5HX0tFWSh0ZXh0
LCBrZXksIGRlc2NyaXB0aW9uKSB0ZXh0CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC00ODksMTMgKzQ5MSwxMyBAQCBTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNyYXNo
ZWRQCiAKIFN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6aW1hZ2VUaXRsZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKSAKIHsKLSAgICBDU3RyaW5nIGZp
bGVuYW1lQ1N0cmluZyA9IGZpbGVuYW1lLnV0ZjgoKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoVUlfU1RSSU5HKCIlcyAlZFx4QzNceDk3JWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3Ig
YSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiks
IGZpbGVuYW1lQ1N0cmluZy5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Cisg
ICAgcmV0dXJuIFVJX1NUUklORyhtYWtlU3RyaW5nKGZpbGVuYW1lLCAnICcsIFN0cmluZzo6bnVt
YmVyKHNpemUud2lkdGgoKSksICJceEMzXHg5NyIsIFN0cmluZzo6bnVtYmVyKHNpemUuaGVpZ2h0
KCkpLCAiIHBpeGVscyIpLAorICAgICAgICAgICAgICAgICAgICAgIndpbmRvdyB0aXRsZSBmb3Ig
YSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIik7
CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6bXVsdGlwbGVGaWxlVXBsb2Fk
VGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewotICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dChVSV9TVFJJTkcoIiVkIGZpbGVzIiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2Yg
ZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRp
cGxlIGZpbGVzIiksIG51bWJlck9mRmlsZXMpOworICAgIHJldHVybiBVSV9TVFJJTkcobWFrZVN0
cmluZyhTdHJpbmc6Om51bWJlcihudW1iZXJPZkZpbGVzKSwgIiBmaWxlcyIpLCAiTGFiZWwgdG8g
ZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNv
bnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKTsKIH0KIAogU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFOjptZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70842</attachid>
            <date>2010-10-15 02:12:01 -0700</date>
            <delta_ts>2010-10-15 02:44:16 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>KillStringFormatPart2.diff</filename>
            <type>text/plain</type>
            <size>17000</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMTUgIE5pa29s
YXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0
KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAqIHNyYy9C
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbDo6aXRlbUF0SW5kZXgpOgorICAgICAgICAqIHNyYy9EZWJ1Z2dlckFn
ZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpk
ZWJ1Z0RldGFjaCk6CisgICAgICAgICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlTWV0YUNo
YXJzZXREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxpemVyOjpn
ZW5lcmF0ZUJhc2VUYWdEZWNsYXJhdGlvbik6CisKIDIwMTAtMTAtMTQgIFdlaSBKaWEgIDx3amlh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9CYWNrRm9yd2FyZExp
c3RDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUg
IldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMiwxMSArMTAzLDggQEAgSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OgogICAgIC8vIGRpZmZlcmVudGx5LiAg
SXQgc2hvdWxkIHBlcmhhcHMganVzdCBhc2sgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IHRvCiAgICAg
Ly8gcGVyZm9ybSB0aG9zZSBuYXZpZ2F0aW9ucy4KIAotICAgIFN0cmluZyB1cmxfc3RyaW5nID0g
U3RyaW5nOjpmb3JtYXQoCi0gICAgICAgICIlczovL2dvLyVkIiwgYmFja0ZvcndhcmROYXZpZ2F0
aW9uU2NoZW1lLCBpbmRleCk7Ci0KLSAgICBtX3BlbmRpbmdIaXN0b3J5SXRlbSA9Ci0gICAgICAg
IEhpc3RvcnlJdGVtOjpjcmVhdGUodXJsX3N0cmluZywgU3RyaW5nKCksIDAuMCk7CisgICAgU3Ry
aW5nIHVybFN0cmluZyA9IG1ha2VTdHJpbmcoYmFja0ZvcndhcmROYXZpZ2F0aW9uU2NoZW1lLCAi
Oi8vZ28vIiwgU3RyaW5nOjpudW1iZXIoaW5kZXgpKTsKKyAgICBtX3BlbmRpbmdIaXN0b3J5SXRl
bSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUodXJsU3RyaW5nLCBTdHJpbmcoKSwgMC4wKTsKICAgICBy
ZXR1cm4gbV9wZW5kaW5nSGlzdG9yeUl0ZW0uZ2V0KCk7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCShyZXZpc2lvbiA2OTg0NykKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC0xNTMsMTAgKzE1NCw5IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNo
KEQKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAvLyBSZW1vdmUgYWxsIGJyZWFrcG9p
bnRzIHNldCBieSB0aGUgYWdlbnQuCi0gICAgICBXVEY6OlN0cmluZyBjbGVhckJyZWFrcG9pbnRH
cm91cENtZCA9IFdURjo6U3RyaW5nOjpmb3JtYXQoCisgICAgICBTdHJpbmcgY2xlYXJCcmVha3Bv
aW50R3JvdXBDbWQgPSBtYWtlU3RyaW5nKAogICAgICAgICAgICJ7XCJzZXFcIjoxLFwidHlwZVwi
OlwicmVxdWVzdFwiLFwiY29tbWFuZFwiOlwiY2xlYXJicmVha3BvaW50Z3JvdXBcIiwiCi0gICAg
ICAgICAgICAgICJcImFyZ3VtZW50c1wiOntcImdyb3VwSWRcIjolZH19IiwKLSAgICAgICAgICBo
b3N0SWQpOworICAgICAgICAgICAgICAiXCJhcmd1bWVudHNcIjp7XCJncm91cElkXCI6IiwgU3Ry
aW5nOjpudW1iZXIoaG9zdElkKSwgIn19Iik7CiAgICAgICBzZW5kQ29tbWFuZFRvVjgoY2xlYXJC
cmVha3BvaW50R3JvdXBDbWQsIG5ldyBDYWxsZXJJZFdyYXBwZXIoKSk7CiAKICAgICAgIGlmIChp
c09uQnJlYWtwb2ludCkgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVk
U3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNiBAQCBTdHJpbmcga2V5
Z2VuTWVudU1lZGl1bUdyYWRlS2V5U2l6ZSgpCiAvLyBVc2VkIGluIEltYWdlRG9jdW1lbnQuY3Bw
IGFzIHRoZSB0aXRsZSBmb3IgcGFnZXMgd2hlbiB0aGF0IHBhZ2UgaXMgYW4gaW1hZ2UuCiBTdHJp
bmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogewotICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFN0cmluZzo6Zm9ybWF0IGJlY2F1
c2UgaXQgd29ya3MgZm9yIEFTQ0lJIG9ubHkuCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAg
ICAgcmVzdWx0LmFwcGVuZChmaWxlbmFtZSk7CiAgICAgcmVzdWx0LmFwcGVuZCgiICgiKTsKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCShyZXZpc2lvbiA2
OTg0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXIu
aCIKIAogI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlU2VyaWFsaXplckNsaWVudC5o
IgpAQCAtNDEsNiArNDAsOCBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZl
Y3Rvci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksOCArNjAs
NyBAQCBib29sIFdlYlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemUoV2ViRnJhCiAKIFdlYlN0cmlu
ZyBXZWJQYWdlU2VyaWFsaXplcjo6Z2VuZXJhdGVNZXRhQ2hhcnNldERlY2xhcmF0aW9uKGNvbnN0
IFdlYlN0cmluZyYgY2hhcnNldCkKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIjxtZXRh
IGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0
PSVzXCI+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldC51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlw
ZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9IiwgY2hhcnNldCAsICJcIj4iKTsKIH0K
IAogV2ViU3RyaW5nIFdlYlBhZ2VTZXJpYWxpemVyOjpnZW5lcmF0ZU1hcmtPZlRoZVdlYkRlY2xh
cmF0aW9uKGNvbnN0IFdlYlVSTCYgdXJsKQpAQCAtNzQsOCArNzQsOCBAQCBXZWJTdHJpbmcgV2Vi
UGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlQmFzCiB7CiAgICAgU3RyaW5nIHRhcmdldERlY2xhcmF0
aW9uOwogICAgIGlmICghYmFzZVRhcmdldC5pc0VtcHR5KCkpCi0gICAgICAgIHRhcmdldERlY2xh
cmF0aW9uID0gU3RyaW5nOjpmb3JtYXQoIiB0YXJnZXQ9XCIlc1wiIiwgYmFzZVRhcmdldC51dGY4
KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIjxiYXNlIGhyZWY9XCIuXCIl
cz4iLCB0YXJnZXREZWNsYXJhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgdGFyZ2V0RGVj
bGFyYXRpb24gPSBtYWtlU3RyaW5nKCIgdGFyZ2V0PVwiIiwgYmFzZVRhcmdldCAsICJcIiIpOwor
ICAgIHJldHVybiBtYWtlU3RyaW5nKCI8YmFzZSBocmVmPVwiLlwiIiwgdGFyZ2V0RGVjbGFyYXRp
b24sICc+Jyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdC9lZmwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA2
OTg0NykKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTAtMTAtMTUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGlu
IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDc3MTQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFnZW50T1MpOgorCiAyMDEwLTEwLTE0ICBSYWZhZWwgQW50
b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmIFBMQVRGT1JNKFVOSVgpCiAj
aW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KQEAgLTkyLDcgKzkzLDcgQEAgc3RhdGljIFN0cmluZyBh
Z2VudE9TKCkKICNlbGlmIFBMQVRGT1JNKFVOSVgpCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsK
ICAgICBpZiAodW5hbWUoJm5hbWUpICE9IC0xKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIiVzICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgICAgICByZXR1cm4g
bWFrZVN0cmluZyhuYW1lLnN5c25hbWUsICcgJywgbmFtZS5tYWNoaW5lKTsKIAogICAgIHJldHVy
biAiVW5rbm93biI7CiAjZWxpZiBQTEFURk9STShXSU5fT1MpCkluZGV4OiBXZWJLaXQvZ3RrL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4
NDcpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTEwLTE1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2Ugc29tZSBTdHJpbmc6OmZvcm1hdCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0ZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NzE0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2Fk
KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Vi
a2l0T1NWZXJzaW9uKToKKyAgICAgICAgKHdlYmtpdFVzZXJBZ2VudCk6CisKIDIwMTAtMTAtMTQg
IEpvb25lIEh1ciAgPGpvb25lQGtsZHAub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNiBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC02Nyw2ICs2Niw3IEBACiAjaW5jbHVkZSAid2Vi
a2l0d2VicG9saWN5ZGVjaXNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVk
ZSA8Z2lvL2dpby5oPgpAQCAtMTEyMCwxMyArMTEyMCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxMCiAgICAgZ19mcmVlKGVycm9yVVJJKTsKIAogICAgIGlmICgh
ZXJyb3JGaWxlKQotICAgICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxib2R5
PiVzPC9ib2R5PjwvaHRtbD4iLCB3ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGNvbnRlbnQg
PSBtYWtlU3RyaW5nKCI8aHRtbD48Ym9keT4iLCB3ZWJFcnJvci0+bWVzc2FnZSwgIjwvYm9keT48
L2h0bWw+Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIGdib29sZWFuIGxvYWRlZCA9IGdfZmlsZV9s
b2FkX2NvbnRlbnRzKGVycm9yRmlsZSwgMCwgJmZpbGVDb250ZW50LCAwLCAwLCAwKTsKICAgICAg
ICAgaWYgKCFsb2FkZWQpCi0gICAgICAgICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxo
dG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLCB3ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgICAg
ICAgICBjb250ZW50ID0gbWFrZVN0cmluZygiPGh0bWw+PGJvZHk+Iiwgd2ViRXJyb3ItPm1lc3Nh
Z2UsICI8L2JvZHk+PC9odG1sPiIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZW50
ID0gU3RyaW5nOjpmb3JtYXQoZmlsZUNvbnRlbnQsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCku
ZGF0YSgpLCB3ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgICAgICAgICBjb250ZW50ID0gbWFrZVN0
cmluZyhmaWxlQ29udGVudCwgZXJyb3IuZmFpbGluZ1VSTCgpLCB3ZWJFcnJvci0+bWVzc2FnZSk7
CiAgICAgfQogCiAgICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX2FsdGVybmF0ZV9zdHJpbmcobV9m
cmFtZSwgY29udGVudC51dGY4KCkuZGF0YSgpLCAwLCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgp
LmRhdGEoKSk7CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCShy
ZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CiAjaWYgT1MoVU5JWCkKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMg
U3RyaW5nIHdlYmtpdE9TVmVyc2lvbigpCiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAg
IGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCi0gICAgICAgIHVhT1NWZXJzaW9uID0gU3RyaW5nOjpm
b3JtYXQoIiVzICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgICAgICB1YU9T
VmVyc2lvbiA9IG1ha2VTdHJpbmcobmFtZS5zeXNuYW1lLCAnICcsIG5hbWUubWFjaGluZSk7CiAg
ICAgZWxzZQogICAgICAgICB1YU9TVmVyc2lvbiA9IFN0cmluZygiVW5rbm93biIpOwogI2VsaWYg
T1MoV0lORE9XUykKQEAgLTIxOCw5ICsyMTgsOSBAQCBTdHJpbmcgd2Via2l0VXNlckFnZW50KCkK
ICAgICAvLyBXZSBtZW50aW9uIFNhZmFyaSBzaW5jZSBtYW55IGJyb2tlbiBzaXRlcyBjaGVjayBm
b3IgaXQgKE9tbmlXZWIgZG9lcyB0aGlzIHRvbykKICAgICAvLyBXZSByZS11c2UgdGhlIFdlYktp
dCB2ZXJzaW9uLCB0aG91Z2ggaXQgZG9lc24ndCBzZWVtIHRvIG1hdHRlciBtdWNoIGluIHByYWN0
aWNlCiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdWFWZXJzaW9uLCAo
U3RyaW5nOjpmb3JtYXQoIiVkLiVkKyIsIFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04s
IFdFQktJVF9VU0VSX0FHRU5UX01JTk9SX1ZFUlNJT04pKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHN0YXRpY1VBLCAoU3RyaW5nOjpmb3JtYXQoIk1vemlsbGEvNS4w
ICglczsgVTsgJXM7ICVzKSBBcHBsZVdlYktpdC8lcyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNp
b24vNS4wIFNhZmFyaS8lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0UGxhdGZvcm0oKS51dGY4KCkuZGF0YSgp
LCB3ZWJraXRPU1ZlcnNpb24oKS51dGY4KCkuZGF0YSgpLCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4
KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEoKSwgdWFWZXJzaW9uLnV0ZjgoKS5kYXRh
KCkpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHVhVmVyc2lvbiwg
KG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lP
TiksICcuJywgU3RyaW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTiks
ICcrJykpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3RhdGljVUEs
IChtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwgd2Via2l0UGxhdGZvcm0oKSwgIjsgVTsgIiwg
d2Via2l0T1NWZXJzaW9uKCksICI7ICIsIGRlZmF1bHRMYW5ndWFnZSgpLCAiKSBBcHBsZVdlYktp
dC8iLCB1YVZlcnNpb24pICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYWtlU3RyaW5nKCIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBT
YWZhcmkvIiwgdWFWZXJzaW9uKSkpOwogCiAgICAgcmV0dXJuIHN0YXRpY1VBOwogfQpJbmRleDog
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMC0xNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1l
cm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBsYWNlIHNvbWUgU3RyaW5nOjpmb3JtYXQoKSB1c2FnZXMgYnkgU3RyaW5nQ29u
Y2F0ZW5hdGUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NzcxNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVX
aW5kb3dUaXRsZSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpz
dGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUpOgorICAgICAgICAob3NWZXJzaW9u
KToKKwogMjAxMC0xMC0xNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC93aW4v
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNp
b24gNjk4NDcpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTksNiArMTU5LDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzeC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIC8vIFNvZnQgbGluayBmdW5jdGlvbnMgZm9yIGdlc3R1
cmVzIGFuZCBwYW5uaW5nIGZlZWRiYWNrCiBTT0ZUX0xJTktfTElCUkFSWShVU0VSMzIpOwpAQCAt
MTIwMCw3ICsxMjAxLDkgQEAgYm9vbCBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdl
YgogCiBTdHJpbmcgV2ViVmlldzo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1l
KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lKQogewotICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgiTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7ICVzOyAlcykgQXBwbGVXZWJLaXQvJXMgKEtI
VE1MLCBsaWtlIEdlY2tvKSVzJXMiLCBvc1ZlcnNpb24oKS5sYXRpbjEoKS5kYXRhKCksIGRlZmF1
bHRMYW5ndWFnZSgpLmxhdGluMSgpLmRhdGEoKSwgd2ViS2l0VmVyc2lvbigpLmxhdGluMSgpLmRh
dGEoKSwgKGFwcGxpY2F0aW9uTmFtZS5sZW5ndGgoKSA/ICIgIiA6ICIiKSwgYXBwbGljYXRpb25O
YW1lLmxhdGluMSgpLmRhdGEoKSk7CisgICAgaWYgKGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgIiwg
b3NWZXJzaW9uKCksICI7ICIsIGRlZmF1bHRMYW5ndWFnZSgpLCAiKSBBcHBsZVdlYktpdC8iLCB3
ZWJLaXRWZXJzaW9uKCksICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKCJNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgIiwgb3NWZXJzaW9uKCksICI7ICIsIGRl
ZmF1bHRMYW5ndWFnZSgpLCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uKCksICIgKEtI
VE1MLCBsaWtlIEdlY2tvKSAiLCBhcHBsaWNhdGlvbk5hbWUpOwogfQogCiBQYWdlKiBXZWJWaWV3
OjpwYWdlKCkKQEAgLTIzMTAsMTEgKzIzMTMsMTAgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb24o
KQogICAgICAgICAgICAgICAgIG9zVmVyc2lvbiA9ICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHZlcnNpb25JbmZvLmR3UGxhdGZvcm1JZCA9PSBW
RVJfUExBVEZPUk1fV0lOMzJfTlQpCi0gICAgICAgIG9zVmVyc2lvbiA9IFN0cmluZzo6Zm9ybWF0
KCJXaW5kb3dzIE5UICVkLiVkIiwgdmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24sIHZlcnNpb25J
bmZvLmR3TWlub3JWZXJzaW9uKTsKKyAgICAgICAgb3NWZXJzaW9uID0gbWFrZVN0cmluZygiV2lu
ZG93cyBOVCAiLCBTdHJpbmc6Om51bWJlcih2ZXJzaW9uSW5mby5kd01ham9yVmVyc2lvbiksICcu
JywgU3RyaW5nOjpudW1iZXIodmVyc2lvbkluZm8uZHdNaW5vclZlcnNpb24pKTsKIAogICAgIGlm
ICghb3NWZXJzaW9uLmxlbmd0aCgpKQotICAgICAgICBvc1ZlcnNpb24gPSBTdHJpbmc6OmZvcm1h
dCgiV2luZG93cyAlZC4lZCIsIHZlcnNpb25JbmZvLmR3TWFqb3JWZXJzaW9uLCB2ZXJzaW9uSW5m
by5kd01pbm9yVmVyc2lvbik7Ci0KKyAgICAgICAgb3NWZXJzaW9uID0gbWFrZVN0cmluZygiV2lu
ZG93cyAiLCBTdHJpbmc6Om51bWJlcih2ZXJzaW9uSW5mby5kd01ham9yVmVyc2lvbiksICcuJywg
U3RyaW5nOjpudW1iZXIodmVyc2lvbkluZm8uZHdNaW5vclZlcnNpb24pKTsKICAgICByZXR1cm4g
b3NWZXJzaW9uOwogfQogCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIx
LDEyICs0MjEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95CiAK
IHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKIHsK
LSAgICAvLyBGSVhNRTogVGhlIHNlcmllcyBvZiBhcHBlbmRzIHNob3VsZCBiZSByZXBsYWNlZCB3
aXRoIGEgY2FsbCB0byBTdHJpbmc6OmZvcm1hdCgpCi0gICAgLy8gd2hlbiBpdCBjYW4gYmUgZmln
dXJlZCBvdXQgaG93IHRvIGdldCB0aGUgdW5pY29kZSBlbS1kYXNoIHRvIHNob3cgdXAuCi0gICAg
U3RyaW5nIHRpdGxlID0gIldlYiBJbnNwZWN0b3IgIjsKLSAgICB0aXRsZS5hcHBlbmQoKFVDaGFy
KTB4MjAxNCk7IC8vIGVtLWRhc2gKLSAgICB0aXRsZS5hcHBlbmQoJyAnKTsKLSAgICB0aXRsZS5h
cHBlbmQobV9pbnNwZWN0ZWRVUkwpOworICAgIFN0cmluZyB0aXRsZSA9IG1ha2VTdHJpbmcoIldl
YiBJbnNwZWN0b3IgIiwgc3RhdGljX2Nhc3Q8VUNoYXI+KDB4MjAxNCksICcgJywgbV9pbnNwZWN0
ZWRVUkwpOwogICAgIDo6U2V0V2luZG93VGV4dChtX2Zyb250ZW5kSHduZCwgdGl0bGUuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKSW5kZXg6IFdlYktpdC93aW5jZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4
NDcpCisrKyBXZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTAtMTAtMTUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGlu
IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDc3MTQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
LmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjppbWFnZVRpdGxlKToKKyAg
ICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KToK
KwogMjAxMC0wOS0yOCAgSmVubiBCcmFpdGh3YWl0ZSAgPGplbm5iQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4OiBXZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHJl
dmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE2IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaCIKIAogI2luY2x1ZGUgIkludFNpemUuaCIK
LSNpbmNsdWRlICJNYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCi0jZGVmaW5lIFVJX1NUUklORyh0ZXh0LCBk
ZXNjaXByaW9uKSB0ZXh0Ci0jZGVmaW5lIFVJX1NUUklOR19LRVkodGV4dCwga2V5LCBkZXNjaXBy
aW9uKSB0ZXh0CisjZGVmaW5lIFVJX1NUUklORyh0ZXh0LCBkZXNjcmlwdGlvbikgdGV4dAorI2Rl
ZmluZSBVSV9TVFJJTkdfS0VZKHRleHQsIGtleSwgZGVzY3JpcHRpb24pIHRleHQKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ4OSwxMyArNDkxLDEzIEBAIFN0cmluZyBQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6Y3Jhc2hlZFAKIAogU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dp
bkNFOjppbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNp
emUpIAogewotICAgIENTdHJpbmcgZmlsZW5hbWVDU3RyaW5nID0gZmlsZW5hbWUudXRmOCgpOwot
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdChVSV9TVFJJTkcoIiVzICVkXHhDM1x4OTclZCBwaXhl
bHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGlj
YXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDU3RyaW5nLmRhdGEoKSwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKG1ha2VTdHJpbmcoZmls
ZW5hbWUsICcgJywgU3RyaW5nOjpudW1iZXIoc2l6ZS53aWR0aCgpKSwgIlx4QzNceDk3IiwgU3Ry
aW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQoKSksICIgcGl4ZWxzIiksCisgICAgICAgICAgICAgICAg
ICAgICAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGlj
YXRpb24gc3ltYm9sLCBub3QgeCkiKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dp
bkNFOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCiB7Ci0g
ICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KFVJX1NUUklORygiJWQgZmlsZXMiLCAiTGFiZWwgdG8g
ZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNv
bnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZGaWxlcyk7CisgICAg
cmV0dXJuIFVJX1NUUklORyhtYWtlU3RyaW5nKFN0cmluZzo6bnVtYmVyKG51bWJlck9mRmlsZXMp
LCAiIGZpbGVzIiksICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVj
dGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIp
OwogfQogCiBTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6Om1lZGlhRWxlbWVudExvYWRp
bmdTdGF0ZVRleHQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70845</attachid>
            <date>2010-10-15 02:44:16 -0700</date>
            <delta_ts>2010-10-15 04:34:16 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>KillStringFormatPart2.diff</filename>
            <type>text/plain</type>
            <size>17027</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMTUgIE5pa29s
YXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0
KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAqIHNyYy9C
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbDo6aXRlbUF0SW5kZXgpOgorICAgICAgICAqIHNyYy9EZWJ1Z2dlckFn
ZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpk
ZWJ1Z0RldGFjaCk6CisgICAgICAgICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlTWV0YUNo
YXJzZXREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxpemVyOjpn
ZW5lcmF0ZUJhc2VUYWdEZWNsYXJhdGlvbik6CisKIDIwMTAtMTAtMTQgIFdlaSBKaWEgIDx3amlh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9CYWNrRm9yd2FyZExp
c3RDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUg
IldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMiwxMSArMTAzLDggQEAgSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OgogICAgIC8vIGRpZmZlcmVudGx5LiAg
SXQgc2hvdWxkIHBlcmhhcHMganVzdCBhc2sgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IHRvCiAgICAg
Ly8gcGVyZm9ybSB0aG9zZSBuYXZpZ2F0aW9ucy4KIAotICAgIFN0cmluZyB1cmxfc3RyaW5nID0g
U3RyaW5nOjpmb3JtYXQoCi0gICAgICAgICIlczovL2dvLyVkIiwgYmFja0ZvcndhcmROYXZpZ2F0
aW9uU2NoZW1lLCBpbmRleCk7Ci0KLSAgICBtX3BlbmRpbmdIaXN0b3J5SXRlbSA9Ci0gICAgICAg
IEhpc3RvcnlJdGVtOjpjcmVhdGUodXJsX3N0cmluZywgU3RyaW5nKCksIDAuMCk7CisgICAgU3Ry
aW5nIHVybFN0cmluZyA9IG1ha2VTdHJpbmcoYmFja0ZvcndhcmROYXZpZ2F0aW9uU2NoZW1lLCAi
Oi8vZ28vIiwgU3RyaW5nOjpudW1iZXIoaW5kZXgpKTsKKyAgICBtX3BlbmRpbmdIaXN0b3J5SXRl
bSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUodXJsU3RyaW5nLCBTdHJpbmcoKSwgMC4wKTsKICAgICBy
ZXR1cm4gbV9wZW5kaW5nSGlzdG9yeUl0ZW0uZ2V0KCk7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCShyZXZpc2lvbiA2OTg0NykKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC0xNTMsMTAgKzE1NCw5IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNo
KEQKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAvLyBSZW1vdmUgYWxsIGJyZWFrcG9p
bnRzIHNldCBieSB0aGUgYWdlbnQuCi0gICAgICBXVEY6OlN0cmluZyBjbGVhckJyZWFrcG9pbnRH
cm91cENtZCA9IFdURjo6U3RyaW5nOjpmb3JtYXQoCisgICAgICBTdHJpbmcgY2xlYXJCcmVha3Bv
aW50R3JvdXBDbWQgPSBtYWtlU3RyaW5nKAogICAgICAgICAgICJ7XCJzZXFcIjoxLFwidHlwZVwi
OlwicmVxdWVzdFwiLFwiY29tbWFuZFwiOlwiY2xlYXJicmVha3BvaW50Z3JvdXBcIiwiCi0gICAg
ICAgICAgICAgICJcImFyZ3VtZW50c1wiOntcImdyb3VwSWRcIjolZH19IiwKLSAgICAgICAgICBo
b3N0SWQpOworICAgICAgICAgICAgICAiXCJhcmd1bWVudHNcIjp7XCJncm91cElkXCI6IiwgU3Ry
aW5nOjpudW1iZXIoaG9zdElkKSwgIn19Iik7CiAgICAgICBzZW5kQ29tbWFuZFRvVjgoY2xlYXJC
cmVha3BvaW50R3JvdXBDbWQsIG5ldyBDYWxsZXJJZFdyYXBwZXIoKSk7CiAKICAgICAgIGlmIChp
c09uQnJlYWtwb2ludCkgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVk
U3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNiBAQCBTdHJpbmcga2V5
Z2VuTWVudU1lZGl1bUdyYWRlS2V5U2l6ZSgpCiAvLyBVc2VkIGluIEltYWdlRG9jdW1lbnQuY3Bw
IGFzIHRoZSB0aXRsZSBmb3IgcGFnZXMgd2hlbiB0aGF0IHBhZ2UgaXMgYW4gaW1hZ2UuCiBTdHJp
bmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogewotICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFN0cmluZzo6Zm9ybWF0IGJlY2F1
c2UgaXQgd29ya3MgZm9yIEFTQ0lJIG9ubHkuCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAg
ICAgcmVzdWx0LmFwcGVuZChmaWxlbmFtZSk7CiAgICAgcmVzdWx0LmFwcGVuZCgiICgiKTsKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCShyZXZpc2lvbiA2
OTg0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXIu
aCIKIAogI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlU2VyaWFsaXplckNsaWVudC5o
IgpAQCAtNDEsNiArNDAsOCBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZl
Y3Rvci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksOCArNjAs
NyBAQCBib29sIFdlYlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemUoV2ViRnJhCiAKIFdlYlN0cmlu
ZyBXZWJQYWdlU2VyaWFsaXplcjo6Z2VuZXJhdGVNZXRhQ2hhcnNldERlY2xhcmF0aW9uKGNvbnN0
IFdlYlN0cmluZyYgY2hhcnNldCkKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIjxtZXRh
IGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0
PSVzXCI+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldC51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlw
ZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Iiwgc3RhdGljX2Nhc3Q8Y29uc3QgU3Ry
aW5nJj4oY2hhcnNldCksICJcIj4iKTsKIH0KIAogV2ViU3RyaW5nIFdlYlBhZ2VTZXJpYWxpemVy
OjpnZW5lcmF0ZU1hcmtPZlRoZVdlYkRlY2xhcmF0aW9uKGNvbnN0IFdlYlVSTCYgdXJsKQpAQCAt
NzQsOCArNzQsOCBAQCBXZWJTdHJpbmcgV2ViUGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlQmFzCiB7
CiAgICAgU3RyaW5nIHRhcmdldERlY2xhcmF0aW9uOwogICAgIGlmICghYmFzZVRhcmdldC5pc0Vt
cHR5KCkpCi0gICAgICAgIHRhcmdldERlY2xhcmF0aW9uID0gU3RyaW5nOjpmb3JtYXQoIiB0YXJn
ZXQ9XCIlc1wiIiwgYmFzZVRhcmdldC51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIjxiYXNlIGhyZWY9XCIuXCIlcz4iLCB0YXJnZXREZWNsYXJhdGlvbi51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgdGFyZ2V0RGVjbGFyYXRpb24gPSBtYWtlU3RyaW5nKCIgdGFyZ2V0
PVwiIiwgYmFzZVRhcmdldCAsICJcIiIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCI8YmFzZSBo
cmVmPVwiLlwiIiwgdGFyZ2V0RGVjbGFyYXRpb24sICc+Jyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMTUgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0KCkgdXNh
Z2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFnZW50T1Mp
OgorCiAyMDEwLTEwLTE0ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9u
Lm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2
aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlZp
ZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aD4KIAogI2lmIFBMQVRGT1JNKFVOSVgpCiAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KQEAgLTky
LDcgKzkzLDcgQEAgc3RhdGljIFN0cmluZyBhZ2VudE9TKCkKICNlbGlmIFBMQVRGT1JNKFVOSVgp
CiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICBpZiAodW5hbWUoJm5hbWUpICE9IC0xKQot
ICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1l
Lm1hY2hpbmUpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhuYW1lLnN5c25hbWUsICcgJywg
bmFtZS5tYWNoaW5lKTsKIAogICAgIHJldHVybiAiVW5rbm93biI7CiAjZWxpZiBQTEFURk9STShX
SU5fT1MpCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEwLTE1ICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBTdHJpbmc6OmZvcm1hdCgpIHVzYWdl
cyBieSBTdHJpbmdDb25jYXRlbmF0ZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzE0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0T1NWZXJzaW9uKToKKyAgICAgICAgKHdlYmtp
dFVzZXJBZ2VudCk6CisKIDIwMTAtMTAtMTQgIEpvb25lIEh1ciAgPGpvb25lQGtsZHAub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24g
Njk4NDcpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIk1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC02
Nyw2ICs2Niw3IEBACiAjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgpAQCAtMTEyMCwxMyArMTEy
MCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMCiAgICAgZ19m
cmVlKGVycm9yVVJJKTsKIAogICAgIGlmICghZXJyb3JGaWxlKQotICAgICAgICBjb250ZW50ID0g
U3RyaW5nOjpmb3JtYXQoIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLCB3ZWJFcnJvci0+
bWVzc2FnZSk7CisgICAgICAgIGNvbnRlbnQgPSBtYWtlU3RyaW5nKCI8aHRtbD48Ym9keT4iLCB3
ZWJFcnJvci0+bWVzc2FnZSwgIjwvYm9keT48L2h0bWw+Iik7CiAgICAgZWxzZSB7CiAgICAgICAg
IGdib29sZWFuIGxvYWRlZCA9IGdfZmlsZV9sb2FkX2NvbnRlbnRzKGVycm9yRmlsZSwgMCwgJmZp
bGVDb250ZW50LCAwLCAwLCAwKTsKICAgICAgICAgaWYgKCFsb2FkZWQpCi0gICAgICAgICAgICBj
b250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLCB3
ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgICAgICAgICBjb250ZW50ID0gbWFrZVN0cmluZygiPGh0
bWw+PGJvZHk+Iiwgd2ViRXJyb3ItPm1lc3NhZ2UsICI8L2JvZHk+PC9odG1sPiIpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoZmlsZUNvbnRlbnQs
IGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci0+bWVzc2FnZSk7Cisg
ICAgICAgICAgICBjb250ZW50ID0gbWFrZVN0cmluZyhmaWxlQ29udGVudCwgZXJyb3IuZmFpbGlu
Z1VSTCgpLCB3ZWJFcnJvci0+bWVzc2FnZSk7CiAgICAgfQogCiAgICAgd2Via2l0X3dlYl9mcmFt
ZV9sb2FkX2FsdGVybmF0ZV9zdHJpbmcobV9mcmFtZSwgY29udGVudC51dGY4KCkuZGF0YSgpLCAw
LCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSk7CkluZGV4OiBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMs
OCBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIAogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaWYgT1MoVU5JWCkK
QEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYmtpdE9TVmVyc2lvbigpCiAKICAg
ICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCi0gICAg
ICAgIHVhT1NWZXJzaW9uID0gU3RyaW5nOjpmb3JtYXQoIiVzICVzIiwgbmFtZS5zeXNuYW1lLCBu
YW1lLm1hY2hpbmUpOworICAgICAgICB1YU9TVmVyc2lvbiA9IG1ha2VTdHJpbmcobmFtZS5zeXNu
YW1lLCAnICcsIG5hbWUubWFjaGluZSk7CiAgICAgZWxzZQogICAgICAgICB1YU9TVmVyc2lvbiA9
IFN0cmluZygiVW5rbm93biIpOwogI2VsaWYgT1MoV0lORE9XUykKQEAgLTIxOCw5ICsyMTgsOSBA
QCBTdHJpbmcgd2Via2l0VXNlckFnZW50KCkKICAgICAvLyBXZSBtZW50aW9uIFNhZmFyaSBzaW5j
ZSBtYW55IGJyb2tlbiBzaXRlcyBjaGVjayBmb3IgaXQgKE9tbmlXZWIgZG9lcyB0aGlzIHRvbykK
ICAgICAvLyBXZSByZS11c2UgdGhlIFdlYktpdCB2ZXJzaW9uLCB0aG91Z2ggaXQgZG9lc24ndCBz
ZWVtIHRvIG1hdHRlciBtdWNoIGluIHByYWN0aWNlCiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgdWFWZXJzaW9uLCAoU3RyaW5nOjpmb3JtYXQoIiVkLiVkKyIsIFdFQktJ
VF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04sIFdFQktJVF9VU0VSX0FHRU5UX01JTk9SX1ZFUlNJ
T04pKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0YXRpY1VBLCAo
U3RyaW5nOjpmb3JtYXQoIk1vemlsbGEvNS4wICglczsgVTsgJXM7ICVzKSBBcHBsZVdlYktpdC8l
cyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNhZmFyaS8lcyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
a2l0UGxhdGZvcm0oKS51dGY4KCkuZGF0YSgpLCB3ZWJraXRPU1ZlcnNpb24oKS51dGY4KCkuZGF0
YSgpLCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRh
dGEoKSwgdWFWZXJzaW9uLnV0ZjgoKS5kYXRhKCkpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHVhVmVyc2lvbiwgKG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIoV0VC
S0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTiksICcuJywgU3RyaW5nOjpudW1iZXIoV0VCS0lU
X1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTiksICcrJykpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IFN0cmluZywgc3RhdGljVUEsIChtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwg
d2Via2l0UGxhdGZvcm0oKSwgIjsgVTsgIiwgd2Via2l0T1NWZXJzaW9uKCksICI7ICIsIGRlZmF1
bHRMYW5ndWFnZSgpLCAiKSBBcHBsZVdlYktpdC8iLCB1YVZlcnNpb24pICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlU3RyaW5nKCIgKEtIVE1M
LCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvIiwgdWFWZXJzaW9uKSkpOwogCiAgICAg
cmV0dXJuIHN0YXRpY1VBOwogfQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMC0xNSAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHNvbWUgU3RyaW5nOjpm
b3JtYXQoKSB1c2FnZXMgYnkgU3RyaW5nQ29uY2F0ZW5hdGUgaW4gV2ViS2l0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNAorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSk6CisgICAgICAgICogV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUpOgorICAgICAgICAob3NWZXJzaW9uKToKKwogMjAxMC0xMC0xNCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDcgQEAKICNpbmNsdWRlIDx3aW5k
b3dzeC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIC8vIFNv
ZnQgbGluayBmdW5jdGlvbnMgZm9yIGdlc3R1cmVzIGFuZCBwYW5uaW5nIGZlZWRiYWNrCiBTT0ZU
X0xJTktfTElCUkFSWShVU0VSMzIpOwpAQCAtMTIwMCw3ICsxMjAxLDkgQEAgYm9vbCBXZWJWaWV3
OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYgogCiBTdHJpbmcgV2ViVmlldzo6c3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
KQogewotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7
ICVzOyAlcykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tvKSVzJXMiLCBvc1ZlcnNp
b24oKS5sYXRpbjEoKS5kYXRhKCksIGRlZmF1bHRMYW5ndWFnZSgpLmxhdGluMSgpLmRhdGEoKSwg
d2ViS2l0VmVyc2lvbigpLmxhdGluMSgpLmRhdGEoKSwgKGFwcGxpY2F0aW9uTmFtZS5sZW5ndGgo
KSA/ICIgIiA6ICIiKSwgYXBwbGljYXRpb25OYW1lLmxhdGluMSgpLmRhdGEoKSk7CisgICAgaWYg
KGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJN
b3ppbGxhLzUuMCAoV2luZG93czsgVTsgIiwgb3NWZXJzaW9uKCksICI7ICIsIGRlZmF1bHRMYW5n
dWFnZSgpLCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uKCksICIgKEtIVE1MLCBsaWtl
IEdlY2tvKSIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoV2luZG93czsg
VTsgIiwgb3NWZXJzaW9uKCksICI7ICIsIGRlZmF1bHRMYW5ndWFnZSgpLCAiKSBBcHBsZVdlYktp
dC8iLCB3ZWJLaXRWZXJzaW9uKCksICIgKEtIVE1MLCBsaWtlIEdlY2tvKSAiLCBhcHBsaWNhdGlv
bk5hbWUpOwogfQogCiBQYWdlKiBXZWJWaWV3OjpwYWdlKCkKQEAgLTIzMTAsMTEgKzIzMTMsMTAg
QEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb24oKQogICAgICAgICAgICAgICAgIG9zVmVyc2lvbiA9
ICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHZl
cnNpb25JbmZvLmR3UGxhdGZvcm1JZCA9PSBWRVJfUExBVEZPUk1fV0lOMzJfTlQpCi0gICAgICAg
IG9zVmVyc2lvbiA9IFN0cmluZzo6Zm9ybWF0KCJXaW5kb3dzIE5UICVkLiVkIiwgdmVyc2lvbklu
Zm8uZHdNYWpvclZlcnNpb24sIHZlcnNpb25JbmZvLmR3TWlub3JWZXJzaW9uKTsKKyAgICAgICAg
b3NWZXJzaW9uID0gbWFrZVN0cmluZygiV2luZG93cyBOVCAiLCBTdHJpbmc6Om51bWJlcih2ZXJz
aW9uSW5mby5kd01ham9yVmVyc2lvbiksICcuJywgU3RyaW5nOjpudW1iZXIodmVyc2lvbkluZm8u
ZHdNaW5vclZlcnNpb24pKTsKIAogICAgIGlmICghb3NWZXJzaW9uLmxlbmd0aCgpKQotICAgICAg
ICBvc1ZlcnNpb24gPSBTdHJpbmc6OmZvcm1hdCgiV2luZG93cyAlZC4lZCIsIHZlcnNpb25JbmZv
LmR3TWFqb3JWZXJzaW9uLCB2ZXJzaW9uSW5mby5kd01pbm9yVmVyc2lvbik7Ci0KKyAgICAgICAg
b3NWZXJzaW9uID0gbWFrZVN0cmluZygiV2luZG93cyAiLCBTdHJpbmc6Om51bWJlcih2ZXJzaW9u
SW5mby5kd01ham9yVmVyc2lvbiksICcuJywgU3RyaW5nOjpudW1iZXIodmVyc2lvbkluZm8uZHdN
aW5vclZlcnNpb24pKTsKICAgICByZXR1cm4gb3NWZXJzaW9uOwogfQogCkluZGV4OiBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lv
biA2OTg0NykKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIxLDEyICs0MjEsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpkZXN0cm95CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKIHsKLSAgICAvLyBGSVhNRTogVGhlIHNlcmllcyBvZiBh
cHBlbmRzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgY2FsbCB0byBTdHJpbmc6OmZvcm1hdCgp
Ci0gICAgLy8gd2hlbiBpdCBjYW4gYmUgZmlndXJlZCBvdXQgaG93IHRvIGdldCB0aGUgdW5pY29k
ZSBlbS1kYXNoIHRvIHNob3cgdXAuCi0gICAgU3RyaW5nIHRpdGxlID0gIldlYiBJbnNwZWN0b3Ig
IjsKLSAgICB0aXRsZS5hcHBlbmQoKFVDaGFyKTB4MjAxNCk7IC8vIGVtLWRhc2gKLSAgICB0aXRs
ZS5hcHBlbmQoJyAnKTsKLSAgICB0aXRsZS5hcHBlbmQobV9pbnNwZWN0ZWRVUkwpOworICAgIFN0
cmluZyB0aXRsZSA9IG1ha2VTdHJpbmcoIldlYiBJbnNwZWN0b3IgIiwgc3RhdGljX2Nhc3Q8VUNo
YXI+KDB4MjAxNCksICcgJywgbV9pbnNwZWN0ZWRVUkwpOwogICAgIDo6U2V0V2luZG93VGV4dCht
X2Zyb250ZW5kSHduZCwgdGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9
CiAKSW5kZXg6IFdlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvd2luY2UvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTAtMTUgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0KCkgdXNh
Z2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFOjppbWFnZVRpdGxlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
OjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KToKKwogMjAxMC0wOS0yOCAgSmVubiBCcmFpdGh3YWl0
ZSAgPGplbm5iQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0
b3YuCkluZGV4OiBXZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTQgKzI3LDE2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Uu
aCIKIAogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJNYXRoRXh0cmFzLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsdWdpbkRh
dGFiYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
Ci0jZGVmaW5lIFVJX1NUUklORyh0ZXh0LCBkZXNjaXByaW9uKSB0ZXh0Ci0jZGVmaW5lIFVJX1NU
UklOR19LRVkodGV4dCwga2V5LCBkZXNjaXByaW9uKSB0ZXh0CisjZGVmaW5lIFVJX1NUUklORyh0
ZXh0LCBkZXNjcmlwdGlvbikgdGV4dAorI2RlZmluZSBVSV9TVFJJTkdfS0VZKHRleHQsIGtleSwg
ZGVzY3JpcHRpb24pIHRleHQKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ4OSwx
MyArNDkxLDEzIEBAIFN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3Jhc2hlZFAKIAog
U3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjppbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpIAogewotICAgIENTdHJpbmcgZmlsZW5hbWVD
U3RyaW5nID0gZmlsZW5hbWUudXRmOCgpOwotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdChVSV9T
VFJJTkcoIiVzICVkXHhDM1x4OTclZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5k
YWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5h
bWVDU3RyaW5nLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICByZXR1
cm4gVUlfU1RSSU5HKG1ha2VTdHJpbmcoZmlsZW5hbWUsICcgJywgU3RyaW5nOjpudW1iZXIoc2l6
ZS53aWR0aCgpKSwgIlx4QzNceDk3IiwgU3RyaW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQoKSksICIg
cGl4ZWxzIiksCisgICAgICAgICAgICAgICAgICAgICAid2luZG93IHRpdGxlIGZvciBhIHN0YW5k
YWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKTsKIH0KIAog
U3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVu
c2lnbmVkIG51bWJlck9mRmlsZXMpCiB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KFVJX1NU
UklORygiJWQgZmlsZXMiLCAiTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBz
ZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmls
ZXMiKSwgbnVtYmVyT2ZGaWxlcyk7CisgICAgcmV0dXJuIFVJX1NUUklORyhtYWtlU3RyaW5nKFN0
cmluZzo6bnVtYmVyKG51bWJlck9mRmlsZXMpLCAiIGZpbGVzIiksICJMYWJlbCB0byBkZXNjcmli
ZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0
aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpOwogfQogCiBTdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0U6Om1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70850</attachid>
            <date>2010-10-15 04:34:16 -0700</date>
            <delta_ts>2010-10-15 05:12:05 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>KillStringFormatPart2.diff</filename>
            <type>text/plain</type>
            <size>17155</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMTUgIE5pa29s
YXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0
KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAqIHNyYy9C
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbDo6aXRlbUF0SW5kZXgpOgorICAgICAgICAqIHNyYy9EZWJ1Z2dlckFn
ZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpk
ZWJ1Z0RldGFjaCk6CisgICAgICAgICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlTWV0YUNo
YXJzZXREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxpemVyOjpn
ZW5lcmF0ZUJhc2VUYWdEZWNsYXJhdGlvbik6CisKIDIwMTAtMTAtMTQgIFdlaSBKaWEgIDx3amlh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9CYWNrRm9yd2FyZExp
c3RDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUg
IldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMiwxMSArMTAzLDggQEAgSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OgogICAgIC8vIGRpZmZlcmVudGx5LiAg
SXQgc2hvdWxkIHBlcmhhcHMganVzdCBhc2sgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IHRvCiAgICAg
Ly8gcGVyZm9ybSB0aG9zZSBuYXZpZ2F0aW9ucy4KIAotICAgIFN0cmluZyB1cmxfc3RyaW5nID0g
U3RyaW5nOjpmb3JtYXQoCi0gICAgICAgICIlczovL2dvLyVkIiwgYmFja0ZvcndhcmROYXZpZ2F0
aW9uU2NoZW1lLCBpbmRleCk7Ci0KLSAgICBtX3BlbmRpbmdIaXN0b3J5SXRlbSA9Ci0gICAgICAg
IEhpc3RvcnlJdGVtOjpjcmVhdGUodXJsX3N0cmluZywgU3RyaW5nKCksIDAuMCk7CisgICAgU3Ry
aW5nIHVybFN0cmluZyA9IG1ha2VTdHJpbmcoYmFja0ZvcndhcmROYXZpZ2F0aW9uU2NoZW1lLCAi
Oi8vZ28vIiwgU3RyaW5nOjpudW1iZXIoaW5kZXgpKTsKKyAgICBtX3BlbmRpbmdIaXN0b3J5SXRl
bSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUodXJsU3RyaW5nLCBTdHJpbmcoKSwgMC4wKTsKICAgICBy
ZXR1cm4gbV9wZW5kaW5nSGlzdG9yeUl0ZW0uZ2V0KCk7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCShyZXZpc2lvbiA2OTg0NykKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC0xNTMsMTAgKzE1NCw5IEBAIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OmRlYnVnRGV0YWNo
KEQKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAvLyBSZW1vdmUgYWxsIGJyZWFrcG9p
bnRzIHNldCBieSB0aGUgYWdlbnQuCi0gICAgICBXVEY6OlN0cmluZyBjbGVhckJyZWFrcG9pbnRH
cm91cENtZCA9IFdURjo6U3RyaW5nOjpmb3JtYXQoCisgICAgICBTdHJpbmcgY2xlYXJCcmVha3Bv
aW50R3JvdXBDbWQgPSBtYWtlU3RyaW5nKAogICAgICAgICAgICJ7XCJzZXFcIjoxLFwidHlwZVwi
OlwicmVxdWVzdFwiLFwiY29tbWFuZFwiOlwiY2xlYXJicmVha3BvaW50Z3JvdXBcIiwiCi0gICAg
ICAgICAgICAgICJcImFyZ3VtZW50c1wiOntcImdyb3VwSWRcIjolZH19IiwKLSAgICAgICAgICBo
b3N0SWQpOworICAgICAgICAgICAgICAiXCJhcmd1bWVudHNcIjp7XCJncm91cElkXCI6IiwgU3Ry
aW5nOjpudW1iZXIoaG9zdElkKSwgIn19Iik7CiAgICAgICBzZW5kQ29tbWFuZFRvVjgoY2xlYXJC
cmVha3BvaW50R3JvdXBDbWQsIG5ldyBDYWxsZXJJZFdyYXBwZXIoKSk7CiAKICAgICAgIGlmIChp
c09uQnJlYWtwb2ludCkgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVk
U3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNiBAQCBTdHJpbmcga2V5
Z2VuTWVudU1lZGl1bUdyYWRlS2V5U2l6ZSgpCiAvLyBVc2VkIGluIEltYWdlRG9jdW1lbnQuY3Bw
IGFzIHRoZSB0aXRsZSBmb3IgcGFnZXMgd2hlbiB0aGF0IHBhZ2UgaXMgYW4gaW1hZ2UuCiBTdHJp
bmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogewotICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFN0cmluZzo6Zm9ybWF0IGJlY2F1
c2UgaXQgd29ya3MgZm9yIEFTQ0lJIG9ubHkuCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAg
ICAgcmVzdWx0LmFwcGVuZChmaWxlbmFtZSk7CiAgICAgcmVzdWx0LmFwcGVuZCgiICgiKTsKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCShyZXZpc2lvbiA2
OTg0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXIu
aCIKIAogI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlU2VyaWFsaXplckNsaWVudC5o
IgpAQCAtNDEsNiArNDAsOCBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZl
Y3Rvci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksOCArNjAs
NyBAQCBib29sIFdlYlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemUoV2ViRnJhCiAKIFdlYlN0cmlu
ZyBXZWJQYWdlU2VyaWFsaXplcjo6Z2VuZXJhdGVNZXRhQ2hhcnNldERlY2xhcmF0aW9uKGNvbnN0
IFdlYlN0cmluZyYgY2hhcnNldCkKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIjxtZXRh
IGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0
PSVzXCI+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldC51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlw
ZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Iiwgc3RhdGljX2Nhc3Q8Y29uc3QgU3Ry
aW5nJj4oY2hhcnNldCksICJcIj4iKTsKIH0KIAogV2ViU3RyaW5nIFdlYlBhZ2VTZXJpYWxpemVy
OjpnZW5lcmF0ZU1hcmtPZlRoZVdlYkRlY2xhcmF0aW9uKGNvbnN0IFdlYlVSTCYgdXJsKQpAQCAt
NzIsMTAgKzcyLDkgQEAgV2ViU3RyaW5nIFdlYlBhZ2VTZXJpYWxpemVyOjpnZW5lcmF0ZU1hcgog
CiBXZWJTdHJpbmcgV2ViUGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlQmFzZVRhZ0RlY2xhcmF0aW9u
KGNvbnN0IFdlYlN0cmluZyYgYmFzZVRhcmdldCkKIHsKLSAgICBTdHJpbmcgdGFyZ2V0RGVjbGFy
YXRpb247Ci0gICAgaWYgKCFiYXNlVGFyZ2V0LmlzRW1wdHkoKSkKLSAgICAgICAgdGFyZ2V0RGVj
bGFyYXRpb24gPSBTdHJpbmc6OmZvcm1hdCgiIHRhcmdldD1cIiVzXCIiLCBiYXNlVGFyZ2V0LnV0
ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiPGJhc2UgaHJlZj1cIi5c
IiVzPiIsIHRhcmdldERlY2xhcmF0aW9uLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChiYXNlVGFy
Z2V0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjxiYXNlIGhyZWY9XCIu
XCI+Iik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjxiYXNlIGhyZWY9XCIuXCIgdGFyZ2V0PVwi
Iiwgc3RhdGljX2Nhc3Q8Y29uc3QgU3RyaW5nJj4oYmFzZVRhcmdldCksICJcIj4iKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0
L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0x
NSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHNvbWUgU3RyaW5n
Ojpmb3JtYXQoKSB1c2FnZXMgYnkgU3RyaW5nQ29uY2F0ZW5hdGUgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YWdlbnRPUyk6CisKIDIwMTAtMTAtMTQgIFJhZmFlbCBBbnRvZ25vbGxpICA8YW50b2du
b2xsaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
SW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBA
CiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgUExBVEZPUk0oVU5JWCkKICNpbmNsdWRlIDxzeXMvdXRz
bmFtZS5oPgpAQCAtOTIsNyArOTMsNyBAQCBzdGF0aWMgU3RyaW5nIGFnZW50T1MoKQogI2VsaWYg
UExBVEZPUk0oVU5JWCkKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAgIGlmICh1bmFtZSgm
bmFtZSkgIT0gLTEpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1l
LnN5c25hbWUsIG5hbWUubWFjaGluZSk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG5hbWUu
c3lzbmFtZSwgJyAnLCBuYW1lLm1hY2hpbmUpOwogCiAgICAgcmV0dXJuICJVbmtub3duIjsKICNl
bGlmIFBMQVRGT1JNKFdJTl9PUykKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTAtMTUg
IE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6
Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRPU1ZlcnNpb24pOgor
ICAgICAgICAod2Via2l0VXNlckFnZW50KToKKwogMjAxMC0xMC0xNCAgSm9vbmUgSHVyICA8am9v
bmVAa2xkcC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6
IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBACiAjaW5j
bHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKQEAgLTY3LDYgKzY2LDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lkZWNp
c2lvbi5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CkBA
IC0xMTIwLDEzICsxMTIwLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbEwKICAgICBnX2ZyZWUoZXJyb3JVUkkpOwogCiAgICAgaWYgKCFlcnJvckZpbGUpCi0gICAg
ICAgIGNvbnRlbnQgPSBTdHJpbmc6OmZvcm1hdCgiPGh0bWw+PGJvZHk+JXM8L2JvZHk+PC9odG1s
PiIsIHdlYkVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgY29udGVudCA9IG1ha2VTdHJpbmcoIjxo
dG1sPjxib2R5PiIsIHdlYkVycm9yLT5tZXNzYWdlLCAiPC9ib2R5PjwvaHRtbD4iKTsKICAgICBl
bHNlIHsKICAgICAgICAgZ2Jvb2xlYW4gbG9hZGVkID0gZ19maWxlX2xvYWRfY29udGVudHMoZXJy
b3JGaWxlLCAwLCAmZmlsZUNvbnRlbnQsIDAsIDAsIDApOwogICAgICAgICBpZiAoIWxvYWRlZCkK
LSAgICAgICAgICAgIGNvbnRlbnQgPSBTdHJpbmc6OmZvcm1hdCgiPGh0bWw+PGJvZHk+JXM8L2Jv
ZHk+PC9odG1sPiIsIHdlYkVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgICAgIGNvbnRlbnQgPSBt
YWtlU3RyaW5nKCI8aHRtbD48Ym9keT4iLCB3ZWJFcnJvci0+bWVzc2FnZSwgIjwvYm9keT48L2h0
bWw+Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnQgPSBTdHJpbmc6OmZvcm1h
dChmaWxlQ29udGVudCwgZXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIHdlYkVycm9y
LT5tZXNzYWdlKTsKKyAgICAgICAgICAgIGNvbnRlbnQgPSBtYWtlU3RyaW5nKGZpbGVDb250ZW50
LCBlcnJvci5mYWlsaW5nVVJMKCksIHdlYkVycm9yLT5tZXNzYWdlKTsKICAgICB9CiAKICAgICB3
ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhtX2ZyYW1lLCBjb250ZW50LnV0
ZjgoKS5kYXRhKCksIDAsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDY5ODQ3KQor
KysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlBs
dWdpbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4K
ICNpZiBPUyhVTklYKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyBTdHJpbmcgd2Via2l0T1NW
ZXJzaW9uKCkKIAogICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7CiAgICAgaWYgKHVuYW1lKCZuYW1l
KSAhPSAtMSkKLSAgICAgICAgdWFPU1ZlcnNpb24gPSBTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBu
YW1lLnN5c25hbWUsIG5hbWUubWFjaGluZSk7CisgICAgICAgIHVhT1NWZXJzaW9uID0gbWFrZVN0
cmluZyhuYW1lLnN5c25hbWUsICcgJywgbmFtZS5tYWNoaW5lKTsKICAgICBlbHNlCiAgICAgICAg
IHVhT1NWZXJzaW9uID0gU3RyaW5nKCJVbmtub3duIik7CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAt
MjE4LDkgKzIxOCw5IEBAIFN0cmluZyB3ZWJraXRVc2VyQWdlbnQoKQogICAgIC8vIFdlIG1lbnRp
b24gU2FmYXJpIHNpbmNlIG1hbnkgYnJva2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBk
b2VzIHRoaXMgdG9vKQogICAgIC8vIFdlIHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3Vn
aCBpdCBkb2Vzbid0IHNlZW0gdG8gbWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UKIAotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB1YVZlcnNpb24sIChTdHJpbmc6OmZvcm1hdCgi
JWQuJWQrIiwgV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX1VTRVJfQUdF
TlRfTUlOT1JfVkVSU0lPTikpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
Zywgc3RhdGljVUEsIChTdHJpbmc6OmZvcm1hdCgiTW96aWxsYS81LjAgKCVzOyBVOyAlczsgJXMp
IEFwcGxlV2ViS2l0LyVzIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLyVz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRQbGF0Zm9ybSgpLnV0ZjgoKS5kYXRhKCksIHdlYmtpdE9TVmVyc2lv
bigpLnV0ZjgoKS5kYXRhKCksIGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIHVhVmVy
c2lvbi51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEoKSkpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdWFWZXJzaW9uLCAobWFrZVN0cmluZyhTdHJp
bmc6Om51bWJlcihXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OKSwgJy4nLCBTdHJpbmc6
Om51bWJlcihXRUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKSwgJysnKSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdGF0aWNVQSwgKG1ha2VTdHJpbmcoIk1v
emlsbGEvNS4wICgiLCB3ZWJraXRQbGF0Zm9ybSgpLCAiOyBVOyAiLCB3ZWJraXRPU1ZlcnNpb24o
KSwgIjsgIiwgZGVmYXVsdExhbmd1YWdlKCksICIpIEFwcGxlV2ViS2l0LyIsIHVhVmVyc2lvbikg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VT
dHJpbmcoIiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNhZmFyaS8iLCB1YVZlcnNp
b24pKSk7CiAKICAgICByZXR1cm4gc3RhdGljVUE7CiB9CkluZGV4OiBXZWJLaXQvd2luL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcp
CisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDEwLTEwLTE1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ug
c29tZSBTdHJpbmc6OmZvcm1hdCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0ZSBpbiBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzE0
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnN0YW5kYXJkVXNlckFnZW50
V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAgICAgIChvc1ZlcnNpb24pOgorCiAyMDEwLTEwLTE0
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdl
YktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksNyBAQAog
I2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KIAogLy8gU29mdCBsaW5rIGZ1bmN0aW9ucyBmb3IgZ2VzdHVyZXMgYW5kIHBhbm5pbmcg
ZmVlZGJhY2sKIFNPRlRfTElOS19MSUJSQVJZKFVTRVIzMik7CkBAIC0xMjAwLDcgKzEyMDEsOSBA
QCBib29sIFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViCiAKIFN0cmluZyBXZWJW
aWV3OjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBh
cHBsaWNhdGlvbk5hbWUpCiB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJNb3ppbGxhLzUu
MCAoV2luZG93czsgVTsgJXM7ICVzKSBBcHBsZVdlYktpdC8lcyAoS0hUTUwsIGxpa2UgR2Vja28p
JXMlcyIsIG9zVmVyc2lvbigpLmxhdGluMSgpLmRhdGEoKSwgZGVmYXVsdExhbmd1YWdlKCkubGF0
aW4xKCkuZGF0YSgpLCB3ZWJLaXRWZXJzaW9uKCkubGF0aW4xKCkuZGF0YSgpLCAoYXBwbGljYXRp
b25OYW1lLmxlbmd0aCgpID8gIiAiIDogIiIpLCBhcHBsaWNhdGlvbk5hbWUubGF0aW4xKCkuZGF0
YSgpKTsKKyAgICBpZiAoYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyAiLCBvc1ZlcnNpb24oKSwgIjsg
IiwgZGVmYXVsdExhbmd1YWdlKCksICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb24oKSwg
IiAoS0hUTUwsIGxpa2UgR2Vja28pIik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEv
NS4wIChXaW5kb3dzOyBVOyAiLCBvc1ZlcnNpb24oKSwgIjsgIiwgZGVmYXVsdExhbmd1YWdlKCks
ICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb24oKSwgIiAoS0hUTUwsIGxpa2UgR2Vja28p
ICIsIGFwcGxpY2F0aW9uTmFtZSk7CiB9CiAKIFBhZ2UqIFdlYlZpZXc6OnBhZ2UoKQpAQCAtMjMx
MCwxMSArMjMxMywxMCBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbigpCiAgICAgICAgICAgICAg
ICAgb3NWZXJzaW9uID0gIldpbmRvd3MgOTg7IFdpbiA5eCA0LjkwIjsKICAgICAgICAgfQogICAg
IH0gZWxzZSBpZiAodmVyc2lvbkluZm8uZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4z
Ml9OVCkKLSAgICAgICAgb3NWZXJzaW9uID0gU3RyaW5nOjpmb3JtYXQoIldpbmRvd3MgTlQgJWQu
JWQiLCB2ZXJzaW9uSW5mby5kd01ham9yVmVyc2lvbiwgdmVyc2lvbkluZm8uZHdNaW5vclZlcnNp
b24pOworICAgICAgICBvc1ZlcnNpb24gPSBtYWtlU3RyaW5nKCJXaW5kb3dzIE5UICIsIFN0cmlu
Zzo6bnVtYmVyKHZlcnNpb25JbmZvLmR3TWFqb3JWZXJzaW9uKSwgJy4nLCBTdHJpbmc6Om51bWJl
cih2ZXJzaW9uSW5mby5kd01pbm9yVmVyc2lvbikpOwogCiAgICAgaWYgKCFvc1ZlcnNpb24ubGVu
Z3RoKCkpCi0gICAgICAgIG9zVmVyc2lvbiA9IFN0cmluZzo6Zm9ybWF0KCJXaW5kb3dzICVkLiVk
IiwgdmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24sIHZlcnNpb25JbmZvLmR3TWlub3JWZXJzaW9u
KTsKLQorICAgICAgICBvc1ZlcnNpb24gPSBtYWtlU3RyaW5nKCJXaW5kb3dzICIsIFN0cmluZzo6
bnVtYmVyKHZlcnNpb25JbmZvLmR3TWFqb3JWZXJzaW9uKSwgJy4nLCBTdHJpbmc6Om51bWJlcih2
ZXJzaW9uSW5mby5kd01pbm9yVmVyc2lvbikpOwogICAgIHJldHVybiBvc1ZlcnNpb247CiB9CiAK
SW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTIgKzQyMSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3kKIAogdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKQogewotICAgIC8vIEZJWE1FOiBU
aGUgc2VyaWVzIG9mIGFwcGVuZHMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBjYWxsIHRvIFN0
cmluZzo6Zm9ybWF0KCkKLSAgICAvLyB3aGVuIGl0IGNhbiBiZSBmaWd1cmVkIG91dCBob3cgdG8g
Z2V0IHRoZSB1bmljb2RlIGVtLWRhc2ggdG8gc2hvdyB1cC4KLSAgICBTdHJpbmcgdGl0bGUgPSAi
V2ViIEluc3BlY3RvciAiOwotICAgIHRpdGxlLmFwcGVuZCgoVUNoYXIpMHgyMDE0KTsgLy8gZW0t
ZGFzaAotICAgIHRpdGxlLmFwcGVuZCgnICcpOwotICAgIHRpdGxlLmFwcGVuZChtX2luc3BlY3Rl
ZFVSTCk7CisgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZygiV2ViIEluc3BlY3RvciAiLCBz
dGF0aWNfY2FzdDxVQ2hhcj4oMHgyMDE0KSwgJyAnLCBtX2luc3BlY3RlZFVSTCk7CiAgICAgOjpT
ZXRXaW5kb3dUZXh0KG1fZnJvbnRlbmRId25kLCB0aXRsZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpKTsKIH0KIApJbmRleDogV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC93
aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMC0x
NSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHNvbWUgU3RyaW5n
Ojpmb3JtYXQoKSB1c2FnZXMgYnkgU3RyaW5nQ29uY2F0ZW5hdGUgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwOgorICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmltYWdlVGl0bGUpOgorICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0U6Om11bHRpcGxlRmlsZVVwbG9hZFRleHQpOgorCiAyMDEwLTA5LTI4ICBK
ZW5uIEJyYWl0aHdhaXRlICA8amVubmJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERtaXRyeSBUaXRvdi4KSW5kZXg6IFdlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkocmV2aXNpb24gNjk4NDcpCisr
KyBXZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNCArMjcsMTYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRS5oIgogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk1hdGhF
eHRyYXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+CiAKLSNkZWZpbmUgVUlfU1RSSU5HKHRleHQsIGRlc2NpcHJpb24pIHRleHQK
LSNkZWZpbmUgVUlfU1RSSU5HX0tFWSh0ZXh0LCBrZXksIGRlc2NpcHJpb24pIHRleHQKKyNkZWZp
bmUgVUlfU1RSSU5HKHRleHQsIGRlc2NyaXB0aW9uKSB0ZXh0CisjZGVmaW5lIFVJX1NUUklOR19L
RVkodGV4dCwga2V5LCBkZXNjcmlwdGlvbikgdGV4dAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtNDg5LDEzICs0OTEsMTMgQEAgU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
OjpjcmFzaGVkUAogCiBTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmltYWdlVGl0bGUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgCiB7Ci0gICAgQ1N0
cmluZyBmaWxlbmFtZUNTdHJpbmcgPSBmaWxlbmFtZS51dGY4KCk7Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KFVJX1NUUklORygiJXMgJWRceEMzXHg5NyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0
bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5v
dCB4KSIpLCBmaWxlbmFtZUNTdHJpbmcuZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpOworICAgIHJldHVybiBVSV9TVFJJTkcobWFrZVN0cmluZyhmaWxlbmFtZSwgJyAnLCBTdHJp
bmc6Om51bWJlcihzaXplLndpZHRoKCkpLCAiXHhDM1x4OTciLCBTdHJpbmc6Om51bWJlcihzaXpl
LmhlaWdodCgpKSwgIiBwaXhlbHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICJ3aW5kb3cgdGl0
bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5v
dCB4KSIpOwogfQogCiBTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6Om11bHRpcGxlRmls
ZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcykKIHsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoVUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVt
YmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93
cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKKyAgICByZXR1cm4gVUlfU1RSSU5H
KG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIobnVtYmVyT2ZGaWxlcyksICIgZmlsZXMiKSwgIkxh
YmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVw
bG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIik7CiB9CiAKIFN0cmluZyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6bWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70854</attachid>
            <date>2010-10-15 05:12:05 -0700</date>
            <delta_ts>2010-10-15 05:21:21 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>KillStringFormatPart2.diff</filename>
            <type>text/plain</type>
            <size>18524</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODQ4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMTAtMTUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmluZzo6Zm9ybWF0KCkg
dXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg6IEFkZCBVQ2hhciBzcGVjaWZpYyBTdHJpbmdUeXBlQWRhcHRl
ciwgdG8gYWNjZXB0IHNpbmdsZSBVQ2hhcnMgaW4gbWFrZVN0cmluZygpLgorCiAyMDEwLTEwLTE1
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkIGJ1aWxkIGZpeCBmb3IgRGVidWcgTGVvcGFyZCB3aGljaCBpcyBmYWlsbmcgdG8gY29t
cGlsZSBhZnRlciByNjk4NDIuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDY5ODQ3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMjEgQEAg
cHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPD4KK2NsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFVDaGFy
PiB7CitwdWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8VUNoYXI+KFVDaGFyIGJ1ZmZlcikK
KyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVk
IGxlbmd0aCgpIHsgcmV0dXJuIDE7IH0KKyAgICB2b2lkIHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0
aW9uKSB7ICpkZXN0aW5hdGlvbiA9IG1fYnVmZmVyOyB9CisKK3ByaXZhdGU6CisgICAgVUNoYXIg
bV9idWZmZXI7Cit9OworCit0ZW1wbGF0ZTw+CiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFy
Kj4gewogcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPihjaGFyKiBidWZmZXIp
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODQ3KQorKysgV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEwLTE1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBTdHJpbmc6OmZvcm1h
dCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0ZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzE0CisKKyAgICAgICAgKiBzcmMv
QmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tGb3J3
YXJkTGlzdENsaWVudEltcGw6Oml0ZW1BdEluZGV4KToKKyAgICAgICAgKiBzcmMvRGVidWdnZXJB
Z2VudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZWJ1Z2dlckFnZW50TWFuYWdlcjo6
ZGVidWdEZXRhY2gpOgorICAgICAgICAqIHNyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxpemVyOjpnZW5lcmF0ZU1ldGFD
aGFyc2V0RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFsaXplcjo6
Z2VuZXJhdGVCYXNlVGFnRGVjbGFyYXRpb24pOgorCiAyMDEwLTEwLTE0ICBXZWkgSmlhICA8d2pp
YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9CYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwu
Y3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRM
aXN0Q2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJWaWV3SW1wbC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDIsMTEgKzEwMyw4IEBAIEhpc3Rv
cnlJdGVtKiBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjoKICAgICAvLyBkaWZmZXJlbnRseS4g
IEl0IHNob3VsZCBwZXJoYXBzIGp1c3QgYXNrIHRoZSBGcmFtZUxvYWRlckNsaWVudCB0bwogICAg
IC8vIHBlcmZvcm0gdGhvc2UgbmF2aWdhdGlvbnMuCiAKLSAgICBTdHJpbmcgdXJsX3N0cmluZyA9
IFN0cmluZzo6Zm9ybWF0KAotICAgICAgICAiJXM6Ly9nby8lZCIsIGJhY2tGb3J3YXJkTmF2aWdh
dGlvblNjaGVtZSwgaW5kZXgpOwotCi0gICAgbV9wZW5kaW5nSGlzdG9yeUl0ZW0gPQotICAgICAg
ICBIaXN0b3J5SXRlbTo6Y3JlYXRlKHVybF9zdHJpbmcsIFN0cmluZygpLCAwLjApOworICAgIFN0
cmluZyB1cmxTdHJpbmcgPSBtYWtlU3RyaW5nKGJhY2tGb3J3YXJkTmF2aWdhdGlvblNjaGVtZSwg
IjovL2dvLyIsIFN0cmluZzo6bnVtYmVyKGluZGV4KSk7CisgICAgbV9wZW5kaW5nSGlzdG9yeUl0
ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKHVybFN0cmluZywgU3RyaW5nKCksIDAuMCk7CiAgICAg
cmV0dXJuIG1fcGVuZGluZ0hpc3RvcnlJdGVtLmdldCgpOwogfQogCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcAkocmV2aXNpb24gNjk4NDcpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtMTUzLDEwICsxNTQsOSBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpkZWJ1Z0RldGFj
aChECiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgLy8gUmVtb3ZlIGFsbCBicmVha3Bv
aW50cyBzZXQgYnkgdGhlIGFnZW50LgotICAgICAgV1RGOjpTdHJpbmcgY2xlYXJCcmVha3BvaW50
R3JvdXBDbWQgPSBXVEY6OlN0cmluZzo6Zm9ybWF0KAorICAgICAgU3RyaW5nIGNsZWFyQnJlYWtw
b2ludEdyb3VwQ21kID0gbWFrZVN0cmluZygKICAgICAgICAgICAie1wic2VxXCI6MSxcInR5cGVc
IjpcInJlcXVlc3RcIixcImNvbW1hbmRcIjpcImNsZWFyYnJlYWtwb2ludGdyb3VwXCIsIgotICAg
ICAgICAgICAgICAiXCJhcmd1bWVudHNcIjp7XCJncm91cElkXCI6JWR9fSIsCi0gICAgICAgICAg
aG9zdElkKTsKKyAgICAgICAgICAgICAgIlwiYXJndW1lbnRzXCI6e1wiZ3JvdXBJZFwiOiIsIFN0
cmluZzo6bnVtYmVyKGhvc3RJZCksICJ9fSIpOwogICAgICAgc2VuZENvbW1hbmRUb1Y4KGNsZWFy
QnJlYWtwb2ludEdyb3VwQ21kLCBuZXcgQ2FsbGVySWRXcmFwcGVyKCkpOwogCiAgICAgICBpZiAo
aXNPbkJyZWFrcG9pbnQpIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3Ry
aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDYgQEAgU3RyaW5nIGtl
eWdlbk1lbnVNZWRpdW1HcmFkZUtleVNpemUoKQogLy8gVXNlZCBpbiBJbWFnZURvY3VtZW50LmNw
cCBhcyB0aGUgdGl0bGUgZm9yIHBhZ2VzIHdoZW4gdGhhdCBwYWdlIGlzIGFuIGltYWdlLgogU3Ry
aW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKLSAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBTdHJpbmc6OmZvcm1hdCBiZWNh
dXNlIGl0IHdvcmtzIGZvciBBU0NJSSBvbmx5LgogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0Owog
ICAgIHJlc3VsdC5hcHBlbmQoZmlsZW5hbWUpOwogICAgIHJlc3VsdC5hcHBlbmQoIiAoIik7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVyLmNwcAkocmV2aXNpb24g
Njk4NDcpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2VTZXJpYWxpemVy
LmgiCiAKICNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXJDbGllbnQu
aCIKQEAgLTQxLDYgKzQwLDggQEAKICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJW
ZWN0b3IuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDggKzYw
LDcgQEAgYm9vbCBXZWJQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplKFdlYkZyYQogCiBXZWJTdHJp
bmcgV2ViUGFnZVNlcmlhbGl6ZXI6OmdlbmVyYXRlTWV0YUNoYXJzZXREZWNsYXJhdGlvbihjb25z
dCBXZWJTdHJpbmcmIGNoYXJzZXQpCiB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCI8bWV0
YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNl
dD0lc1wiPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQudXRmOCgpLmRhdGEo
KSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5
cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PSIsIHN0YXRpY19jYXN0PGNvbnN0IFN0
cmluZyY+KGNoYXJzZXQpLCAiXCI+Iik7CiB9CiAKIFdlYlN0cmluZyBXZWJQYWdlU2VyaWFsaXpl
cjo6Z2VuZXJhdGVNYXJrT2ZUaGVXZWJEZWNsYXJhdGlvbihjb25zdCBXZWJVUkwmIHVybCkKQEAg
LTcyLDEwICs3Miw5IEBAIFdlYlN0cmluZyBXZWJQYWdlU2VyaWFsaXplcjo6Z2VuZXJhdGVNYXIK
IAogV2ViU3RyaW5nIFdlYlBhZ2VTZXJpYWxpemVyOjpnZW5lcmF0ZUJhc2VUYWdEZWNsYXJhdGlv
bihjb25zdCBXZWJTdHJpbmcmIGJhc2VUYXJnZXQpCiB7Ci0gICAgU3RyaW5nIHRhcmdldERlY2xh
cmF0aW9uOwotICAgIGlmICghYmFzZVRhcmdldC5pc0VtcHR5KCkpCi0gICAgICAgIHRhcmdldERl
Y2xhcmF0aW9uID0gU3RyaW5nOjpmb3JtYXQoIiB0YXJnZXQ9XCIlc1wiIiwgYmFzZVRhcmdldC51
dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIjxiYXNlIGhyZWY9XCIu
XCIlcz4iLCB0YXJnZXREZWNsYXJhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoYmFzZVRh
cmdldC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCI8YmFzZSBocmVmPVwi
LlwiPiIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCI8YmFzZSBocmVmPVwiLlwiIHRhcmdldD1c
IiIsIHN0YXRpY19jYXN0PGNvbnN0IFN0cmluZyY+KGJhc2VUYXJnZXQpLCAiXCI+Iik7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktp
dC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAt
MTUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmlu
Zzo6Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFnZW50T1MpOgorCiAyMDEwLTEwLTE0ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9n
bm9sbGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcAkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBA
QAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmIFBMQVRGT1JNKFVOSVgpCiAjaW5jbHVkZSA8c3lzL3V0
c25hbWUuaD4KQEAgLTkyLDcgKzkzLDcgQEAgc3RhdGljIFN0cmluZyBhZ2VudE9TKCkKICNlbGlm
IFBMQVRGT1JNKFVOSVgpCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICBpZiAodW5hbWUo
Jm5hbWUpICE9IC0xKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzICVzIiwgbmFt
ZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhuYW1l
LnN5c25hbWUsICcgJywgbmFtZS5tYWNoaW5lKTsKIAogICAgIHJldHVybiAiVW5rbm93biI7CiAj
ZWxpZiBQTEFURk9STShXSU5fT1MpCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQv
Z3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEwLTE1
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ugc29tZSBTdHJpbmc6
OmZvcm1hdCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0ZSBpbiBXZWJLaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzE0CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0T1NWZXJzaW9uKToK
KyAgICAgICAgKHdlYmtpdFVzZXJBZ2VudCk6CisKIDIwMTAtMTAtMTQgIEpvb25lIEh1ciAgPGpv
b25lQGtsZHAub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4
OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQAogI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsdWdp
bkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCkBAIC02Nyw2ICs2Niw3IEBACiAjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVj
aXNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgpA
QCAtMTEyMCwxMyArMTEyMCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZhaWxMCiAgICAgZ19mcmVlKGVycm9yVVJJKTsKIAogICAgIGlmICghZXJyb3JGaWxlKQotICAg
ICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRt
bD4iLCB3ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGNvbnRlbnQgPSBtYWtlU3RyaW5nKCI8
aHRtbD48Ym9keT4iLCB3ZWJFcnJvci0+bWVzc2FnZSwgIjwvYm9keT48L2h0bWw+Iik7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGdib29sZWFuIGxvYWRlZCA9IGdfZmlsZV9sb2FkX2NvbnRlbnRzKGVy
cm9yRmlsZSwgMCwgJmZpbGVDb250ZW50LCAwLCAwLCAwKTsKICAgICAgICAgaWYgKCFsb2FkZWQp
Ci0gICAgICAgICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxib2R5PiVzPC9i
b2R5PjwvaHRtbD4iLCB3ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgICAgICAgICBjb250ZW50ID0g
bWFrZVN0cmluZygiPGh0bWw+PGJvZHk+Iiwgd2ViRXJyb3ItPm1lc3NhZ2UsICI8L2JvZHk+PC9o
dG1sPiIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3Jt
YXQoZmlsZUNvbnRlbnQsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJv
ci0+bWVzc2FnZSk7CisgICAgICAgICAgICBjb250ZW50ID0gbWFrZVN0cmluZyhmaWxlQ29udGVu
dCwgZXJyb3IuZmFpbGluZ1VSTCgpLCB3ZWJFcnJvci0+bWVzc2FnZSk7CiAgICAgfQogCiAgICAg
d2Via2l0X3dlYl9mcmFtZV9sb2FkX2FsdGVybmF0ZV9zdHJpbmcobV9mcmFtZSwgY29udGVudC51
dGY4KCkuZGF0YSgpLCAwLCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSk7CkluZGV4
OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiA2OTg0NykK
KysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CiAjaWYgT1MoVU5JWCkKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYmtpdE9T
VmVyc2lvbigpCiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAgIGlmICh1bmFtZSgmbmFt
ZSkgIT0gLTEpCi0gICAgICAgIHVhT1NWZXJzaW9uID0gU3RyaW5nOjpmb3JtYXQoIiVzICVzIiwg
bmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgICAgICB1YU9TVmVyc2lvbiA9IG1ha2VT
dHJpbmcobmFtZS5zeXNuYW1lLCAnICcsIG5hbWUubWFjaGluZSk7CiAgICAgZWxzZQogICAgICAg
ICB1YU9TVmVyc2lvbiA9IFN0cmluZygiVW5rbm93biIpOwogI2VsaWYgT1MoV0lORE9XUykKQEAg
LTIxOCw5ICsyMTgsOSBAQCBTdHJpbmcgd2Via2l0VXNlckFnZW50KCkKICAgICAvLyBXZSBtZW50
aW9uIFNhZmFyaSBzaW5jZSBtYW55IGJyb2tlbiBzaXRlcyBjaGVjayBmb3IgaXQgKE9tbmlXZWIg
ZG9lcyB0aGlzIHRvbykKICAgICAvLyBXZSByZS11c2UgdGhlIFdlYktpdCB2ZXJzaW9uLCB0aG91
Z2ggaXQgZG9lc24ndCBzZWVtIHRvIG1hdHRlciBtdWNoIGluIHByYWN0aWNlCiAKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdWFWZXJzaW9uLCAoU3RyaW5nOjpmb3JtYXQo
IiVkLiVkKyIsIFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04sIFdFQktJVF9VU0VSX0FH
RU5UX01JTk9SX1ZFUlNJT04pKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIHN0YXRpY1VBLCAoU3RyaW5nOjpmb3JtYXQoIk1vemlsbGEvNS4wICglczsgVTsgJXM7ICVz
KSBBcHBsZVdlYktpdC8lcyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNhZmFyaS8l
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2Via2l0UGxhdGZvcm0oKS51dGY4KCkuZGF0YSgpLCB3ZWJraXRPU1ZlcnNp
b24oKS51dGY4KCkuZGF0YSgpLCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCB1YVZl
cnNpb24udXRmOCgpLmRhdGEoKSwgdWFWZXJzaW9uLnV0ZjgoKS5kYXRhKCkpKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHVhVmVyc2lvbiwgKG1ha2VTdHJpbmcoU3Ry
aW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTiksICcuJywgU3RyaW5n
OjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTiksICcrJykpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3RhdGljVUEsIChtYWtlU3RyaW5nKCJN
b3ppbGxhLzUuMCAoIiwgd2Via2l0UGxhdGZvcm0oKSwgIjsgVTsgIiwgd2Via2l0T1NWZXJzaW9u
KCksICI7ICIsIGRlZmF1bHRMYW5ndWFnZSgpLCAiKSBBcHBsZVdlYktpdC8iLCB1YVZlcnNpb24p
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtl
U3RyaW5nKCIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvIiwgdWFWZXJz
aW9uKSkpOwogCiAgICAgcmV0dXJuIHN0YXRpY1VBOwogfQpJbmRleDogV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODQ3
KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxMC0xMC0xNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IHNvbWUgU3RyaW5nOjpmb3JtYXQoKSB1c2FnZXMgYnkgU3RyaW5nQ29uY2F0ZW5hdGUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzcx
NAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSk6Cisg
ICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUpOgorICAgICAgICAob3NWZXJzaW9uKToKKwogMjAxMC0xMC0x
NCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNjk4NDcpCisrKyBX
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDcgQEAK
ICNpbmNsdWRlIDx3aW5kb3dzeC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CiAKIC8vIFNvZnQgbGluayBmdW5jdGlvbnMgZm9yIGdlc3R1cmVzIGFuZCBwYW5uaW5n
IGZlZWRiYWNrCiBTT0ZUX0xJTktfTElCUkFSWShVU0VSMzIpOwpAQCAtMTIwMCw3ICsxMjAxLDkg
QEAgYm9vbCBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYgogCiBTdHJpbmcgV2Vi
Vmlldzo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25OYW1lKQogewotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiTW96aWxsYS81
LjAgKFdpbmRvd3M7IFU7ICVzOyAlcykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tv
KSVzJXMiLCBvc1ZlcnNpb24oKS5sYXRpbjEoKS5kYXRhKCksIGRlZmF1bHRMYW5ndWFnZSgpLmxh
dGluMSgpLmRhdGEoKSwgd2ViS2l0VmVyc2lvbigpLmxhdGluMSgpLmRhdGEoKSwgKGFwcGxpY2F0
aW9uTmFtZS5sZW5ndGgoKSA/ICIgIiA6ICIiKSwgYXBwbGljYXRpb25OYW1lLmxhdGluMSgpLmRh
dGEoKSk7CisgICAgaWYgKGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgIiwgb3NWZXJzaW9uKCksICI7
ICIsIGRlZmF1bHRMYW5ndWFnZSgpLCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uKCks
ICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJNb3ppbGxh
LzUuMCAoV2luZG93czsgVTsgIiwgb3NWZXJzaW9uKCksICI7ICIsIGRlZmF1bHRMYW5ndWFnZSgp
LCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uKCksICIgKEtIVE1MLCBsaWtlIEdlY2tv
KSAiLCBhcHBsaWNhdGlvbk5hbWUpOwogfQogCiBQYWdlKiBXZWJWaWV3OjpwYWdlKCkKQEAgLTIz
MTAsMTEgKzIzMTMsMTAgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb24oKQogICAgICAgICAgICAg
ICAgIG9zVmVyc2lvbiA9ICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKHZlcnNpb25JbmZvLmR3UGxhdGZvcm1JZCA9PSBWRVJfUExBVEZPUk1fV0lO
MzJfTlQpCi0gICAgICAgIG9zVmVyc2lvbiA9IFN0cmluZzo6Zm9ybWF0KCJXaW5kb3dzIE5UICVk
LiVkIiwgdmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24sIHZlcnNpb25JbmZvLmR3TWlub3JWZXJz
aW9uKTsKKyAgICAgICAgb3NWZXJzaW9uID0gbWFrZVN0cmluZygiV2luZG93cyBOVCAiLCBTdHJp
bmc6Om51bWJlcih2ZXJzaW9uSW5mby5kd01ham9yVmVyc2lvbiksICcuJywgU3RyaW5nOjpudW1i
ZXIodmVyc2lvbkluZm8uZHdNaW5vclZlcnNpb24pKTsKIAogICAgIGlmICghb3NWZXJzaW9uLmxl
bmd0aCgpKQotICAgICAgICBvc1ZlcnNpb24gPSBTdHJpbmc6OmZvcm1hdCgiV2luZG93cyAlZC4l
ZCIsIHZlcnNpb25JbmZvLmR3TWFqb3JWZXJzaW9uLCB2ZXJzaW9uSW5mby5kd01pbm9yVmVyc2lv
bik7Ci0KKyAgICAgICAgb3NWZXJzaW9uID0gbWFrZVN0cmluZygiV2luZG93cyAiLCBTdHJpbmc6
Om51bWJlcih2ZXJzaW9uSW5mby5kd01ham9yVmVyc2lvbiksICcuJywgU3RyaW5nOjpudW1iZXIo
dmVyc2lvbkluZm8uZHdNaW5vclZlcnNpb24pKTsKICAgICByZXR1cm4gb3NWZXJzaW9uOwogfQog
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIxLDEyICs0MjEsNyBAQCB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95CiAKIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKIHsKLSAgICAvLyBGSVhNRTog
VGhlIHNlcmllcyBvZiBhcHBlbmRzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgY2FsbCB0byBT
dHJpbmc6OmZvcm1hdCgpCi0gICAgLy8gd2hlbiBpdCBjYW4gYmUgZmlndXJlZCBvdXQgaG93IHRv
IGdldCB0aGUgdW5pY29kZSBlbS1kYXNoIHRvIHNob3cgdXAuCi0gICAgU3RyaW5nIHRpdGxlID0g
IldlYiBJbnNwZWN0b3IgIjsKLSAgICB0aXRsZS5hcHBlbmQoKFVDaGFyKTB4MjAxNCk7IC8vIGVt
LWRhc2gKLSAgICB0aXRsZS5hcHBlbmQoJyAnKTsKLSAgICB0aXRsZS5hcHBlbmQobV9pbnNwZWN0
ZWRVUkwpOworICAgIFN0cmluZyB0aXRsZSA9IG1ha2VTdHJpbmcoIldlYiBJbnNwZWN0b3IgIiwg
c3RhdGljX2Nhc3Q8VUNoYXI+KDB4MjAxNCksICcgJywgbV9pbnNwZWN0ZWRVUkwpOwogICAgIDo6
U2V0V2luZG93VGV4dChtX2Zyb250ZW5kSHduZCwgdGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSk7CiB9CiAKSW5kZXg6IFdlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gNjk4NDcpCisrKyBXZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTAt
MTUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBzb21lIFN0cmlu
Zzo6Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MTQKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcDoKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjppbWFnZVRpdGxlKToKKyAgICAgICAgKFBsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KToKKwogMjAxMC0wOS0yOCAg
SmVubiBCcmFpdGh3YWl0ZSAgPGplbm5iQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4OiBXZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHJldmlzaW9uIDY5ODQ3KQor
KysgV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0UuaCIKIAogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJNYXRo
RXh0cmFzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCi0jZGVmaW5lIFVJX1NUUklORyh0ZXh0LCBkZXNjaXByaW9uKSB0ZXh0
Ci0jZGVmaW5lIFVJX1NUUklOR19LRVkodGV4dCwga2V5LCBkZXNjaXByaW9uKSB0ZXh0CisjZGVm
aW5lIFVJX1NUUklORyh0ZXh0LCBkZXNjcmlwdGlvbikgdGV4dAorI2RlZmluZSBVSV9TVFJJTkdf
S0VZKHRleHQsIGtleSwgZGVzY3JpcHRpb24pIHRleHQKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTQ4OSwxMyArNDkxLDEzIEBAIFN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Y3Jhc2hlZFAKIAogU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjppbWFnZVRpdGxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpIAogewotICAgIENT
dHJpbmcgZmlsZW5hbWVDU3RyaW5nID0gZmlsZW5hbWUudXRmOCgpOwotICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdChVSV9TVFJJTkcoIiVzICVkXHhDM1x4OTclZCBwaXhlbHMiLCAid2luZG93IHRp
dGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBu
b3QgeCkiKSwgZmlsZW5hbWVDU3RyaW5nLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKG1ha2VTdHJpbmcoZmlsZW5hbWUsICcgJywgU3Ry
aW5nOjpudW1iZXIoc2l6ZS53aWR0aCgpKSwgIlx4QzNceDk3IiwgU3RyaW5nOjpudW1iZXIoc2l6
ZS5oZWlnaHQoKSksICIgcGl4ZWxzIiksCisgICAgICAgICAgICAgICAgICAgICAid2luZG93IHRp
dGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBu
b3QgeCkiKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjptdWx0aXBsZUZp
bGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCiB7Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KFVJX1NUUklORygiJWQgZmlsZXMiLCAiTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51
bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxv
d3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZGaWxlcyk7CisgICAgcmV0dXJuIFVJX1NUUklO
RyhtYWtlU3RyaW5nKFN0cmluZzo6bnVtYmVyKG51bWJlck9mRmlsZXMpLCAiIGZpbGVzIiksICJM
YWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1
cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpOwogfQogCiBTdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6Om1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQo=
</data>
<flag name="review"
          id="60774"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>