<?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>25030</bug_id>
          
          <creation_ts>2009-04-03 10:41:07 -0700</creation_ts>
          <short_desc>Need to refactor MessagePort to support multi-process implementations</short_desc>
          <delta_ts>2009-04-09 13:47:43 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>ap</cc>
    
    <cc>mike</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116442</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-04-03 10:41:07 -0700</bug_when>
    <thetext>The current implementation of MessagePort has a direct reference between a port and its entangled pair. This works when both ports are running in the same process, but won&apos;t work when the entangled port lives in a separate process.

We need to refactor the MessagePort code to expose a RemotePort interface - this allows multi-process implementations to use a proxy object as the entangled pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116447</commentid>
    <comment_count>1</comment_count>
      <attachid>29232</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-04-03 10:51:30 -0700</bug_when>
    <thetext>Created attachment 29232
proposed patch

proposed patch

No new layout tests, as this is just a refactoring with no bug fixes/new functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116481</commentid>
    <comment_count>2</comment_count>
      <attachid>29241</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-04-03 14:07:39 -0700</bug_when>
    <thetext>Created attachment 29241
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116608</commentid>
    <comment_count>3</comment_count>
      <attachid>29241</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-06 03:55:21 -0700</bug_when>
    <thetext>Comment on attachment 29241
proposed patch

&gt; +        * dom/RemotePort.h: Added.
&gt; +        (WebCore::RemotePort::~RemotePort):

RemotePort doesn&apos;t look like a great name to me - first, it doesn&apos;t say that it&apos;s all about MessagePorts, and then, it&apos;s not clear in which sense it is &quot;remote&quot;. Other similar interfaces have the word Proxy in them, maybe MessagePortProxy would fit better?

&gt; +    m_entangledPort-&gt;deliverRemoteMessage(message, newMessagePort);

Again, a naming nitpick. Are there any non-remote messages? This function name makes it look like there are.

&gt; +        virtual void deliverRemoteMessage(const String&amp; message, PassRefPtr&lt;MessagePort&gt;) = 0;

There is no need to include PlatformString.h just for this, a forward declaration would suffice.

These are all nitpicks, but the patch mostly does renaming, so I think it&apos;s fair to be picky about names.

Besides renaming, there are changes to how entangling is implemented, it would be nice to provide a rationale in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116694</commentid>
    <comment_count>4</comment_count>
      <attachid>29293</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-04-06 17:10:20 -0700</bug_when>
    <thetext>Created attachment 29293
proposed patch with requested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116725</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-07 00:26:23 -0700</bug_when>
    <thetext>Something I didn&apos;t notice first time: please add the new file to projects (at least Mac, Windows and GNUmakefile.am). Looks good otherwise.

Did you enable and run the existing MessagePort and MessageChannel tests in fast/events? I&apos;d be interested in results of a &quot;run-webkit-tests --leaks&quot;  run for those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116975</commentid>
    <comment_count>6</comment_count>
      <attachid>29352</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-04-08 18:17:37 -0700</bug_when>
    <thetext>Created attachment 29352
proposed patch

Added MessagePortProxy.h to the various project files.

Also ran all of the disabled-by-default MessagePort tests. They all passed (including the one in http/tests/security/MessagePort) - I swear that one was failing yesterday but I can&apos;t reproduce any problems today after an update + clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116993</commentid>
    <comment_count>7</comment_count>
      <attachid>29352</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-08 22:45:26 -0700</bug_when>
    <thetext>Comment on attachment 29352
proposed patch

r=me. Please add the modified project files to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117054</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-04-09 11:15:43 -0700</bug_when>
    <thetext>Assigned to me for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117070</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-04-09 13:47:43 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/42367&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29232</attachid>
            <date>2009-04-03 10:51:30 -0700</date>
            <delta_ts>2009-04-03 14:07:39 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>25030.txt</filename>
            <type>text/plain</type>
            <size>10440</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjIwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDQtMDMgIERyZXcgV2lsc29uICA8c2V0IEVNQUlMX0FERFJF
U1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKwlSZWZhY3RvciBNZXNzYWdlUG9ydCBjb2RlIHRvIGVuYWJsZSBDaHJvbWUgdG8g
dXNlIGEgcHJveHkgb2JqZWN0CisJaW5zdGVhZCBvZiBhIHJlYWwgTWVzc2FnZVBvcnQgZm9yIHRo
ZSBlbnRhbmdsZWRQb3J0LCBzaW5jZSBpdCBjb3VsZAorCXRoZW9yZXRpY2FsbHkgbGl2ZSBpbiBh
IHNlcGFyYXRlIHByb2Nlc3MuCisJCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1MDMwCisgICAgICAgIAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdl
UG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjptYXJrKToK
KyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZVBvcnQ6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGVsaXZlclJlbW90ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnN0YXJ0Q29udmVyc2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydDo6ZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnVu
ZW50YW5nbGUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlZFBvcnQpOgorICAgICAgICAqIGRvbS9SZW1vdGVQb3J0
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlUG9ydDo6flJlbW90ZVBvcnQpOgor
CiAyMDA5LTA0LTAyICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9uIDQyMTUzKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEpTTWVzc2FnZVBvcnQ6Om1hcmsoKQogICAgIG1hcmtJ
Zk5vdE51bGwobV9pbXBsLT5vbm1lc3NhZ2UoKSk7CiAgICAgbWFya0lmTm90TnVsbChtX2ltcGwt
Pm9uY2xvc2UoKSk7CiAKLSAgICBpZiAoTWVzc2FnZVBvcnQqIGVudGFuZ2xlZFBvcnQgPSBtX2lt
cGwtPmVudGFuZ2xlZFBvcnQoKSkgeworICAgIGlmIChSZW1vdGVQb3J0KiBlbnRhbmdsZWRQb3J0
ID0gbV9pbXBsLT5lbnRhbmdsZWRQb3J0KCkpIHsKICAgICAgICAgRE9NT2JqZWN0KiB3cmFwcGVy
ID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcigqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0
YSgpLCBlbnRhbmdsZWRQb3J0KTsKICAgICAgICAgaWYgKHdyYXBwZXIgJiYgIXdyYXBwZXItPm1h
cmtlZCgpKQogICAgICAgICAgICAgd3JhcHBlci0+bWFyaygpOwpJbmRleDogV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNw
cAkocmV2aXNpb24gNDIxNTMpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBNZXNz
YWdlUG9ydDo6Y2xvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxNZXNz
YWdlUG9ydD4gcmVtb3RlUG9ydCA9IG1fZW50YW5nbGVkUG9ydDsKKyAgICBSZWZQdHI8UmVtb3Rl
UG9ydD4gcmVtb3RlUG9ydCA9IG1fZW50YW5nbGVkUG9ydDsKICAgICBSZWZQdHI8TWVzc2FnZVBv
cnQ+IG5ld1BvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKDApOwogCiAgICAgLy8gTW92ZSBhbGwg
dGhlIGV2ZW50cyBpbiB0aGUgcG9ydCBtZXNzYWdlIHF1ZXVlIG9mIG9yaWdpbmFsIHBvcnQgdG8g
dGhlIHBvcnQgbWVzc2FnZSBxdWV1ZSBvZiBuZXcgcG9ydCwgaWYgYW55LCBsZWF2aW5nIHRoZSBu
ZXcgcG9ydCdzIHBvcnQgbWVzc2FnZSBxdWV1ZSBpbiBpdHMgaW5pdGlhbCBjbG9zZWQgc3RhdGUu
CkBAIC0xNDMsOSArMTQzLDE0IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKGNvbnN0
IFN0cmkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2VudGFuZ2xlZFBvcnQt
Pm1fbWVzc2FnZVF1ZXVlLmFwcGVuZChFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCBuZXdNZXNz
YWdlUG9ydCkpOwotICAgIGlmIChtX2VudGFuZ2xlZFBvcnQtPm1fcXVldWVJc09wZW4gJiYgbV9l
bnRhbmdsZWRQb3J0LT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIG1fZW50YW5n
bGVkUG9ydC0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wcm9jZXNzTWVzc2FnZVBvcnRNZXNz
YWdlc1Nvb24oKTsKKyAgICBtX2VudGFuZ2xlZFBvcnQtPmRlbGl2ZXJSZW1vdGVNZXNzYWdlKG1l
c3NhZ2UsIG5ld01lc3NhZ2VQb3J0KTsKK30KKwordm9pZCBNZXNzYWdlUG9ydDo6ZGVsaXZlclJl
bW90ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0
PiBkYXRhUG9ydCkKK3sKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoRXZlbnREYXRhOjpjcmVh
dGUobWVzc2FnZSwgZGF0YVBvcnQpKTsKKyAgICBpZiAobV9xdWV1ZUlzT3BlbiAmJiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHJv
Y2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCk7CiB9CiAKIFBhc3NSZWZQdHI8TWVzc2FnZVBv
cnQ+IE1lc3NhZ2VQb3J0OjpzdGFydENvbnZlcnNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNTcs
OSArMTYyLDcgQEAgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gTWVzc2FnZVBvcnQ6OnN0YQogCiAg
ICAgZW50YW5nbGUocG9ydDEuZ2V0KCksIHBvcnQyLmdldCgpKTsKIAotICAgIG1fZW50YW5nbGVk
UG9ydC0+bV9tZXNzYWdlUXVldWUuYXBwZW5kKEV2ZW50RGF0YTo6Y3JlYXRlKG1lc3NhZ2UsIHBv
cnQyKSk7Ci0gICAgaWYgKG1fZW50YW5nbGVkUG9ydC0+bV9xdWV1ZUlzT3BlbiAmJiBtX2VudGFu
Z2xlZFBvcnQtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgbV9lbnRhbmdsZWRQ
b3J0LT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2Vz
U29vbigpOworICAgIG1fZW50YW5nbGVkUG9ydC0+ZGVsaXZlclJlbW90ZU1lc3NhZ2UobWVzc2Fn
ZSwgcG9ydDIpOwogICAgIHJldHVybiBwb3J0MTsKIH0KIApAQCAtMTc3LDM1ICsxODAsMzcgQEAg
dm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2UoKQogICAgIGlmICghbV9lbnRhbmdsZWRQb3J0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBNZXNzYWdlUG9ydCogb3RoZXJQb3J0ID0gbV9lbnRhbmdsZWRQ
b3J0OworICAgIFJlbW90ZVBvcnQqIG90aGVyUG9ydCA9IG1fZW50YW5nbGVkUG9ydDsKICAgICB1
bmVudGFuZ2xlKCk7CiAKICAgICBxdWV1ZUNsb3NlRXZlbnQoKTsKICAgICBvdGhlclBvcnQtPnF1
ZXVlQ2xvc2VFdmVudCgpOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0OjplbnRhbmdsZShNZXNzYWdl
UG9ydCogcG9ydDEsIE1lc3NhZ2VQb3J0KiBwb3J0MikKK3ZvaWQgTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlKFJlbW90ZVBvcnQqIHBvcnQxLCBSZW1vdGVQb3J0KiBwb3J0MikKIHsKLSAgICBpZiAocG9y
dDEtPm1fZW50YW5nbGVkUG9ydCkgewotICAgICAgICBBU1NFUlQocG9ydDEtPm1fZW50YW5nbGVk
UG9ydCAhPSBwb3J0Mik7Ci0gICAgICAgIHBvcnQxLT51bmVudGFuZ2xlKCk7Ci0gICAgfQorICAg
IHBvcnQxLT5lbnRhbmdsZShwb3J0Mik7CisgICAgcG9ydDItPmVudGFuZ2xlKHBvcnQxKTsKK30K
IAotICAgIGlmIChwb3J0Mi0+bV9lbnRhbmdsZWRQb3J0KSB7Ci0gICAgICAgIEFTU0VSVChwb3J0
Mi0+bV9lbnRhbmdsZWRQb3J0ICE9IHBvcnQxKTsKLSAgICAgICAgcG9ydDItPnVuZW50YW5nbGUo
KTsKK3ZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKFJlbW90ZVBvcnQqIHJlbW90ZSkKK3sKKyAg
ICAvLyBVbmVudGFuZ2xlIGZyb20gb3VyIGN1cnJlbnQgcG9ydCBmaXJzdAorICAgIGlmIChtX2Vu
dGFuZ2xlZFBvcnQpIHsKKyAgICAgICAgQVNTRVJUKG1fZW50YW5nbGVkUG9ydCAhPSByZW1vdGUp
OworICAgICAgICB1bmVudGFuZ2xlKCk7CiAgICAgfQotCi0gICAgcG9ydDEtPm1fZW50YW5nbGVk
UG9ydCA9IHBvcnQyOwotICAgIHBvcnQyLT5tX2VudGFuZ2xlZFBvcnQgPSBwb3J0MTsKKyAgICBt
X2VudGFuZ2xlZFBvcnQgPSByZW1vdGU7CiB9Ci0KKyAgICAKIHZvaWQgTWVzc2FnZVBvcnQ6OnVu
ZW50YW5nbGUoKQogewotICAgIEFTU0VSVCh0aGlzID09IG1fZW50YW5nbGVkUG9ydC0+bV9lbnRh
bmdsZWRQb3J0KTsKLQotICAgIG1fZW50YW5nbGVkUG9ydC0+bV9lbnRhbmdsZWRQb3J0ID0gMDsK
LSAgICBtX2VudGFuZ2xlZFBvcnQgPSAwOworICAgIC8vIFVuZW50YW5nbGUgb3VyIGVuZCBiZWZv
cmUgdW5lbnRhbmdsaW5nIHRoZSBvdGhlciBlbmQKKyAgICBpZiAobV9lbnRhbmdsZWRQb3J0KSB7
CisgICAgICAgIFJlbW90ZVBvcnQqIHJlbW90ZSA9IG1fZW50YW5nbGVkUG9ydDsKKyAgICAgICAg
bV9lbnRhbmdsZWRQb3J0ID0gMDsKKyAgICAgICAgcmVtb3RlLT51bmVudGFuZ2xlKCk7CisgICAg
fQogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Ojpjb250ZXh0RGVzdHJveWVkKCkKSW5kZXg6IFdlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaAkocmV2aXNpb24gNDIxNTMpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgor
I2luY2x1ZGUgIlJlbW90ZVBvcnQuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgpAQCAtNDYsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAKLSAg
ICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0PiwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBSZW1vdGVQ
b3J0LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZVBvcnQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9CiAgICAgICAgIH5NZXNzYWdlUG9ydCgpOwpAQCAtNjAs
MTEgKzYxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzdGFydCgpOwog
ICAgICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFJl
bW90ZVBvcnQgQVBJcworICAgICAgICB2aXJ0dWFsIHZvaWQgZW50YW5nbGUoUmVtb3RlUG9ydCop
OworICAgICAgICB2aXJ0dWFsIHZvaWQgdW5lbnRhbmdsZSgpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGVsaXZlclJlbW90ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PE1lc3NhZ2VQb3J0Pik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBxdWV1ZUNsb3NlRXZlbnQoKTsK
KwogICAgICAgICBib29sIHF1ZXVlSXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZUlzT3Bl
bjsgfQogCi0gICAgICAgIE1lc3NhZ2VQb3J0KiBlbnRhbmdsZWRQb3J0KCkgeyByZXR1cm4gbV9l
bnRhbmdsZWRQb3J0OyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGVudGFuZ2xlKE1lc3NhZ2VQb3J0
KiwgTWVzc2FnZVBvcnQqKTsKLSAgICAgICAgdm9pZCB1bmVudGFuZ2xlKCk7CisgICAgICAgIFJl
bW90ZVBvcnQqIGVudGFuZ2xlZFBvcnQoKSB7IHJldHVybiBtX2VudGFuZ2xlZFBvcnQ7IH0KKyAg
ICAgICAgc3RhdGljIHZvaWQgZW50YW5nbGUoUmVtb3RlUG9ydCosIFJlbW90ZVBvcnQqKTsKIAog
ICAgICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAgICAgICAgdm9pZCBhdHRhY2hUb0Nv
bnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpAQCAtNzIsNyArNzgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBNZXNzYWdlUG9ydCogdG9NZXNzYWdlUG9y
dCgpIHsgcmV0dXJuIHRoaXM7IH0KIAotICAgICAgICB2b2lkIHF1ZXVlQ2xvc2VFdmVudCgpOwog
ICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZXMoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKQEAgLTgzLDggKzg4LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBM
aXN0ZW5lclZlY3Rvcj4gRXZlbnRMaXN0ZW5lcnNNYXA7CiAgICAgICAgIEV2ZW50TGlzdGVuZXJz
TWFwJiBldmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnM7IH0KIAotICAg
ICAgICB1c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6cmVmOwotICAgICAgICB1c2luZyBS
ZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6ZGVyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8
UmVtb3RlUG9ydD46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxSZW1vdGVQb3J0Pjo6
ZGVyZWY7CiAKICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIApAQCAtMTA1LDcg
KzExMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRpc3BhdGNoQ2xv
c2VFdmVudCgpOwogCi0gICAgICAgIE1lc3NhZ2VQb3J0KiBtX2VudGFuZ2xlZFBvcnQ7CisgICAg
ICAgIFJlbW90ZVBvcnQqIG1fZW50YW5nbGVkUG9ydDsKIAogICAgICAgICAvLyBGSVhNRTogRXZl
bnREYXRhIGlzIG5lY2Vzc2FyeSB0byBwYXNzIG1lc3NhZ2VzIHRvIG90aGVyIHRocmVhZHMuIElu
IHNpbmdsZSB0aHJlYWRlZCBjYXNlLCB3ZSBjYW4ganVzdCBxdWV1ZSBhIGNyZWF0ZWQgZXZlbnQu
CiAgICAgICAgIHN0cnVjdCBFdmVudERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudERhdGE+
IHsKSW5kZXg6IFdlYkNvcmUvZG9tL1JlbW90ZVBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9SZW1vdGVQb3J0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9SZW1vdGVQb3J0
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qDQorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQN
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlDQorICogbWV0Og0KKyAqDQorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuDQorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQ0KKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXINCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQorICogZGlzdHJpYnV0
aW9uLg0KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMNCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QNCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLA0KKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QNCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkN
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUDQorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKi8N
CisNCisjaWZuZGVmIFJlbW90ZVBvcnRfaA0KKyNkZWZpbmUgUmVtb3RlUG9ydF9oDQorDQorDQor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCisNCituYW1lc3BhY2UgV2ViQ29yZSB7DQorDQorICAg
IGNsYXNzIE1lc3NhZ2VQb3J0Ow0KKw0KKyAgICBjbGFzcyBSZW1vdGVQb3J0IDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVtb3RlUG9ydD4gew0KKyAgICBwdWJsaWM6DQorICAgICAgICB2aXJ0dWFsIH5S
ZW1vdGVQb3J0KCkge30NCisNCisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRhbmdsZShSZW1vdGVQ
b3J0KikgPSAwOw0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVuZW50YW5nbGUoKSA9IDA7DQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlclJlbW90ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PikgPSAwOw0KKyAgICAgICAgdmlydHVhbCB2b2lk
IHF1ZXVlQ2xvc2VFdmVudCgpID0gMDsNCisgICAgfTsNCisNCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlDQorDQorI2VuZGlmIC8vIFJlbW90ZVBvcnRfaA0KKw0KClByb3BlcnR5IGNoYW5nZXMgb246
IFdlYkNvcmUvZG9tL1JlbW90ZVBvcnQuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjpleGVjdXRhYmxl
CiAgICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29241</attachid>
            <date>2009-04-03 14:07:39 -0700</date>
            <delta_ts>2009-04-06 17:10:20 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>25030-2.txt</filename>
            <type>text/plain</type>
            <size>10477</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjIwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDQtMDMgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWZhY3RvciBNZXNzYWdlUG9ydCBjb2RlIHRvIGVuYWJsZSBDaHJvbWUgdG8gdXNlIGEgcHJveHkg
b2JqZWN0CisgICAgICAgIGluc3RlYWQgb2YgYSByZWFsIE1lc3NhZ2VQb3J0IGZvciB0aGUgZW50
YW5nbGVkUG9ydCwgc2luY2UgaXQgY291bGQKKyAgICAgICAgdGhlb3JldGljYWxseSBsaXZlIGlu
IGEgc2VwYXJhdGUgcHJvY2Vzcy4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyBsYXlvdXQgdGVz
dHMsIGFzIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHdpdGggbm8gYnVnIGZpeGVzCisgICAg
ICAgIG9yIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNTAzMAorICAgICAgIAorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQ
b3J0OjptYXJrKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGVsaXZlclJl
bW90ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnN0YXJ0Q29udmVy
c2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OnVuZW50YW5nbGUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlZFBvcnQpOgorICAgICAgICAqIGRv
bS9SZW1vdGVQb3J0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlUG9ydDo6flJl
bW90ZVBvcnQpOgorCiAyMDA5LTA0LTAyICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9u
IDQyMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEpTTWVzc2FnZVBvcnQ6Om1hcmso
KQogICAgIG1hcmtJZk5vdE51bGwobV9pbXBsLT5vbm1lc3NhZ2UoKSk7CiAgICAgbWFya0lmTm90
TnVsbChtX2ltcGwtPm9uY2xvc2UoKSk7CiAKLSAgICBpZiAoTWVzc2FnZVBvcnQqIGVudGFuZ2xl
ZFBvcnQgPSBtX2ltcGwtPmVudGFuZ2xlZFBvcnQoKSkgeworICAgIGlmIChSZW1vdGVQb3J0KiBl
bnRhbmdsZWRQb3J0ID0gbV9pbXBsLT5lbnRhbmdsZWRQb3J0KCkpIHsKICAgICAgICAgRE9NT2Jq
ZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcigqSGVhcDo6aGVhcCh0aGlz
KS0+Z2xvYmFsRGF0YSgpLCBlbnRhbmdsZWRQb3J0KTsKICAgICAgICAgaWYgKHdyYXBwZXIgJiYg
IXdyYXBwZXItPm1hcmtlZCgpKQogICAgICAgICAgICAgd3JhcHBlci0+bWFyaygpOwpJbmRleDog
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAkocmV2aXNpb24gNDIxNTMpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPE1lc3Nh
Z2VQb3J0PiBNZXNzYWdlUG9ydDo6Y2xvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IFJlZlB0cjxNZXNzYWdlUG9ydD4gcmVtb3RlUG9ydCA9IG1fZW50YW5nbGVkUG9ydDsKKyAgICBS
ZWZQdHI8UmVtb3RlUG9ydD4gcmVtb3RlUG9ydCA9IG1fZW50YW5nbGVkUG9ydDsKICAgICBSZWZQ
dHI8TWVzc2FnZVBvcnQ+IG5ld1BvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKDApOwogCiAgICAg
Ly8gTW92ZSBhbGwgdGhlIGV2ZW50cyBpbiB0aGUgcG9ydCBtZXNzYWdlIHF1ZXVlIG9mIG9yaWdp
bmFsIHBvcnQgdG8gdGhlIHBvcnQgbWVzc2FnZSBxdWV1ZSBvZiBuZXcgcG9ydCwgaWYgYW55LCBs
ZWF2aW5nIHRoZSBuZXcgcG9ydCdzIHBvcnQgbWVzc2FnZSBxdWV1ZSBpbiBpdHMgaW5pdGlhbCBj
bG9zZWQgc3RhdGUuCkBAIC0xNDMsOSArMTQzLDE0IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Vu
dGFuZ2xlZFBvcnQtPm1fbWVzc2FnZVF1ZXVlLmFwcGVuZChFdmVudERhdGE6OmNyZWF0ZShtZXNz
YWdlLCBuZXdNZXNzYWdlUG9ydCkpOwotICAgIGlmIChtX2VudGFuZ2xlZFBvcnQtPm1fcXVldWVJ
c09wZW4gJiYgbV9lbnRhbmdsZWRQb3J0LT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAg
ICAgIG1fZW50YW5nbGVkUG9ydC0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wcm9jZXNzTWVz
c2FnZVBvcnRNZXNzYWdlc1Nvb24oKTsKKyAgICBtX2VudGFuZ2xlZFBvcnQtPmRlbGl2ZXJSZW1v
dGVNZXNzYWdlKG1lc3NhZ2UsIG5ld01lc3NhZ2VQb3J0KTsKK30KKwordm9pZCBNZXNzYWdlUG9y
dDo6ZGVsaXZlclJlbW90ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PE1lc3NhZ2VQb3J0PiBkYXRhUG9ydCkKK3sKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoRXZl
bnREYXRhOjpjcmVhdGUobWVzc2FnZSwgZGF0YVBvcnQpKTsKKyAgICBpZiAobV9xdWV1ZUlzT3Bl
biAmJiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8TWVzc2FnZVBvcnQ+IE1lc3NhZ2VQb3J0OjpzdGFydENvbnZlcnNhdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCkBAIC0xNTcsOSArMTYyLDcgQEAgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gTWVzc2FnZVBv
cnQ6OnN0YQogCiAgICAgZW50YW5nbGUocG9ydDEuZ2V0KCksIHBvcnQyLmdldCgpKTsKIAotICAg
IG1fZW50YW5nbGVkUG9ydC0+bV9tZXNzYWdlUXVldWUuYXBwZW5kKEV2ZW50RGF0YTo6Y3JlYXRl
KG1lc3NhZ2UsIHBvcnQyKSk7Ci0gICAgaWYgKG1fZW50YW5nbGVkUG9ydC0+bV9xdWV1ZUlzT3Bl
biAmJiBtX2VudGFuZ2xlZFBvcnQtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAg
bV9lbnRhbmdsZWRQb3J0LT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnByb2Nlc3NNZXNzYWdl
UG9ydE1lc3NhZ2VzU29vbigpOworICAgIG1fZW50YW5nbGVkUG9ydC0+ZGVsaXZlclJlbW90ZU1l
c3NhZ2UobWVzc2FnZSwgcG9ydDIpOwogICAgIHJldHVybiBwb3J0MTsKIH0KIApAQCAtMTc3LDM1
ICsxODAsMzcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2UoKQogICAgIGlmICghbV9lbnRhbmds
ZWRQb3J0KQogICAgICAgICByZXR1cm47CiAKLSAgICBNZXNzYWdlUG9ydCogb3RoZXJQb3J0ID0g
bV9lbnRhbmdsZWRQb3J0OworICAgIFJlbW90ZVBvcnQqIG90aGVyUG9ydCA9IG1fZW50YW5nbGVk
UG9ydDsKICAgICB1bmVudGFuZ2xlKCk7CiAKICAgICBxdWV1ZUNsb3NlRXZlbnQoKTsKICAgICBv
dGhlclBvcnQtPnF1ZXVlQ2xvc2VFdmVudCgpOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0OjplbnRh
bmdsZShNZXNzYWdlUG9ydCogcG9ydDEsIE1lc3NhZ2VQb3J0KiBwb3J0MikKK3ZvaWQgTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlKFJlbW90ZVBvcnQqIHBvcnQxLCBSZW1vdGVQb3J0KiBwb3J0MikKIHsK
LSAgICBpZiAocG9ydDEtPm1fZW50YW5nbGVkUG9ydCkgewotICAgICAgICBBU1NFUlQocG9ydDEt
Pm1fZW50YW5nbGVkUG9ydCAhPSBwb3J0Mik7Ci0gICAgICAgIHBvcnQxLT51bmVudGFuZ2xlKCk7
Ci0gICAgfQorICAgIHBvcnQxLT5lbnRhbmdsZShwb3J0Mik7CisgICAgcG9ydDItPmVudGFuZ2xl
KHBvcnQxKTsKK30KIAotICAgIGlmIChwb3J0Mi0+bV9lbnRhbmdsZWRQb3J0KSB7Ci0gICAgICAg
IEFTU0VSVChwb3J0Mi0+bV9lbnRhbmdsZWRQb3J0ICE9IHBvcnQxKTsKLSAgICAgICAgcG9ydDIt
PnVuZW50YW5nbGUoKTsKK3ZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKFJlbW90ZVBvcnQqIHJl
bW90ZSkKK3sKKyAgICAvLyBVbmVudGFuZ2xlIGZyb20gb3VyIGN1cnJlbnQgcG9ydCBmaXJzdC4K
KyAgICBpZiAobV9lbnRhbmdsZWRQb3J0KSB7CisgICAgICAgIEFTU0VSVChtX2VudGFuZ2xlZFBv
cnQgIT0gcmVtb3RlKTsKKyAgICAgICAgdW5lbnRhbmdsZSgpOwogICAgIH0KLQotICAgIHBvcnQx
LT5tX2VudGFuZ2xlZFBvcnQgPSBwb3J0MjsKLSAgICBwb3J0Mi0+bV9lbnRhbmdsZWRQb3J0ID0g
cG9ydDE7CisgICAgbV9lbnRhbmdsZWRQb3J0ID0gcmVtb3RlOwogfQogCiB2b2lkIE1lc3NhZ2VQ
b3J0Ojp1bmVudGFuZ2xlKCkKIHsKLSAgICBBU1NFUlQodGhpcyA9PSBtX2VudGFuZ2xlZFBvcnQt
Pm1fZW50YW5nbGVkUG9ydCk7Ci0KLSAgICBtX2VudGFuZ2xlZFBvcnQtPm1fZW50YW5nbGVkUG9y
dCA9IDA7Ci0gICAgbV9lbnRhbmdsZWRQb3J0ID0gMDsKKyAgICAvLyBVbmVudGFuZ2xlIG91ciBl
bmQgYmVmb3JlIHVuZW50YW5nbGluZyB0aGUgb3RoZXIgZW5kLgorICAgIGlmIChtX2VudGFuZ2xl
ZFBvcnQpIHsKKyAgICAgICAgUmVtb3RlUG9ydCogcmVtb3RlID0gbV9lbnRhbmdsZWRQb3J0Owor
ICAgICAgICBtX2VudGFuZ2xlZFBvcnQgPSAwOworICAgICAgICByZW1vdGUtPnVuZW50YW5nbGUo
KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQpJbmRl
eDogV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5oCShyZXZpc2lvbiA0MjE1MykKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdG9taWNTdHJp
bmdIYXNoLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlUG9ydC5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CkBAIC00Niw3ICs0Nyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4
dDsKIAotICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVzc2FnZVBv
cnQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGlj
IFJlbW90ZVBvcnQsIHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdl
UG9ydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICAgICAgfk1lc3NhZ2VQb3J0KCk7
CkBAIC02MCwxMSArNjEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0
YXJ0KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKIAorICAgICAgICAvLyBJbXBsZW1lbnRhdGlv
bnMgb2YgUmVtb3RlUG9ydCBBUElzCisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRhbmdsZShSZW1v
dGVQb3J0Kik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1bmVudGFuZ2xlKCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkZWxpdmVyUmVtb3RlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBh
c3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHF1ZXVlQ2xvc2VF
dmVudCgpOworCiAgICAgICAgIGJvb2wgcXVldWVJc09wZW4oKSBjb25zdCB7IHJldHVybiBtX3F1
ZXVlSXNPcGVuOyB9CiAKLSAgICAgICAgTWVzc2FnZVBvcnQqIGVudGFuZ2xlZFBvcnQoKSB7IHJl
dHVybiBtX2VudGFuZ2xlZFBvcnQ7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgZW50YW5nbGUoTWVz
c2FnZVBvcnQqLCBNZXNzYWdlUG9ydCopOwotICAgICAgICB2b2lkIHVuZW50YW5nbGUoKTsKKyAg
ICAgICAgUmVtb3RlUG9ydCogZW50YW5nbGVkUG9ydCgpIHsgcmV0dXJuIG1fZW50YW5nbGVkUG9y
dDsgfQorICAgICAgICBzdGF0aWMgdm9pZCBlbnRhbmdsZShSZW1vdGVQb3J0KiwgUmVtb3RlUG9y
dCopOwogCiAgICAgICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogICAgICAgICB2b2lkIGF0
dGFjaFRvQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC03Miw3ICs3OCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0KiB0b01l
c3NhZ2VQb3J0KCkgeyByZXR1cm4gdGhpczsgfQogCi0gICAgICAgIHZvaWQgcXVldWVDbG9zZUV2
ZW50KCk7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwpAQCAtODMsOCArODgs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKICAgICAgICAgRXZlbnRM
aXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsg
fQogCi0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpyZWY7Ci0gICAgICAg
IHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpkZXJlZjsKKyAgICAgICAgdXNpbmcgUmVm
Q291bnRlZDxSZW1vdGVQb3J0Pjo6cmVmOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFJlbW90
ZVBvcnQ+OjpkZXJlZjsKIAogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpOwogCkBA
IC0xMDUsNyArMTEwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlz
cGF0Y2hDbG9zZUV2ZW50KCk7CiAKLSAgICAgICAgTWVzc2FnZVBvcnQqIG1fZW50YW5nbGVkUG9y
dDsKKyAgICAgICAgUmVtb3RlUG9ydCogbV9lbnRhbmdsZWRQb3J0OwogCiAgICAgICAgIC8vIEZJ
WE1FOiBFdmVudERhdGEgaXMgbmVjZXNzYXJ5IHRvIHBhc3MgbWVzc2FnZXMgdG8gb3RoZXIgdGhy
ZWFkcy4gSW4gc2luZ2xlIHRocmVhZGVkIGNhc2UsIHdlIGNhbiBqdXN0IHF1ZXVlIGEgY3JlYXRl
ZCBldmVudC4KICAgICAgICAgc3RydWN0IEV2ZW50RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2
ZW50RGF0YT4gewpJbmRleDogV2ViQ29yZS9kb20vUmVtb3RlUG9ydC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1JlbW90ZVBvcnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1Jl
bW90ZVBvcnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoNCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUNCisgKiBtZXQ6DQorICoNCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dA0KKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisgKiBk
aXN0cmlidXRpb24uDQorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cw0KKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMNCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsDQorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQ0KKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
Lg0KKyAqLw0KKw0KKyNpZm5kZWYgUmVtb3RlUG9ydF9oDQorI2RlZmluZSBSZW1vdGVQb3J0X2gN
CisNCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4NCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCisNCituYW1lc3BhY2UgV2ViQ29y
ZSB7DQorDQorICAgIGNsYXNzIE1lc3NhZ2VQb3J0Ow0KKw0KKyAgICBjbGFzcyBSZW1vdGVQb3J0
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlUG9ydD4gew0KKyAgICBwdWJsaWM6DQorICAgICAg
ICB2aXJ0dWFsIH5SZW1vdGVQb3J0KCkgeyB9DQorDQorICAgICAgICB2aXJ0dWFsIHZvaWQgZW50
YW5nbGUoUmVtb3RlUG9ydCopID0gMDsNCisgICAgICAgIHZpcnR1YWwgdm9pZCB1bmVudGFuZ2xl
KCkgPSAwOw0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXJSZW1vdGVNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4pID0gMDsNCisgICAgICAg
IHZpcnR1YWwgdm9pZCBxdWV1ZUNsb3NlRXZlbnQoKSA9IDA7DQorICAgIH07DQorDQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQ0KKw0KKyNlbmRpZiAvLyBSZW1vdGVQb3J0X2gNCg==
</data>
<flag name="review"
          id="14510"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29293</attachid>
            <date>2009-04-06 17:10:20 -0700</date>
            <delta_ts>2009-04-08 18:17:37 -0700</delta_ts>
            <desc>proposed patch with requested changes</desc>
            <filename>25030-3.txt</filename>
            <type>text/plain</type>
            <size>11130</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjI1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDQtMDMgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWZhY3RvciBNZXNzYWdlUG9ydCBjb2RlIHRvIGVuYWJsZSBDaHJvbWUgdG8gdXNlIGEgTWVzc2Fn
ZVBvcnRQcm94eSBvYmplY3QKKyAgICAgICAgaW5zdGVhZCBvZiBhIHJlYWwgTWVzc2FnZVBvcnQg
Zm9yIHRoZSBlbnRhbmdsZWRQb3J0LCBzaW5jZSBpdCBjb3VsZAorICAgICAgICB0aGVvcmV0aWNh
bGx5IGxpdmUgaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLgorCisgICAgICAgIFRoZSBnb2FsIG9mIHRo
aXMgcmVmYWN0b3JpbmcgaXMgdG8gcmVtb3ZlIGFsbCBhc3N1bXB0aW9ucyB0aGF0IHRoZSBvYmpl
Y3QKKyAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBlbnRhbmdsZWQgcG9ydCBpcyBhY3R1YWxseSBv
ZiB0eXBlIE1lc3NhZ2VQb3J0LiBBbGwKKyAgICAgICAgb3BlcmF0aW9ucyB0aGF0IHdlcmUgcHJl
dmlvdXNseSBkaXJlY3RseSBtb2RpZnlpbmcgcHJpdmF0ZSBNZXNzYWdlUG9ydCBtZW1iZXIKKyAg
ICAgICAgdmFyaWFibGVzIGluIHRoZSBlbnRhbmdsZWQgcG9ydCAoaS5lLiBlbnRhbmdsZSgpLCBw
b3N0TWVzc2FnZSgpKSBoYXZlIGJlZW4gY2hhbmdlZAorICAgICAgICB0byBpbnZva2UgZnVuY3Rp
b25zIGluIHRoZSAgTWVzc2FnZVBvcnRQcm94eSBpbnRlcmZhY2UgaW5zdGVhZCB3aGljaCB3aWxs
IGFsbG93CisgICAgICAgIHRoZSBDaHJvbWUgYmluZGluZ3MgdG8gcHJveHkgdGhlc2UgY2FsbHMg
dG8gYW5vdGhlciBwcm9jZXNzLgorCisgICAgICAgIE5vIG5ldyBsYXlvdXQgdGVzdHMsIGFzIHRo
aXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHdpdGggbm8gYnVnIGZpeGVzCisgICAgICAgIG9yIG5l
dyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTAzMAorICAgICAgIAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjptYXJr
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGVsaXZlck1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnN0YXJ0Q29udmVyc2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnVuZW50
YW5nbGUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlZFBvcnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydFBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRQcm94eTo6fk1lc3Nh
Z2VQb3J0UHJveHkpOgorCiAyMDA5LTA0LTA2ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0
YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5
IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAJKHJldmlzaW9uIDQyMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEpT
TWVzc2FnZVBvcnQ6Om1hcmsoKQogICAgIG1hcmtJZk5vdE51bGwobV9pbXBsLT5vbm1lc3NhZ2Uo
KSk7CiAgICAgbWFya0lmTm90TnVsbChtX2ltcGwtPm9uY2xvc2UoKSk7CiAKLSAgICBpZiAoTWVz
c2FnZVBvcnQqIGVudGFuZ2xlZFBvcnQgPSBtX2ltcGwtPmVudGFuZ2xlZFBvcnQoKSkgeworICAg
IGlmIChNZXNzYWdlUG9ydFByb3h5KiBlbnRhbmdsZWRQb3J0ID0gbV9pbXBsLT5lbnRhbmdsZWRQ
b3J0KCkpIHsKICAgICAgICAgRE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0
V3JhcHBlcigqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBlbnRhbmdsZWRQb3J0KTsK
ICAgICAgICAgaWYgKHdyYXBwZXIgJiYgIXdyYXBwZXItPm1hcmtlZCgpKQogICAgICAgICAgICAg
d3JhcHBlci0+bWFyaygpOwpJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkocmV2aXNpb24gNDIxNTMpCisr
KyBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBNZXNzYWdlUG9ydDo6Y2xvCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcmVtb3RlUG9ydCA9
IG1fZW50YW5nbGVkUG9ydDsKKyAgICBSZWZQdHI8TWVzc2FnZVBvcnRQcm94eT4gcmVtb3RlUG9y
dCA9IG1fZW50YW5nbGVkUG9ydDsKICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG5ld1BvcnQgPSBN
ZXNzYWdlUG9ydDo6Y3JlYXRlKDApOwogCiAgICAgLy8gTW92ZSBhbGwgdGhlIGV2ZW50cyBpbiB0
aGUgcG9ydCBtZXNzYWdlIHF1ZXVlIG9mIG9yaWdpbmFsIHBvcnQgdG8gdGhlIHBvcnQgbWVzc2Fn
ZSBxdWV1ZSBvZiBuZXcgcG9ydCwgaWYgYW55LCBsZWF2aW5nIHRoZSBuZXcgcG9ydCdzIHBvcnQg
bWVzc2FnZSBxdWV1ZSBpbiBpdHMgaW5pdGlhbCBjbG9zZWQgc3RhdGUuCkBAIC0xNDMsOSArMTQz
LDE0IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2VudGFuZ2xlZFBvcnQtPm1fbWVzc2FnZVF1ZXVl
LmFwcGVuZChFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCBuZXdNZXNzYWdlUG9ydCkpOwotICAg
IGlmIChtX2VudGFuZ2xlZFBvcnQtPm1fcXVldWVJc09wZW4gJiYgbV9lbnRhbmdsZWRQb3J0LT5t
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIG1fZW50YW5nbGVkUG9ydC0+bV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24oKTsKKyAg
ICBtX2VudGFuZ2xlZFBvcnQtPmRlbGl2ZXJNZXNzYWdlKG1lc3NhZ2UsIG5ld01lc3NhZ2VQb3J0
KTsKK30KKwordm9pZCBNZXNzYWdlUG9ydDo6ZGVsaXZlck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBkYXRhUG9ydCkKK3sKKyAgICBtX21lc3Nh
Z2VRdWV1ZS5hcHBlbmQoRXZlbnREYXRhOjpjcmVhdGUobWVzc2FnZSwgZGF0YVBvcnQpKTsKKyAg
ICBpZiAobV9xdWV1ZUlzT3BlbiAmJiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29u
KCk7CiB9CiAKIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IE1lc3NhZ2VQb3J0OjpzdGFydENvbnZl
cnNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNTcsOSArMTYyLDcgQEAgUGFzc1JlZlB0cjxNZXNz
YWdlUG9ydD4gTWVzc2FnZVBvcnQ6OnN0YQogCiAgICAgZW50YW5nbGUocG9ydDEuZ2V0KCksIHBv
cnQyLmdldCgpKTsKIAotICAgIG1fZW50YW5nbGVkUG9ydC0+bV9tZXNzYWdlUXVldWUuYXBwZW5k
KEV2ZW50RGF0YTo6Y3JlYXRlKG1lc3NhZ2UsIHBvcnQyKSk7Ci0gICAgaWYgKG1fZW50YW5nbGVk
UG9ydC0+bV9xdWV1ZUlzT3BlbiAmJiBtX2VudGFuZ2xlZFBvcnQtPm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKLSAgICAgICAgbV9lbnRhbmdsZWRQb3J0LT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2VzU29vbigpOworICAgIG1fZW50YW5nbGVkUG9y
dC0+ZGVsaXZlck1lc3NhZ2UobWVzc2FnZSwgcG9ydDIpOwogICAgIHJldHVybiBwb3J0MTsKIH0K
IApAQCAtMTc3LDM1ICsxODAsMzcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2UoKQogICAgIGlm
ICghbV9lbnRhbmdsZWRQb3J0KQogICAgICAgICByZXR1cm47CiAKLSAgICBNZXNzYWdlUG9ydCog
b3RoZXJQb3J0ID0gbV9lbnRhbmdsZWRQb3J0OworICAgIE1lc3NhZ2VQb3J0UHJveHkqIG90aGVy
UG9ydCA9IG1fZW50YW5nbGVkUG9ydDsKICAgICB1bmVudGFuZ2xlKCk7CiAKICAgICBxdWV1ZUNs
b3NlRXZlbnQoKTsKICAgICBvdGhlclBvcnQtPnF1ZXVlQ2xvc2VFdmVudCgpOwogfQogCi12b2lk
IE1lc3NhZ2VQb3J0OjplbnRhbmdsZShNZXNzYWdlUG9ydCogcG9ydDEsIE1lc3NhZ2VQb3J0KiBw
b3J0MikKK3ZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKE1lc3NhZ2VQb3J0UHJveHkqIHBvcnQx
LCBNZXNzYWdlUG9ydFByb3h5KiBwb3J0MikKIHsKLSAgICBpZiAocG9ydDEtPm1fZW50YW5nbGVk
UG9ydCkgewotICAgICAgICBBU1NFUlQocG9ydDEtPm1fZW50YW5nbGVkUG9ydCAhPSBwb3J0Mik7
Ci0gICAgICAgIHBvcnQxLT51bmVudGFuZ2xlKCk7Ci0gICAgfQorICAgIHBvcnQxLT5lbnRhbmds
ZShwb3J0Mik7CisgICAgcG9ydDItPmVudGFuZ2xlKHBvcnQxKTsKK30KIAotICAgIGlmIChwb3J0
Mi0+bV9lbnRhbmdsZWRQb3J0KSB7Ci0gICAgICAgIEFTU0VSVChwb3J0Mi0+bV9lbnRhbmdsZWRQ
b3J0ICE9IHBvcnQxKTsKLSAgICAgICAgcG9ydDItPnVuZW50YW5nbGUoKTsKK3ZvaWQgTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlKE1lc3NhZ2VQb3J0UHJveHkqIHJlbW90ZSkKK3sKKyAgICAvLyBVbmVu
dGFuZ2xlIGZyb20gb3VyIGN1cnJlbnQgcG9ydCBmaXJzdC4KKyAgICBpZiAobV9lbnRhbmdsZWRQ
b3J0KSB7CisgICAgICAgIEFTU0VSVChtX2VudGFuZ2xlZFBvcnQgIT0gcmVtb3RlKTsKKyAgICAg
ICAgdW5lbnRhbmdsZSgpOwogICAgIH0KLQotICAgIHBvcnQxLT5tX2VudGFuZ2xlZFBvcnQgPSBw
b3J0MjsKLSAgICBwb3J0Mi0+bV9lbnRhbmdsZWRQb3J0ID0gcG9ydDE7CisgICAgbV9lbnRhbmds
ZWRQb3J0ID0gcmVtb3RlOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Ojp1bmVudGFuZ2xlKCkKIHsK
LSAgICBBU1NFUlQodGhpcyA9PSBtX2VudGFuZ2xlZFBvcnQtPm1fZW50YW5nbGVkUG9ydCk7Ci0K
LSAgICBtX2VudGFuZ2xlZFBvcnQtPm1fZW50YW5nbGVkUG9ydCA9IDA7Ci0gICAgbV9lbnRhbmds
ZWRQb3J0ID0gMDsKKyAgICAvLyBVbmVudGFuZ2xlIG91ciBlbmQgYmVmb3JlIHVuZW50YW5nbGlu
ZyB0aGUgb3RoZXIgZW5kLgorICAgIGlmIChtX2VudGFuZ2xlZFBvcnQpIHsKKyAgICAgICAgTWVz
c2FnZVBvcnRQcm94eSogcmVtb3RlID0gbV9lbnRhbmdsZWRQb3J0OworICAgICAgICBtX2VudGFu
Z2xlZFBvcnQgPSAwOworICAgICAgICByZW1vdGUtPnVuZW50YW5nbGUoKTsKKyAgICB9CiB9CiAK
IHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQpJbmRleDogV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCShy
ZXZpc2lvbiA0MjE1MykKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCiAjaW5j
bHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVBvcnRQcm94eS5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CkBAIC00Niw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKIAotICAg
IGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+LCBwdWJs
aWMgRXZlbnRUYXJnZXQgeworICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIE1lc3NhZ2VQ
b3J0UHJveHksIHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlUG9y
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICAgICAgfk1lc3NhZ2VQb3J0KCk7CkBA
IC02MCwxMSArNjEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0
KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKIAorICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbnMg
b2YgTWVzc2FnZVBvcnRQcm94eSBBUElzCisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRhbmdsZShN
ZXNzYWdlUG9ydFByb3h5Kik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1bmVudGFuZ2xlKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHF1ZXVlQ2xv
c2VFdmVudCgpOworCiAgICAgICAgIGJvb2wgcXVldWVJc09wZW4oKSBjb25zdCB7IHJldHVybiBt
X3F1ZXVlSXNPcGVuOyB9CiAKLSAgICAgICAgTWVzc2FnZVBvcnQqIGVudGFuZ2xlZFBvcnQoKSB7
IHJldHVybiBtX2VudGFuZ2xlZFBvcnQ7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgZW50YW5nbGUo
TWVzc2FnZVBvcnQqLCBNZXNzYWdlUG9ydCopOwotICAgICAgICB2b2lkIHVuZW50YW5nbGUoKTsK
KyAgICAgICAgTWVzc2FnZVBvcnRQcm94eSogZW50YW5nbGVkUG9ydCgpIHsgcmV0dXJuIG1fZW50
YW5nbGVkUG9ydDsgfQorICAgICAgICBzdGF0aWMgdm9pZCBlbnRhbmdsZShNZXNzYWdlUG9ydFBy
b3h5KiwgTWVzc2FnZVBvcnRQcm94eSopOwogCiAgICAgICAgIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpOwogICAgICAgICB2b2lkIGF0dGFjaFRvQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CkBAIC03Miw3ICs3OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0
dWFsIE1lc3NhZ2VQb3J0KiB0b01lc3NhZ2VQb3J0KCkgeyByZXR1cm4gdGhpczsgfQogCi0gICAg
ICAgIHZvaWQgcXVldWVDbG9zZUV2ZW50KCk7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
cygpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpOwpAQCAtODMsOCArODgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVy
c01hcDsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1
cm4gbV9ldmVudExpc3RlbmVyczsgfQogCi0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2Fn
ZVBvcnQ+OjpyZWY7Ci0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpkZXJl
ZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxNZXNzYWdlUG9ydFByb3h5Pjo6cmVmOworICAg
ICAgICB1c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0UHJveHk+OjpkZXJlZjsKIAogICAgICAg
ICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpOwogCkBAIC0xMDUsNyArMTEwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CiAKLSAg
ICAgICAgTWVzc2FnZVBvcnQqIG1fZW50YW5nbGVkUG9ydDsKKyAgICAgICAgTWVzc2FnZVBvcnRQ
cm94eSogbV9lbnRhbmdsZWRQb3J0OwogCiAgICAgICAgIC8vIEZJWE1FOiBFdmVudERhdGEgaXMg
bmVjZXNzYXJ5IHRvIHBhc3MgbWVzc2FnZXMgdG8gb3RoZXIgdGhyZWFkcy4gSW4gc2luZ2xlIHRo
cmVhZGVkIGNhc2UsIHdlIGNhbiBqdXN0IHF1ZXVlIGEgY3JlYXRlZCBldmVudC4KICAgICAgICAg
c3RydWN0IEV2ZW50RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50RGF0YT4gewpJbmRleDog
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0UHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0UHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoNCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUNCisgKiBtZXQ6DQorICoNCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dA0KKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisgKiBk
aXN0cmlidXRpb24uDQorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cw0KKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMNCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsDQorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQ0KKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
Lg0KKyAqLw0KKw0KKyNpZm5kZWYgTWVzc2FnZVBvcnRQcm94eV9oDQorI2RlZmluZSBNZXNzYWdl
UG9ydFByb3h5X2gNCisNCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4NCisNCituYW1lc3BhY2UgV2ViQ29yZSB7DQorDQorICAgIGNsYXNz
IE1lc3NhZ2VQb3J0Ow0KKyAgICBjbGFzcyBTdHJpbmc7DQorDQorICAgIGNsYXNzIE1lc3NhZ2VQ
b3J0UHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXNzYWdlUG9ydFByb3h5PiB7DQorICAgIHB1
YmxpYzoNCisgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0UHJveHkoKSB7IH0NCisNCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBlbnRhbmdsZShNZXNzYWdlUG9ydFByb3h5KikgPSAwOw0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIHVuZW50YW5nbGUoKSA9IDA7DQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGVsaXZlck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VQ
b3J0PikgPSAwOw0KKyAgICAgICAgdmlydHVhbCB2b2lkIHF1ZXVlQ2xvc2VFdmVudCgpID0gMDsN
CisgICAgfTsNCisNCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlDQorDQorI2VuZGlmIC8vIE1lc3Nh
Z2VQb3J0UHJveHlfaA0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29352</attachid>
            <date>2009-04-08 18:17:37 -0700</date>
            <delta_ts>2009-04-08 22:45:26 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>25030-4.txt</filename>
            <type>text/plain</type>
            <size>15456</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjMwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDQtMDMgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWZhY3RvciBNZXNzYWdlUG9ydCBjb2RlIHRvIGVuYWJsZSBDaHJvbWUgdG8gdXNlIGEgTWVzc2Fn
ZVBvcnRQcm94eSBvYmplY3QKKyAgICAgICAgaW5zdGVhZCBvZiBhIHJlYWwgTWVzc2FnZVBvcnQg
Zm9yIHRoZSBlbnRhbmdsZWRQb3J0LCBzaW5jZSBpdCBjb3VsZAorICAgICAgICB0aGVvcmV0aWNh
bGx5IGxpdmUgaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLgorCisgICAgICAgIFRoZSBnb2FsIG9mIHRo
aXMgcmVmYWN0b3JpbmcgaXMgdG8gcmVtb3ZlIGFsbCBhc3N1bXB0aW9ucyB0aGF0IHRoZSBvYmpl
Y3QKKyAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBlbnRhbmdsZWQgcG9ydCBpcyBhY3R1YWxseSBv
ZiB0eXBlIE1lc3NhZ2VQb3J0LiBBbGwKKyAgICAgICAgb3BlcmF0aW9ucyB0aGF0IHdlcmUgcHJl
dmlvdXNseSBkaXJlY3RseSBtb2RpZnlpbmcgcHJpdmF0ZSBNZXNzYWdlUG9ydCBtZW1iZXIKKyAg
ICAgICAgdmFyaWFibGVzIGluIHRoZSBlbnRhbmdsZWQgcG9ydCAoaS5lLiBlbnRhbmdsZSgpLCBw
b3N0TWVzc2FnZSgpKSBoYXZlIGJlZW4gY2hhbmdlZAorICAgICAgICB0byBpbnZva2UgZnVuY3Rp
b25zIGluIHRoZSAgTWVzc2FnZVBvcnRQcm94eSBpbnRlcmZhY2UgaW5zdGVhZCB3aGljaCB3aWxs
IGFsbG93CisgICAgICAgIHRoZSBDaHJvbWUgYmluZGluZ3MgdG8gcHJveHkgdGhlc2UgY2FsbHMg
dG8gYW5vdGhlciBwcm9jZXNzLgorCisgICAgICAgIE5vIG5ldyBsYXlvdXQgdGVzdHMsIGFzIHRo
aXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHdpdGggbm8gYnVnIGZpeGVzCisgICAgICAgIG9yIG5l
dyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTAzMAorICAgICAgIAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjptYXJr
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGVsaXZlck1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnN0YXJ0Q29udmVyc2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnVuZW50
YW5nbGUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlZFBvcnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydFBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRQcm94eTo6fk1lc3Nh
Z2VQb3J0UHJveHkpOgorCiAyMDA5LTA0LTA3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZwpJ
bmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiA0MjMwMikKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTYzNiw2ICs2MzYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAg
XAogCVdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggXAorCVdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
UHJveHkuaCBcCiAJV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgXAogCVdlYkNvcmUvZG9tL01v
dXNlRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDIzMDIpCisrKyBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTQxMCw2ICsxMTQxMCwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cTWVzc2FnZVBvcnRQcm94eS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE1vdXNlRXZlbnQuY3Bw
Ig0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0MjMwMikKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MjEs
NiArNjIxLDcgQEAKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsK
IAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0
MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07CiAJCTQxMkE2ODQ3MEY2QjAzREQwMDBFQTY2
RSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMkE2ODQ2MEY2QjAzREQwMDBFQTY2RSAvKiBTY3JpcHRP
YmplY3RRdWFyYW50aW5lLmNwcCAqLzsgfTsKKwkJNDE1RTNFRjYwRjhENjdGRTAwN0VFQjUwIC8q
IE1lc3NhZ2VQb3J0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNUUzRUY1MEY4RDY3RkUwMDdFRUI1MCAvKiBNZXNzYWdlUG9ydFByb3h5Lmgg
Ki87IH07CiAJCTQxNkU3NUJFMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJDMEVE
RjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCAqLzsgfTsKIAkJNDE2RTc1QkYwRURG
OEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbFN0YWNrLmNwcCAqLzsgfTsKIAkJNDE2RTc1Q0IwRURGOTBDNzAwMzYwRTFEIC8qIFNj
cmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovOyB9
OwpAQCAtNTUyNCw2ICs1NTI1LDcgQEAKIAkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTJBNjg0NjBGNkIwM0REMDAwRUE2NkUgLyogU2NyaXB0T2JqZWN0UXVh
cmFudGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRP
YmplY3RRdWFyYW50aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1RTNF
RjUwRjhENjdGRTAwN0VFQjUwIC8qIE1lc3NhZ2VQb3J0UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVBvcnRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbFN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdENhbGxTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5
MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDQzNyw2ICsxNDQzOSw3IEBACiAJCQkJNzU3OTNFODIwRDBDRTBCMzAwN0ZDMEFD
IC8qIE1lc3NhZ2VFdmVudC5pZGwgKi8sCiAJCQkJRTFBREVDQkUwRTc2QUNGMTAwNEExQTVFIC8q
IE1lc3NhZ2VQb3J0LmNwcCAqLywKIAkJCQlFMUFERUNCRDBFNzZBQ0YxMDA0QTFBNUUgLyogTWVz
c2FnZVBvcnQuaCAqLywKKwkJCQk0MTVFM0VGNTBGOEQ2N0ZFMDA3RUVCNTAgLyogTWVzc2FnZVBv
cnRQcm94eS5oICovLAogCQkJCUUxQURFQ0M2MEU3NkFEMUYwMDRBMUE1RSAvKiBNZXNzYWdlUG9y
dC5pZGwgKi8sCiAJCQkJODUwMzFCMkYwQTQ0RUZDNzAwRjk5MkUwIC8qIE1vdXNlRXZlbnQuY3Bw
ICovLAogCQkJCTg1MDMxQjMwMEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZUV2ZW50LmggKi8sCkBA
IC0xNjgwMSw2ICsxNjgwNCw3IEBACiAJCQkJMUM2M0EyNDgwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1
bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RjQ1NDMwRjdDM0I1RjAwRDdDMUZC
IC8qIEpTTGF6eUV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjkyNTQzMEY3
RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTVFM0VGNjBGOEQ2N0ZFMDA3RUVCNTAgLyogTWVzc2FnZVBvcnRQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5j
cHAJKHJldmlzaW9uIDQyMzAyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEpTTWVzc2Fn
ZVBvcnQ6Om1hcmsoKQogICAgIG1hcmtJZk5vdE51bGwobV9pbXBsLT5vbm1lc3NhZ2UoKSk7CiAg
ICAgbWFya0lmTm90TnVsbChtX2ltcGwtPm9uY2xvc2UoKSk7CiAKLSAgICBpZiAoTWVzc2FnZVBv
cnQqIGVudGFuZ2xlZFBvcnQgPSBtX2ltcGwtPmVudGFuZ2xlZFBvcnQoKSkgeworICAgIGlmIChN
ZXNzYWdlUG9ydFByb3h5KiBlbnRhbmdsZWRQb3J0ID0gbV9pbXBsLT5lbnRhbmdsZWRQb3J0KCkp
IHsKICAgICAgICAgRE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBl
cigqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBlbnRhbmdsZWRQb3J0KTsKICAgICAg
ICAgaWYgKHdyYXBwZXIgJiYgIXdyYXBwZXItPm1hcmtlZCgpKQogICAgICAgICAgICAgd3JhcHBl
ci0+bWFyaygpOwpJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkocmV2aXNpb24gNDIzMDIpCisrKyBXZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBA
QCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBNZXNzYWdlUG9ydDo6Y2xvCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcmVtb3RlUG9ydCA9IG1fZW50
YW5nbGVkUG9ydDsKKyAgICBSZWZQdHI8TWVzc2FnZVBvcnRQcm94eT4gcmVtb3RlUG9ydCA9IG1f
ZW50YW5nbGVkUG9ydDsKICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG5ld1BvcnQgPSBNZXNzYWdl
UG9ydDo6Y3JlYXRlKDApOwogCiAgICAgLy8gTW92ZSBhbGwgdGhlIGV2ZW50cyBpbiB0aGUgcG9y
dCBtZXNzYWdlIHF1ZXVlIG9mIG9yaWdpbmFsIHBvcnQgdG8gdGhlIHBvcnQgbWVzc2FnZSBxdWV1
ZSBvZiBuZXcgcG9ydCwgaWYgYW55LCBsZWF2aW5nIHRoZSBuZXcgcG9ydCdzIHBvcnQgbWVzc2Fn
ZSBxdWV1ZSBpbiBpdHMgaW5pdGlhbCBjbG9zZWQgc3RhdGUuCkBAIC0xNDMsOSArMTQzLDE0IEBA
IHZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2VudGFuZ2xlZFBvcnQtPm1fbWVzc2FnZVF1ZXVlLmFwcGVu
ZChFdmVudERhdGE6OmNyZWF0ZShtZXNzYWdlLCBuZXdNZXNzYWdlUG9ydCkpOwotICAgIGlmICht
X2VudGFuZ2xlZFBvcnQtPm1fcXVldWVJc09wZW4gJiYgbV9lbnRhbmdsZWRQb3J0LT5tX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIG1fZW50YW5nbGVkUG9ydC0+bV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24oKTsKKyAgICBtX2Vu
dGFuZ2xlZFBvcnQtPmRlbGl2ZXJNZXNzYWdlKG1lc3NhZ2UsIG5ld01lc3NhZ2VQb3J0KTsKK30K
Kwordm9pZCBNZXNzYWdlUG9ydDo6ZGVsaXZlck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBkYXRhUG9ydCkKK3sKKyAgICBtX21lc3NhZ2VRdWV1
ZS5hcHBlbmQoRXZlbnREYXRhOjpjcmVhdGUobWVzc2FnZSwgZGF0YVBvcnQpKTsKKyAgICBpZiAo
bV9xdWV1ZUlzT3BlbiAmJiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCk7CiB9
CiAKIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IE1lc3NhZ2VQb3J0OjpzdGFydENvbnZlcnNhdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCkBAIC0xNTcsOSArMTYyLDcgQEAgUGFzc1JlZlB0cjxNZXNzYWdlUG9y
dD4gTWVzc2FnZVBvcnQ6OnN0YQogCiAgICAgZW50YW5nbGUocG9ydDEuZ2V0KCksIHBvcnQyLmdl
dCgpKTsKIAotICAgIG1fZW50YW5nbGVkUG9ydC0+bV9tZXNzYWdlUXVldWUuYXBwZW5kKEV2ZW50
RGF0YTo6Y3JlYXRlKG1lc3NhZ2UsIHBvcnQyKSk7Ci0gICAgaWYgKG1fZW50YW5nbGVkUG9ydC0+
bV9xdWV1ZUlzT3BlbiAmJiBtX2VudGFuZ2xlZFBvcnQtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKLSAgICAgICAgbV9lbnRhbmdsZWRQb3J0LT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBy
b2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2VzU29vbigpOworICAgIG1fZW50YW5nbGVkUG9ydC0+ZGVs
aXZlck1lc3NhZ2UobWVzc2FnZSwgcG9ydDIpOwogICAgIHJldHVybiBwb3J0MTsKIH0KIApAQCAt
MTc3LDM1ICsxODAsMzcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2UoKQogICAgIGlmICghbV9l
bnRhbmdsZWRQb3J0KQogICAgICAgICByZXR1cm47CiAKLSAgICBNZXNzYWdlUG9ydCogb3RoZXJQ
b3J0ID0gbV9lbnRhbmdsZWRQb3J0OworICAgIE1lc3NhZ2VQb3J0UHJveHkqIG90aGVyUG9ydCA9
IG1fZW50YW5nbGVkUG9ydDsKICAgICB1bmVudGFuZ2xlKCk7CiAKICAgICBxdWV1ZUNsb3NlRXZl
bnQoKTsKICAgICBvdGhlclBvcnQtPnF1ZXVlQ2xvc2VFdmVudCgpOwogfQogCi12b2lkIE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZShNZXNzYWdlUG9ydCogcG9ydDEsIE1lc3NhZ2VQb3J0KiBwb3J0MikK
K3ZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKE1lc3NhZ2VQb3J0UHJveHkqIHBvcnQxLCBNZXNz
YWdlUG9ydFByb3h5KiBwb3J0MikKIHsKLSAgICBpZiAocG9ydDEtPm1fZW50YW5nbGVkUG9ydCkg
ewotICAgICAgICBBU1NFUlQocG9ydDEtPm1fZW50YW5nbGVkUG9ydCAhPSBwb3J0Mik7Ci0gICAg
ICAgIHBvcnQxLT51bmVudGFuZ2xlKCk7Ci0gICAgfQorICAgIHBvcnQxLT5lbnRhbmdsZShwb3J0
Mik7CisgICAgcG9ydDItPmVudGFuZ2xlKHBvcnQxKTsKK30KIAotICAgIGlmIChwb3J0Mi0+bV9l
bnRhbmdsZWRQb3J0KSB7Ci0gICAgICAgIEFTU0VSVChwb3J0Mi0+bV9lbnRhbmdsZWRQb3J0ICE9
IHBvcnQxKTsKLSAgICAgICAgcG9ydDItPnVuZW50YW5nbGUoKTsKK3ZvaWQgTWVzc2FnZVBvcnQ6
OmVudGFuZ2xlKE1lc3NhZ2VQb3J0UHJveHkqIHJlbW90ZSkKK3sKKyAgICAvLyBVbmVudGFuZ2xl
IGZyb20gb3VyIGN1cnJlbnQgcG9ydCBmaXJzdC4KKyAgICBpZiAobV9lbnRhbmdsZWRQb3J0KSB7
CisgICAgICAgIEFTU0VSVChtX2VudGFuZ2xlZFBvcnQgIT0gcmVtb3RlKTsKKyAgICAgICAgdW5l
bnRhbmdsZSgpOwogICAgIH0KLQotICAgIHBvcnQxLT5tX2VudGFuZ2xlZFBvcnQgPSBwb3J0MjsK
LSAgICBwb3J0Mi0+bV9lbnRhbmdsZWRQb3J0ID0gcG9ydDE7CisgICAgbV9lbnRhbmdsZWRQb3J0
ID0gcmVtb3RlOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Ojp1bmVudGFuZ2xlKCkKIHsKLSAgICBB
U1NFUlQodGhpcyA9PSBtX2VudGFuZ2xlZFBvcnQtPm1fZW50YW5nbGVkUG9ydCk7Ci0KLSAgICBt
X2VudGFuZ2xlZFBvcnQtPm1fZW50YW5nbGVkUG9ydCA9IDA7Ci0gICAgbV9lbnRhbmdsZWRQb3J0
ID0gMDsKKyAgICAvLyBVbmVudGFuZ2xlIG91ciBlbmQgYmVmb3JlIHVuZW50YW5nbGluZyB0aGUg
b3RoZXIgZW5kLgorICAgIGlmIChtX2VudGFuZ2xlZFBvcnQpIHsKKyAgICAgICAgTWVzc2FnZVBv
cnRQcm94eSogcmVtb3RlID0gbV9lbnRhbmdsZWRQb3J0OworICAgICAgICBtX2VudGFuZ2xlZFBv
cnQgPSAwOworICAgICAgICByZW1vdGUtPnVuZW50YW5nbGUoKTsKKyAgICB9CiB9CiAKIHZvaWQg
TWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQpJbmRleDogV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCShyZXZpc2lv
biA0MjMwMikKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAi
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVz
c2FnZVBvcnRQcm94eS5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTWVzc2FnZVF1ZXVlLmg+CkBAIC00Niw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKIAotICAgIGNsYXNz
IE1lc3NhZ2VQb3J0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+LCBwdWJsaWMgRXZl
bnRUYXJnZXQgeworICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIE1lc3NhZ2VQb3J0UHJv
eHksIHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlUG9ydChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICAgICAgfk1lc3NhZ2VQb3J0KCk7CkBAIC02MCwx
MSArNjEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0KCk7CiAg
ICAgICAgIHZvaWQgY2xvc2UoKTsKIAorICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgTWVz
c2FnZVBvcnRQcm94eSBBUElzCisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRhbmdsZShNZXNzYWdl
UG9ydFByb3h5Kik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1bmVudGFuZ2xlKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NS
ZWZQdHI8TWVzc2FnZVBvcnQ+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHF1ZXVlQ2xvc2VFdmVu
dCgpOworCiAgICAgICAgIGJvb2wgcXVldWVJc09wZW4oKSBjb25zdCB7IHJldHVybiBtX3F1ZXVl
SXNPcGVuOyB9CiAKLSAgICAgICAgTWVzc2FnZVBvcnQqIGVudGFuZ2xlZFBvcnQoKSB7IHJldHVy
biBtX2VudGFuZ2xlZFBvcnQ7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgZW50YW5nbGUoTWVzc2Fn
ZVBvcnQqLCBNZXNzYWdlUG9ydCopOwotICAgICAgICB2b2lkIHVuZW50YW5nbGUoKTsKKyAgICAg
ICAgTWVzc2FnZVBvcnRQcm94eSogZW50YW5nbGVkUG9ydCgpIHsgcmV0dXJuIG1fZW50YW5nbGVk
UG9ydDsgfQorICAgICAgICBzdGF0aWMgdm9pZCBlbnRhbmdsZShNZXNzYWdlUG9ydFByb3h5Kiwg
TWVzc2FnZVBvcnRQcm94eSopOwogCiAgICAgICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwog
ICAgICAgICB2b2lkIGF0dGFjaFRvQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkBA
IC03Miw3ICs3OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIE1l
c3NhZ2VQb3J0KiB0b01lc3NhZ2VQb3J0KCkgeyByZXR1cm4gdGhpczsgfQogCi0gICAgICAgIHZv
aWQgcXVldWVDbG9zZUV2ZW50KCk7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUp
OwpAQCAtODMsOCArODgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsK
ICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9l
dmVudExpc3RlbmVyczsgfQogCi0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+
OjpyZWY7Ci0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpkZXJlZjsKKyAg
ICAgICAgdXNpbmcgUmVmQ291bnRlZDxNZXNzYWdlUG9ydFByb3h5Pjo6cmVmOworICAgICAgICB1
c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0UHJveHk+OjpkZXJlZjsKIAogICAgICAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpOwogCkBAIC0xMDUsNyArMTEwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CiAKLSAgICAgICAg
TWVzc2FnZVBvcnQqIG1fZW50YW5nbGVkUG9ydDsKKyAgICAgICAgTWVzc2FnZVBvcnRQcm94eSog
bV9lbnRhbmdsZWRQb3J0OwogCiAgICAgICAgIC8vIEZJWE1FOiBFdmVudERhdGEgaXMgbmVjZXNz
YXJ5IHRvIHBhc3MgbWVzc2FnZXMgdG8gb3RoZXIgdGhyZWFkcy4gSW4gc2luZ2xlIHRocmVhZGVk
IGNhc2UsIHdlIGNhbiBqdXN0IHF1ZXVlIGEgY3JlYXRlZCBldmVudC4KICAgICAgICAgc3RydWN0
IEV2ZW50RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50RGF0YT4gewpJbmRleDogV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0UHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0UHJv
eHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoNCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUNCisgKiBtZXQ6DQorICoNCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4NCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisgKiBkaXN0cmli
dXRpb24uDQorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cw0KKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMN
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsDQorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQ0KKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQNCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAq
Lw0KKw0KKyNpZm5kZWYgTWVzc2FnZVBvcnRQcm94eV9oDQorI2RlZmluZSBNZXNzYWdlUG9ydFBy
b3h5X2gNCisNCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4NCisNCituYW1lc3BhY2UgV2ViQ29yZSB7DQorDQorICAgIGNsYXNzIE1lc3Nh
Z2VQb3J0Ow0KKyAgICBjbGFzcyBTdHJpbmc7DQorDQorICAgIGNsYXNzIE1lc3NhZ2VQb3J0UHJv
eHkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXNzYWdlUG9ydFByb3h5PiB7DQorICAgIHB1YmxpYzoN
CisgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0UHJveHkoKSB7IH0NCisNCisgICAgICAgIHZp
cnR1YWwgdm9pZCBlbnRhbmdsZShNZXNzYWdlUG9ydFByb3h5KikgPSAwOw0KKyAgICAgICAgdmly
dHVhbCB2b2lkIHVuZW50YW5nbGUoKSA9IDA7DQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVsaXZl
ck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0Pikg
PSAwOw0KKyAgICAgICAgdmlydHVhbCB2b2lkIHF1ZXVlQ2xvc2VFdmVudCgpID0gMDsNCisgICAg
fTsNCisNCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlDQorDQorI2VuZGlmIC8vIE1lc3NhZ2VQb3J0
UHJveHlfaA0K
</data>
<flag name="review"
          id="14589"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>