<?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>59946</bug_id>
          
          <creation_ts>2011-05-02 10:21:56 -0700</creation_ts>
          <short_desc>We need a utility class that read lines out of SharedBuffers</short_desc>
          <delta_ts>2011-05-05 10:42:01 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>7168</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jay Civelli">jcivelli</reporter>
          <assigned_to name="Jay Civelli">jcivelli</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dslomov</cc>
    
    <cc>levin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>396443</commentid>
    <comment_count>0</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-02 10:21:56 -0700</bug_when>
    <thetext>A utility class that provides a way to read a SharedBuffer line by line (CR-LF terminated) is needed for parsing of MIME headers, which is required for MHTML support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396453</commentid>
    <comment_count>1</comment_count>
      <attachid>91938</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-02 10:34:36 -0700</bug_when>
    <thetext>Created attachment 91938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396541</commentid>
    <comment_count>2</comment_count>
      <attachid>91938</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-02 12:16:08 -0700</bug_when>
    <thetext>Comment on attachment 91938
Patch

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

Below are a ton of nit-picks.  I&apos;m not super excited about the recursive approach to this problem.  Seems like we could get in trouble with a long line broken into many segments.  It seems like what you really want here is a state machine that gets fed a character at a time and keeps track of the CR/LF state but is oblivious to the segmentation of the shared buffer.  Driving that, you want a loop that&apos;s scanning through a buffer and driving the state machine.  Driving that, you want a loop that&apos;s scanning through the buffer segments.  That approach removes the recursion and most of the special cases for CR/LFs splitting over segment boundaries.

We need to do something similar for the InputStreamPreprocessor in the HTML parser:

http://trac.webkit.org/browser/trunk/Source/WebCore/html/parser/HTMLTokenizer.h#L175

but I suspect it might be difficult to share code with the HTML parser because they&apos;re at different layers and the HTML parser as some specialized needs.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:-22764
&gt; -			developmentRegion = English;

I think this means you should to upgrade your version of Xcode (although just within the 3.x.x series).

&gt; Source/WebCore/platform/SharedBufferLineReader.cpp:41
&gt; +    , m_bufferPos(0)

m_bufferPos =&gt; m_bufferPosition

&gt; Source/WebCore/platform/SharedBufferLineReader.cpp:57
&gt; +void SharedBufferLineReader::readNextLine(StringBuilder* line)

WebKit uses reference parameters as out-params, not pointers.

&gt; Source/WebCore/platform/SharedBufferLineReader.cpp:78
&gt; +    int eolIndex = getEOLIndex();
&gt; +    if (eolIndex != -1) {

Generally WebKit founds upon in-band signaling.

&gt; Source/WebCore/platform/SharedBufferLineReader.cpp:87
&gt; +    unsigned lenToCopy = m_segmentLength - m_segmentIndex - (m_previousSegmentEndedWithCR ? 1 : 0);

lenToCopy =&gt; lengthToCopy.

&gt; Source/WebCore/platform/SharedBufferLineReader.h:34
&gt; +#include &quot;PlatformString.h&quot;

#include &lt;wtf/text/WTFString.h&gt;

&gt; Source/WebCore/platform/SharedBufferLineReader.h:45
&gt; +// Utility class that allows to read CR-LF terminated lines from a SharedBuffer.
&gt; +class SharedBufferLineReader {

I&apos;d remove the comment and put the CR-LF notion in the name of the class somehow.

&gt; Source/WebCore/platform/SharedBufferLineReader.h:49
&gt; +    bool isEOF() const { return m_eof; }

I&apos;m not sure you need this function.  You can tell if you&apos;ve reached EOF because you&apos;ll get a null string (as distinguished from an empty string).

&gt; Source/WebCore/platform/SharedBufferLineReader.h:52
&gt; +    // Returns the next line read from the buffer.
&gt; +    // Returns an empty string once the EOF has been reached

I&apos;d remove this comment.  Also, you should return a null string at EOF rather than an empty string.

&gt; Source/WebCore/platform/SharedBufferLineReader.h:56
&gt; +    void readNextLine(WTF::StringBuilder* line);

WTF:: isn&apos;t needed here.

&gt; Source/WebCore/platform/SharedBufferLineReader.h:58
&gt; +    // Reads a new segment. Returns false if the end of the buffer was reached.

Probably should remove this comment.

&gt; Source/WebCore/platform/SharedBufferLineReader.h:62
&gt; +    // Returns the index of the next CR-LF, or -1 if the end of the segment was reached without a CR-LF.
&gt; +    int getEOLIndex();

Please don&apos;t start function names with &quot;get&quot;.  As mentioned earlier, we prefer not to have in-band signaling, but we do use it for find-type operations.  Consider:

size_t findEndOfLine()

where you return notFound when there is not end of line.  Notice that we should use size_t rather than int when talking about offsets in memory.

&gt; Source/WebCore/platform/SharedBufferLineReader.h:65
&gt; +    unsigned m_bufferPos;

Probably size_t

&gt; Source/WebCore/platform/SharedBufferLineReader.h:69
&gt; +    unsigned m_segmentLength;
&gt; +    unsigned m_segmentIndex;

Also probably size_t

&gt; Source/WebCore/platform/SharedBufferLineReader.h:70
&gt; +    bool m_eof;

m_reachedEndOfFile ?

&gt; Source/WebCore/platform/SharedBufferLineReader.h:76
&gt; +#endif // SharedBufferLineReader_h

No need for this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397370</commentid>
    <comment_count>3</comment_count>
      <attachid>92126</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-03 14:04:20 -0700</bug_when>
    <thetext>Created attachment 92126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397378</commentid>
    <comment_count>4</comment_count>
      <attachid>92128</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-03 14:13:58 -0700</bug_when>
    <thetext>Created attachment 92128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397379</commentid>
    <comment_count>5</comment_count>
      <attachid>91938</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-03 14:14:44 -0700</bug_when>
    <thetext>Comment on attachment 91938
Patch

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

&gt;&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:-22764
&gt;&gt; -			developmentRegion = English;
&gt; 
&gt; I think this means you should to upgrade your version of Xcode (although just within the 3.x.x series).

Ah, done.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.cpp:41
&gt;&gt; +    , m_bufferPos(0)
&gt; 
&gt; m_bufferPos =&gt; m_bufferPosition

Done.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.cpp:57
&gt;&gt; +void SharedBufferLineReader::readNextLine(StringBuilder* line)
&gt; 
&gt; WebKit uses reference parameters as out-params, not pointers.

Method is now gone (but I&apos;ll try to remember it for next patch :-)

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:34
&gt;&gt; +#include &quot;PlatformString.h&quot;
&gt; 
&gt; #include &lt;wtf/text/WTFString.h&gt;

Fixed.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:45
&gt;&gt; +class SharedBufferLineReader {
&gt; 
&gt; I&apos;d remove the comment and put the CR-LF notion in the name of the class somehow.

OK, class renamed.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:49
&gt;&gt; +    bool isEOF() const { return m_eof; }
&gt; 
&gt; I&apos;m not sure you need this function.  You can tell if you&apos;ve reached EOF because you&apos;ll get a null string (as distinguished from an empty string).

Good idea.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:52
&gt;&gt; +    // Returns an empty string once the EOF has been reached
&gt; 
&gt; I&apos;d remove this comment.  Also, you should return a null string at EOF rather than an empty string.

Done.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:56
&gt;&gt; +    void readNextLine(WTF::StringBuilder* line);
&gt; 
&gt; WTF:: isn&apos;t needed here.

Method is gone.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:58
&gt;&gt; +    // Reads a new segment. Returns false if the end of the buffer was reached.
&gt; 
&gt; Probably should remove this comment.

OK.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:62
&gt;&gt; +    int getEOLIndex();
&gt; 
&gt; Please don&apos;t start function names with &quot;get&quot;.  As mentioned earlier, we prefer not to have in-band signaling, but we do use it for find-type operations.  Consider:
&gt; 
&gt; size_t findEndOfLine()
&gt; 
&gt; where you return notFound when there is not end of line.  Notice that we should use size_t rather than int when talking about offsets in memory.

Method is gone.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:65
&gt;&gt; +    unsigned m_bufferPos;
&gt; 
&gt; Probably size_t

Switched to size_t.
I was always unclear about that since in many places I found unsigned been used.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:70
&gt;&gt; +    bool m_eof;
&gt; 
&gt; m_reachedEndOfFile ?

Renamed.

&gt;&gt; Source/WebCore/platform/SharedBufferLineReader.h:76
&gt;&gt; +#endif // SharedBufferLineReader_h
&gt; 
&gt; No need for this comment.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397384</commentid>
    <comment_count>6</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-03 14:18:05 -0700</bug_when>
    <thetext>Adam,
I removed the recursion in the new patch as you suggested, it makes the patch simpler.
(I hacked some unit-tests locally to test this patch. I&apos;ll keep them around in case we get unit-tests in WebKit in the future).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398397</commentid>
    <comment_count>7</comment_count>
      <attachid>92128</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-04 16:45:14 -0700</bug_when>
    <thetext>Comment on attachment 92128
Patch

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

Looks great!  Thanks.

&gt; Source/WebCore/platform/SharedBufferCRLFLineReader.cpp:67
&gt; +                stringBuilder.append(currentCharacter);

I presume you looked also, but StringBuilder seems to handle character-at-a-time building fine.

&gt; Source/WebCore/platform/SharedBufferCRLFLineReader.cpp:87
&gt; +    return String();

This line of code is unreachable, right?  Can we remove it without the compiler getting sad?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398577</commentid>
    <comment_count>8</comment_count>
      <attachid>92128</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-04 23:41:53 -0700</bug_when>
    <thetext>Comment on attachment 92128
Patch

Clearing flags on attachment: 92128

Committed r85837: &lt;http://trac.webkit.org/changeset/85837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398578</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-04 23:41:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398792</commentid>
    <comment_count>10</comment_count>
      <attachid>92430</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-05 09:57:35 -0700</bug_when>
    <thetext>Created attachment 92430
Code used for unit-testing that class during development

Attaching the code I used to unit-test the class while I was writing the code.
COuld be useful if/when WebKit gets unit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398811</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-05 10:30:23 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=92430) [details]
&gt; Code used for unit-testing that class during development
&gt; 
&gt; Attaching the code I used to unit-test the class while I was writing the code.
&gt; COuld be useful if/when WebKit gets unit-tests.

TestWebKitAPI exists now.  I think there was a discussion about using gtest recently on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398818</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-05 10:38:57 -0700</bug_when>
    <thetext>&gt; TestWebKitAPI exists now.  I think there was a discussion about using gtest recently on webkit-dev.

Can either of these test code in WebCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398825</commentid>
    <comment_count>13</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-05 10:42:01 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; TestWebKitAPI exists now.  I think there was a discussion about using gtest recently on webkit-dev.
&gt; 
&gt; Can either of these test code in WebCore?

dslomov is converting TestWebKitAPI to be gtest based, so I would imagine they will have similar restrictions. 

Jay, I would recommend that you trying using TestWebKitAPI right now and see if it will work for you (or make it work for you).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91938</attachid>
            <date>2011-05-02 10:34:36 -0700</date>
            <delta_ts>2011-05-03 14:14:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59946-20110502103434.patch</filename>
            <type>text/plain</type>
            <size>16796</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQy
ZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uODBhMThiOTRmOGIxYmRmNWE4ZjRl
YWZlNTRhODA0YzI5NjdhN2NkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwNTgsNiArMTA1
OCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAogICAgIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJMaW5lUmVhZGVyLmNwcAog
ICAgIHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRmb3JtL1RocmVhZEdsb2Jh
bERhdGEuY3BwCiAgICAgcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRh
OTc1YzBlNTljMWE1YzA5OGViZGQzNDkzYmU3NDk2ZGMwMDk3MGIuLjBkMWY2Y2RmN2IzY2RmZTc4
OGExOWM3ZWJmODU3YTRjOGU5ZDUwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
MS0wNS0wMiAgSmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgdXRpbGl0eSBj
bGFzcyB0byByZWFkIGEgU2hhcmVkQnVmZmVyIGxpbmUgYnkgbGluZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5OTQ2CisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyTGluZVJlYWRlci5jcHA6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuaDogQWRk
ZWQuCisKIDIwMTEtMDUtMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDE3ZjJhNWY4YTM4OTg4MGM3ZGY1ZjFkMjllOTYyYmM4MDIyYWE0
MDQuLjQxMTBmZjA3M2MxMTk2YmI1MTBjMGIyODkyODI3ZGQ5ZjZmYmRkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU5Niw2ICsyNTk2LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5wdXQuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckxpbmVSZWFkZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXJMaW5lUmVhZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdW5kLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
NTkwZWJjMjU5MWU5MzdjYTUwZTZkMjhiZjRmOTU4ZmZiNzk2MGUwMi4uMGM4MDYwNmVjYmE5YWRi
NjViNTVjYzA2YzczODUzODRlZDlhZDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNzgyLDYgKzc4
Miw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXJMaW5l
UmVhZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1N5c3RlbVRpbWUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vVGhlbWUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vVGhlbWVUeXBl
cy5oJywKQEAgLTM1NzQsNiArMzU3NSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2VjdXJl
VGV4dElucHV0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2VjdXJlVGV4dElucHV0Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9TaGFyZWRUaW1lci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9Tb3VuZC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggNjE1YzNmZWUzYjA3YjU4ZjlmMTZiMzc5OTk3ZWEwYzUzYWZmYTc2NS4uYWVkNjhlOWQzZjVi
MzFiZTY1MmVmZWJkMTlhZDUyMjJmN2UwNTliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwNDMsNiAr
MTA0Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAgXAogICAgIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAgXAorICAgIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJv
dW5kYXJpZXMuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5jcHAgXApAQCAtMjAy
NSw2ICsyMDI2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsVmlldy5oIFwK
ICAgICBwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCBcCiAgICAgcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmggXAorICAgIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuaCBcCiAgICAgcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggXAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmggXAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGNjMzQ5MzJhYTVm
YjllNTFiMThhZjE2OGNjZjg3ODZjNjFhMDMwMTEuLjc2NzU5MWNiMTU1ZTNmYjgwMzY3NGI2ODgy
OWMyYTU0MmM1NTYyODIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0yNTkyMiw2ICsyNTkyMiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxTaGFyZWRCdWZmZXJMaW5lUmVh
ZGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cU2hhcmVkQnVmZmVyTGluZVJlYWRlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxTaGFyZWRUaW1lci5oIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjNDk2MDRmMjk4ZjRlMmM1MjEzNzk4YTE3MTc2MzdmOGY4
YzM1ZDBiLi5mN2U3MmVmYzdiZjY0NDc2NGI4ZDY0ZTJjZDc5ZWE0Mzc3YTc3NTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
MTMsNiArODEzLDggQEAKIAkJMzdDMjM4MjIxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5jcHAgKi87IH07CiAJCTM3QzI4QTY4MTBGNjU5Q0MwMDhDNzgxMyAvKiBU
eXBlc2V0dGluZ0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzN0MyOEE2NzEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3
QzYxRjAxMTIwOTVDODcwMDdBM0M2NyAvKiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M2MUYwMDEyMDk1
Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovOyB9OworCQkzN0RG
QUYyQjEzNkYxREZEMDBGMDlDNjggLyogU2hhcmVkQnVmZmVyTGluZVJlYWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0RGQUYyOTEzNkYxREZE
MDBGMDlDNjggLyogU2hhcmVkQnVmZmVyTGluZVJlYWRlci5jcHAgKi87IH07CisJCTM3REZBRjJD
MTM2RjFERkQwMEYwOUM2OCAvKiBTaGFyZWRCdWZmZXJMaW5lUmVhZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0RGQUYyQTEzNkYxREZEMDBGMDlD
NjggLyogU2hhcmVkQnVmZmVyTGluZVJlYWRlci5oICovOyB9OwogCQkzN0UzNTI0QjEyNDUwQzUy
MDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUuY3Bw
ICovOyB9OwogCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzNTI0QzEyNDUwQzY2
MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxS
ZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MjQ1LDYgKzcyNDcs
OCBAQAogCQkzN0MyMzgyMDEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzN0MyOEE2NzEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlc2V0dGluZ0ZlYXR1cmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QzYxRjAwMTIwOTVDODcwMDdBM0M2NyAvKiBBdG9t
aWNTdHJpbmdLZXllZE1SVUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzdERkFGMjkxMzZGMURGRDAwRjA5QzY4IC8qIFNoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyTGluZVJl
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3REZBRjJBMTM2RjFERkQw
MEYwOUM2OCAvKiBTaGFyZWRCdWZmZXJMaW5lUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzdFMzUyNEExMjQ1MEM1MjAwQkFGNUQ5IC8qIElucHV0VHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnB1dFR5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UzNTI0QzEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElucHV0VHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0Y4MThGQjBENjU3NjA2MDA1RTFGMDUgLyogV2Vi
Q29yZVVSTFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
cmVVUkxSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1MDAsNiAr
MTg1MDQsOCBAQAogCQkJCTMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5w
dXQuaCAqLywKIAkJCQkxQTRBOTU0QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNw
cCAqLywKIAkJCQkxQTRBOTU0QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi8s
CisJCQkJMzdERkFGMjkxMzZGMURGRDAwRjA5QzY4IC8qIFNoYXJlZEJ1ZmZlckxpbmVSZWFkZXIu
Y3BwICovLAorCQkJCTM3REZBRjJBMTM2RjFERkQwMEYwOUM2OCAvKiBTaGFyZWRCdWZmZXJMaW5l
UmVhZGVyLmggKi8sCiAJCQkJOTMzMDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVy
LmggKi8sCiAJCQkJNEIzMDQzQzYwQUUwMzcwMzAwQTgyNjQ3IC8qIFNvdW5kLmggKi8sCiAJCQkJ
RjU4Nzg2NjIwMkRFM0IxMTAxRUE0MTIyIC8qIFNTTEtleUdlbmVyYXRvci5oICovLApAQCAtMjI3
MDIsNiArMjI3MDgsNyBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJv
Y2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyog
WFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBD
MTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0RGQUYyQzEzNkYxREZE
MDBGMDlDNjggLyogU2hhcmVkQnVmZmVyTGluZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
Mjc2MSw3ICsyMjc2OCw2IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZl
cnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJ
CWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVu
Z2xpc2gsCkBAIC0yNTM2Miw2ICsyNTM2OCw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5
QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1
MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkzN0RGQUYyQjEzNkYxREZEMDBGMDlDNjggLyogU2hhcmVkQnVmZmVyTGluZVJl
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyTGluZVJlYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRiZTNmMGE1NDdjZDc4ZTg5
OTRmM2JmNTA0NDJiNzJlYjdjODY3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckxpbmVSZWFkZXIuaCIKKwor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRCdWZmZXJMaW5lUmVhZGVyOjpT
aGFyZWRCdWZmZXJMaW5lUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorICAgIDogbV9idWZm
ZXIoYnVmZmVyKQorICAgICwgbV9idWZmZXJQb3MoMCkKKyAgICAsIG1fc2VnbWVudCgwKQorICAg
ICwgbV9zZWdtZW50TGVuZ3RoKDApCisgICAgLCBtX3NlZ21lbnRJbmRleCgwKQorICAgICwgbV9l
b2YoZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzU2VnbWVudEVuZGVkV2l0aENSKGZhbHNlKQorewor
fQorCitTdHJpbmcgU2hhcmVkQnVmZmVyTGluZVJlYWRlcjo6bmV4dExpbmUoKQoreworICAgIFN0
cmluZ0J1aWxkZXIgbGluZTsKKyAgICByZWFkTmV4dExpbmUoJmxpbmUpOworICAgIHJldHVybiBs
aW5lLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyTGluZVJlYWRlcjo6cmVhZE5l
eHRMaW5lKFN0cmluZ0J1aWxkZXIqIGxpbmUpCit7CisgICAgaWYgKG1fc2VnbWVudEluZGV4ID49
IG1fc2VnbWVudExlbmd0aCkgeworICAgICAgICBpZiAoIXJlYWROZXh0U2VnbWVudCgpKSB7Cisg
ICAgICAgICAgICBtX2VvZiA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fcHJldmlvdXNTZWdtZW50RW5kZWRXaXRoQ1IpIHsKKyAgICAgICAgICAg
IC8vIFdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciBhIENSLUxGIHNlcXVlbmNlIHdhcyBub3Qgc3Bs
aXQgYWNjcm9zcyB0aGUgMiBzZWdtZW50cy4KKyAgICAgICAgICAgIG1fcHJldmlvdXNTZWdtZW50
RW5kZWRXaXRoQ1IgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtX3NlZ21lbnRbMF0gPT0gJ1xu
JykgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgaW5kZWVkIGEgQ1ItTEYuCisgICAgICAg
ICAgICAgICAgbV9zZWdtZW50SW5kZXggPSAxOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIE5vdCBhIENSLUxGLCBhZGQgdGhlIENSIGFzLWlz
LgorICAgICAgICAgICAgbGluZS0+YXBwZW5kKCdccicpOworICAgICAgICB9CisgICAgfQorCisg
ICAgaW50IGVvbEluZGV4ID0gZ2V0RU9MSW5kZXgoKTsKKyAgICBpZiAoZW9sSW5kZXggIT0gLTEp
IHsKKyAgICAgICAgbGluZS0+YXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVudEluZGV4LCBlb2xJ
bmRleCAtIG1fc2VnbWVudEluZGV4KTsKKyAgICAgICAgbV9zZWdtZW50SW5kZXggPSBlb2xJbmRl
eCArIDI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGUgbGluZSBkaWQgbm90
IGVuZCBvbiB0aGF0IHNlZ21lbnQuIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHNlZ21lbnQgdG8gdGhl
IGxpbmUgYnVmZmVyLiBJZiB0aGUgc2VnbWVudAorICAgIC8vIGVuZHMgd2l0aCBhIENSLCBkb24n
dCBpbmNsdWRlIGl0LCBpdCBtaWdodCBiZSBwYXJ0IG9mIGEgQ1ItTEYgc2VxdWVuY2UgdGhhdCBj
b3VsZCBoYXZlIGJlZW4gc3BsaXQgb3ZlciAyIHNlZ21lbnRzLgorICAgIG1fcHJldmlvdXNTZWdt
ZW50RW5kZWRXaXRoQ1IgPSAobV9zZWdtZW50W21fc2VnbWVudExlbmd0aCAtIDFdID09ICdccicp
OworICAgIHVuc2lnbmVkIGxlblRvQ29weSA9IG1fc2VnbWVudExlbmd0aCAtIG1fc2VnbWVudElu
ZGV4IC0gKG1fcHJldmlvdXNTZWdtZW50RW5kZWRXaXRoQ1IgPyAxIDogMCk7CisgICAgbGluZS0+
YXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVudEluZGV4LCBsZW5Ub0NvcHkpOworICAgIG1fc2Vn
bWVudEluZGV4ID0gbV9zZWdtZW50TGVuZ3RoOyAvLyBXZSdsbCByZWFkIHRoZSBuZXh0IHNlZ21l
bnQgb24gdGhlIG5leHQgY2FsbC4KKyAgICByZWFkTmV4dExpbmUobGluZSk7Cit9CisKK2Jvb2wg
U2hhcmVkQnVmZmVyTGluZVJlYWRlcjo6cmVhZE5leHRTZWdtZW50KCkKK3sKKyAgICBtX2J1ZmZl
clBvcyArPSBtX3NlZ21lbnRMZW5ndGg7CisgICAgbV9zZWdtZW50TGVuZ3RoID0gbV9idWZmZXIt
PmdldFNvbWVEYXRhKG1fc2VnbWVudCwgbV9idWZmZXJQb3MpOworICAgIGlmICghbV9zZWdtZW50
TGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVuZCBvZiB0aGUgU2hhcmVkQnVmZmVy
LgorICAgIG1fc2VnbWVudEluZGV4ID0gMDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW50IFNo
YXJlZEJ1ZmZlckxpbmVSZWFkZXI6OmdldEVPTEluZGV4KCkKK3sKKyAgICB1bnNpZ25lZCBzZWdt
ZW50SW5kZXggPSBtX3NlZ21lbnRJbmRleDsKKyAgICB3aGlsZSAoc2VnbWVudEluZGV4IDwgbV9z
ZWdtZW50TGVuZ3RoIC0gMSkgeworICAgICAgICBpZiAobV9zZWdtZW50W3NlZ21lbnRJbmRleF0g
PT0gJ1xyJyAmJiBtX3NlZ21lbnRbc2VnbWVudEluZGV4ICsgMV0gPT0gJ1xuJykKKyAgICAgICAg
ICAgIHJldHVybiBzZWdtZW50SW5kZXg7IC8vIEVPTCBjaGFyYWN0ZXJzIGFyZSBub3QgaW5jbHVk
ZWQuCisgICAgICAgIHNlZ21lbnRJbmRleCsrOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckxpbmVS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckxpbmVSZWFkZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YmJlZDk5NzRjNDQwYTVkM2ZlMzc5YjA1ODI4MjU3MTI3YjQ2ODQyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyTGlu
ZVJlYWRlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZEJ1ZmZlckxpbmVSZWFkZXJf
aAorI2RlZmluZSBTaGFyZWRCdWZmZXJMaW5lUmVhZGVyX2gKKworI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nQnVpbGRlcjsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKKy8vIFV0aWxpdHkg
Y2xhc3MgdGhhdCBhbGxvd3MgdG8gcmVhZCBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzIGZyb20gYSBT
aGFyZWRCdWZmZXIuCitjbGFzcyBTaGFyZWRCdWZmZXJMaW5lUmVhZGVyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXJMaW5lUmVhZGVyKFNoYXJlZEJ1ZmZlciopOworCisgICAg
Ym9vbCBpc0VPRigpIGNvbnN0IHsgcmV0dXJuIG1fZW9mOyB9CisKKyAgICAvLyBSZXR1cm5zIHRo
ZSBuZXh0IGxpbmUgcmVhZCBmcm9tIHRoZSBidWZmZXIuCisgICAgLy8gUmV0dXJucyBhbiBlbXB0
eSBzdHJpbmcgb25jZSB0aGUgRU9GIGhhcyBiZWVuIHJlYWNoZWQKKyAgICBTdHJpbmcgbmV4dExp
bmUoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHJlYWROZXh0TGluZShXVEY6OlN0cmluZ0J1aWxk
ZXIqIGxpbmUpOworCisgICAgLy8gUmVhZHMgYSBuZXcgc2VnbWVudC4gUmV0dXJucyBmYWxzZSBp
ZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCisgICAgYm9vbCByZWFkTmV4dFNl
Z21lbnQoKTsKKworICAgIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IENSLUxGLCBv
ciAtMSBpZiB0aGUgZW5kIG9mIHRoZSBzZWdtZW50IHdhcyByZWFjaGVkIHdpdGhvdXQgYSBDUi1M
Ri4KKyAgICBpbnQgZ2V0RU9MSW5kZXgoKTsKKworICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7
CisgICAgdW5zaWduZWQgbV9idWZmZXJQb3M7CisgICAgLy8gVGhlIHNlZ21lbnQgaXMgdGhlIGRh
dGEgdGhhdCBoYXMgYmVlbiByZWFkIGZyb20gdGhlIGJ1ZmZlciB0aGF0IHdlIGFyZSBleHRyYWN0
aW5nIGxpbmVzIGZyb20uCisgICAgY29uc3QgY2hhciogbV9zZWdtZW50OworICAgIHVuc2lnbmVk
IG1fc2VnbWVudExlbmd0aDsKKyAgICB1bnNpZ25lZCBtX3NlZ21lbnRJbmRleDsKKyAgICBib29s
IG1fZW9mOworICAgIGJvb2wgbV9wcmV2aW91c1NlZ21lbnRFbmRlZFdpdGhDUjsKK307CisKK30K
KworI2VuZGlmIC8vIFNoYXJlZEJ1ZmZlckxpbmVSZWFkZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92126</attachid>
            <date>2011-05-03 14:04:20 -0700</date>
            <delta_ts>2011-05-03 14:13:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59946-20110503140419.patch</filename>
            <type>text/plain</type>
            <size>15213</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQy
ZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uYzJiNTZlMTU4NTFiYjgyYTgzZGQy
M2NiNmYwMDQ4MTVlMmExMTA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwNTgsNiArMTA1
OCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAogICAgIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5j
cHAKICAgICBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKICAgICBwbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmNwcAogICAgIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0YTk3NWMwZTU5YzFhNWMwOThlYmRkMzQ5M2JlNzQ5NmRjMDA5NzBiLi5hYjFmMzRhYTRiOWI1
OTFmNGQ3ZjE0MjFkNTdkMDNjYTgwYzcyMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDUtMDIgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBhIHV0aWxp
dHkgY2xhc3MgdG8gcmVhZCBhIFNoYXJlZEJ1ZmZlciBsaW5lIGJ5IGxpbmUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTk0NgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ1JMRkxpbmVS
ZWFkZXIuaDogQWRkZWQuCisKIDIwMTEtMDUtMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDE3ZjJhNWY4YTM4OTg4MGM3ZGY1ZjFkMjll
OTYyYmM4MDIyYWE0MDQuLjJiN2IxYjYxOGU1MTM0NDE2MDk4ODQ3YTk2MGU5YWI1YTRkNjYzZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU5Niw2ICsyNTk2LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5w
dXQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkVGltZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291bmQu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA1OTBlYmMyNTkxZTkzN2NhNTBlNmQyOGJmNGY5NThmZmI3OTYw
ZTAyLi4xN2E1YmY2NDMxYzdkNDMxY2YwODgzOGYxOTgxZjE1ZDQzNTJlYTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC03ODIsNiArNzgyLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1N5c3RlbVRpbWUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vVGhlbWUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vVGhlbWVUeXBlcy5oJywKQEAgLTM1NzQsNiArMzU3NSw3IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vU2VjdXJlVGV4dElucHV0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkVGltZXIuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vU291bmQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU3VkZGVuVGVy
bWluYXRpb24uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDYxNWMzZmVlM2IwN2I1OGY5ZjE2YjM3OTk5
N2VhMGM1M2FmZmE3NjUuLjAyNDY5YTRmOTRiNzk5ZDA3Yjg5OGNhMzYyODk2M2NhNWNiZGY0MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJp
bmcuY3BwIFwKICAgICBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvU3RyaW5n
LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAgXAogICAgIHBsYXRm
b3JtL3RleHQvVGV4dENvZGVjLmNwcCBcCkBAIC0yMDI1LDYgKzIwMjYsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmggXAogICAgIHBsYXRmb3JtL1NlYXJjaFBvcHVw
TWVudS5oIFwKICAgICBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBcCisgICAgcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCBcCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmggXAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmggXAogICAgIHBsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGNjMzQ5MzJhYTVmYjllNTFiMThhZjE2OGNjZjg3ODZj
NjFhMDMwMTEuLjE1NzUxYzg4ZDlhNjFkNjllODEwNjQyNmU3MDUzY2Y5NjVmMWEwZDIgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNTkyMiw2
ICsyNTkyMiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5jcHAiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFNoYXJl
ZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFNoYXJlZFRpbWVyLmgiCiAJCQkJPgogCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGM0OTYwNGYyOThmNGUyYzUyMTM3OThhMTcxNzYzN2Y4ZjhjMzVkMGIuLjMzOTc4
NzE2YzhlOGJjMTM2YjEzMmVmZDYzMDYwNGFjMGZiZTMwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNiw2ICs4MDYsOCBA
QAogCQkzNzlFNjFDQzEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5RTYxQzgx
MjZDQTVDMzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCAqLzsgfTsKIAkJMzdB
Q0NFNDIwREEyOTgwRjAwODlFNjAyIC8qIEZvbnRSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FDQ0U0MTBEQTI5ODBGMDA4OUU2
MDIgLyogRm9udFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzN0FDQ0Y2OTBEQTQxNEU3MDA4OUU2MDIgLyogRm9udERlc2Ny
aXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3QUNDRTYyMERBMkFBOTYwMDg5RTYwMiAvKiBGb250RGVzY3JpcHRpb24uY3BwICovOyB9Owor
CQkzN0FGRkRGNjEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdBRkZE
RjQxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmNwcCAqLzsg
fTsKKwkJMzdBRkZERjcxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FG
RkRGNTEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCAqLzsg
fTsKIAkJMzdDMjM2MEIxMDk3RURFRDAwRUY5RjcyIC8qIEZvbnRDb21wbGV4VGV4dE1hYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0MyMzYwQTEw
OTdFREVEMDBFRjlGNzIgLyogRm9udENvbXBsZXhUZXh0TWFjLmNwcCAqLzsgfTsKIAkJMzdDMjM2
MTAxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0MyMzYwRTEwOTdFRTc3MDBF
RjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMzdDMjM2MTExMDk3
RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8q
IENvbXBsZXhUZXh0Q29udHJvbGxlci5oICovOyB9OwpAQCAtNzIzOCw2ICs3MjQwLDggQEAKIAkJ
Mzc5RTYxQzgxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0FDQ0U0MTBEQTI5ODBGMDA4OUU2MDIgLyog
Rm9udFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9u
dFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdBQ0NFNjIw
REEyQUE5NjAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb250RGVzY3JpcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzN0FGRkRGNDEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JM
RkxpbmVSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hh
cmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzN0FGRkRGNTEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyQ1JMRkxpbmVS
ZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdDMjM2MEExMDk3RURFRDAw
RUY5RjcyIC8qIEZvbnRDb21wbGV4VGV4dE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250Q29tcGxleFRleHRNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzN0MyMzYwRTEwOTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QzIzNjBGMTA5
N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxleFRleHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODUwMCw2ICsxODUwNCw4IEBACiAJCQkJMzNDMENDRDMxMTJDNUU2
MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oICovLAogCQkJCTFBNEE5NTRCMEI0RURDQ0Iw
MDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwICovLAogCQkJCTFBNEE5NTRDMEI0RURDQ0IwMDJE
OEMzQyAvKiBTaGFyZWRCdWZmZXIuaCAqLywKKwkJCQkzN0FGRkRGNDEzNzBBMEI4MDBFODk1QzAg
LyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuY3BwICovLAorCQkJCTM3QUZGREY1MTM3MEEw
QjgwMEU4OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oICovLAogCQkJCTkzMzA5
RUEwMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oICovLAogCQkJCTRCMzA0M0M2MEFF
MDM3MDMwMEE4MjY0NyAvKiBTb3VuZC5oICovLAogCQkJCUY1ODc4NjYyMDJERTNCMTEwMUVBNDEy
MiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAqLywKQEAgLTIyNzAyLDYgKzIyNzA4LDcgQEAKIAkJCQk5
M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzdBRkZERjcxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZl
ckNSTEZMaW5lUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MzYyLDYgKzI1MzY5LDcgQEAK
IAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmlj
b2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3QUZGREY2MTM3MEEwQjgwMEU4
OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iM2ZkOGNjZTdkOTE5MTc3MTJjYzgyOGVmYTlhN2RhYzE3NmI4
MmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ1JMRkxpbmVSZWFkZXIuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCIKKworI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlcjo6U2hhcmVkQnVm
ZmVyQ1JMRkxpbmVSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihi
dWZmZXIpCisgICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCisgICAgLCBtX3NlZ21lbnQoMCkKKyAg
ICAsIG1fc2VnbWVudExlbmd0aCgwKQorICAgICwgbV9zZWdtZW50SW5kZXgoMCkKKyAgICAsIG1f
cmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKK3sKK30KKworU3RyaW5nIFNoYXJlZEJ1ZmZlckNSTEZM
aW5lUmVhZGVyOjpuZXh0TGluZSgpCit7CisgICAgaWYgKG1fcmVhY2hlZEVuZE9mRmlsZSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgYm9vbCBwcmV2aW91c0NoYXJhY3Rlcldhc0NS
ID0gZmFsc2U7CisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgIGJvb2wgcmVhY2hlZEVuZE9mTGluZSA9IGZhbHNlOworICAgICAgICB3
aGlsZSAobV9zZWdtZW50SW5kZXggPCBtX3NlZ21lbnRMZW5ndGgpIHsKKyAgICAgICAgICAgIHJl
YWNoZWRFbmRPZkxpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGNoYXIgY3VycmVudENoYXJhY3Rl
ciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleF07CisgICAgICAgICAgICBpZiAocHJldmlvdXND
aGFyYWN0ZXJXYXNDUikgeworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09
ICdcbicpCisgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRFbmRPZkxpbmUgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJ1xyJyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gJ1xy
JykKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjdXJyZW50Q2hhcmFjdGVy
KTsKKworICAgICAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXJXYXNDUiA9IChjdXJyZW50Q2hhcmFj
dGVyID09ICdccicpOworICAgICAgICAgICAgbV9zZWdtZW50SW5kZXgrKzsKKyAgICAgICAgICAg
IGlmIChyZWFjaGVkRW5kT2ZMaW5lKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWFkIHRoZSBuZXh0IHNl
Z21lbnQuCisgICAgICAgIG1fc2VnbWVudEluZGV4ID0gMDsKKyAgICAgICAgbV9idWZmZXJQb3Np
dGlvbiArPSBtX3NlZ21lbnRMZW5ndGg7CisgICAgICAgIG1fc2VnbWVudExlbmd0aCA9IG1fYnVm
ZmVyLT5nZXRTb21lRGF0YShtX3NlZ21lbnQsIG1fYnVmZmVyUG9zaXRpb24pOworICAgICAgICBp
ZiAoIW1fc2VnbWVudExlbmd0aCkgeworICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c0NoYXJhY3Rlcldhc0NSKQorICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdccicpOworICAgICAgICAgICAgU3RyaW5nIGxp
bmUgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gKGxpbmUu
aXNFbXB0eSgpICYmICFyZWFjaGVkRW5kT2ZMaW5lKSA/IFN0cmluZygpIDogbGluZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM1MDliM2QwNjNjMTI1OWZlYWRhYzllNDRlOTVmOTExZGE2ZDJhYjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRl
ci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyX2gK
KyNkZWZpbmUgU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXJfaAorCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmdCdWlsZGVyOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgU2hh
cmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckNSTEZMaW5lUmVhZGVyKFNoYXJlZEJ1ZmZlciopOworCisgICAgLy8gUmV0dXJucyB0aGUg
bmV4dCBsaW5lIHJlYWQgZnJvbSB0aGUgYnVmZmVyLgorICAgIC8vIFJldHVybnMgYSBudWxsIHN0
cmluZyB3aGVuIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBoYXMgYmVlbiByZWFjaGVkLgorICAgIFN0
cmluZyBuZXh0TGluZSgpOworCitwcml2YXRlOgorICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7
CisgICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb247CisgICAgY29uc3QgY2hhciogbV9zZWdtZW50
OworICAgIHNpemVfdCBtX3NlZ21lbnRMZW5ndGg7CisgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4
OworICAgIGJvb2wgbV9yZWFjaGVkRW5kT2ZGaWxlOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92128</attachid>
            <date>2011-05-03 14:13:58 -0700</date>
            <delta_ts>2011-05-04 23:41:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59946-20110503141357.patch</filename>
            <type>text/plain</type>
            <size>15217</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0ODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQy
ZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQyM2QzYWI0OC4uYzJiNTZlMTU4NTFiYjgyYTgzZGQy
M2NiNmYwMDQ4MTVlMmExMTA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwNTgsNiArMTA1
OCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAogICAgIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5j
cHAKICAgICBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKICAgICBwbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmNwcAogICAgIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0YTk3NWMwZTU5YzFhNWMwOThlYmRkMzQ5M2JlNzQ5NmRjMDA5NzBiLi5hYjFmMzRhYTRiOWI1
OTFmNGQ3ZjE0MjFkNTdkMDNjYTgwYzcyMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDUtMDIgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBhIHV0aWxp
dHkgY2xhc3MgdG8gcmVhZCBhIFNoYXJlZEJ1ZmZlciBsaW5lIGJ5IGxpbmUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTk0NgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ1JMRkxpbmVS
ZWFkZXIuaDogQWRkZWQuCisKIDIwMTEtMDUtMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDE3ZjJhNWY4YTM4OTg4MGM3ZGY1ZjFkMjll
OTYyYmM4MDIyYWE0MDQuLjJiN2IxYjYxOGU1MTM0NDE2MDk4ODQ3YTk2MGU5YWI1YTRkNjYzZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU5Niw2ICsyNTk2LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cmVUZXh0SW5w
dXQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkVGltZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291bmQu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA1OTBlYmMyNTkxZTkzN2NhNTBlNmQyOGJmNGY5NThmZmI3OTYw
ZTAyLi4xN2E1YmY2NDMxYzdkNDMxY2YwODgzOGYxOTgxZjE1ZDQzNTJlYTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC03ODIsNiArNzgyLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1N5c3RlbVRpbWUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vVGhlbWUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vVGhlbWVUeXBlcy5oJywKQEAgLTM1NzQsNiArMzU3NSw3IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vU2VjdXJlVGV4dElucHV0LmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vU2VjdXJlVGV4dElucHV0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkVGltZXIuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vU291bmQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU3VkZGVuVGVy
bWluYXRpb24uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDYxNWMzZmVlM2IwN2I1OGY5ZjE2YjM3OTk5
N2VhMGM1M2FmZmE3NjUuLjAyNDY5YTRmOTRiNzk5ZDA3Yjg5OGNhMzYyODk2M2NhNWNiZGY0MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJp
bmcuY3BwIFwKICAgICBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvU3RyaW5n
LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAgXAogICAgIHBsYXRm
b3JtL3RleHQvVGV4dENvZGVjLmNwcCBcCkBAIC0yMDI1LDYgKzIwMjYsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmggXAogICAgIHBsYXRmb3JtL1NlYXJjaFBvcHVw
TWVudS5oIFwKICAgICBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBcCisgICAgcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCBcCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmggXAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmggXAogICAgIHBsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGNjMzQ5MzJhYTVmYjllNTFiMThhZjE2OGNjZjg3ODZj
NjFhMDMwMTEuLjE1NzUxYzg4ZDlhNjFkNjllODEwNjQyNmU3MDUzY2Y5NjVmMWEwZDIgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNTkyMiw2
ICsyNTkyMiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5jcHAiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFNoYXJl
ZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFNoYXJlZFRpbWVyLmgiCiAJCQkJPgogCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGM0OTYwNGYyOThmNGUyYzUyMTM3OThhMTcxNzYzN2Y4ZjhjMzVkMGIuLjMzOTc4
NzE2YzhlOGJjMTM2YjEzMmVmZDYzMDYwNGFjMGZiZTMwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNiw2ICs4MDYsOCBA
QAogCQkzNzlFNjFDQzEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5RTYxQzgx
MjZDQTVDMzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCAqLzsgfTsKIAkJMzdB
Q0NFNDIwREEyOTgwRjAwODlFNjAyIC8qIEZvbnRSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FDQ0U0MTBEQTI5ODBGMDA4OUU2
MDIgLyogRm9udFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzN0FDQ0Y2OTBEQTQxNEU3MDA4OUU2MDIgLyogRm9udERlc2Ny
aXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3QUNDRTYyMERBMkFBOTYwMDg5RTYwMiAvKiBGb250RGVzY3JpcHRpb24uY3BwICovOyB9Owor
CQkzN0FGRkRGNjEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdBRkZE
RjQxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmNwcCAqLzsg
fTsKKwkJMzdBRkZERjcxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FG
RkRGNTEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCAqLzsg
fTsKIAkJMzdDMjM2MEIxMDk3RURFRDAwRUY5RjcyIC8qIEZvbnRDb21wbGV4VGV4dE1hYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0MyMzYwQTEw
OTdFREVEMDBFRjlGNzIgLyogRm9udENvbXBsZXhUZXh0TWFjLmNwcCAqLzsgfTsKIAkJMzdDMjM2
MTAxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0MyMzYwRTEwOTdFRTc3MDBF
RjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMzdDMjM2MTExMDk3
RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8q
IENvbXBsZXhUZXh0Q29udHJvbGxlci5oICovOyB9OwpAQCAtNzIzOCw2ICs3MjQwLDggQEAKIAkJ
Mzc5RTYxQzgxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0FDQ0U0MTBEQTI5ODBGMDA4OUU2MDIgLyog
Rm9udFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9u
dFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdBQ0NFNjIw
REEyQUE5NjAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb250RGVzY3JpcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzN0FGRkRGNDEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JM
RkxpbmVSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hh
cmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzN0FGRkRGNTEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyQ1JMRkxpbmVS
ZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdDMjM2MEExMDk3RURFRDAw
RUY5RjcyIC8qIEZvbnRDb21wbGV4VGV4dE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250Q29tcGxleFRleHRNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzN0MyMzYwRTEwOTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QzIzNjBGMTA5
N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxleFRleHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODUwMCw2ICsxODUwNCw4IEBACiAJCQkJMzNDMENDRDMxMTJDNUU2
MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oICovLAogCQkJCTFBNEE5NTRCMEI0RURDQ0Iw
MDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwICovLAogCQkJCTFBNEE5NTRDMEI0RURDQ0IwMDJE
OEMzQyAvKiBTaGFyZWRCdWZmZXIuaCAqLywKKwkJCQkzN0FGRkRGNDEzNzBBMEI4MDBFODk1QzAg
LyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuY3BwICovLAorCQkJCTM3QUZGREY1MTM3MEEw
QjgwMEU4OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oICovLAogCQkJCTkzMzA5
RUEwMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oICovLAogCQkJCTRCMzA0M0M2MEFF
MDM3MDMwMEE4MjY0NyAvKiBTb3VuZC5oICovLAogCQkJCUY1ODc4NjYyMDJERTNCMTEwMUVBNDEy
MiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAqLywKQEAgLTIyNzAyLDYgKzIyNzA4LDcgQEAKIAkJCQk5
M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzdBRkZERjcxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZl
ckNSTEZMaW5lUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MzYyLDYgKzI1MzY5LDcgQEAK
IAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmlj
b2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3QUZGREY2MTM3MEEwQjgwMEU4
OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVh
ZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iM2ZkOGNjZTdkOTE5MTc3MTJjYzgyOGVmYTlhN2RhYzE3NmI4
MmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ1JMRkxpbmVSZWFkZXIuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCIKKworI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlcjo6U2hhcmVkQnVm
ZmVyQ1JMRkxpbmVSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihi
dWZmZXIpCisgICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCisgICAgLCBtX3NlZ21lbnQoMCkKKyAg
ICAsIG1fc2VnbWVudExlbmd0aCgwKQorICAgICwgbV9zZWdtZW50SW5kZXgoMCkKKyAgICAsIG1f
cmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKK3sKK30KKworU3RyaW5nIFNoYXJlZEJ1ZmZlckNSTEZM
aW5lUmVhZGVyOjpuZXh0TGluZSgpCit7CisgICAgaWYgKG1fcmVhY2hlZEVuZE9mRmlsZSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgYm9vbCBwcmV2aW91c0NoYXJhY3Rlcldhc0NS
ID0gZmFsc2U7CisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgIGJvb2wgcmVhY2hlZEVuZE9mTGluZSA9IGZhbHNlOworICAgICAgICB3
aGlsZSAobV9zZWdtZW50SW5kZXggPCBtX3NlZ21lbnRMZW5ndGgpIHsKKyAgICAgICAgICAgIHJl
YWNoZWRFbmRPZkxpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGNoYXIgY3VycmVudENoYXJhY3Rl
ciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleF07CisgICAgICAgICAgICBpZiAocHJldmlvdXND
aGFyYWN0ZXJXYXNDUikgeworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09
ICdcbicpCisgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRFbmRPZkxpbmUgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoJ1xyJyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gJ1xy
JykKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjdXJyZW50Q2hhcmFjdGVy
KTsKKworICAgICAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXJXYXNDUiA9IChjdXJyZW50Q2hhcmFj
dGVyID09ICdccicpOworICAgICAgICAgICAgbV9zZWdtZW50SW5kZXgrKzsKKyAgICAgICAgICAg
IGlmIChyZWFjaGVkRW5kT2ZMaW5lKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWFkIHRoZSBuZXh0IHNl
Z21lbnQuCisgICAgICAgIG1fc2VnbWVudEluZGV4ID0gMDsKKyAgICAgICAgbV9idWZmZXJQb3Np
dGlvbiArPSBtX3NlZ21lbnRMZW5ndGg7CisgICAgICAgIG1fc2VnbWVudExlbmd0aCA9IG1fYnVm
ZmVyLT5nZXRTb21lRGF0YShtX3NlZ21lbnQsIG1fYnVmZmVyUG9zaXRpb24pOworICAgICAgICBp
ZiAoIW1fc2VnbWVudExlbmd0aCkgeworICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c0NoYXJhY3Rlcldhc0NSKQorICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdccicpOworICAgICAgICAgICAgU3RyaW5nIGxp
bmUgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gKGxpbmUu
aXNFbXB0eSgpICYmICFyZWFjaGVkRW5kT2ZMaW5lKSA/IFN0cmluZygpIDogbGluZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkNjk5OTNkN2MyYmE0NWY2MjJhMTE3OGIzMDM2ODU3NGViZDhiZTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRl
ci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyX2gK
KyNkZWZpbmUgU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXJfaAorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nQnVpbGRlcjsK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNz
IFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXJDUkxGTGluZVJlYWRlcihTaGFyZWRCdWZmZXIqKTsKKworICAgIC8vIFJldHVybnMg
dGhlIG5leHQgbGluZSByZWFkIGZyb20gdGhlIGJ1ZmZlci4KKyAgICAvLyBSZXR1cm5zIGEgbnVs
bCBzdHJpbmcgd2hlbiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgaGFzIGJlZW4gcmVhY2hlZC4KKyAg
ICBTdHJpbmcgbmV4dExpbmUoKTsKKworcHJpdmF0ZToKKyAgICBTaGFyZWRCdWZmZXIqIG1fYnVm
ZmVyOworICAgIHNpemVfdCBtX2J1ZmZlclBvc2l0aW9uOworICAgIGNvbnN0IGNoYXIqIG1fc2Vn
bWVudDsKKyAgICBzaXplX3QgbV9zZWdtZW50TGVuZ3RoOworICAgIHNpemVfdCBtX3NlZ21lbnRJ
bmRleDsKKyAgICBib29sIG1fcmVhY2hlZEVuZE9mRmlsZTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>92430</attachid>
            <date>2011-05-05 09:57:35 -0700</date>
            <delta_ts>2011-05-05 09:57:35 -0700</delta_ts>
            <desc>Code used for unit-testing that class during development</desc>
            <filename>sharred_buffer_crlf_linereader_unittest.cpp</filename>
            <type>application/octet-stream</type>
            <size>5221</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">Ly8gU29tZSBjb2RlIHVzZWQgdG8gdGVzdCB0aGUgU2hhcnJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVy
IGNsYXNzLgovLyBOb3RlIHRoYXQgdG8gbWFrZSB0aGF0IGNvZGUgd29ya3MsIFNoYXJyZWRCdWZm
ZXIgaGFzIHRvIGJlIG1vZGlmaWVkIHNvOgovLyAtIGl0cyBkZWZhdWx0IGNvbnN0cnVjdG9yIGlz
IHB1YmxpYy4KLy8gLSBnZXRTb21lRGF0YSgpIGlzIHZpcnR1YWwuCgpjbGFzcyBUZXN0U2hhcmVk
QnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlcnsKcHVibGljOgogIFRlc3RTaGFyZWRCdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgIHVuc2lnbmVkIGRhdGFMZW5ndGgsIHVuc2lnbmVkIHNlZ21lbnRM
ZW5ndGgpCiAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgICwgbV9kYXRhTGVuZ3RoKGRhdGFMZW5n
dGgpCiAgICAgICwgbV9zZWdtZW50TGVuZ3RoKHNlZ21lbnRMZW5ndGgpCnsKfQp2aXJ0dWFsIHVu
c2lnbmVkIGdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBkYXRhLCB1bnNpZ25lZCBwb3NpdGlvbiA9
IDApIGNvbnN0CnsKICBpZiAocG9zaXRpb24gPj0gbV9kYXRhTGVuZ3RoKQogICAgcmV0dXJuIDA7
CiAgZGF0YSA9IG1fZGF0YSArIHBvc2l0aW9uOwogIHVuc2lnbmVkIHJlbWFpbmluZ1NpemUgPSBt
X2RhdGFMZW5ndGggLSBwb3NpdGlvbjsKICByZXR1cm4gcmVtYWluaW5nU2l6ZSA8PSBtX3NlZ21l
bnRMZW5ndGggPyByZW1haW5pbmdTaXplIDogbV9zZWdtZW50TGVuZ3RoOwp9CgogICAgcHJpdmF0
ZToKCWNvbnN0IGNoYXIqIG1fZGF0YTsKCXVuc2lnbmVkIG1fZGF0YUxlbmd0aDsKCXVuc2lnbmVk
IG1fc2VnbWVudExlbmd0aDsKCn07Cgp2b2lkIHJlYWRMaW5lcyhzdGQ6OnZlY3RvcjxTdHJpbmc+
KiBsaW5lcywgVGVzdFNoYXJlZEJ1ZmZlciogYnVmZmVyKQp7CiAgICBTaGFyZWRCdWZmZXJDUkxG
TGluZVJlYWRlciBsaW5lUmVhZGVyKGJ1ZmZlcik7CiAgICBTdHJpbmcgbGluZSA9IGxpbmVSZWFk
ZXIubmV4dExpbmUoKTsKICAgIHdoaWxlICghbGluZS5pc051bGwoKSkgewoJbGluZXMtPnB1c2hf
YmFjayhsaW5lKTsKCWxpbmUgPSBsaW5lUmVhZGVyLm5leHRMaW5lKCk7CiAgICB9Cn0KCmJvb2wg
Y2hlY2tMaW5lcyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmc+JiBsaW5lcywgY29uc3QgY2hhciog
Y29uc3QgZXhwZWN0ZWRMaW5lc1tdLCBzaXplX3QgZXhwZWN0ZWRTaXplKQp7CiAgICBpZiAobGlu
ZXMuc2l6ZSgpICE9IGV4cGVjdGVkU2l6ZSkKCXJldHVybiBmYWxzZTsKICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpIHsKCWlmIChsaW5lc1tpXSAhPSBleHBlY3Rl
ZExpbmVzW2ldKQoJICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9Cgp2
b2lkIGNyYXNoKCkgewogICAgaW50KiBwdHIgPSAwOwogICAgKnB0ciA9IDA7Cn0KCnN0YXRpYyB2
b2lkIHRlc3RTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlcigpIHsKICAgIHsKICAgICAgICBjb25z
dCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIiI7CiAgICAgICAgUmVmUHRyPFRlc3RTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBUZXN0U2hhcmVkQnVmZmVyKHNpbXBs
ZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSwgNSkpOwogICAgICAgIHN0ZDo6dmVjdG9yPFN0cmlu
Zz4gbGluZXM7CiAgICAgICAgaWYgKCFsaW5lcy5lbXB0eSgpKQoJICAgIGNyYXNoKCk7CiAgICB9
CiAgICB7CiAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJcclxuIjsKICAg
ICAgICBSZWZQdHI8VGVzdFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gYWRvcHRSZWYobmV3
IFRlc3RTaGFyZWRCdWZmZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpLCA1KSk7Cglj
b25zdCBjaGFyKiBjb25zdCBleHBlY3RlZExpbmVzW10gPSB7ICIiIH07CiAgICAgICAgc3RkOjp2
ZWN0b3I8U3RyaW5nPiBsaW5lczsKCXJlYWRMaW5lcygmbGluZXMsIHNoYXJlZEJ1ZmZlci5nZXQo
KSk7CglpZiAoIWNoZWNrTGluZXMobGluZXMsIGV4cGVjdGVkTGluZXMsIGFycmF5c2l6ZShleHBl
Y3RlZExpbmVzKSkpCgkgICAgY3Jhc2goKTsKICAgIH0KICAgIHsKICAgICAgICBjb25zdCBjaGFy
KiBjb25zdCBzaW1wbGVUZXh0ID0gIlxyXG5cclxuXHJcbiI7CiAgICAgICAgUmVmUHRyPFRlc3RT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBUZXN0U2hhcmVkQnVmZmVy
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSwgNSkpOwoJY29uc3QgY2hhciogY29uc3Qg
ZXhwZWN0ZWRMaW5lc1tdID0geyAiIiwgIiIsICIiIH07CiAgICAgICAgc3RkOjp2ZWN0b3I8U3Ry
aW5nPiBsaW5lczsKCXJlYWRMaW5lcygmbGluZXMsIHNoYXJlZEJ1ZmZlci5nZXQoKSk7CglpZiAo
IWNoZWNrTGluZXMobGluZXMsIGV4cGVjdGVkTGluZXMsIGFycmF5c2l6ZShleHBlY3RlZExpbmVz
KSkpCgkgICAgY3Jhc2goKTsKICAgIH0KCiAgICB7Cgljb25zdCBjaGFyKiBjb25zdCBzaW1wbGVU
ZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC5cclxuTm90aGluZyBzcGVjaWFsLlxyXG4iOwoJ
Y29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRMaW5lc1tdID0geyAiVGhpcyBpcyBhIHNpbXBsZSB0
ZXN0LiIsICJOb3RoaW5nIHNwZWNpYWwuIiB9OwoJUmVmUHRyPFRlc3RTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBUZXN0U2hhcmVkQnVmZmVyKHNpbXBsZVRleHQsIHN0
cmxlbihzaW1wbGVUZXh0KSwgMTAyNCkpOwoJc3RkOjp2ZWN0b3I8U3RyaW5nPiBsaW5lczsKCXJl
YWRMaW5lcygmbGluZXMsIHNoYXJlZEJ1ZmZlci5nZXQoKSk7CglpZiAoIWNoZWNrTGluZXMobGlu
ZXMsIGV4cGVjdGVkTGluZXMsIGFycmF5c2l6ZShleHBlY3RlZExpbmVzKSkpCgkgICAgY3Jhc2go
KTsKICAgIH0KCiAgICB7Cgljb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMg
YSBzaW1wbGUgdGVzdC5cclxuTm90aGluZyBzcGVjaWFsLiI7Cgljb25zdCBjaGFyKiBjb25zdCBl
eHBlY3RlZExpbmVzW10gPSB7ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIiwgIk5vdGhpbmcgc3Bl
Y2lhbC4iIH07CglSZWZQdHI8VGVzdFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gYWRvcHRS
ZWYobmV3IFRlc3RTaGFyZWRCdWZmZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpLCAx
MDI0KSk7CglzdGQ6OnZlY3RvcjxTdHJpbmc+IGxpbmVzOwoJcmVhZExpbmVzKCZsaW5lcywgc2hh
cmVkQnVmZmVyLmdldCgpKTsKCWlmICghY2hlY2tMaW5lcyhsaW5lcywgZXhwZWN0ZWRMaW5lcywg
YXJyYXlzaXplKGV4cGVjdGVkTGluZXMpKSkKCSAgICBjcmFzaCgpOwogICAgfQoKICAgIHsKCWNv
bnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiU2ltcGxlIGxpbmUgd2l0aCBubyBFT0wuIjsK
CWNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkTGluZXNbXSA9IHsgIlNpbXBsZSBsaW5lIHdpdGgg
bm8gRU9MLiIgfTsKCVJlZlB0cjxUZXN0U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBhZG9w
dFJlZihuZXcgVGVzdFNoYXJlZEJ1ZmZlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCks
IDUpKTsKCXN0ZDo6dmVjdG9yPFN0cmluZz4gbGluZXM7CglyZWFkTGluZXMoJmxpbmVzLCBzaGFy
ZWRCdWZmZXIuZ2V0KCkpOwoJaWYgKCFjaGVja0xpbmVzKGxpbmVzLCBleHBlY3RlZExpbmVzLCBh
cnJheXNpemUoZXhwZWN0ZWRMaW5lcykpKQogICAgICAgIGNyYXNoKCk7CiAgICB9CgogICAgewog
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiTGluZSB0aGF0IGhhcyBhIEVP
TFxyXG5hbmQgdGhlbiBlbmRzIHdpdGggYSBDUlxyIjsKICAgICAgICBjb25zdCBjaGFyKiBjb25z
dCBleHBlY3RlZExpbmVzW10gPSB7ICJMaW5lIHRoYXQgaGFzIGEgRU9MIiwgImFuZCB0aGVuIGVu
ZHMgd2l0aCBhIENSXHIiIH07CiAgICAgICAgUmVmUHRyPFRlc3RTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBUZXN0U2hhcmVkQnVmZmVyKHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSwgMTAyNCkpOwogICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gbGluZXM7
CiAgICAgICAgcmVhZExpbmVzKCZsaW5lcywgc2hhcmVkQnVmZmVyLmdldCgpKTsKICAgICAgICBp
ZiAoIWNoZWNrTGluZXMobGluZXMsIGV4cGVjdGVkTGluZXMsIGFycmF5c2l6ZShleHBlY3RlZExp
bmVzKSkpCiAgICAgICAgICAgIGNyYXNoKCk7CiAgICB9CgogICAgewogICAgICAgIGNvbnN0IGNo
YXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiUmVwZWF0ZWQgQ1JzIHNob3VsZCBub3QgY2F1c2UgcHJv
YmVtc1xyXHJcclxuU2hvdWxuJ3QgdGhleT8iOwogICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4
cGVjdGVkTGluZXNbXSA9IHsgIlJlcGVhdGVkIENScyBzaG91bGQgbm90IGNhdXNlIHByb2JlbXNc
clxyIiwgIlNob3Vsbid0IHRoZXk/IiB9OwogICAgICAgIFJlZlB0cjxUZXN0U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBhZG9wdFJlZihuZXcgVGVzdFNoYXJlZEJ1ZmZlcihzaW1wbGVUZXh0
LCBzdHJsZW4oc2ltcGxlVGV4dCksIDEwMjQpKTsKICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+
IGxpbmVzOwogICAgICAgIHJlYWRMaW5lcygmbGluZXMsIHNoYXJlZEJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgaWYgKCFjaGVja0xpbmVzKGxpbmVzLCBleHBlY3RlZExpbmVzLCBhcnJheXNpemUoZXhw
ZWN0ZWRMaW5lcykpKQogICAgICAgICAgICBjcmFzaCgpOwogICAgfQogICAgewogICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiRU9MXHJcbiBiZXR3ZVxyXG5lbiBzZWdtZW50
cyI7CiAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRMaW5lc1tdID0geyAiRU9MIiwg
IiBiZXR3ZSIsICJlbiBzZWdtZW50cyIgfTsKICAgICAgICBSZWZQdHI8VGVzdFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyID0gYWRvcHRSZWYobmV3IFRlc3RTaGFyZWRCdWZmZXIoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpLCA0KSk7CiAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBs
aW5lczsKICAgICAgICByZWFkTGluZXMoJmxpbmVzLCBzaGFyZWRCdWZmZXIuZ2V0KCkpOwogICAg
ICAgIGlmICghY2hlY2tMaW5lcyhsaW5lcywgZXhwZWN0ZWRMaW5lcywgYXJyYXlzaXplKGV4cGVj
dGVkTGluZXMpKSkKCSAgICBjcmFzaCgpOwogICAgfQp9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>