<?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>46964</bug_id>
          
          <creation_ts>2010-10-01 00:41:37 -0700</creation_ts>
          <short_desc>Add SVGTextMetrics/SVGTextFragment/SVGTextChunk primitives used by the new layout engine</short_desc>
          <delta_ts>2010-10-01 02:15:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>45532</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288094</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 00:41:37 -0700</bug_when>
    <thetext>SVGTextMetrics encapsulates measuring text.
SVGTextFragment represents a portion of text that can be rendered/measured in one shot.
(RenderSVGInlineTextBox contains N text boxes, which in turn can contain M fragments)
SVGTextChunk describes a set of fragments, which have to be treated as &quot;one single text&quot; in terms of measuring (used to process text-anchor &amp; textLength corrections on line-layouted text, not for path layouts).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288098</commentid>
    <comment_count>1</comment_count>
      <attachid>69431</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 00:49:44 -0700</bug_when>
    <thetext>Created attachment 69431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288104</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 00:56:46 -0700</bug_when>
    <thetext>Attachment 69431 did not build on gtk:
Build output: http://queues.webkit.org/results/4165037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288105</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-01 00:57:41 -0700</bug_when>
    <thetext>Attachment 69431 did not build on mac:
Build output: http://queues.webkit.org/results/4143037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288106</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-01 00:58:31 -0700</bug_when>
    <thetext>Attachment 69431 did not build on qt:
Build output: http://queues.webkit.org/results/4193037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288107</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 01:01:28 -0700</bug_when>
    <thetext>Attachment 69431 did not build on chromium:
Build output: http://queues.webkit.org/results/4192039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288108</commentid>
    <comment_count>6</comment_count>
      <attachid>69432</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 01:03:36 -0700</bug_when>
    <thetext>Created attachment 69432
Patch v2

Renamed SVGTextChunk to SVGTextChunkNew, to avoid clashes with the SVGTextChunk class that still lives in SVGTextChunkLayoutInfo.h (which will be removed alltogether, once the new engine lands);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288113</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 01:09:07 -0700</bug_when>
    <thetext>Attachment 69432 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/svg/SVGTextChunk.cpp:47:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 13 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>288114</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-01 01:11:07 -0700</bug_when>
    <thetext>Attachment 69432 did not build on mac:
Build output: http://queues.webkit.org/results/4170047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288120</commentid>
    <comment_count>9</comment_count>
      <attachid>69434</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 01:32:04 -0700</bug_when>
    <thetext>Created attachment 69434
Patch v3

Fix style issue, mac build problem and write a much more explicit ChangeLog, as requested by Dirk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288128</commentid>
    <comment_count>10</comment_count>
      <attachid>69434</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-01 02:07:58 -0700</bug_when>
    <thetext>Comment on attachment 69434
Patch v3

LGTM. We already discussed some changes on IRC (can be seen by comparing the different patches). Niko has the next patch ready, that moves some files, so that we can fix the FIXMEs.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288129</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 02:14:14 -0700</bug_when>
    <thetext>Landed in r68873.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69431</attachid>
            <date>2010-10-01 00:49:44 -0700</date>
            <delta_ts>2010-10-01 01:03:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>TextNewFiles.diff</filename>
            <type>text/plain</type>
            <size>27684</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODg2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMTAtMTAtMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNWR1RleHRNZXRyaWNzL1NWR1RleHRGcmFnbWVudC9TVkdUZXh0Q2h1bmsgcHJp
bWl0aXZlcyB1c2VkIGJ5IHRoZSBuZXcgbGF5b3V0IGVuZ2luZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5NjQKKworICAgICAgICBTVkdUZXh0TWV0
cmljcyBlbmNhcHN1bGF0ZXMgdGhlIGxvZ2ljIGZvciBtZWFzdXJpbmcgYXJiaXRhcnkgbGVuZ3Ro
IFNWRyB0ZXh0LgorICAgICAgICBTVkdUZXh0RnJhZ21lbnQgcmVwcmVzZW50cyBhIGZyYWdtZW50
IG9mIHRleHQgd2hpY2ggY2FuIGJlIG1lYXN1cmVkL3JlbmRlcmVkIGluIG9uZSBzaG90LgorICAg
ICAgICBTVkdUZXh0Q2h1bmsgZGVzY3JpYmVzIGEgc2V0IG9mIGZyYWdtZW50cywgYSAidGV4dCBj
aHVuayIgaW4gU1ZHIHRlcm1zLCB1c2VkIHRvIHByb2Nlc3MgdGV4dC1hbmNob3IgLyB0ZXh0TGVu
Z3RoIGNvcnJlY3Rpb25zIGluIGxpbmUtbGF5b3V0IG1vZGUuCisKKyAgICAgICAgRG9lc24ndCBh
ZmZlY3QgYW55IHRlc3RzLCBhcyB0aGVzZSBjbGFzc2VzIGFyZW4ndCB1c2VkIHNvIGZhci4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6IEFkZCBTVkdUZXh0TWV0cmljcy4qLCBTVkdUZXh0RnJhZ21l
bnQuaCwgU1ZHVGV4dENodW5rLiogdG8gYnVpbGQuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1RleHRDaHVuay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENo
dW5rOjpTVkdUZXh0Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENodW5rOjpjYWxj
dWxhdGVMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENodW5rOjpjYWxjdWxhdGVU
ZXh0QW5jaG9yU2hpZnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENodW5rOjppc1ZlcnRpY2FsVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q2h1bms6OnRleHRBbmNob3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENodW5rOjpsZW5ndGhBZGp1c3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENodW5rOjpkZXNpcmVkVGV4dExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0Q2h1bms6OmJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDaHVuazo6aGFzRGVz
aXJlZFRleHRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENodW5rOjpoYXNUZXh0
QW5jaG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRGcmFnbWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRGcmFnbWVudDo6U1ZHVGV4dEZyYWdtZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3M6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dE1ldHJpY3M6OmVtcHR5TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
TWV0cmljczo6bWVhc3VyZUNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRNZXRyaWNzOjptZWFzdXJlQWxsQ2hhcmFjdGVyc0luZGl2aWR1YWxseSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRNZXRyaWNzOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmlj
czo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzOjpsZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3M6OkdseXBoOjpHbHlwaCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUZXh0TWV0cmljczo6R2x5cGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3M6OmdseXBoKToKKwogMjAxMC0xMC0wMSAgVmluY2VudCBT
Y2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVz
IFJvYmluc29uLgpJbmRleDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQW5kcm9pZC5tawkocmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdv
cmtpbmcgY29weSkKQEAgLTcxMiw4ICs3MTIsMTAgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9D
QUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlclNWR1RleHRQYXRoLmNwcCBcCiAJcmVu
ZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwIFwKIAlyZW5kZXJpbmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwIFwKKwlyZW5kZXJpbmcvc3ZnL1NWR1RleHRD
aHVuay5jcHAgXAogCXJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwIFwK
LQlyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmNwcAorCXJlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEJ1aWxkZXIuY3BwIFwKKwlyZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
LmNwcAogZW5kaWYKIAogTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCklu
ZGV4OiBXZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDY4ODY3KQorKysgV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTcwNiw4ICsxNzA2LDEwIEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAg
ICByZW5kZXJpbmcvU1ZHVGV4dFF1ZXJ5LmNwcAogICAgICAgICByZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGUuY3BwCiAgICAgICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURl
ZnMuY3BwCisgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcAogICAgICAgICBy
ZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcAogICAgICAgICByZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmNwcAorICAgICAgICByZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzLmNwcAogICAgICAgICBzdmcvQ29sb3JEaXN0YW5jZS5jcHAKICAgICAgICAg
c3ZnL1NWR0FFbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcApJ
bmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiA2ODg2NykKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTI4MDksMTAgKzI4MDksMTUgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmggXAogCVdlYkNvcmUvcmVuZGVy
aW5nL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1NWR1No
YWRvd1RyZWVFbGVtZW50cy5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5r
LmNwcCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5oIFwKKwlXZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dEZyYWdtZW50LmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dExheW91dEJ1aWxkZXIuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEJ1aWxkZXIuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcCBc
CisJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmggXAogCVdlYkNvcmUvcmVu
ZGVyaW5nL1NWR1RleHRDaHVua0xheW91dEluZm8uY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9T
VkdUZXh0Q2h1bmtMYXlvdXRJbmZvLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1NWR1RleHRMYXlv
dXRVdGlsaXRpZXMuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2ODg2NykKKysrIFdlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zNDM1LDEwICszNDM1LDE1IEBACiAgICAgICAg
ICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcCcsCiAgICAgICAgICAgICAncmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcv
c3ZnL1NWR1RleHRDaHVuay5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4
dENodW5rLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dEZyYWdtZW50Lmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3Bw
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEJ1aWxkZXIuY3BwJywK
ICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmgnLAorICAg
ICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwJywKKyAgICAgICAgICAg
ICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9BdXRvVGFibGVMYXlvdXQuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9CaWRpUnVuLmNwcCcsCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJl
dmlzaW9uIDY4ODY3KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAt
MjI5NCw4ICsyMjk0LDExIEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVZpc3VhbERhdGEuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5o
IFwKICAgICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBcCisgICAgcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0Q2h1bmsuaCBcCisgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQu
aCBcCiAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIFwKICAgICBy
ZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmggXAorICAgIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3MuaCBcCiAgICAgcmVuZGVyaW5nL1NWR0NoYXJhY3RlckRhdGEuaCBcCiAg
ICAgcmVuZGVyaW5nL1NWR0NoYXJhY3RlckxheW91dEluZm8uaCBcCiAgICAgcmVuZGVyaW5nL1NW
R0ltYWdlQnVmZmVyVG9vbHMuaCBcCkBAIC0zMjc1LDggKzMyNzgsMTAgQEAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIGNzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNw
cCBcCiAgICAgICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAgXAogICAgICAg
ICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBcCisgICAgICAgIHJlbmRl
cmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0QnVpbGRlci5jcHAgXAorICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNw
cCBcCiAgICAgICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIFwKICAgICAg
ICAgc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgXAogICAgICAgICBzdmcvU1ZHSW1hZ2VM
b2FkZXIuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2
aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzUxNCw2ICszMzUxNCwxOCBAQAogCQkJCU5hbWU9InN2ZyINCiAJ
CQkJPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNW
R1RleHRDaHVuay5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdUZXh0Q2h1bmsuaCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJp
bmdcc3ZnXFNWR1RleHRGcmFnbWVudC5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXMuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMzM1MjksNiArMzM1NDEs
MTQgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRMYXlvdXRC
dWlsZGVyLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdUZXh0TWV0cmljcy5jcHAiDQorCQkJCQk+DQor
CQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XHN2Z1xTVkdUZXh0TWV0cmljcy5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQogCQkJPC9GaWx0
ZXI+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIw
OSwxMSBAQAogCQkwOEU2QTJFOTBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkEy
RTcwRUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLzsgfTsKIAkJMDhF
NkUwRjEwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBFRjBFRkY0MkJBMDAw
MjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDhFNkUwRjIwRUZGNDJC
QTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRjAwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZp
ZWxkU2V0RWxlbWVudC5oICovOyB9OworCQkwOEYwQkZDMjEyNTVDNTNDMDAwNzUxODUgLyogU1ZH
VGV4dENodW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RjBCRkJEMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuY3BwICovOyB9Owor
CQkwOEYwQkZDMzEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYwQkZCRTEyNTVDNTNDMDAwNzUx
ODUgLyogU1ZHVGV4dENodW5rLmggKi87IH07CisJCTA4RjBCRkM0MTI1NUM1M0MwMDA3NTE4NSAv
KiBTVkdUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4RjBCRkJGMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0RnJhZ21lbnQuaCAq
LzsgfTsKKwkJMDhGMEJGQzUxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjBCRkMwMTI1
NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5jcHAgKi87IH07CisJCTA4RjBCRkM2MTI1
NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQzExMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1Rl
eHRNZXRyaWNzLmggKi87IH07CiAJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNw
cCAqLzsgfTsKIAkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJG
MDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAw
QjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjEzMiw2
ICs2MTM3LDExIEBACiAJCTA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBvc3RmaWVsZEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZGNDJCQTAw
MDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYwQkZCRDEyNTVDNTNDMDAwNzUxODUg
LyogU1ZHVGV4dENodW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR1RleHRDaHVuay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RjBCRkJF
MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHVGV4dENodW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA4RjBCRkJGMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0RnJhZ21lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dEZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA4RjBCRkMwMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmlj
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TWV0cmlj
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RjBCRkMxMTI1NUM1M0MwMDA3
NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdUZXh0TWV0cmljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEYyRjAw
NzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMDBF
Q0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTE2MjgsMTAgKzExNjM4LDE1IEBACiAJCTA4OEMyRjc0MTIzOTAw
ODAwMDNENjVDRSAvKiBzdmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTA4RjBCRkJEMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuY3BwICov
LAorCQkJCTA4RjBCRkJFMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuaCAqLywKKwkJ
CQkwOEYwQkZCRjEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dEZyYWdtZW50LmggKi8sCiAJCQkJ
MDg4QzJGNzUxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcCAq
LywKIAkJCQkwODhDMkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0
ZXMuaCAqLywKIAkJCQkwODhDMkY3NzEyMzkwMDgxMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEJ1
aWxkZXIuY3BwICovLAogCQkJCTA4OEMyRjc4MTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5
b3V0QnVpbGRlci5oICovLAorCQkJCTA4RjBCRkMwMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0
TWV0cmljcy5jcHAgKi8sCisJCQkJMDhGMEJGQzExMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRN
ZXRyaWNzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHN2ZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0yMDkxOSw2ICsyMDkzNCw5IEBACiAJCQkJNDlCNjlFNjAxMjU0RkVFRDAwN0Q1
N0VCIC8qIExvb3BCbGlubkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlCNjlFNjQx
MjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubk1hdGhVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlCNjlFNjYxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlublRleHR1cmVDb29yZHMuaCBp
biBIZWFkZXJzICovLAorCQkJCTA4RjBCRkMzMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1
bmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RjBCRkM0MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdU
ZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RjBCRkM2MTI1NUM1M0MwMDA3NTE4
NSAvKiBTVkdUZXh0TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMzQ0Myw2ICsyMzQ2MSw4
IEBACiAJCQkJNDlCNjlFNUUxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlCNjlFNjMxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BC
bGlubk1hdGhVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUI2OUU2NTEyNTRGRUVEMDA3
RDU3RUIgLyogTG9vcEJsaW5uVGV4dHVyZUNvb3Jkcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
OEYwQkZDMjEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTA4RjBCRkM1MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHVGV4dENodW5rLmgiCisK
KyNpbmNsdWRlICJTVkdJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiU1ZHVGV4dEZyYWdtZW50
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHVGV4dENodW5rOjpTVkdUZXh0Q2h1bmso
Ym9vbCBpc1ZlcnRpY2FsVGV4dCwgRVRleHRBbmNob3IgdGV4dEFuY2hvciwgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpTVkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCwgZmxvYXQgZGVzaXJl
ZFRleHRMZW5ndGgpCisgICAgOiBtX2lzVmVydGljYWxUZXh0KGlzVmVydGljYWxUZXh0KQorICAg
ICwgbV90ZXh0QW5jaG9yKHRleHRBbmNob3IpCisgICAgLCBtX2xlbmd0aEFkanVzdChsZW5ndGhB
ZGp1c3QpCisgICAgLCBtX2Rlc2lyZWRUZXh0TGVuZ3RoKGRlc2lyZWRUZXh0TGVuZ3RoKQorewor
fQorCit2b2lkIFNWR1RleHRDaHVuazo6Y2FsY3VsYXRlTGVuZ3RoKGZsb2F0JiBsZW5ndGgsIHVu
c2lnbmVkJiBjaGFyYWN0ZXJzKSBjb25zdAoreworICAgIFNWR1RleHRGcmFnbWVudCogbGFzdEZy
YWdtZW50ID0gMDsKKworICAgIHVuc2lnbmVkIGJveENvdW50ID0gbV9ib3hlcy5zaXplKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBib3hQb3NpdGlvbiA9IDA7IGJveFBvc2l0aW9uIDwgYm94Q291bnQ7
ICsrYm94UG9zaXRpb24pIHsKKyAgICAgICAgU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCA9IG1f
Ym94ZXMuYXQoYm94UG9zaXRpb24pOworICAgICAgICBWZWN0b3I8U1ZHVGV4dEZyYWdtZW50PiYg
ZnJhZ21lbnRzID0gdGV4dEJveC0+dGV4dEZyYWdtZW50cygpOworICAgICAgICB1bnNpZ25lZCBz
aXplID0gZnJhZ21lbnRzLnNpemUoKTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICAgICAgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCA9IGZyYWdtZW50cy5hdChp
KTsKKyAgICAgICAgICAgIGNoYXJhY3RlcnMgKz0gZnJhZ21lbnQubGVuZ3RoOworCisgICAgICAg
ICAgICBpZiAobV9pc1ZlcnRpY2FsVGV4dCkKKyAgICAgICAgICAgICAgICBsZW5ndGggKz0gZnJh
Z21lbnQuaGVpZ2h0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxlbmd0aCAr
PSBmcmFnbWVudC53aWR0aDsKKworICAgICAgICAgICAgaWYgKCFsYXN0RnJhZ21lbnQpIHsKKyAg
ICAgICAgICAgICAgICBsYXN0RnJhZ21lbnQgPSAmZnJhZ21lbnQ7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJlc2VwZWN0IGdhcCBi
ZXR3ZWVuIGNodW5rcy4KKyAgICAgICAgICAgIGlmIChtX2lzVmVydGljYWxUZXh0KQorICAgICAg
ICAgICAgICAgICBsZW5ndGggKz0gZnJhZ21lbnQueSAtIChsYXN0RnJhZ21lbnQtPnkgKyBsYXN0
RnJhZ21lbnQtPmhlaWdodCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIGxl
bmd0aCArPSBmcmFnbWVudC54IC0gKGxhc3RGcmFnbWVudC0+eCArIGxhc3RGcmFnbWVudC0+d2lk
dGgpOworCisgICAgICAgICAgICBsYXN0RnJhZ21lbnQgPSAmZnJhZ21lbnQ7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Zsb2F0IFNWR1RleHRDaHVuazo6Y2FsY3VsYXRlVGV4dEFuY2hvclNoaWZ0
KGZsb2F0IGxlbmd0aCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdGV4dEFuY2hvcikgeworICAg
IGNhc2UgVEFfU1RBUlQ6CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgVEFfTUlERExFOgor
ICAgICAgICByZXR1cm4gLWxlbmd0aCAvIDI7CisgICAgY2FzZSBUQV9FTkQ6CisgICAgICAgIHJl
dHVybiAtbGVuZ3RoOworICAgIH07CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNWRykKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHVGV4dENodW5rX2gK
KyNkZWZpbmUgU1ZHVGV4dENodW5rX2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZH
UmVuZGVyU3R5bGVEZWZzLmgiCisjaW5jbHVkZSAiU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHSW5saW5lVGV4dEJveDsKKworLy8gQSBT
VkdUZXh0Q2h1bmsgZGVzY3JpYmVzIGEgcmFuZ2Ugb2YgU1ZHVGV4dEZyYWdtZW50cywgc2VlIHRo
ZSBTVkcgc3BlYyBkZWZpbml0aW9uIG9mIGEgInRleHQgY2h1bmsiLgorY2xhc3MgU1ZHVGV4dENo
dW5rIHsKK3B1YmxpYzoKKyAgICBTVkdUZXh0Q2h1bmsoYm9vbCBpc1ZlcnRpY2FsVGV4dCwgRVRl
eHRBbmNob3IsIFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSwgZmxv
YXQgZGVzaXJlZFRleHRMZW5ndGgpOworCisgICAgdm9pZCBjYWxjdWxhdGVMZW5ndGgoZmxvYXQm
IGxlbmd0aCwgdW5zaWduZWQmIGNoYXJhY3RlcnMpIGNvbnN0OworICAgIGZsb2F0IGNhbGN1bGF0
ZVRleHRBbmNob3JTaGlmdChmbG9hdCBsZW5ndGgpIGNvbnN0OworCisgICAgYm9vbCBpc1ZlcnRp
Y2FsVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWZXJ0aWNhbFRleHQ7IH0KKyAgICBFVGV4dEFu
Y2hvciB0ZXh0QW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QW5jaG9yOyB9CisgICAgU1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpTVkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGVuZ3RoQWRqdXN0OyB9CisgICAgZmxvYXQgZGVzaXJlZFRleHRMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2Rlc2lyZWRUZXh0TGVuZ3RoOyB9CisKKyAgICBWZWN0b3I8
U1ZHSW5saW5lVGV4dEJveCo+JiBib3hlcygpIHsgcmV0dXJuIG1fYm94ZXM7IH0KKyAgICBjb25z
dCBWZWN0b3I8U1ZHSW5saW5lVGV4dEJveCo+JiBib3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fYm94
ZXM7IH0KKworICAgIGJvb2wgaGFzRGVzaXJlZFRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2xlbmd0aEFkanVzdCAhPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktO
T1dOICYmIG1fZGVzaXJlZFRleHRMZW5ndGggPiAwOyB9IAorICAgIGJvb2wgaGFzVGV4dEFuY2hv
cigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEFuY2hvciAhPSBUQV9TVEFSVDsgfQorCitwcml2YXRl
OgorICAgIC8vIENvbnRhaW5zIGFsbCBTVkdJbmxpbmVUZXh0Qm94ZXMgdGhpcyBjaHVuayBzcGFu
cy4KKyAgICBWZWN0b3I8U1ZHSW5saW5lVGV4dEJveCo+IG1fYm94ZXM7CisKKyAgICAvLyB3cml0
aW5nLW1vZGUgc3BlY2lmaWMgcHJvcGVydHkuCisgICAgYm9vbCBtX2lzVmVydGljYWxUZXh0Owor
CisgICAgLy8gdGV4dC1hbmNob3Igc3BlY2lmaWMgcHJvcGVydGllcy4KKyAgICBFVGV4dEFuY2hv
ciBtX3RleHRBbmNob3I7CisKKyAgICAvLyB0ZXh0TGVuZ3RoL2xlbmd0aEFkanVzdCBzcGVjaWZp
YyBwcm9wZXJ0aWVzLgorICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0
VHlwZSBtX2xlbmd0aEFkanVzdDsKKyAgICBmbG9hdCBtX2Rlc2lyZWRUZXh0TGVuZ3RoOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRp
ZgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRGcmFnbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdUZXh0RnJh
Z21lbnRfaAorI2RlZmluZSBTVkdUZXh0RnJhZ21lbnRfaAorCisjaWYgRU5BQkxFKFNWRykKKyNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBB
IFNWR1RleHRGcmFnbWVudCBkZXNjcmliZXMgYSB0ZXh0IGZyYWdtZW50IG9mIGEgUmVuZGVyU1ZH
SW5saW5lVGV4dCB3aGljaCBjYW4gYmUgcmVuZGVyZWQgYXQgb25jZS4KK3N0cnVjdCBTVkdUZXh0
RnJhZ21lbnQgeworICAgIFNWR1RleHRGcmFnbWVudCgpCisgICAgICAgIDogcG9zaXRpb25MaXN0
T2Zmc2V0KDApCisgICAgICAgICwgbGVuZ3RoKDApCisgICAgICAgICwgeCgwKQorICAgICAgICAs
IHkoMCkKKyAgICAgICAgLCB3aWR0aCgwKQorICAgICAgICAsIGhlaWdodCgwKQorICAgIHsKKyAg
ICB9CisKKyAgICAvLyBUaGUgZmlyc3QgcmVuZGVyZWQgY2hhcmFjdGVyIHN0YXJ0cyBhdCBSZW5k
ZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJzKCkgKyBwb3NpdGlvbkxpc3RPZmZzZXQuCisgICAg
dW5zaWduZWQgcG9zaXRpb25MaXN0T2Zmc2V0OworICAgIHVuc2lnbmVkIGxlbmd0aDsKKworICAg
IGZsb2F0IHg7CisgICAgZmxvYXQgeTsKKyAgICBmbG9hdCB3aWR0aDsKKyAgICBmbG9hdCBoZWln
aHQ7CisKKyAgICAvLyBJbmNsdWRlcyByb3RhdGlvbi9nbHlwaC1vcmllbnRhdGlvbi0oaG9yaXpv
bnRhbHx2ZXJ0aWNhbCkgdHJhbnNmb3JtcywgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhz
IiAoZm9yIHRleHRQYXRoIG9ubHkpLAorICAgIC8vIGFzIHdlbGwgYXMgb3JpZW50YXRpb24gcmVs
YXRlZCBzaGlmdHMgKHNlZSBTVkdDaGFyYWN0ZXJMYXlvdXRCdWlsZGVyLCB3aGljaCBidWlsZHMg
dGhpcyB0cmFuc2Zvcm1hdGlvbikuCisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1RleHRNZXRyaWNzLmgiCisK
KyNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNzKCkKKyAgICA6IG1fd2lkdGgoMCkKKyAg
ICAsIG1faGVpZ2h0KDApCisgICAgLCBtX2xlbmd0aCgwKQoreworfQorCitTVkdUZXh0TWV0cmlj
czo6U1ZHVGV4dE1ldHJpY3MoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCB1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgdGV4dExlbmd0aCkKKyAgICA6IG1fd2lkdGgoMCkK
KyAgICAsIG1faGVpZ2h0KDApCisgICAgLCBtX2xlbmd0aCgwKQoreworICAgIGludCBleHRyYUNo
YXJzQXZhaWxhYmxlID0gdGV4dExlbmd0aCAtIChwb3NpdGlvbiArIHJ1bi5sZW5ndGgoKSk7Cisg
ICAgaW50IGxlbmd0aCA9IDA7CisKKyAgICBtX3dpZHRoID0gZm9udC5mbG9hdFdpZHRoKHJ1biwg
ZXh0cmFDaGFyc0F2YWlsYWJsZSwgbGVuZ3RoLCBtX2dseXBoLm5hbWUpOworICAgIG1faGVpZ2h0
ID0gZm9udC5oZWlnaHQoKTsKKyAgICBtX2dseXBoLnVuaWNvZGVTdHJpbmcgPSBTdHJpbmcocnVu
LmNoYXJhY3RlcnMoKSwgbGVuZ3RoKTsKKyAgICBtX2dseXBoLmlzVmFsaWQgPSB0cnVlOworCisg
ICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsKKyAgICBtX2xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihsZW5ndGgpOworfQorCitib29sIFNWR1RleHRNZXRyaWNzOjpvcGVyYXRvcj09KGNvbnN0
IFNWR1RleHRNZXRyaWNzJiBvdGhlcikKK3sKKyAgICByZXR1cm4gbV93aWR0aCA9PSBvdGhlci5t
X3dpZHRoCisgICAgICAgICYmIG1faGVpZ2h0ID09IG90aGVyLm1faGVpZ2h0CisgICAgICAgICYm
IG1fbGVuZ3RoID09IG90aGVyLm1fbGVuZ3RoCisgICAgICAgICYmIG1fZ2x5cGggPT0gb3RoZXIu
bV9nbHlwaDsKK30KKworU1ZHVGV4dE1ldHJpY3MgU1ZHVGV4dE1ldHJpY3M6OmVtcHR5TWV0cmlj
cygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdUZXh0TWV0cmljcywgc19lbXB0eU1l
dHJpY3MsICgpKTsKKyAgICBzX2VtcHR5TWV0cmljcy5tX2xlbmd0aCA9IDE7CisgICAgcmV0dXJu
IHNfZW1wdHlNZXRyaWNzOworfQorCitTVkdUZXh0TWV0cmljcyBTVkdUZXh0TWV0cmljczo6bWVh
c3VyZUNoYXJhY3RlclJhbmdlKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQsIHVuc2lnbmVkIHBv
c2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHRleHQpOworICAgIEFTU0VS
VCh0ZXh0LT5zdHlsZSgpKTsKKworICAgIGNvbnN0IEZvbnQmIGZvbnQgPSB0ZXh0LT5zdHlsZSgp
LT5mb250KCk7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0ZXh0LT5jaGFyYWN0ZXJz
KCk7CisKKyAgICBUZXh0UnVuIHJ1bihjaGFyYWN0ZXJzICsgcG9zaXRpb24sIGxlbmd0aCk7Cisg
ICAgcnVuLmRpc2FibGVTcGFjaW5nKCk7CisgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7
CisKKyAgICByZXR1cm4gU1ZHVGV4dE1ldHJpY3MoZm9udCwgcnVuLCBwb3NpdGlvbiwgdGV4dC0+
dGV4dExlbmd0aCgpKTsKK30KKwordm9pZCBTVkdUZXh0TWV0cmljczo6bWVhc3VyZUFsbENoYXJh
Y3RlcnNJbmRpdmlkdWFsbHkoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCwgVmVjdG9yPFNWR1Rl
eHRNZXRyaWNzPiYgYWxsTWV0cmljcykKK3sKKyAgICBBU1NFUlQodGV4dCk7CisgICAgQVNTRVJU
KHRleHQtPnN0eWxlKCkpOworCisgICAgY29uc3QgRm9udCYgZm9udCA9IHRleHQtPnN0eWxlKCkt
PmZvbnQoKTsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRleHQtPmNoYXJhY3RlcnMo
KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0LT50ZXh0TGVuZ3RoKCk7CisKKyAgICBUZXh0
UnVuIHJ1bigwLCAwKTsKKyAgICBydW4uZGlzYWJsZVNwYWNpbmcoKTsKKyAgICBydW4uZGlzYWJs
ZVJvdW5kaW5nSGFja3MoKTsKKworICAgIGZvciAodW5zaWduZWQgcG9zaXRpb24gPSAwOyBwb3Np
dGlvbiA8IGxlbmd0aDsgKSB7CisgICAgICAgIHJ1bi5zZXRUZXh0KGNoYXJhY3RlcnMgKyBwb3Np
dGlvbiwgMSk7CisKKyAgICAgICAgU1ZHVGV4dE1ldHJpY3MgbWV0cmljcyhmb250LCBydW4sIHBv
c2l0aW9uLCB0ZXh0LT50ZXh0TGVuZ3RoKCkpOworICAgICAgICBhbGxNZXRyaWNzLmFwcGVuZCht
ZXRyaWNzKTsKKyAgICAgICAgcG9zaXRpb24gKz0gbWV0cmljcy5sZW5ndGgoKTsKKyAgICB9Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3MuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWZuZGVmIFNWR1RleHRNZXRyaWNzX2gKKyNkZWZpbmUgU1ZHVGV4dE1ldHJpY3Nf
aAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250OworY2xhc3MgUmVuZGVyU1ZHSW5saW5l
VGV4dDsKK2NsYXNzIFRleHRSdW47CisKK2NsYXNzIFNWR1RleHRNZXRyaWNzIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgU1ZHVGV4dE1ldHJpY3MgZW1wdHlNZXRyaWNzKCk7CisgICAgc3RhdGljIFNW
R1RleHRNZXRyaWNzIG1lYXN1cmVDaGFyYWN0ZXJSYW5nZShSZW5kZXJTVkdJbmxpbmVUZXh0Kiwg
dW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgbWVh
c3VyZUFsbENoYXJhY3RlcnNJbmRpdmlkdWFsbHkoUmVuZGVyU1ZHSW5saW5lVGV4dCosIFZlY3Rv
cjxTVkdUZXh0TWV0cmljcz4mKTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdUZXh0
TWV0cmljcyYpOworCisgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9
CisgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgc3RydWN0IEds
eXBoIHsKKyAgICAgICAgR2x5cGgoKQorICAgICAgICAgICAgOiBpc1ZhbGlkKGZhbHNlKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2x5cGgm
IG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaXNWYWxpZCA9PSBvdGhlci5p
c1ZhbGlkCisgICAgICAgICAgICAgICAgJiYgbmFtZSA9PSBvdGhlci5uYW1lCisgICAgICAgICAg
ICAgICAgJiYgdW5pY29kZVN0cmluZyA9PSBvdGhlci51bmljb2RlU3RyaW5nOworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBpc1ZhbGlkOworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAg
U3RyaW5nIHVuaWNvZGVTdHJpbmc7CisgICAgfTsKKworICAgIC8vIE9ubHkgdXNlZnVsIHdoZW4g
bWVhc3VyaW5nIGluZGl2aWR1YWwgY2hhcmFjdGVycywgdG8gbG9va3VwIGxpZ2F0dXJlcy4KKyAg
ICBjb25zdCBHbHlwaCYgZ2x5cGgoKSBjb25zdCB7IHJldHVybiBtX2dseXBoOyB9CisKK3ByaXZh
dGU6CisgICAgU1ZHVGV4dE1ldHJpY3MoKTsKKyAgICBTVkdUZXh0TWV0cmljcyhjb25zdCBGb250
JiwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCB0ZXh0TGVuZ3Ro
KTsKKworICAgIGZsb2F0IG1fd2lkdGg7CisgICAgZmxvYXQgbV9oZWlnaHQ7CisgICAgdW5zaWdu
ZWQgbV9sZW5ndGg7CisgICAgR2x5cGggbV9nbHlwaDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69432</attachid>
            <date>2010-10-01 01:03:36 -0700</date>
            <delta_ts>2010-10-01 01:32:04 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>TextNewFiles.diff</filename>
            <type>text/plain</type>
            <size>26884</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODg2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMTAtMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNWR1RleHRNZXRyaWNzL1NWR1RleHRGcmFnbWVudC9TVkdUZXh0Q2h1bmsgcHJp
bWl0aXZlcyB1c2VkIGJ5IHRoZSBuZXcgbGF5b3V0IGVuZ2luZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5NjQKKworICAgICAgICBTVkdUZXh0TWV0
cmljcyBlbmNhcHN1bGF0ZXMgdGhlIGxvZ2ljIGZvciBtZWFzdXJpbmcgYXJiaXRhcnkgbGVuZ3Ro
IFNWRyB0ZXh0LgorICAgICAgICBTVkdUZXh0RnJhZ21lbnQgcmVwcmVzZW50cyBhIGZyYWdtZW50
IG9mIHRleHQgd2hpY2ggY2FuIGJlIG1lYXN1cmVkL3JlbmRlcmVkIGluIG9uZSBzaG90LgorICAg
ICAgICBTVkdUZXh0Q2h1bmsgZGVzY3JpYmVzIGEgc2V0IG9mIGZyYWdtZW50cywgYSAidGV4dCBj
aHVuayIgaW4gU1ZHIHRlcm1zLCB1c2VkIHRvIHByb2Nlc3MgdGV4dC1hbmNob3IgLyB0ZXh0TGVu
Z3RoIGNvcnJlY3Rpb25zIGluIGxpbmUtbGF5b3V0IG1vZGUuCisKKyAgICAgICAgRG9lc24ndCBh
ZmZlY3QgYW55IHRlc3RzLCBhcyB0aGVzZSBjbGFzc2VzIGFyZW4ndCB1c2VkIHNvIGZhci4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6IEFkZCBTVkdUZXh0TWV0cmljcy4qLCBTVkdUZXh0RnJhZ21l
bnQuaCwgU1ZHVGV4dENodW5rLiogdG8gYnVpbGQuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1RleHRDaHVuay5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
VGV4dENodW5rLmg6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dEZyYWdt
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmg6IEFkZGVk
LgorCiAyMDEwLTEwLTAxICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJDb3JlL0FuZHJv
aWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA2ODg2NykK
KysrIFdlYkNvcmUvQW5kcm9pZC5tawkod29ya2luZyBjb3B5KQpAQCAtNzEyLDggKzcxMiwxMCBA
QCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlyZW5kZXJpbmcvUmVu
ZGVyU1ZHVGV4dFBhdGguY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAg
XAorCXJlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcCBcCiAJcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgXAotCXJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEJ1
aWxkZXIuY3BwCisJcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5jcHAgXAorCXJl
bmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCiBlbmRpZgogCiBMT0NBTF9TUkNfRklMRVMg
Oj0gJChMT0NBTF9TUkNfRklMRVMpIFwKSW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjg4NjcpCisrKyBX
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzA2LDggKzE3MDYsMTAg
QEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHJlbmRlcmluZy9TVkdUZXh0UXVlcnkuY3BwCiAg
ICAgICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKICAgICAgICAgcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAKKyAgICAgICAgcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0Q2h1bmsuY3BwCiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXMuY3BwCiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEJ1aWxkZXIuY3Bw
CisgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCiAgICAgICAgIHN2Zy9D
b2xvckRpc3RhbmNlLmNwcAogICAgICAgICBzdmcvU1ZHQUVsZW1lbnQuY3BwCiAgICAgICAgIHN2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDY4ODY3KQorKysg
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjgwOSwxMCArMjgwOSwx
NSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxp
bmVCb3guaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcCBc
CiAJV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmggXAorCVdlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dENodW5rLmggXAorCVdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQu
aCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcCBc
CiAJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggXAogCVdl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5jcHAgXAogCVdlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5oIFwKKwlXZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dE1ldHJpY3MuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvU1ZHVGV4dENodW5rTGF5b3V0SW5mby5j
cHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1NWR1RleHRDaHVua0xheW91dEluZm8uaCBcCiAJV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHVGV4dExheW91dFV0aWxpdGllcy5jcHAgXApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDY4ODY3KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM0
MzUsMTAgKzM0MzUsMTUgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFu
c2Zvcm1EYXRhLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERh
dGEuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgn
LAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcCcsCisgICAgICAg
ICAgICAncmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuaCcsCisgICAgICAgICAgICAncmVuZGVy
aW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QnVpbGRlci5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZH
VGV4dExheW91dEJ1aWxkZXIuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljcy5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3Mu
aCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL0JpZGlSdW4uY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL1dlYkNv
cmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMjk0LDggKzIyOTQsMTEgQEAgSEVBREVSUyArPSBc
CiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oIFwKICAgICByZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5k
ZXJTdHlsZS5oIFwKKyAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5oIFwKKyAgICByZW5k
ZXJpbmcvc3ZnL1NWR1RleHRGcmFnbWVudC5oIFwKICAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzLmggXAogICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEJ1aWxk
ZXIuaCBcCisgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5oIFwKICAgICByZW5kZXJp
bmcvU1ZHQ2hhcmFjdGVyRGF0YS5oIFwKICAgICByZW5kZXJpbmcvU1ZHQ2hhcmFjdGVyTGF5b3V0
SW5mby5oIFwKICAgICByZW5kZXJpbmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5oIFwKQEAgLTMyNzUs
OCArMzI3OCwxMCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAg
Y3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL3N0eWxlL1NW
R1JlbmRlclN0eWxlLmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZURlZnMuY3BwIFwKKyAgICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwIFwKICAg
ICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgXAogICAgICAg
ICByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmNwcCBcCisgICAgICAgIHJlbmRl
cmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL1BvaW50ZXJF
dmVudHNIaXRSdWxlcy5jcHAgXAogICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNw
cCBcCiAgICAgICAgIHN2Zy9TVkdJbWFnZUxvYWRlci5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2ODg2NykKKysrIFdlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNTE0LDYgKzMzNTE0
LDE4IEBACiAJCQkJTmFtZT0ic3ZnIg0KIAkJCQk+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4dENodW5rLmNwcCINCisJCQkJCT4NCisJCQkJ
PC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3Zn
XFNWR1RleHRDaHVuay5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4dEZyYWdtZW50LmgiDQorCQkJ
CQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVu
ZGVyaW5nXHN2Z1xTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCkBAIC0zMzUyOSw2ICszMzU0MSwxNCBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xzdmdcU1ZHVGV4dExheW91dEJ1aWxkZXIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1Rl
eHRNZXRyaWNzLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRNZXRyaWNzLmgiDQorCQkJCQk+
DQorCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0K
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA2ODg2NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDksNiArMjA5LDExIEBACiAJCTA4RTZBMkU5MEVFRTAzNTIwMEFD
MTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2QTJFNzBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZp
ZWxkRWxlbWVudC5oICovOyB9OwogCQkwOEU2RTBGMTBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmll
bGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3Bw
ICovOyB9OwogCQkwOEU2RTBGMjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBG
MDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmggKi87IH07CisJCTA4RjBC
RkMyMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQkQxMjU1QzUzQzAwMDc1MTg1IC8q
IFNWR1RleHRDaHVuay5jcHAgKi87IH07CisJCTA4RjBCRkMzMTI1NUM1M0MwMDA3NTE4NSAvKiBT
VkdUZXh0Q2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RjBCRkJFMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuaCAqLzsgfTsKKwkJ
MDhGMEJGQzQxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRGcmFnbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQkYxMjU1QzUzQzAwMDc1
MTg1IC8qIFNWR1RleHRGcmFnbWVudC5oICovOyB9OworCQkwOEYwQkZDNTEyNTVDNTNDMDAwNzUx
ODUgLyogU1ZHVGV4dE1ldHJpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhGMEJGQzAxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNz
LmNwcCAqLzsgfTsKKwkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYwQkZD
MTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCAqLzsgfTsKIAkJMDhGMkYwMDkx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4
IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OwogCQkwOEYyRjAwQTEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQTQ4NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIw
MEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC02MTMyLDYgKzYxMzcsMTEgQEAKIAkJMDhFNkEyRTcwRUVFMDM1
MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV01MUG9zdGZpZWxkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RTZFMEYwMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV01MRmllbGRTZXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA4RjBCRkJEMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dENodW5rLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMEJGQkUxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVu
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0Q2h1bmsuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMEJGQkYxMjU1QzUzQzAwMDc1MTg1IC8qIFNW
R1RleHRGcmFnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0
RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMEJGQzAxMjU1QzUz
QzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR1RleHRNZXRyaWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDhGMEJGQzExMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRNZXRyaWNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
ckltYWdlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEYyRjAw
ODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4RkI4NEIwMEVDRTM3MzMwMERDMDY0RSAvKiBXTUxFbGVtZW50RmFj
dG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFbGVtZW50
RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTYyOCwxMCArMTE2
MzgsMTUgQEAKIAkJMDg4QzJGNzQxMjM5MDA4MDAwM0Q2NUNFIC8qIHN2ZyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDhGMEJGQkQxMjU1QzUzQzAwMDc1
MTg1IC8qIFNWR1RleHRDaHVuay5jcHAgKi8sCisJCQkJMDhGMEJGQkUxMjU1QzUzQzAwMDc1MTg1
IC8qIFNWR1RleHRDaHVuay5oICovLAorCQkJCTA4RjBCRkJGMTI1NUM1M0MwMDA3NTE4NSAvKiBT
VkdUZXh0RnJhZ21lbnQuaCAqLywKIAkJCQkwODhDMkY3NTEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZH
VGV4dExheW91dEF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTA4OEMyRjc2MTIzOTAwODAwMDNENjVD
RSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovLAogCQkJCTA4OEMyRjc3MTIzOTAwODEw
MDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QnVpbGRlci5jcHAgKi8sCiAJCQkJMDg4QzJGNzgxMjM5
MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRCdWlsZGVyLmggKi8sCisJCQkJMDhGMEJGQzAx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmNwcCAqLywKKwkJCQkwOEYwQkZDMTEy
NTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
c3ZnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwOTE5LDYgKzIwOTM0LDkgQEAK
IAkJCQk0OUI2OUU2MDEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ29uc3RhbnRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUI2OUU2NDEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uTWF0
aFV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUI2OUU2NjEyNTRGRUVEMDA3RDU3RUIgLyog
TG9vcEJsaW5uVGV4dHVyZUNvb3Jkcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhGMEJGQzMxMjU1
QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhGMEJG
QzQxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTIzNDQzLDYgKzIzNDYxLDggQEAKIAkJCQk0OUI2OUU1RTEyNTRGRUVEMDA3RDU3
RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUI2OUU2
MzEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uTWF0aFV0aWxzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5QjY5RTY1MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5UZXh0dXJlQ29vcmRz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4RjBCRkMyMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdU
ZXh0Q2h1bmsuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGMEJGQzUxMjU1QzUzQzAwMDc1MTg1
IC8qIFNWR1RleHRNZXRyaWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRDaHVuay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dENodW5rLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNp
bmNsdWRlICJTVkdUZXh0Q2h1bmsuaCIKKworI2luY2x1ZGUgIlNWR0lubGluZVRleHRCb3guaCIK
KyNpbmNsdWRlICJTVkdUZXh0RnJhZ21lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBGSVhNRTogUmVuYW1lIHRvIFNWR1RleHRDaHVuaywgb25jZSB0aGUgbmV3IGxheW91dCBlbmdp
bmUgaGFzIGxhbmRlZC4KK1NWR1RleHRDaHVua05ldzo6U1ZHVGV4dENodW5rTmV3KGJvb2wgaXNW
ZXJ0aWNhbFRleHQsIEVUZXh0QW5jaG9yIHRleHRBbmNob3IsIFNWR1RleHRDb250ZW50RWxlbWVu
dDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSBsZW5ndGhBZGp1c3QsIGZsb2F0IGRlc2lyZWRUZXh0TGVu
Z3RoKQorICAgIDogbV9pc1ZlcnRpY2FsVGV4dChpc1ZlcnRpY2FsVGV4dCkKKyAgICAsIG1fdGV4
dEFuY2hvcih0ZXh0QW5jaG9yKQorICAgICwgbV9sZW5ndGhBZGp1c3QobGVuZ3RoQWRqdXN0KQor
ICAgICwgbV9kZXNpcmVkVGV4dExlbmd0aChkZXNpcmVkVGV4dExlbmd0aCkKK3sKK30KKwordm9p
ZCBTVkdUZXh0Q2h1bmtOZXc6OmNhbGN1bGF0ZUxlbmd0aChmbG9hdCYgbGVuZ3RoLCB1bnNpZ25l
ZCYgY2hhcmFjdGVycykgY29uc3QKK3sKKyAgICBTVkdUZXh0RnJhZ21lbnQqIGxhc3RGcmFnbWVu
dCA9IDA7CisKKyAgICB1bnNpZ25lZCBib3hDb3VudCA9IG1fYm94ZXMuc2l6ZSgpOworICAgIGZv
ciAodW5zaWduZWQgYm94UG9zaXRpb24gPSAwOyBib3hQb3NpdGlvbiA8IGJveENvdW50OyArK2Jv
eFBvc2l0aW9uKSB7CisgICAgICAgIFNWR0lubGluZVRleHRCb3gqIHRleHRCb3ggPSBtX2JveGVz
LmF0KGJveFBvc2l0aW9uKTsKKyAgICAgICAgLy8gRklYTUU6IEVuYWJsZSB0aGlzIGNvZGUsIG9u
Y2UgdGhlIG5ldyBsYXlvdXQgZW5naW5lIGhhcyBsYW5kZWQhIFRoaXMgaXMgbm9uZnVuY3Rpb25h
bCBmb3Igbm93LgorCQkvLyBWZWN0b3I8U1ZHVGV4dEZyYWdtZW50PiYgZnJhZ21lbnRzID0gdGV4
dEJveC0+dGV4dEZyYWdtZW50cygpOworICAgICAgICBWZWN0b3I8U1ZHVGV4dEZyYWdtZW50PiBm
cmFnbWVudHM7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBmcmFnbWVudHMuc2l6ZSgpOworICAg
ICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBTVkdUZXh0RnJhZ21l
bnQmIGZyYWdtZW50ID0gZnJhZ21lbnRzLmF0KGkpOworICAgICAgICAgICAgY2hhcmFjdGVycyAr
PSBmcmFnbWVudC5sZW5ndGg7CisKKyAgICAgICAgICAgIGlmIChtX2lzVmVydGljYWxUZXh0KQor
ICAgICAgICAgICAgICAgIGxlbmd0aCArPSBmcmFnbWVudC5oZWlnaHQ7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZyYWdtZW50LndpZHRoOworCisgICAgICAg
ICAgICBpZiAoIWxhc3RGcmFnbWVudCkgeworICAgICAgICAgICAgICAgIGxhc3RGcmFnbWVudCA9
ICZmcmFnbWVudDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gUmVzZXBlY3QgZ2FwIGJldHdlZW4gY2h1bmtzLgorICAgICAgICAgICAg
aWYgKG1faXNWZXJ0aWNhbFRleHQpCisgICAgICAgICAgICAgICAgIGxlbmd0aCArPSBmcmFnbWVu
dC55IC0gKGxhc3RGcmFnbWVudC0+eSArIGxhc3RGcmFnbWVudC0+aGVpZ2h0KTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZyYWdtZW50LnggLSAobGFzdEZy
YWdtZW50LT54ICsgbGFzdEZyYWdtZW50LT53aWR0aCk7CisKKyAgICAgICAgICAgIGxhc3RGcmFn
bWVudCA9ICZmcmFnbWVudDsKKyAgICAgICAgfQorICAgIH0KK30KKworZmxvYXQgU1ZHVGV4dENo
dW5rTmV3OjpjYWxjdWxhdGVUZXh0QW5jaG9yU2hpZnQoZmxvYXQgbGVuZ3RoKSBjb25zdAorewor
ICAgIHN3aXRjaCAobV90ZXh0QW5jaG9yKSB7CisgICAgY2FzZSBUQV9TVEFSVDoKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgY2FzZSBUQV9NSURETEU6CisgICAgICAgIHJldHVybiAtbGVuZ3RoIC8g
MjsKKyAgICBjYXNlIFRBX0VORDoKKyAgICAgICAgcmV0dXJuIC1sZW5ndGg7CisgICAgfTsKKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0Q2h1bmsuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0Q2h1bmsuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBTVkdUZXh0Q2h1bmtfaAorI2RlZmluZSBTVkdUZXh0Q2h1bmtfaAor
CisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZURlZnMuaCIKKyNpbmNs
dWRlICJTVkdUZXh0Q29udGVudEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTVkdJbmxpbmVUZXh0Qm94OworCisvLyBBIFNWR1RleHRDaHVuayBkZXNjcmliZXMgYSBy
YW5nZSBvZiBTVkdUZXh0RnJhZ21lbnRzLCBzZWUgdGhlIFNWRyBzcGVjIGRlZmluaXRpb24gb2Yg
YSAidGV4dCBjaHVuayIuCisvLyBGSVhNRTogUmVuYW1lIHRvIFNWR1RleHRDaHVuaywgb25jZSB0
aGUgbmV3IGxheW91dCBlbmdpbmUgaGFzIGxhbmRlZC4KK2NsYXNzIFNWR1RleHRDaHVua05ldyB7
CitwdWJsaWM6CisgICAgU1ZHVGV4dENodW5rTmV3KGJvb2wgaXNWZXJ0aWNhbFRleHQsIEVUZXh0
QW5jaG9yLCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xlbmd0aEFkanVzdFR5cGUsIGZsb2F0
IGRlc2lyZWRUZXh0TGVuZ3RoKTsKKworICAgIHZvaWQgY2FsY3VsYXRlTGVuZ3RoKGZsb2F0JiBs
ZW5ndGgsIHVuc2lnbmVkJiBjaGFyYWN0ZXJzKSBjb25zdDsKKyAgICBmbG9hdCBjYWxjdWxhdGVU
ZXh0QW5jaG9yU2hpZnQoZmxvYXQgbGVuZ3RoKSBjb25zdDsKKworICAgIGJvb2wgaXNWZXJ0aWNh
bFRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzVmVydGljYWxUZXh0OyB9CisgICAgRVRleHRBbmNo
b3IgdGV4dEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEFuY2hvcjsgfQorICAgIFNWR1Rl
eHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSBsZW5ndGhBZGp1c3QoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aEFkanVzdDsgfQorICAgIGZsb2F0IGRlc2lyZWRUZXh0TGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9kZXNpcmVkVGV4dExlbmd0aDsgfQorCisgICAgVmVjdG9yPFNW
R0lubGluZVRleHRCb3gqPiYgYm94ZXMoKSB7IHJldHVybiBtX2JveGVzOyB9CisgICAgY29uc3Qg
VmVjdG9yPFNWR0lubGluZVRleHRCb3gqPiYgYm94ZXMoKSBjb25zdCB7IHJldHVybiBtX2JveGVz
OyB9CisKKyAgICBib29sIGhhc0Rlc2lyZWRUZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGhBZGp1c3QgIT0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfVU5LTk9X
TiAmJiBtX2Rlc2lyZWRUZXh0TGVuZ3RoID4gMDsgfSAKKyAgICBib29sIGhhc1RleHRBbmNob3Io
KSBjb25zdCB7IHJldHVybiBtX3RleHRBbmNob3IgIT0gVEFfU1RBUlQ7IH0KKworcHJpdmF0ZToK
KyAgICAvLyBDb250YWlucyBhbGwgU1ZHSW5saW5lVGV4dEJveGVzIHRoaXMgY2h1bmsgc3BhbnMu
CisgICAgVmVjdG9yPFNWR0lubGluZVRleHRCb3gqPiBtX2JveGVzOworCisgICAgLy8gd3JpdGlu
Zy1tb2RlIHNwZWNpZmljIHByb3BlcnR5LgorICAgIGJvb2wgbV9pc1ZlcnRpY2FsVGV4dDsKKwor
ICAgIC8vIHRleHQtYW5jaG9yIHNwZWNpZmljIHByb3BlcnRpZXMuCisgICAgRVRleHRBbmNob3Ig
bV90ZXh0QW5jaG9yOworCisgICAgLy8gdGV4dExlbmd0aC9sZW5ndGhBZGp1c3Qgc3BlY2lmaWMg
cHJvcGVydGllcy4KKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xlbmd0aEFkanVzdFR5
cGUgbV9sZW5ndGhBZGp1c3Q7CisgICAgZmxvYXQgbV9kZXNpcmVkVGV4dExlbmd0aDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dEZyYWdtZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dEZyYWdtZW50LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHVGV4dEZyYWdt
ZW50X2gKKyNkZWZpbmUgU1ZHVGV4dEZyYWdtZW50X2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBT
VkdUZXh0RnJhZ21lbnQgZGVzY3JpYmVzIGEgdGV4dCBmcmFnbWVudCBvZiBhIFJlbmRlclNWR0lu
bGluZVRleHQgd2hpY2ggY2FuIGJlIHJlbmRlcmVkIGF0IG9uY2UuCitzdHJ1Y3QgU1ZHVGV4dEZy
YWdtZW50IHsKKyAgICBTVkdUZXh0RnJhZ21lbnQoKQorICAgICAgICA6IHBvc2l0aW9uTGlzdE9m
ZnNldCgwKQorICAgICAgICAsIGxlbmd0aCgwKQorICAgICAgICAsIHgoMCkKKyAgICAgICAgLCB5
KDApCisgICAgICAgICwgd2lkdGgoMCkKKyAgICAgICAgLCBoZWlnaHQoMCkKKyAgICB7CisgICAg
fQorCisgICAgLy8gVGhlIGZpcnN0IHJlbmRlcmVkIGNoYXJhY3RlciBzdGFydHMgYXQgUmVuZGVy
U1ZHSW5saW5lVGV4dDo6Y2hhcmFjdGVycygpICsgcG9zaXRpb25MaXN0T2Zmc2V0LgorICAgIHVu
c2lnbmVkIHBvc2l0aW9uTGlzdE9mZnNldDsKKyAgICB1bnNpZ25lZCBsZW5ndGg7CisKKyAgICBm
bG9hdCB4OworICAgIGZsb2F0IHk7CisgICAgZmxvYXQgd2lkdGg7CisgICAgZmxvYXQgaGVpZ2h0
OworCisgICAgLy8gSW5jbHVkZXMgcm90YXRpb24vZ2x5cGgtb3JpZW50YXRpb24tKGhvcml6b250
YWx8dmVydGljYWwpIHRyYW5zZm9ybXMsIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIg
KGZvciB0ZXh0UGF0aCBvbmx5KSwKKyAgICAvLyBhcyB3ZWxsIGFzIG9yaWVudGF0aW9uIHJlbGF0
ZWQgc2hpZnRzIChzZWUgU1ZHQ2hhcmFjdGVyTGF5b3V0QnVpbGRlciwgd2hpY2ggYnVpbGRzIHRo
aXMgdHJhbnNmb3JtYXRpb24pLgorICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdUZXh0TWV0cmljcy5oIgorCisj
aW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1NWR1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcygpCisgICAgOiBtX3dpZHRoKDApCisgICAg
LCBtX2hlaWdodCgwKQorICAgICwgbV9sZW5ndGgoMCkKK3sKK30KKworU1ZHVGV4dE1ldHJpY3M6
OlNWR1RleHRNZXRyaWNzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5z
aWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIHRleHRMZW5ndGgpCisgICAgOiBtX3dpZHRoKDApCisg
ICAgLCBtX2hlaWdodCgwKQorICAgICwgbV9sZW5ndGgoMCkKK3sKKyAgICBpbnQgZXh0cmFDaGFy
c0F2YWlsYWJsZSA9IHRleHRMZW5ndGggLSAocG9zaXRpb24gKyBydW4ubGVuZ3RoKCkpOworICAg
IGludCBsZW5ndGggPSAwOworCisgICAgbV93aWR0aCA9IGZvbnQuZmxvYXRXaWR0aChydW4sIGV4
dHJhQ2hhcnNBdmFpbGFibGUsIGxlbmd0aCwgbV9nbHlwaC5uYW1lKTsKKyAgICBtX2hlaWdodCA9
IGZvbnQuaGVpZ2h0KCk7CisgICAgbV9nbHlwaC51bmljb2RlU3RyaW5nID0gU3RyaW5nKHJ1bi5j
aGFyYWN0ZXJzKCksIGxlbmd0aCk7CisgICAgbV9nbHlwaC5pc1ZhbGlkID0gdHJ1ZTsKKworICAg
IEFTU0VSVChsZW5ndGggPj0gMCk7CisgICAgbV9sZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obGVuZ3RoKTsKK30KKworYm9vbCBTVkdUZXh0TWV0cmljczo6b3BlcmF0b3I9PShjb25zdCBT
VkdUZXh0TWV0cmljcyYgb3RoZXIpCit7CisgICAgcmV0dXJuIG1fd2lkdGggPT0gb3RoZXIubV93
aWR0aAorICAgICAgICAmJiBtX2hlaWdodCA9PSBvdGhlci5tX2hlaWdodAorICAgICAgICAmJiBt
X2xlbmd0aCA9PSBvdGhlci5tX2xlbmd0aAorICAgICAgICAmJiBtX2dseXBoID09IG90aGVyLm1f
Z2x5cGg7Cit9CisKK1NWR1RleHRNZXRyaWNzIFNWR1RleHRNZXRyaWNzOjplbXB0eU1ldHJpY3Mo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHVGV4dE1ldHJpY3MsIHNfZW1wdHlNZXRy
aWNzLCAoKSk7CisgICAgc19lbXB0eU1ldHJpY3MubV9sZW5ndGggPSAxOworICAgIHJldHVybiBz
X2VtcHR5TWV0cmljczsKK30KKworU1ZHVGV4dE1ldHJpY3MgU1ZHVGV4dE1ldHJpY3M6Om1lYXN1
cmVDaGFyYWN0ZXJSYW5nZShSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0LCB1bnNpZ25lZCBwb3Np
dGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVCh0ZXh0KTsKKyAgICBBU1NFUlQo
dGV4dC0+c3R5bGUoKSk7CisKKyAgICBjb25zdCBGb250JiBmb250ID0gdGV4dC0+c3R5bGUoKS0+
Zm9udCgpOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGV4dC0+Y2hhcmFjdGVycygp
OworCisgICAgVGV4dFJ1biBydW4oY2hhcmFjdGVycyArIHBvc2l0aW9uLCBsZW5ndGgpOworICAg
IHJ1bi5kaXNhYmxlU3BhY2luZygpOworICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwor
CisgICAgcmV0dXJuIFNWR1RleHRNZXRyaWNzKGZvbnQsIHJ1biwgcG9zaXRpb24sIHRleHQtPnRl
eHRMZW5ndGgoKSk7Cit9CisKK3ZvaWQgU1ZHVGV4dE1ldHJpY3M6Om1lYXN1cmVBbGxDaGFyYWN0
ZXJzSW5kaXZpZHVhbGx5KFJlbmRlclNWR0lubGluZVRleHQqIHRleHQsIFZlY3RvcjxTVkdUZXh0
TWV0cmljcz4mIGFsbE1ldHJpY3MpCit7CisgICAgQVNTRVJUKHRleHQpOworICAgIEFTU0VSVCh0
ZXh0LT5zdHlsZSgpKTsKKworICAgIGNvbnN0IEZvbnQmIGZvbnQgPSB0ZXh0LT5zdHlsZSgpLT5m
b250KCk7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0ZXh0LT5jaGFyYWN0ZXJzKCk7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC0+dGV4dExlbmd0aCgpOworCisgICAgVGV4dFJ1
biBydW4oMCwgMCk7CisgICAgcnVuLmRpc2FibGVTcGFjaW5nKCk7CisgICAgcnVuLmRpc2FibGVS
b3VuZGluZ0hhY2tzKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIHBvc2l0aW9uID0gMDsgcG9zaXRp
b24gPCBsZW5ndGg7ICkgeworICAgICAgICBydW4uc2V0VGV4dChjaGFyYWN0ZXJzICsgcG9zaXRp
b24sIDEpOworCisgICAgICAgIFNWR1RleHRNZXRyaWNzIG1ldHJpY3MoZm9udCwgcnVuLCBwb3Np
dGlvbiwgdGV4dC0+dGV4dExlbmd0aCgpKTsKKyAgICAgICAgYWxsTWV0cmljcy5hcHBlbmQobWV0
cmljcyk7CisgICAgICAgIHBvc2l0aW9uICs9IG1ldHJpY3MubGVuZ3RoKCk7CisgICAgfQorfQor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
VGV4dE1ldHJpY3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBTVkdUZXh0TWV0cmljc19oCisjZGVmaW5lIFNWR1RleHRNZXRyaWNzX2gK
KworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9udDsKK2NsYXNzIFJlbmRlclNWR0lubGluZVRl
eHQ7CitjbGFzcyBUZXh0UnVuOworCitjbGFzcyBTVkdUZXh0TWV0cmljcyB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFNWR1RleHRNZXRyaWNzIGVtcHR5TWV0cmljcygpOworICAgIHN0YXRpYyBTVkdU
ZXh0TWV0cmljcyBtZWFzdXJlQ2hhcmFjdGVyUmFuZ2UoUmVuZGVyU1ZHSW5saW5lVGV4dCosIHVu
c2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIG1lYXN1
cmVBbGxDaGFyYWN0ZXJzSW5kaXZpZHVhbGx5KFJlbmRlclNWR0lubGluZVRleHQqLCBWZWN0b3I8
U1ZHVGV4dE1ldHJpY3M+Jik7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHVGV4dE1l
dHJpY3MmKTsKKworICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQor
ICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHN0cnVjdCBHbHlw
aCB7CisgICAgICAgIEdseXBoKCkKKyAgICAgICAgICAgIDogaXNWYWxpZChmYWxzZSkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdseXBoJiBv
dGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWQgPT0gb3RoZXIuaXNW
YWxpZAorICAgICAgICAgICAgICAgICYmIG5hbWUgPT0gb3RoZXIubmFtZQorICAgICAgICAgICAg
ICAgICYmIHVuaWNvZGVTdHJpbmcgPT0gb3RoZXIudW5pY29kZVN0cmluZzsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgaXNWYWxpZDsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIFN0
cmluZyB1bmljb2RlU3RyaW5nOworICAgIH07CisKKyAgICAvLyBPbmx5IHVzZWZ1bCB3aGVuIG1l
YXN1cmluZyBpbmRpdmlkdWFsIGNoYXJhY3RlcnMsIHRvIGxvb2t1cCBsaWdhdHVyZXMuCisgICAg
Y29uc3QgR2x5cGgmIGdseXBoKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaDsgfQorCitwcml2YXRl
OgorICAgIFNWR1RleHRNZXRyaWNzKCk7CisgICAgU1ZHVGV4dE1ldHJpY3MoY29uc3QgRm9udCYs
IGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgdGV4dExlbmd0aCk7
CisKKyAgICBmbG9hdCBtX3dpZHRoOworICAgIGZsb2F0IG1faGVpZ2h0OworICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOworICAgIEdseXBoIG1fZ2x5cGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69434</attachid>
            <date>2010-10-01 01:32:04 -0700</date>
            <delta_ts>2010-10-01 02:07:58 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>TextNewFiles.diff</filename>
            <type>text/plain</type>
            <size>29487</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODg2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTAtMTAtMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNWR1RleHRNZXRyaWNzL1NWR1RleHRGcmFnbWVudC9TVkdUZXh0Q2h1bmsgcHJp
bWl0aXZlcyB1c2VkIGJ5IHRoZSBuZXcgbGF5b3V0IGVuZ2luZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5NjQKKworICAgICAgICBUaGUgbmV3IFNW
RyB0ZXh0IGxheW91dCBlbmdpbmUgd2lsbCB1c2UgdGhlc2UgbmV3IGNsYXNzZXMuCisgICAgICAg
IDEpIFNWR1RleHRNZXRyaWNzIGlzIHVzZWQgdG8gbWVhc3VyZSBlaXRoZXIgc2luZ2xlIGdseXBo
cyAod2hpY2ggbWF5IHNwYW4gbXVsdGlwbGUgY2hhcmFjdGVycywgd2hlbiBsaWdhdHVyZXMgYXJl
IGRlZmluZWQpIG9yIGEgcmFuZ2Ugb2YgY2hhcmFjdGVycy4KKyAgICAgICAgICAgCisgICAgICAg
ICAgIC0+IEluICJzaW5nbGUgZ2x5cGgiIG1vZGUsIGl0IHJldHVybnMgdGhlIHdpZHRoL2hlaWdo
dCBvZiB0aGUgZ2x5cGgsIHRoZSBsZW5ndGggb2YgdGhlIGdseXBoICg+IDEsIHdoZW4gbGlnYXR1
cmVzIGFyZSB1c2VkKSBhbmQgYSAiR2x5cGgiIG9iamVjdAorICAgICAgICAgICAgICBkZXNjcmli
aW5nIHRoZSBnbHlwaCAobmFtZSBvZiBnbHlwaCwgd2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGggU1ZH
IEZvbnRzIGFuZCB0aGUgdW5pY29kZSBzdHJpbmcgdGhlIGdseXBoIGRlc2NyaWJlcykuCisgICAg
ICAgICAgIC0+IEluICJyYW5nZSBvZiBjaGFyYWN0ZXJzIiBtb2RlLCBpdCByZXR1cm5zIHRoZSB3
aWR0aC9oZWlnaHQgb2YgdGhlIHJhbmdlLCBhbmQgaXRzIGxlbmd0aC4KKworICAgICAgICAgICBB
bGwgbWVhc3VyZW1lbnRzIGFyZSBkb25lIHVzaW5nIHRoZSByZWd1bGFyIEZvbnQ6OmZsb2F0V2lk
dGgoKSBtZXRob2RzLCB0aGlzIGNsYXNzIGp1c3QgZW5jYXBzdWxhdGVzIGl0cyB1c2FnZSBmb3Ig
dGhlIFNWRyB0ZXh0IGxheW91dCBlbmdpbmUuCisKKyAgICAgICAgMikgU1ZHVGV4dEZyYWdtZW50
IGRlc2NyaWJlcyBhIGZyYWdtZW50IG9mIHRleHQsIGxpdmluZyBpbiBhIFNWR0lubGluZVRleHRC
b3gsIHdoaWNoIGNhbiBiZSBtZWFzdXJlZC9yZW5kZXJlZCBpbiBvbmUgc2hvdC4KKyAgICAgICAg
ICAgSXQgY29udGFpbnMgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byByZW5kZXIgdGhlIGZy
YWdtZW50ICh4L3kvd2lkdGgvaGVpZ2h0LCBvZmZzZXQgaW50byBjaGFyYWN0ZXJzKCkgYnVmZmVy
IGZvciB0aGUgZmlyc3QgY2hhciBvZiB0aGUgZnJhZ21lbnQsCisgICAgICAgICAgIGxlbmd0aCwg
YW5kIGFuIGFyYml0YXJ5IHRyYW5zZm9ybWF0aW9uLCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0
IHJvdGF0aW9ucy9zY2FsZS9nbHlwaC1vcmllbnRhdGlvbiBldGMuKQorCisgICAgICAgICAgIElu
IGZ1dHVyZSB0aGUgU1ZHVGV4dExheW91dEVuZ2luZSB3aWxsIGdlbmVyYXRlIFNWR1RleHRGcmFn
bWVudCBvYmplY3RzIGZvciBlYWNoIFNWR0lubGluZVRleHRCb3guIFdoZW4gcGFpbnRpbmcgbm8g
bW9yZSBtZWFzdXJlbWVudHMgaGF2ZSB0bworICAgICAgICAgICBiZSBwZXJmb3JtZWQgYXMgU1ZH
VGV4dEZyYWdtZW50IGNvbnRhaW5zIGFsbCBuZWNlc3NheSBpbmZvcm1hdGlvbiB0byByZW5kZXIg
dGV4dCAvIHNlbGVjdGlvbiB0ZXh0IGV0Yy4KKworICAgICAgICAzKSBTVkdUZXh0Q2h1bmsgZGVz
Y3JpYmVzIGFuIFNWRyB0ZXh0IGNodW5rLCB3aGljaCBtYXkgc3BhbiBtdWx0aXBsZSB0ZXh0IGJv
eGVzIChhbmQgaW4gdHVybiB0ZXh0IGZyYWdtZW50cykuCisKKyAgICAgICAgICAgUXVvdGVzIGZy
b20gU1ZHIHNwZWM6CisgICAgICAgICAgIEVhY2ggYWJzb2x1dGUgcG9zaXRpb24gYWRqdXN0bWVu
dCBkZWZpbmVzIGEgbmV3ICJ0ZXh0IGNodW5rIi4gQWJzb2x1dGUgcG9zaXRpb24gYWRqdXN0bWVu
dHMgaW1wYWN0IHRleHQgbGF5b3V0IGluIHRoZSBmb2xsb3dpbmcgd2F5czoKKyAgICAgICAgICAg
ICogTGlnYXR1cmVzIG9ubHkgb2NjdXIgd2hlbiBhIHNldCBvZiBjaGFyYWN0ZXJzIHdoaWNoIG1p
Z2h0IG1hcCB0byBhIGxpZ2F0dXJlIGFyZSBhbGwgaW4gdGhlIHNhbWUgdGV4dCBjaHVuay4KKyAg
ICAgICAgICAgICogRWFjaCB0ZXh0IGNodW5rIHJlcHJlc2VudHMgYSBzZXBhcmF0ZSBibG9jayBv
ZiB0ZXh0IGZvciBhbGlnbm1lbnQgZHVlIHRvIOKAmHRleHQtYW5jaG9y4oCZIHByb3BlcnR5IHZh
bHVlcy4KKyAgICAgICAgICAgICogUmVvcmRlcmluZyBvZiBjaGFyYWN0ZXJzIGR1ZSB0byBiaWRp
cmVjdGlvbmFsaXR5IG9ubHkgb2NjdXJzIHdpdGhpbiBhIHRleHQgY2h1bmsuIFJlb3JkZXJpbmcg
ZG9lcyBub3QgaGFwcGVuIGFjcm9zcyB0ZXh0IGNodW5rcy4KKworICAgICAgICAgICAgQW4gYWJz
b2x1dGUgcG9zaXRpb24gYWRqdXN0bWVudCBvY2N1cnMgaW4gdGhlIGZvbGxvd2luZyBjaXJjdW1z
dGFuY2VzOgorICAgICAgICAgICAgKiBBdCB0aGUgc3RhcnQgb2YgYSA8dGV4dD4gZWxlbWVudAor
ICAgICAgICAgICAgKiBBdCB0aGUgc3RhcnQgb2YgZWFjaCA8dGV4dFBhdGg+IGVsZW1lbnQKKyAg
ICAgICAgICAgICogRm9yIGVhY2ggY2hhcmFjdGVyIHdpdGhpbiBhIDx0ZXh0PiwgPHRzcGFuPiwg
PHRyZWY+IGFuZCA8YWx0R2x5cGg+IGVsZW1lbnQgd2hpY2ggaGFzIGFuICJ4IiBvciAieSIgYXR0
cmlidXRlIHZhbHVlIGFzc2lnbmVkIHRvIGl0IGV4cGxpY2l0bHkKKworICAgICAgICAgICAgQWZ0
ZXIgdGhlIGxpbmUtbGF5b3V0IGZpbmlzaGVzLCBlYWNoICJ0ZXh0IGNodW5rIiBpcyBhbHRlcmVk
IGFjY29yZGluZyB0byB0aGUgdGV4dExlbmd0aCBhbmQgdGV4dC1hbmNob3IgcHJvY2Vzc2luZyBy
dWxlcworICAgICAgICAgICAgKGVnLiBmb3IgdGV4dC1hbmNob3I9Im1pZGRsZSIgbW92aW5nIHRo
ZSB3aG9sZSB0ZXh0IGNodW5rIGJ5IC1mcmFnbWVudFdpZHRoLzIsIGZvciBob3Jpem9uYWwgdGV4
dCkuCisKKyAgICAgICAgICAgIFNWR1RleHRDaHVuayBpcyBqdXN0IGEgc2ltcGxlIGhlbHBlciBj
bGFzcywgdGhhdCBlbmNhcHN1bGF0ZXMgbWVhc3VyaW5nL2FsdGVyaW5nIGEgdGV4dCBjaHVuay4K
KworICAgICAgICBEb2Vzbid0IGFmZmVjdCBhbnkgdGVzdHMsIGFzIHRoZXNlIGNsYXNzZXMgYXJl
bid0IHVzZWQgc28gZmFyLgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkIFNWR1RleHRNZXRy
aWNzLiosIFNWR1RleHRGcmFnbWVudC5oLCBTVkdUZXh0Q2h1bmsuKiB0byBidWlsZC4KKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDogRGl0dG8uCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IERp
dHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5w
cm86IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcDogQWRkZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuaDogQWRkZWQuCisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaDogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TWV0cmljcy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
VGV4dE1ldHJpY3MuaDogQWRkZWQuCisKIDIwMTAtMTAtMDEgIFZpbmNlbnQgU2NoZWliICA8c2No
ZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4K
SW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQu
bWsJKHJldmlzaW9uIDY4ODY3KQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkp
CkBAIC03MTIsOCArNzEyLDEwIEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxF
UykgXAogCXJlbmRlcmluZy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAgXAogCXJlbmRlcmluZy9SZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcCBcCisJcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwIFwK
IAlyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcCBcCi0JcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5jcHAKKwlyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlv
dXRCdWlsZGVyLmNwcCBcCisJcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKIGVuZGlm
CiAKIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXApJbmRleDogV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiA2ODg2NykKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTE3MDYsOCArMTcwNiwxMCBAQCBJRiAoRU5BQkxFX1NWRykKICAgICAgICAgcmVuZGVyaW5n
L1NWR1RleHRRdWVyeS5jcHAKICAgICAgICAgcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmNwcAogICAgICAgICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAorICAg
ICAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5jcHAKICAgICAgICAgcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAKICAgICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TGF5b3V0QnVpbGRlci5jcHAKKyAgICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmlj
cy5jcHAKICAgICAgICAgc3ZnL0NvbG9yRGlzdGFuY2UuY3BwCiAgICAgICAgIHN2Zy9TVkdBRWxl
bWVudC5jcHAKICAgICAgICAgc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKSW5kZXg6IFdlYkNv
cmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
cmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0yODA5LDEwICsyODA5LDE1IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9TVkdTaGFk
b3dUcmVlRWxlbWVudHMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9TVkdTaGFkb3dUcmVlRWxl
bWVudHMuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5jcHAgXAorCVdl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRGcmFnbWVudC5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXMuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWls
ZGVyLmNwcCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmgg
XAorCVdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAgXAorCVdlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9TVkdU
ZXh0Q2h1bmtMYXlvdXRJbmZvLmNwcCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvU1ZHVGV4dENodW5r
TGF5b3V0SW5mby5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9TVkdUZXh0TGF5b3V0VXRpbGl0aWVz
LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMzQzNSwxMCArMzQzNSwxNSBAQAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5n
L3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHls
ZS9TdHlsZVZpc3VhbERhdGEuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdUZXh0
Q2h1bmsuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5oJywK
KyAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRGcmFnbWVudC5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmNwcCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5oJywKKyAgICAgICAgICAgICdy
ZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TWV0cmljcy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5oJywK
ICAgICAgICAgICAgICdyZW5kZXJpbmcvQmlkaVJ1bi5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2ODg2
NykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIyOTQsOCArMjI5
NCwxMSBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRh
LmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaCBcCiAgICAgcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmggXAorICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4
dENodW5rLmggXAorICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dEZyYWdtZW50LmggXAogICAgIHJl
bmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCBcCiAgICAgcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5oIFwKKyAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzLmggXAogICAgIHJlbmRlcmluZy9TVkdDaGFyYWN0ZXJEYXRhLmggXAogICAgIHJlbmRlcmlu
Zy9TVkdDaGFyYWN0ZXJMYXlvdXRJbmZvLmggXAogICAgIHJlbmRlcmluZy9TVkdJbWFnZUJ1ZmZl
clRvb2xzLmggXApAQCAtMzI3NSw4ICszMjc4LDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9TVkc9MSkgewogICAgICAgICBjc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAgXAogICAgICAg
ICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwIFwKICAgICAgICAgcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgXAorICAgICAgICByZW5kZXJpbmcvc3ZnL1NW
R1RleHRDaHVuay5jcHAgXAogICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzLmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEJ1aWxkZXIu
Y3BwIFwKKyAgICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAgXAogICAgICAg
ICByZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwIFwKICAgICAgICAgc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcCBc
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDY4ODY3
KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzM1MTQsNiArMzM1MTQsMTggQEAKIAkJCQlOYW1lPSJzdmciDQogCQkJCT4NCiAJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdUZXh0Q2h1bmsu
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4dENodW5rLmgiDQorCQkJCQk+DQorCQkJCTwvRmls
ZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdU
ZXh0RnJhZ21lbnQuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNw
cCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTMzNTI5LDYgKzMzNTQxLDE0IEBACiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdUZXh0TGF5b3V0QnVpbGRlci5oIg0K
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHJlbmRlcmluZ1xzdmdcU1ZHVGV4dE1ldHJpY3MuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+
DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4
dE1ldHJpY3MuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KIAkJPC9G
aWx0ZXI+DQogCQk8RmlsdGVyDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDY4ODY3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDksMTEgQEAKIAkJ
MDhFNkEyRTkwRUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIw
MEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQy
QkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdN
TEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAv
KiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1l
bnQuaCAqLzsgfTsKKwkJMDhGMEJGQzIxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYwQkZC
RDEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmNwcCAqLzsgfTsKKwkJMDhGMEJGQzMx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQkUxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1Rl
eHRDaHVuay5oICovOyB9OworCQkwOEYwQkZDNDEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEYwQkZCRjEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dEZyYWdtZW50LmggKi87IH07CisJCTA4
RjBCRkM1MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYwQkZDMDEyNTVDNTNDMDAwNzUx
ODUgLyogU1ZHVGV4dE1ldHJpY3MuY3BwICovOyB9OworCQkwOEYwQkZDNjEyNTVDNTNDMDAwNzUx
ODUgLyogU1ZHVGV4dE1ldHJpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4RjBCRkMxMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5o
ICovOyB9OwogCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYy
RjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi87IH07CiAJ
CTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAwODEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBBNDg0NDk5MENBNDRDQjIwMEI3QkQ0OCAvKiBT
b2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYxMzIsNiArNjEzNywxMSBA
QAogCQkwOEU2QTJFNzBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxQb3N0ZmllbGRFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBX
TUxGaWVsZFNldEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV01MRmllbGRTZXRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDhFNkUwRjAwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMEJGQkQxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRD
aHVuay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0Q2h1
bmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYwQkZCRTEyNTVDNTNDMDAw
NzUxODUgLyogU1ZHVGV4dENodW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR1RleHRDaHVuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYwQkZCRjEy
NTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dEZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1RleHRGcmFnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwOEYwQkZDMDEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYwQkZDMTEyNTVDNTNDMDAwNzUxODUgLyogU1ZH
VGV4dE1ldHJpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dE1l
dHJpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMkYwMDcxMjEzRTYxNzAw
RENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291
cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMw
NjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExNjI4LDEwICsxMTYzOCwxNSBAQAogCQkwODhDMkY3NDEyMzkwMDgwMDAzRDY1Q0Ug
Lyogc3ZnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
OEYwQkZCRDEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmNwcCAqLywKKwkJCQkwOEYw
QkZCRTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmggKi8sCisJCQkJMDhGMEJGQkYx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRGcmFnbWVudC5oICovLAogCQkJCTA4OEMyRjc1MTIz
OTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMDg4
QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggKi8sCiAJ
CQkJMDg4QzJGNzcxMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRCdWlsZGVyLmNwcCAq
LywKIAkJCQkwODhDMkY3ODEyMzkwMDgxMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEJ1aWxkZXIu
aCAqLywKKwkJCQkwOEYwQkZDMDEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuY3Bw
ICovLAorCQkJCTA4RjBCRkMxMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBzdmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MjA5MTksNiArMjA5MzQsOSBAQAogCQkJCTQ5QjY5RTYwMTI1NEZFRUQwMDdENTdFQiAvKiBMb29w
Qmxpbm5Db25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QjY5RTY0MTI1NEZFRUQwMDdE
NTdFQiAvKiBMb29wQmxpbm5NYXRoVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QjY5RTY2
MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5UZXh0dXJlQ29vcmRzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwOEYwQkZDMzEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dENodW5rLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwOEYwQkZDNDEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dEZyYWdtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYwQkZDNjEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4
dE1ldHJpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjM0NDMsNiArMjM0NjEsOCBAQAogCQkJCTQ5
QjY5RTVFMTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5QjY5RTYzMTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5NYXRoVXRp
bHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlCNjlFNjUxMjU0RkVFRDAwN0Q1N0VCIC8qIExv
b3BCbGlublRleHR1cmVDb29yZHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGMEJGQzIxMjU1
QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEYw
QkZDNTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdUZXh0Q2h1bmsuaCIKKworI2luY2x1ZGUg
IlNWR0lubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJTVkdUZXh0RnJhZ21lbnQuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJ
WE1FOiBSZW5hbWUgdG8gU1ZHVGV4dENodW5rLCBvbmNlIHRoZSBuZXcgbGF5b3V0IGVuZ2luZSBo
YXMgbGFuZGVkLgorU1ZHVGV4dENodW5rTmV3OjpTVkdUZXh0Q2h1bmtOZXcoYm9vbCBpc1ZlcnRp
Y2FsVGV4dCwgRVRleHRBbmNob3IgdGV4dEFuY2hvciwgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpT
VkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCwgZmxvYXQgZGVzaXJlZFRleHRMZW5ndGgp
CisgICAgOiBtX2lzVmVydGljYWxUZXh0KGlzVmVydGljYWxUZXh0KQorICAgICwgbV90ZXh0QW5j
aG9yKHRleHRBbmNob3IpCisgICAgLCBtX2xlbmd0aEFkanVzdChsZW5ndGhBZGp1c3QpCisgICAg
LCBtX2Rlc2lyZWRUZXh0TGVuZ3RoKGRlc2lyZWRUZXh0TGVuZ3RoKQoreworfQorCit2b2lkIFNW
R1RleHRDaHVua05ldzo6Y2FsY3VsYXRlTGVuZ3RoKGZsb2F0JiBsZW5ndGgsIHVuc2lnbmVkJiBj
aGFyYWN0ZXJzKSBjb25zdAoreworICAgIFNWR1RleHRGcmFnbWVudCogbGFzdEZyYWdtZW50ID0g
MDsKKworICAgIHVuc2lnbmVkIGJveENvdW50ID0gbV9ib3hlcy5zaXplKCk7CisgICAgZm9yICh1
bnNpZ25lZCBib3hQb3NpdGlvbiA9IDA7IGJveFBvc2l0aW9uIDwgYm94Q291bnQ7ICsrYm94UG9z
aXRpb24pIHsKKyAgICAgICAgU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCA9IG1fYm94ZXMuYXQo
Ym94UG9zaXRpb24pOworCisgICAgICAgIC8vIEZJWE1FOiBFbmFibGUgdGhpcyBjb2RlLCBvbmNl
IHRoZSBuZXcgbGF5b3V0IGVuZ2luZSBoYXMgbGFuZGVkISBUaGlzIGlzIG5vbmZ1bmN0aW9uYWwg
Zm9yIG5vdy4KKyAgICAgICAgLy8gVmVjdG9yPFNWR1RleHRGcmFnbWVudD4mIGZyYWdtZW50cyA9
IHRleHRCb3gtPnRleHRGcmFnbWVudHMoKTsKKyAgICAgICAgVmVjdG9yPFNWR1RleHRGcmFnbWVu
dD4gZnJhZ21lbnRzOworICAgICAgICBVTlVTRURfUEFSQU0odGV4dEJveCk7CisKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IGZyYWdtZW50cy5zaXplKCk7CisgICAgICAgIGlmICghc2l6ZSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgICAgIFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQgPSBmcmFn
bWVudHMuYXQoaSk7CisgICAgICAgICAgICBjaGFyYWN0ZXJzICs9IGZyYWdtZW50Lmxlbmd0aDsK
KworICAgICAgICAgICAgaWYgKG1faXNWZXJ0aWNhbFRleHQpCisgICAgICAgICAgICAgICAgbGVu
Z3RoICs9IGZyYWdtZW50LmhlaWdodDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBsZW5ndGggKz0gZnJhZ21lbnQud2lkdGg7CisKKyAgICAgICAgICAgIGlmICghbGFzdEZyYWdt
ZW50KSB7CisgICAgICAgICAgICAgICAgbGFzdEZyYWdtZW50ID0gJmZyYWdtZW50OworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXNl
cGVjdCBnYXAgYmV0d2VlbiBjaHVua3MuCisgICAgICAgICAgICBpZiAobV9pc1ZlcnRpY2FsVGV4
dCkKKyAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZyYWdtZW50LnkgLSAobGFzdEZyYWdtZW50
LT55ICsgbGFzdEZyYWdtZW50LT5oZWlnaHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICBsZW5ndGggKz0gZnJhZ21lbnQueCAtIChsYXN0RnJhZ21lbnQtPnggKyBsYXN0RnJh
Z21lbnQtPndpZHRoKTsKKworICAgICAgICAgICAgbGFzdEZyYWdtZW50ID0gJmZyYWdtZW50Owor
ICAgICAgICB9CisgICAgfQorfQorCitmbG9hdCBTVkdUZXh0Q2h1bmtOZXc6OmNhbGN1bGF0ZVRl
eHRBbmNob3JTaGlmdChmbG9hdCBsZW5ndGgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3RleHRB
bmNob3IpIHsKKyAgICBjYXNlIFRBX1NUQVJUOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNl
IFRBX01JRERMRToKKyAgICAgICAgcmV0dXJuIC1sZW5ndGggLyAyOworICAgIGNhc2UgVEFfRU5E
OgorICAgICAgICByZXR1cm4gLWxlbmd0aDsKKyAgICB9OworCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENo
dW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNW
R1RleHRDaHVua19oCisjZGVmaW5lIFNWR1RleHRDaHVua19oCisKKyNpZiBFTkFCTEUoU1ZHKQor
I2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlRGVmcy5oIgorI2luY2x1ZGUgIlNWR1RleHRDb250ZW50
RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0lubGluZVRleHRC
b3g7CisKKy8vIEEgU1ZHVGV4dENodW5rIGRlc2NyaWJlcyBhIHJhbmdlIG9mIFNWR1RleHRGcmFn
bWVudHMsIHNlZSB0aGUgU1ZHIHNwZWMgZGVmaW5pdGlvbiBvZiBhICJ0ZXh0IGNodW5rIi4KKy8v
IEZJWE1FOiBSZW5hbWUgdG8gU1ZHVGV4dENodW5rLCBvbmNlIHRoZSBuZXcgbGF5b3V0IGVuZ2lu
ZSBoYXMgbGFuZGVkLgorY2xhc3MgU1ZHVGV4dENodW5rTmV3IHsKK3B1YmxpYzoKKyAgICBTVkdU
ZXh0Q2h1bmtOZXcoYm9vbCBpc1ZlcnRpY2FsVGV4dCwgRVRleHRBbmNob3IsIFNWR1RleHRDb250
ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSwgZmxvYXQgZGVzaXJlZFRleHRMZW5ndGgp
OworCisgICAgdm9pZCBjYWxjdWxhdGVMZW5ndGgoZmxvYXQmIGxlbmd0aCwgdW5zaWduZWQmIGNo
YXJhY3RlcnMpIGNvbnN0OworICAgIGZsb2F0IGNhbGN1bGF0ZVRleHRBbmNob3JTaGlmdChmbG9h
dCBsZW5ndGgpIGNvbnN0OworCisgICAgYm9vbCBpc1ZlcnRpY2FsVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNWZXJ0aWNhbFRleHQ7IH0KKyAgICBFVGV4dEFuY2hvciB0ZXh0QW5jaG9yKCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0QW5jaG9yOyB9CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpT
VkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
QWRqdXN0OyB9CisgICAgZmxvYXQgZGVzaXJlZFRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2Rlc2lyZWRUZXh0TGVuZ3RoOyB9CisKKyAgICBWZWN0b3I8U1ZHSW5saW5lVGV4dEJveCo+JiBi
b3hlcygpIHsgcmV0dXJuIG1fYm94ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8U1ZHSW5saW5lVGV4
dEJveCo+JiBib3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fYm94ZXM7IH0KKworICAgIGJvb2wgaGFz
RGVzaXJlZFRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aEFkanVzdCAhPSBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOICYmIG1fZGVzaXJlZFRleHRM
ZW5ndGggPiAwOyB9IAorICAgIGJvb2wgaGFzVGV4dEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dEFuY2hvciAhPSBUQV9TVEFSVDsgfQorCitwcml2YXRlOgorICAgIC8vIENvbnRhaW5zIGFs
bCBTVkdJbmxpbmVUZXh0Qm94ZXMgdGhpcyBjaHVuayBzcGFucy4KKyAgICBWZWN0b3I8U1ZHSW5s
aW5lVGV4dEJveCo+IG1fYm94ZXM7CisKKyAgICAvLyB3cml0aW5nLW1vZGUgc3BlY2lmaWMgcHJv
cGVydHkuCisgICAgYm9vbCBtX2lzVmVydGljYWxUZXh0OworCisgICAgLy8gdGV4dC1hbmNob3Ig
c3BlY2lmaWMgcHJvcGVydGllcy4KKyAgICBFVGV4dEFuY2hvciBtX3RleHRBbmNob3I7CisKKyAg
ICAvLyB0ZXh0TGVuZ3RoL2xlbmd0aEFkanVzdCBzcGVjaWZpYyBwcm9wZXJ0aWVzLgorICAgIFNW
R1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSBtX2xlbmd0aEFkanVzdDsK
KyAgICBmbG9hdCBtX2Rlc2lyZWRUZXh0TGVuZ3RoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRGcmFnbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdUZXh0RnJhZ21lbnRfaAorI2RlZmluZSBTVkdU
ZXh0RnJhZ21lbnRfaAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIFNWR1RleHRGcmFnbWVudCBkZXNj
cmliZXMgYSB0ZXh0IGZyYWdtZW50IG9mIGEgUmVuZGVyU1ZHSW5saW5lVGV4dCB3aGljaCBjYW4g
YmUgcmVuZGVyZWQgYXQgb25jZS4KK3N0cnVjdCBTVkdUZXh0RnJhZ21lbnQgeworICAgIFNWR1Rl
eHRGcmFnbWVudCgpCisgICAgICAgIDogcG9zaXRpb25MaXN0T2Zmc2V0KDApCisgICAgICAgICwg
bGVuZ3RoKDApCisgICAgICAgICwgeCgwKQorICAgICAgICAsIHkoMCkKKyAgICAgICAgLCB3aWR0
aCgwKQorICAgICAgICAsIGhlaWdodCgwKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGUgZmly
c3QgcmVuZGVyZWQgY2hhcmFjdGVyIHN0YXJ0cyBhdCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFy
YWN0ZXJzKCkgKyBwb3NpdGlvbkxpc3RPZmZzZXQuCisgICAgdW5zaWduZWQgcG9zaXRpb25MaXN0
T2Zmc2V0OworICAgIHVuc2lnbmVkIGxlbmd0aDsKKworICAgIGZsb2F0IHg7CisgICAgZmxvYXQg
eTsKKyAgICBmbG9hdCB3aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7CisKKyAgICAvLyBJbmNsdWRl
cyByb3RhdGlvbi9nbHlwaC1vcmllbnRhdGlvbi0oaG9yaXpvbnRhbHx2ZXJ0aWNhbCkgdHJhbnNm
b3JtcywgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiAoZm9yIHRleHRQYXRoIG9ubHkp
LAorICAgIC8vIGFzIHdlbGwgYXMgb3JpZW50YXRpb24gcmVsYXRlZCBzaGlmdHMgKHNlZSBTVkdD
aGFyYWN0ZXJMYXlvdXRCdWlsZGVyLCB3aGljaCBidWlsZHMgdGhpcyB0cmFuc2Zvcm1hdGlvbiku
CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
U1ZHKQorI2luY2x1ZGUgIlNWR1RleHRNZXRyaWNzLmgiCisKKyNpbmNsdWRlICJSZW5kZXJTVkdJ
bmxpbmVUZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHVGV4dE1ldHJpY3M6OlNW
R1RleHRNZXRyaWNzKCkKKyAgICA6IG1fd2lkdGgoMCkKKyAgICAsIG1faGVpZ2h0KDApCisgICAg
LCBtX2xlbmd0aCgwKQoreworfQorCitTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5z
aWduZWQgdGV4dExlbmd0aCkKKyAgICA6IG1fd2lkdGgoMCkKKyAgICAsIG1faGVpZ2h0KDApCisg
ICAgLCBtX2xlbmd0aCgwKQoreworICAgIGludCBleHRyYUNoYXJzQXZhaWxhYmxlID0gdGV4dExl
bmd0aCAtIChwb3NpdGlvbiArIHJ1bi5sZW5ndGgoKSk7CisgICAgaW50IGxlbmd0aCA9IDA7CisK
KyAgICBtX3dpZHRoID0gZm9udC5mbG9hdFdpZHRoKHJ1biwgZXh0cmFDaGFyc0F2YWlsYWJsZSwg
bGVuZ3RoLCBtX2dseXBoLm5hbWUpOworICAgIG1faGVpZ2h0ID0gZm9udC5oZWlnaHQoKTsKKyAg
ICBtX2dseXBoLnVuaWNvZGVTdHJpbmcgPSBTdHJpbmcocnVuLmNoYXJhY3RlcnMoKSwgbGVuZ3Ro
KTsKKyAgICBtX2dseXBoLmlzVmFsaWQgPSB0cnVlOworCisgICAgQVNTRVJUKGxlbmd0aCA+PSAw
KTsKKyAgICBtX2xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOworfQorCiti
b29sIFNWR1RleHRNZXRyaWNzOjpvcGVyYXRvcj09KGNvbnN0IFNWR1RleHRNZXRyaWNzJiBvdGhl
cikKK3sKKyAgICByZXR1cm4gbV93aWR0aCA9PSBvdGhlci5tX3dpZHRoCisgICAgICAgICYmIG1f
aGVpZ2h0ID09IG90aGVyLm1faGVpZ2h0CisgICAgICAgICYmIG1fbGVuZ3RoID09IG90aGVyLm1f
bGVuZ3RoCisgICAgICAgICYmIG1fZ2x5cGggPT0gb3RoZXIubV9nbHlwaDsKK30KKworU1ZHVGV4
dE1ldHJpY3MgU1ZHVGV4dE1ldHJpY3M6OmVtcHR5TWV0cmljcygpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTVkdUZXh0TWV0cmljcywgc19lbXB0eU1ldHJpY3MsICgpKTsKKyAgICBzX2Vt
cHR5TWV0cmljcy5tX2xlbmd0aCA9IDE7CisgICAgcmV0dXJuIHNfZW1wdHlNZXRyaWNzOworfQor
CitTVkdUZXh0TWV0cmljcyBTVkdUZXh0TWV0cmljczo6bWVhc3VyZUNoYXJhY3RlclJhbmdlKFJl
bmRlclNWR0lubGluZVRleHQqIHRleHQsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgQVNTRVJUKHRleHQpOworICAgIEFTU0VSVCh0ZXh0LT5zdHlsZSgpKTsKKwor
ICAgIGNvbnN0IEZvbnQmIGZvbnQgPSB0ZXh0LT5zdHlsZSgpLT5mb250KCk7CisgICAgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMgPSB0ZXh0LT5jaGFyYWN0ZXJzKCk7CisKKyAgICBUZXh0UnVuIHJ1
bihjaGFyYWN0ZXJzICsgcG9zaXRpb24sIGxlbmd0aCk7CisgICAgcnVuLmRpc2FibGVTcGFjaW5n
KCk7CisgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CisKKyAgICByZXR1cm4gU1ZHVGV4
dE1ldHJpY3MoZm9udCwgcnVuLCBwb3NpdGlvbiwgdGV4dC0+dGV4dExlbmd0aCgpKTsKK30KKwor
dm9pZCBTVkdUZXh0TWV0cmljczo6bWVhc3VyZUFsbENoYXJhY3RlcnNJbmRpdmlkdWFsbHkoUmVu
ZGVyU1ZHSW5saW5lVGV4dCogdGV4dCwgVmVjdG9yPFNWR1RleHRNZXRyaWNzPiYgYWxsTWV0cmlj
cykKK3sKKyAgICBBU1NFUlQodGV4dCk7CisgICAgQVNTRVJUKHRleHQtPnN0eWxlKCkpOworCisg
ICAgY29uc3QgRm9udCYgZm9udCA9IHRleHQtPnN0eWxlKCktPmZvbnQoKTsKKyAgICBjb25zdCBV
Q2hhciogY2hhcmFjdGVycyA9IHRleHQtPmNoYXJhY3RlcnMoKTsKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSB0ZXh0LT50ZXh0TGVuZ3RoKCk7CisKKyAgICBUZXh0UnVuIHJ1bigwLCAwKTsKKyAgICBy
dW4uZGlzYWJsZVNwYWNpbmcoKTsKKyAgICBydW4uZGlzYWJsZVJvdW5kaW5nSGFja3MoKTsKKwor
ICAgIGZvciAodW5zaWduZWQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8IGxlbmd0aDsgKSB7Cisg
ICAgICAgIHJ1bi5zZXRUZXh0KGNoYXJhY3RlcnMgKyBwb3NpdGlvbiwgMSk7CisKKyAgICAgICAg
U1ZHVGV4dE1ldHJpY3MgbWV0cmljcyhmb250LCBydW4sIHBvc2l0aW9uLCB0ZXh0LT50ZXh0TGVu
Z3RoKCkpOworICAgICAgICBhbGxNZXRyaWNzLmFwcGVuZChtZXRyaWNzKTsKKyAgICAgICAgcG9z
aXRpb24gKz0gbWV0cmljcy5sZW5ndGgoKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNWR1Rl
eHRNZXRyaWNzX2gKKyNkZWZpbmUgU1ZHVGV4dE1ldHJpY3NfaAorCisjaWYgRU5BQkxFKFNWRykK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBGb250OworY2xhc3MgUmVuZGVyU1ZHSW5saW5lVGV4dDsKK2NsYXNzIFRleHRSdW47
CisKK2NsYXNzIFNWR1RleHRNZXRyaWNzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU1ZHVGV4dE1l
dHJpY3MgZW1wdHlNZXRyaWNzKCk7CisgICAgc3RhdGljIFNWR1RleHRNZXRyaWNzIG1lYXN1cmVD
aGFyYWN0ZXJSYW5nZShSZW5kZXJTVkdJbmxpbmVUZXh0KiwgdW5zaWduZWQgcG9zaXRpb24sIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgbWVhc3VyZUFsbENoYXJhY3RlcnNJbmRp
dmlkdWFsbHkoUmVuZGVyU1ZHSW5saW5lVGV4dCosIFZlY3RvcjxTVkdUZXh0TWV0cmljcz4mKTsK
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdUZXh0TWV0cmljcyYpOworCisgICAgZmxv
YXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgZmxvYXQgaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgc3RydWN0IEdseXBoIHsKKyAgICAgICAgR2x5cGgo
KQorICAgICAgICAgICAgOiBpc1ZhbGlkKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2x5cGgmIG90aGVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gaXNWYWxpZCA9PSBvdGhlci5pc1ZhbGlkCisgICAgICAgICAgICAg
ICAgJiYgbmFtZSA9PSBvdGhlci5uYW1lCisgICAgICAgICAgICAgICAgJiYgdW5pY29kZVN0cmlu
ZyA9PSBvdGhlci51bmljb2RlU3RyaW5nOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc1Zh
bGlkOworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgU3RyaW5nIHVuaWNvZGVTdHJpbmc7
CisgICAgfTsKKworICAgIC8vIE9ubHkgdXNlZnVsIHdoZW4gbWVhc3VyaW5nIGluZGl2aWR1YWwg
Y2hhcmFjdGVycywgdG8gbG9va3VwIGxpZ2F0dXJlcy4KKyAgICBjb25zdCBHbHlwaCYgZ2x5cGgo
KSBjb25zdCB7IHJldHVybiBtX2dseXBoOyB9CisKK3ByaXZhdGU6CisgICAgU1ZHVGV4dE1ldHJp
Y3MoKTsKKyAgICBTVkdUZXh0TWV0cmljcyhjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1biYsIHVu
c2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCB0ZXh0TGVuZ3RoKTsKKworICAgIGZsb2F0IG1fd2lk
dGg7CisgICAgZmxvYXQgbV9oZWlnaHQ7CisgICAgdW5zaWduZWQgbV9sZW5ndGg7CisgICAgR2x5
cGggbV9nbHlwaDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTVkcpCisjZW5kaWYK
</data>
<flag name="review"
          id="59138"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>