<?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>105872</bug_id>
          
          <creation_ts>2012-12-30 11:37:11 -0800</creation_ts>
          <short_desc>[EFL] [WebGL] Minor cleanup in Platform Context class.</short_desc>
          <delta_ts>2013-01-02 08:47:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>105659</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kalyan">kalyan.kondapally</reporter>
          <assigned_to name="Kalyan">kalyan.kondapally</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>798248</commentid>
    <comment_count>0</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 11:37:11 -0800</bug_when>
    <thetext>currently, we check for any supported extensions and use them as found. The logic to check the support is scattered a bit in different classes i.e PlatformContext, eglcontext etc. It would be nice to have this in one place i.e in PlatformContext. 

Some of the functions in eglconfighelper should be declared with const keyword as they are meant to be read only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798253</commentid>
    <comment_count>1</comment_count>
      <attachid>180959</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 13:00:51 -0800</bug_when>
    <thetext>Created attachment 180959
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798256</commentid>
    <comment_count>2</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 13:06:17 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; currently, we check for any supported extensions and use them as found. The 

&gt; Some of the functions in eglconfighelper should be declared with const keyword as they are meant to be read only.

Will do confighelper changes in another changeset</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798262</commentid>
    <comment_count>3</comment_count>
      <attachid>180959</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-30 14:08:16 -0800</bug_when>
    <thetext>Comment on attachment 180959
patch

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

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:105
&gt; +    if (supportedExtensions.contains(name))
&gt; +        return true;

so what is one extension is the subname of another one? dont you need to look for spaces? This doesnt seem so robust

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:130
&gt; +}
&gt; +#elif USE(GLX)
&gt; +bool GLPlatformContext::supportsGLXExtension(Display* display, const String&amp; name)

I think #endif is nicer here as they are differently named methods

&gt; Source/WebCore/platform/graphics/surfaces/glx/GLXContext.cpp:48
&gt; +    if (GLPlatformContext::supportsGLXExtension(display, &quot;GLX_ARB_create_context_robustness &quot;))

I dont like that you have to add space here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798309</commentid>
    <comment_count>4</comment_count>
      <attachid>180966</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-31 00:05:12 -0800</bug_when>
    <thetext>Created attachment 180966
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798310</commentid>
    <comment_count>5</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-31 00:07:36 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 180959 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180959&amp;action=review
&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GLXContext.cpp:48
&gt; &gt; +    if (GLPlatformContext::supportsGLXExtension(display, &quot;GLX_ARB_create_context_robustness &quot;))
&gt; 
&gt; I dont like that you have to add space here

k, I changed the logic so that we split the extension string and store the individual extension names. This should address all the issues now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798316</commentid>
    <comment_count>6</comment_count>
      <attachid>180966</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-31 02:18:04 -0800</bug_when>
    <thetext>Comment on attachment 180966
patch

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

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:94
&gt; +void GLPlatformContext::splitAndStoreExtensionNames(HashSet&lt;String&gt;&amp; splitExtNames, const String&amp; extensionsString)

Why is this not a free function?

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:98
&gt; +    uint totalSize = extNames.size();

we normally just use &quot;unsigned&quot;

size/length would be a better name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798378</commentid>
    <comment_count>7</comment_count>
      <attachid>180980</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-31 12:38:18 -0800</bug_when>
    <thetext>Created attachment 180980
patchv3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798381</commentid>
    <comment_count>8</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-31 12:39:31 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 180966 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180966&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:94
&gt; &gt; +void GLPlatformContext::splitAndStoreExtensionNames(HashSet&lt;String&gt;&amp; splitExtNames, const String&amp; extensionsString)
&gt; 
&gt; Why is this not a free function?

made the relevant changes now. Changed the other private static functions too.

&gt; &gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:98
&gt; &gt; +    uint totalSize = extNames.size();
&gt; 
&gt; we normally just use &quot;unsigned&quot;
&gt; 
&gt; size/length would be a better name

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798383</commentid>
    <comment_count>9</comment_count>
      <attachid>180980</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-31 13:14:15 -0800</bug_when>
    <thetext>Comment on attachment 180980
patchv3

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

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:70
&gt; +void splitAndStoreExtensionNames(HashSet&lt;String&gt;&amp; splitExtNames, const String&amp; extensionsString)

static! works on some platforms without

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:127
&gt; +        splitAndStoreExtensionNames(supportedExtensions, extensionsString);

extractExtensionNames ?

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:146
&gt; +        retrievedExtensions = true;

!supportedExtensions.length() ?

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:148
&gt; +        String extensionsString = reinterpret_cast&lt;const char*&gt;(eglQueryString(display, EGL_EXTENSIONS));
&gt; +        splitAndStoreExtensionNames(supportedExtensions, extensionsString);

String adds no info. String extensions should be sufficient.

Maybe

static HastSet&lt;String&gt; extensions = parseExtensions(rawExtensions);

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:207
&gt; +        initializeResetStatusExtension();

resolveResetStatusExtension() sounds better. It is not really initializing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798431</commentid>
    <comment_count>10</comment_count>
      <attachid>180988</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-01 04:22:19 -0800</bug_when>
    <thetext>Created attachment 180988
patchv4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798432</commentid>
    <comment_count>11</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-01 04:24:05 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 180980 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180980&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GLPlatformContext.cpp:70
&gt; &gt; +void splitAndStoreExtensionNames(HashSet&lt;String&gt;&amp; splitExtNames, const String&amp; extensionsString)
&gt; 
&gt; &gt; +        splitAndStoreExtensionNames(supportedExtensions, extensionsString);
&gt; 
&gt; String adds no info. String extensions should be sufficient.
done.

&gt; Maybe
&gt; 
&gt; static HastSet&lt;String&gt; extensions = parseExtensions(rawExtensions);
&gt; 
looks k for me. changes done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798433</commentid>
    <comment_count>12</comment_count>
      <attachid>180988</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-01 05:05:45 -0800</bug_when>
    <thetext>Comment on attachment 180988
patchv4

Attachment 180988 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15625213

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798679</commentid>
    <comment_count>13</comment_count>
      <attachid>180988</attachid>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2013-01-02 08:32:00 -0800</bug_when>
    <thetext>Comment on attachment 180988
patchv4

Looks like inspector-protocol test is flaky and causing ews/cq failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798686</commentid>
    <comment_count>14</comment_count>
      <attachid>180988</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 08:47:48 -0800</bug_when>
    <thetext>Comment on attachment 180988
patchv4

Clearing flags on attachment: 180988

Committed r138620: &lt;http://trac.webkit.org/changeset/138620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798687</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 08:47:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180959</attachid>
            <date>2012-12-30 13:00:51 -0800</date>
            <delta_ts>2012-12-31 00:05:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>extensions.patch</filename>
            <type>text/plain</type>
            <size>12037</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGU2ZjI3NGEuLmQ4MGNhOTggMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTEyLTMwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXSBbV2ViR0xdIE1pbm9yIGNsZWFudXAgaW4gUGxhdGZvcm1Db250ZXh0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGxv
Z2ljIHRvIGNoZWNrIGZvciBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpcyBzY2F0dGVyZWQgaW4gZGlm
ZmVyZW50IGNsYXNzZXMgaS5lIFBsYXRmb3JtQ29udGV4dCwgZWdsY29udGV4dCBldGMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIGFueSBkdXBsaWNhdGUgY29kZSBhbmQgYWRkcyBuZXcg
YXBpIGluIEdMUGxhdGZvcm1Db250ZXh0IHRvIHF1ZXJ5IGZvciBzdXBwb3J0ZWQgR0wsIEVHTCBh
bmQgR0xYIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6Y3Jl
YXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9y
dHNHTEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3Vw
cG9ydHNFR0xFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R0xQbGF0Zm9ybUNvbnRleHQ6
OnN1cHBvcnRzR0xYRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdMUGxhdGZvcm1Db250
ZXh0OjptYWtlQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6
aW5pdGlhbGl6ZVJlc2V0U3RhdHVzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jv
YnVzdG5lc3NFeHRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMT2ZmU2NyZWVuQ29u
dGV4dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUFSQkV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlhbGl6
ZSk6CisKIDIwMTItMTItMjggIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlA
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dlYkdMXSBSZWZhY3RvciBHTFhJbXBsZW1lbnRh
dGlvbi4KZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R0xQbGF0Zm9ybUNvbnRleHQuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKaW5kZXggNzk5NTliYS4uYzNiY2QzNSAxMDA2NDQK
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29u
dGV4dC5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBs
YXRmb3JtQ29udGV4dC5jcHAKQEAgLTM4LDE4ICszOCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNBUkJQUk9DIGdsR2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQiA9IDA7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorc3RhdGljIFBG
TkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0VYVFBST0MgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
ID0gMDsKKyNlbHNlCitzdGF0aWMgUEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTQVJCUFJPQyBn
bEdldEdyYXBoaWNzUmVzZXRTdGF0dXMgPSAwOworI2VuZGlmCiBzdGF0aWMgR0xQbGF0Zm9ybUNv
bnRleHQqIG1fY3VycmVudENvbnRleHQgPSAwOwogCiBQYXNzT3duUHRyPEdMUGxhdGZvcm1Db250
ZXh0PiBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCiB7CisjaWYgIVVTRShPUEVOR0xfRVNfMikKICAgICBp
ZiAoIWluaXRpYWxpemVPcGVuR0xTaGltcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
I2lmIFVTRShHTFgpCi0gICAgaWYgKCFnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpIHsKLSAg
ICAgICAgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEdFVEdSQVBISUNTUkVTRVRTVEFUVVNBUkJQUk9DPihnbFhHZXRQcm9jQWRkcmVzc0FSQihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
IikpKTsKLSAgICB9CiAjZW5kaWYKIAogICAgIHN3aXRjaCAocmVuZGVyU3R5bGUpIHsKQEAgLTkx
LDYgKzkxLDYyIEBAIFBhc3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IEdMUGxhdGZvcm1Db250
ZXh0OjpjcmVhdGVDdXJyZW50Q29udGV4dFdyYXBwZXIoKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCitib29sIEdMUGxhdGZvcm1Db250ZXh0OjpzdXBwb3J0c0dMRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBzdGF0aWMgU3RyaW5nIHN1cHBvcnRlZEV4dGVuc2lvbnM7Cisg
ICAgc3RhdGljIGJvb2wgcmV0cmlldmVkRXh0ZW5zaW9ucyA9IGZhbHNlOworCisgICAgaWYgKCFy
ZXRyaWV2ZWRFeHRlbnNpb25zKSB7CisgICAgICAgIHJldHJpZXZlZEV4dGVuc2lvbnMgPSB0cnVl
OworICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oOjpnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSk7CisgICAgfQorCisgICAgaWYgKHN1
cHBvcnRlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgVVNFKEVHTCkKK2Jvb2wgR0xQbGF0Zm9ybUNv
bnRleHQ6OnN1cHBvcnRzRUdMRXh0ZW5zaW9uKEVHTERpc3BsYXkgZGlzcGxheSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIHN0YXRpYyBTdHJpbmcgc3VwcG9ydGVkRXh0ZW5zaW9uczsKKyAg
ICBzdGF0aWMgYm9vbCByZXRyaWV2ZWRFeHRlbnNpb25zID0gZmFsc2U7CisKKyAgICBpZiAoIXJl
dHJpZXZlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BM
QVkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0cmlldmVkRXh0ZW5z
aW9ucyA9IHRydWU7CisgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUykp
OworICAgIH0KKworICAgIGlmIChzdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbGlmIFVTRShH
TFgpCitib29sIEdMUGxhdGZvcm1Db250ZXh0OjpzdXBwb3J0c0dMWEV4dGVuc2lvbihEaXNwbGF5
KiBkaXNwbGF5LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgc3RhdGljIFN0cmluZyBzdXBw
b3J0ZWRFeHRlbnNpb25zOworICAgIHN0YXRpYyBib29sIHJldHJpZXZlZEV4dGVuc2lvbnMgPSBm
YWxzZTsKKworICAgIGlmICghcmV0cmlldmVkRXh0ZW5zaW9ucykgeworICAgICAgICBpZiAoIWRp
c3BsYXkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0cmlldmVkRXh0
ZW5zaW9ucyA9IHRydWU7CisgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMgPSBnbFhRdWVyeUV4
dGVuc2lvbnNTdHJpbmcoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSk7CisgICAgfQor
CisgICAgaWYgKHN1cHBvcnRlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIEdMUGxhdGZvcm1D
b250ZXh0OjpHTFBsYXRmb3JtQ29udGV4dCgpCiAgICAgOiBtX2NvbnRleHRIYW5kbGUoMCkKICAg
ICAsIG1fcmVzZXRMb3N0Q29udGV4dChmYWxzZSkKQEAgLTExNywyMiArMTczLDI2IEBAIGJvb2wg
R0xQbGF0Zm9ybUNvbnRleHQ6Om1ha2VDdXJyZW50KEdMUGxhdGZvcm1TdXJmYWNlKiBzdXJmYWNl
KQogICAgIGVsc2UgaWYgKHBsYXRmb3JtTWFrZUN1cnJlbnQoc3VyZmFjZSkpCiAgICAgICAgIG1f
Y3VycmVudENvbnRleHQgPSB0aGlzOwogCi0gICAgaWYgKG1fcmVzZXRMb3N0Q29udGV4dCAmJiBn
bEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpIHsKLSAgICAgICAgR0xlbnVtIHN0YXR1cyA9IGds
R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwotCi0gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7
Ci0gICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhUX05PX0VSUk9SOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhUX0dVSUxUWV9DT05URVhUX1JFU0VUOgot
ICAgICAgICAgICAgbV9jb250ZXh0TG9zdCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfSU5OT0NFTlRfQ09OVEVYVF9SRVNFVDoKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBMQVRGT1JNQ09OVEVYVF9VTktOT1dOX0NPTlRF
WFRfUkVTRVQ6Ci0gICAgICAgICAgICBtX2NvbnRleHRMb3N0ID0gdHJ1ZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKG1f
cmVzZXRMb3N0Q29udGV4dCkgeworICAgICAgICBpbml0aWFsaXplUmVzZXRTdGF0dXNFeHRlbnNp
b24oKTsKKworICAgICAgICBpZiAoZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzKSB7CisgICAgICAg
ICAgICBHTGVudW0gc3RhdHVzID0gZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCk7CisKKyAgICAg
ICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgICAgICBjYXNlIFBMQVRGT1JNQ09OVEVY
VF9OT19FUlJPUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUExB
VEZPUk1DT05URVhUX0dVSUxUWV9DT05URVhUX1JFU0VUOgorICAgICAgICAgICAgICAgIG1fY29u
dGV4dExvc3QgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBQTEFURk9STUNPTlRFWFRfSU5OT0NFTlRfQ09OVEVYVF9SRVNFVDoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhUX1VOS05PV05fQ09OVEVY
VF9SRVNFVDoKKyAgICAgICAgICAgICAgICBtX2NvbnRleHRMb3N0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5Miw2ICsyNTIsMTkg
QEAgdm9pZCBHTFBsYXRmb3JtQ29udGV4dDo6ZGVzdHJveSgpCiAgICAgICAgIG1fY3VycmVudENv
bnRleHQgPSAwOwogfQogCit2b2lkIEdMUGxhdGZvcm1Db250ZXh0Ojppbml0aWFsaXplUmVzZXRT
dGF0dXNFeHRlbnNpb24oKQoreworICAgIGlmICghZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzKSB7
CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAgICBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMg
PSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0VYVFBST0M+KGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQiKSk7CisjZWxpZiBV
U0UoRUdMKQorICAgICAgICBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMgPSByZWludGVycHJldF9j
YXN0PFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0FSQlBST0M+KGVnbEdldFByb2NBZGRyZXNz
KCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIiKSk7CisjZWxpZiBVU0UoR0xYKQorICAgICAg
ICBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUR1JB
UEhJQ1NSRVNFVFNUQVRVU0FSQlBST0M+KGdsWEdldFByb2NBZGRyZXNzQVJCKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIiKSkpOwor
I2VuZGlmCisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3Jt
Q29udGV4dC5oIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRm
b3JtQ29udGV4dC5oCmluZGV4IDAzNTNkZjguLjRhNDQwNmQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuaAorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1Db250ZXh0LmgK
QEAgLTUxLDYgKzUxLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMUGxh
dGZvcm1Db250ZXh0PiBjcmVhdGVDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSk7CiAKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0dMRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYp
OworCisjaWYgVVNFKEVHTCkKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0VHTEV4dGVuc2lvbihF
R0xEaXNwbGF5LCBjb25zdCBTdHJpbmcmKTsKKyNlbGlmIFVTRShHTFgpCisgICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNHTFhFeHRlbnNpb24oRGlzcGxheSosIGNvbnN0IFN0cmluZyYpOworI2VuZGlm
CisKICAgICB2aXJ0dWFsIH5HTFBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgdmlydHVhbCBib29s
IGluaXRpYWxpemUoR0xQbGF0Zm9ybVN1cmZhY2UqKTsKQEAgLTg0LDYgKzkyLDcgQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgbV9jb250ZXh0TG9zdDsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGluaXRp
YWxpemVSZXNldFN0YXR1c0V4dGVuc2lvbigpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMUGxh
dGZvcm1Db250ZXh0PiBjcmVhdGVPZmZTY3JlZW5Db250ZXh0KCk7CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IGNyZWF0ZUN1cnJlbnRDb250ZXh0V3JhcHBlcigpOwog
fTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9l
Z2wvRUdMQ29udGV4dC5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZWdsL0VHTENvbnRleHQuY3BwCmluZGV4IGNlM2I5OWEuLjNjMDJiYjQgMTAwNjQ0Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5j
cHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xD
b250ZXh0LmNwcApAQCAtNTksMTIgKzU5LDcgQEAgc3RhdGljIGJvb2wgaXNSb2J1c3RuZXNzRXh0
U3VwcG9ydGVkKEVHTERpc3BsYXkgZGlzcGxheSkKIAogICAgIGlmICghZGlkUXVlcnlGb3JSb2J1
c3RuZXNzRXh0ZW5zaW9uKSB7CiAgICAgICAgIGRpZFF1ZXJ5Rm9yUm9idXN0bmVzc0V4dGVuc2lv
biA9IHRydWU7Ci0gICAgICAgIFN0cmluZyBzdXBwb3J0ZWRFeHRlbnNpb25zID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lP
TlMpKTsKLQotICAgICAgICBpZiAoIXN1cHBvcnRlZEV4dGVuc2lvbnMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25zLmFwcGVuZCgiICIpOwotICAgICAgICAgICAg
aXNSb2J1c3RuZXNzRXh0ZW5zaW9uU3VwcG9ydGVkID0gc3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250
YWlucygiRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIik7Ci0gICAgICAgIH0KKyAg
ICAgICAgaXNSb2J1c3RuZXNzRXh0ZW5zaW9uU3VwcG9ydGVkID0gR0xQbGF0Zm9ybUNvbnRleHQ6
OnN1cHBvcnRzRUdMRXh0ZW5zaW9uKGRpc3BsYXksICJFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3Jv
YnVzdG5lc3MiKTsKICAgICB9CiAKICAgICByZXR1cm4gaXNSb2J1c3RuZXNzRXh0ZW5zaW9uU3Vw
cG9ydGVkOwpAQCAtMTA4LDkgKzEwMywxOCBAQCBib29sIEVHTE9mZlNjcmVlbkNvbnRleHQ6Omlu
aXRpYWxpemUoR0xQbGF0Zm9ybVN1cmZhY2UqIHN1cmZhY2UpCiAgICAgaWYgKGlzUm9idXN0bmVz
c0V4dFN1cHBvcnRlZChtX2Rpc3BsYXkpKQogICAgICAgICBtX2NvbnRleHRIYW5kbGUgPSBlZ2xD
cmVhdGVDb250ZXh0KG1fZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dFJv
YnVzdG5lc3NBdHRyaWJ1dGVzKTsKIAotICAgIGlmIChtX2NvbnRleHRIYW5kbGUgIT0gRUdMX05P
X0NPTlRFWFQpCi0gICAgICAgIG1fcmVzZXRMb3N0Q29udGV4dCA9IHRydWU7Ci0gICAgZWxzZQor
ICAgIGlmIChtX2NvbnRleHRIYW5kbGUgIT0gRUdMX05PX0NPTlRFWFQpIHsKKyAgICAgICAgLy8g
VGhlIEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyBzcGVjIHJlcXVpcmVzIHRoYXQg
YSBjb250ZXh0IGNyZWF0ZWQgd2l0aAorICAgICAgICAvLyBFR0xfQ09OVEVYVF9PUEVOR0xfUkVT
RVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VYVCBiaXQgc2V0IG11c3QgYWxzbyBzdXBwb3J0IEdM
X0VYVF9yb2J1c3RuZXNzIG9yCisgICAgICAgIC8vIGEgdmVyc2lvbiBvZiBPcGVuR0wgaW5jb3Jw
b3JhdGluZyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIC8vIFRoZSBzcGVjIGFs
c28gZGVmaW5lcyBzaW1pbGFyIHJlcXVpcmVtZW50cyBmb3IgYXR0cmlidXRlIEVHTF9MT1NFX0NP
TlRFWFRfT05fUkVTRVRfRVhULgorICAgICAgICBpZiAocGxhdGZvcm1NYWtlQ3VycmVudChzdXJm
YWNlKSAmJiAoR0xQbGF0Zm9ybUNvbnRleHQ6OnN1cHBvcnRzR0xFeHRlbnNpb24oIkdMX0VYVF9y
b2J1c3RuZXNzIikpKQorICAgICAgICAgICAgbV9yZXNldExvc3RDb250ZXh0ID0gdHJ1ZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBtX2Nv
bnRleHRIYW5kbGUpOworICAgIH0KKworICAgIGlmIChtX2NvbnRleHRIYW5kbGUgPT0gRUdMX05P
X0NPTlRFWFQpCiAgICAgICAgIG1fY29udGV4dEhhbmRsZSA9IGVnbENyZWF0ZUNvbnRleHQobV9k
aXNwbGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlidXRlcyk7CiAKICAg
ICBpZiAobV9jb250ZXh0SGFuZGxlICE9IEVHTF9OT19DT05URVhUKQpkaWZmIC0tZ2l0IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb250ZXh0LmNwcCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5j
cHAKaW5kZXggOTk1NmNiMS4uYWEyMTk2MCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb250ZXh0LmNwcAorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwCkBAIC0zOCwx
NSArMzgsMTUgQEAgc3RhdGljIGludCBBdHRyaWJzW10gPSB7CiAgICAgR0xYX0xPU0VfQ09OVEVY
VF9PTl9SRVNFVF9BUkIsCiAgICAgMCB9OwogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplQVJCRXh0
ZW5zaW9ucygpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplQVJCRXh0ZW5zaW9ucyhEaXNwbGF5KiBk
aXNwbGF5KQogewogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0KICAgICBp
ZiAoaW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGluaXRpYWxpemVkID0gdHJ1
ZTsKLSAgICBnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQiA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xY
Q1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIiKSkpOwor
ICAgIGlmIChHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9ydHNHTFhFeHRlbnNpb24oZGlzcGxheSwg
IkdMWF9BUkJfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyAiKSkKKyAgICAgICAgZ2xYQ3JlYXRl
Q29udGV4dEF0dHJpYnNBUkIgPSByZWludGVycHJldF9jYXN0PEdMWENSRUFURUNPTlRFWFRBVFRS
SUJTQVJCUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVi
eXRlKj4oImdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCIikpKTsKIH0KIAogR0xYT2ZmU2NyZWVu
Q29udGV4dDo6R0xYT2ZmU2NyZWVuQ29udGV4dCgpCkBAIC02NywxNCArNjcsMjMgQEAgYm9vbCBH
TFhPZmZTY3JlZW5Db250ZXh0Ojppbml0aWFsaXplKEdMUGxhdGZvcm1TdXJmYWNlKiBzdXJmYWNl
KQogICAgIEdMWEZCQ29uZmlnIGNvbmZpZyA9IHN1cmZhY2UtPmNvbmZpZ3VyYXRpb24oKTsKIAog
ICAgIGlmIChjb25maWcpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUFSQkV4dGVuc2lvbnMoKTsKKyAg
ICAgICAgaW5pdGlhbGl6ZUFSQkV4dGVuc2lvbnMobV9kaXNwbGF5KTsKIAogICAgICAgICBpZiAo
Z2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIpCiAgICAgICAgICAgICBtX2NvbnRleHRIYW5kbGUg
PSBnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQihtX2Rpc3BsYXksIGNvbmZpZywgMCwgdHJ1ZSwg
QXR0cmlicyk7CiAKLSAgICAgICAgaWYgKG1fY29udGV4dEhhbmRsZSkKLSAgICAgICAgICAgIG1f
cmVzZXRMb3N0Q29udGV4dCA9IHRydWU7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKG1fY29u
dGV4dEhhbmRsZSkgeworICAgICAgICAgICAgLy8gVGhlIEdMWF9BUkJfY3JlYXRlX2NvbnRleHRf
cm9idXN0bmVzcyBzcGVjIHJlcXVpcmVzIHRoYXQgYSBjb250ZXh0IGNyZWF0ZWQgd2l0aAorICAg
ICAgICAgICAgLy8gR0xYX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19CSVRfQVJCIGJpdCBzZXQgbXVz
dCBhbHNvIHN1cHBvcnQgR0xfQVJCX3JvYnVzdG5lc3Mgb3IKKyAgICAgICAgICAgIC8vIGEgdmVy
c2lvbiBvZiBPcGVuR0wgaW5jb3Jwb3JhdGluZyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkuCisg
ICAgICAgICAgICAvLyBUaGUgc3BlYyBhbHNvIGRlZmluZXMgc2ltaWxhciByZXF1aXJlbWVudHMg
Zm9yIGF0dHJpYnV0ZSBHTFhfQ09OVEVYVF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfQVJC
LgorICAgICAgICAgICAgaWYgKHBsYXRmb3JtTWFrZUN1cnJlbnQoc3VyZmFjZSkgJiYgR0xQbGF0
Zm9ybUNvbnRleHQ6OnN1cHBvcnRzR0xFeHRlbnNpb24oIkdMX0FSQl9yb2J1c3RuZXNzIikpCisg
ICAgICAgICAgICAgICAgbV9yZXNldExvc3RDb250ZXh0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBnbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4
dEhhbmRsZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fY29udGV4dEhhbmRsZSkKICAg
ICAgICAgICAgIG1fY29udGV4dEhhbmRsZSA9IGdsWENyZWF0ZU5ld0NvbnRleHQobV9kaXNwbGF5
LCBjb25maWcsIEdMWF9SR0JBX1RZUEUsIDAsIHRydWUpOwogCiAgICAgICAgIGlmIChtX2NvbnRl
eHRIYW5kbGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180966</attachid>
            <date>2012-12-31 00:05:12 -0800</date>
            <delta_ts>2012-12-31 12:38:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>extensionsreview.patch</filename>
            <type>text/plain</type>
            <size>12821</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDYxMTk2OGYuLjkxNDFjMjUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDEy
LTEyLTMwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
IAorICAgICAgICBbRUZMXSBbV2ViR0xdIE1pbm9yIGNsZWFudXAgaW4gUGxhdGZvcm1Db250ZXh0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGxv
Z2ljIHRvIGNoZWNrIGZvciBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpcyBzY2F0dGVyZWQgaW4gZGlm
ZmVyZW50IGNsYXNzZXMgaS5lIFBsYXRmb3JtQ29udGV4dCwgZWdsY29udGV4dCBldGMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIGFueSBkdXBsaWNhdGUgY29kZSBhbmQgYWRkcyBuZXcg
YXBpIGluIEdMUGxhdGZvcm1Db250ZXh0IHRvIHF1ZXJ5IGZvciBzdXBwb3J0ZWQgR0wsIEVHTCBh
bmQgR0xYIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6Y3Jl
YXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9y
dHNHTEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3Vw
cG9ydHNFR0xFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R0xQbGF0Zm9ybUNvbnRleHQ6
OnN1cHBvcnRzR0xYRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdMUGxhdGZvcm1Db250
ZXh0OjptYWtlQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6
aW5pdGlhbGl6ZVJlc2V0U3RhdHVzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jv
YnVzdG5lc3NFeHRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMT2ZmU2NyZWVuQ29u
dGV4dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUFSQkV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlhbGl6
ZSk6CisKKzIwMTItMTItMzAgIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlA
aW50ZWwuY29tPgorCiAgICAgICAgIFtFRkxdIFtXZWJHTF0gUmVuYW1lIEVHTENvbmZpZ0hlbHBl
ciBhcyBFR0xDb25maWdTZWxlY3Rvci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNTg3NgogCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1Db250ZXh0LmNwcCBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwCmluZGV4IDc5OTU5
YmEuLjZjNGM5YWMgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwCkBAIC0zOCwxOCArMzgsMTggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUEZOR0xHRVRHUkFQSElDU1JFU0VUU1RB
VFVTQVJCUFJPQyBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgPSAwOworI2lmIFVTRShPUEVO
R0xfRVNfMikKK3N0YXRpYyBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNFWFRQUk9DIGdsR2V0
R3JhcGhpY3NSZXNldFN0YXR1cyA9IDA7CisjZWxzZQorc3RhdGljIFBGTkdMR0VUR1JBUEhJQ1NS
RVNFVFNUQVRVU0FSQlBST0MgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzID0gMDsKKyNlbmRpZgog
c3RhdGljIEdMUGxhdGZvcm1Db250ZXh0KiBtX2N1cnJlbnRDb250ZXh0ID0gMDsKIAogUGFzc093
blB0cjxHTFBsYXRmb3JtQ29udGV4dD4gR0xQbGF0Zm9ybUNvbnRleHQ6OmNyZWF0ZUNvbnRleHQo
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQogeworI2lmICFVU0Uo
T1BFTkdMX0VTXzIpCiAgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hpbXMoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSNpZiBVU0UoR0xYKQotICAgIGlmICghZ2xHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKSB7Ci0gICAgICAgIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTQVJCUFJPQz4oZ2xYR2V0
UHJvY0FkZHJlc3NBUkIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImdsR2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQiIpKSk7Ci0gICAgfQogI2VuZGlmCiAKICAgICBzd2l0Y2ggKHJl
bmRlclN0eWxlKSB7CkBAIC05MSw2ICs5MSw3NyBAQCBQYXNzT3duUHRyPEdMUGxhdGZvcm1Db250
ZXh0PiBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ3VycmVudENvbnRleHRXcmFwcGVyKCkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAordm9pZCBHTFBsYXRmb3JtQ29udGV4dDo6c3BsaXRBbmRT
dG9yZUV4dGVuc2lvbk5hbWVzKEhhc2hTZXQ8U3RyaW5nPiYgc3BsaXRFeHROYW1lcywgY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25zU3RyaW5nKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGV4dE5hbWVz
OworICAgIGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoIiAiLCBleHROYW1lcyk7CisgICAgdWludCB0
b3RhbFNpemUgPSBleHROYW1lcy5zaXplKCk7CisgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgdG90
YWxTaXplOyArK2kpCisgICAgICAgIHNwbGl0RXh0TmFtZXMuYWRkKGV4dE5hbWVzW2ldKTsKKyAg
ICBleHROYW1lcy5jbGVhcigpOworfQorCitib29sIEdMUGxhdGZvcm1Db250ZXh0OjpzdXBwb3J0
c0dMRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBzdGF0aWMgSGFzaFNldDxT
dHJpbmc+IHN1cHBvcnRlZEV4dGVuc2lvbnM7CisgICAgc3RhdGljIGJvb2wgcmV0cmlldmVkRXh0
ZW5zaW9ucyA9IGZhbHNlOworCisgICAgaWYgKCFyZXRyaWV2ZWRFeHRlbnNpb25zKSB7CisgICAg
ICAgIHJldHJpZXZlZEV4dGVuc2lvbnMgPSB0cnVlOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9u
c1N0cmluZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KDo6Z2xHZXRTdHJpbmcoR0xf
RVhURU5TSU9OUykpOworICAgICAgICBzcGxpdEFuZFN0b3JlRXh0ZW5zaW9uTmFtZXMoc3VwcG9y
dGVkRXh0ZW5zaW9ucywgZXh0ZW5zaW9uc1N0cmluZyk7CisgICAgfQorCisgICAgaWYgKHN1cHBv
cnRlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgVVNFKEVHTCkKK2Jvb2wgR0xQbGF0Zm9ybUNvbnRl
eHQ6OnN1cHBvcnRzRUdMRXh0ZW5zaW9uKEVHTERpc3BsYXkgZGlzcGxheSwgY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gc3VwcG9ydGVkRXh0ZW5zaW9u
czsKKyAgICBzdGF0aWMgYm9vbCByZXRyaWV2ZWRFeHRlbnNpb25zID0gZmFsc2U7CisKKyAgICBp
ZiAoIXJldHJpZXZlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05P
X0RJU1BMQVkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0cmlldmVk
RXh0ZW5zaW9ucyA9IHRydWU7CisgICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VY
VEVOU0lPTlMpKTsKKyAgICAgICAgc3BsaXRBbmRTdG9yZUV4dGVuc2lvbk5hbWVzKHN1cHBvcnRl
ZEV4dGVuc2lvbnMsIGV4dGVuc2lvbnNTdHJpbmcpOworICAgIH0KKworICAgIGlmIChzdXBwb3J0
ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdMWCkKK2Jvb2wgR0xQbGF0Zm9y
bUNvbnRleHQ6OnN1cHBvcnRzR0xYRXh0ZW5zaW9uKERpc3BsYXkqIGRpc3BsYXksIGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IHN1cHBvcnRlZEV4dGVu
c2lvbnM7CisgICAgc3RhdGljIGJvb2wgcmV0cmlldmVkRXh0ZW5zaW9ucyA9IGZhbHNlOworCisg
ICAgaWYgKCFyZXRyaWV2ZWRFeHRlbnNpb25zKSB7CisgICAgICAgIGlmICghZGlzcGxheSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXRyaWV2ZWRFeHRlbnNpb25zID0g
dHJ1ZTsKKyAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBnbFhRdWVyeUV4dGVuc2lv
bnNTdHJpbmcoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSk7CisgICAgICAgIHNwbGl0
QW5kU3RvcmVFeHRlbnNpb25OYW1lcyhzdXBwb3J0ZWRFeHRlbnNpb25zLCBleHRlbnNpb25zU3Ry
aW5nKTsKKyAgICB9CisKKyAgICBpZiAoc3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYK
KwogR0xQbGF0Zm9ybUNvbnRleHQ6OkdMUGxhdGZvcm1Db250ZXh0KCkKICAgICA6IG1fY29udGV4
dEhhbmRsZSgwKQogICAgICwgbV9yZXNldExvc3RDb250ZXh0KGZhbHNlKQpAQCAtMTE3LDIyICsx
ODgsMjYgQEAgYm9vbCBHTFBsYXRmb3JtQ29udGV4dDo6bWFrZUN1cnJlbnQoR0xQbGF0Zm9ybVN1
cmZhY2UqIHN1cmZhY2UpCiAgICAgZWxzZSBpZiAocGxhdGZvcm1NYWtlQ3VycmVudChzdXJmYWNl
KSkKICAgICAgICAgbV9jdXJyZW50Q29udGV4dCA9IHRoaXM7CiAKLSAgICBpZiAobV9yZXNldExv
c3RDb250ZXh0ICYmIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQikgewotICAgICAgICBHTGVu
dW0gc3RhdHVzID0gZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7Ci0KLSAgICAgICAgc3dp
dGNoIChzdGF0dXMpIHsKLSAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfTk9fRVJST1I6Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfR1VJTFRZX0NP
TlRFWFRfUkVTRVQ6Ci0gICAgICAgICAgICBtX2NvbnRleHRMb3N0ID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBMQVRGT1JNQ09OVEVYVF9JTk5PQ0VOVF9DT05URVhU
X1JFU0VUOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhU
X1VOS05PV05fQ09OVEVYVF9SRVNFVDoKLSAgICAgICAgICAgIG1fY29udGV4dExvc3QgPSB0cnVl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVh
azsKKyAgICBpZiAobV9yZXNldExvc3RDb250ZXh0KSB7CisgICAgICAgIGluaXRpYWxpemVSZXNl
dFN0YXR1c0V4dGVuc2lvbigpOworCisgICAgICAgIGlmIChnbEdldEdyYXBoaWNzUmVzZXRTdGF0
dXMpIHsKKyAgICAgICAgICAgIEdMZW51bSBzdGF0dXMgPSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0
dXMoKTsKKworICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgICAgIGNhc2Ug
UExBVEZPUk1DT05URVhUX05PX0VSUk9SOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfR1VJTFRZX0NPTlRFWFRfUkVTRVQ6CisgICAgICAg
ICAgICAgICAgbV9jb250ZXh0TG9zdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFBMQVRGT1JNQ09OVEVYVF9JTk5PQ0VOVF9DT05URVhUX1JFU0VUOgor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRf
VU5LTk9XTl9DT05URVhUX1JFU0VUOgorICAgICAgICAgICAgICAgIG1fY29udGV4dExvc3QgPSB0
cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAt
MTkyLDYgKzI2NywxOSBAQCB2b2lkIEdMUGxhdGZvcm1Db250ZXh0OjpkZXN0cm95KCkKICAgICAg
ICAgbV9jdXJyZW50Q29udGV4dCA9IDA7CiB9CiAKK3ZvaWQgR0xQbGF0Zm9ybUNvbnRleHQ6Omlu
aXRpYWxpemVSZXNldFN0YXR1c0V4dGVuc2lvbigpCit7CisgICAgaWYgKCFnbEdldEdyYXBoaWNz
UmVzZXRTdGF0dXMpIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgICAgIGdsR2V0R3JhcGhp
Y3NSZXNldFN0YXR1cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RB
VFVTRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VY
VCIpKTsKKyNlbGlmIFVTRShFR0wpCisgICAgICAgIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTQVJCUFJPQz4oZWds
R2V0UHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiIpKTsKKyNlbGlmIFVT
RShHTFgpCisgICAgICAgIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTQVJCUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3NB
UkIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImdsR2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQiIpKSk7CisjZW5kaWYKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dMUGxhdGZvcm1Db250ZXh0LmggU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dMUGxhdGZvcm1Db250ZXh0LmgKaW5kZXggMDM1M2RmOC4uYmM5ZGNkMSAxMDA2NDQK
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29u
dGV4dC5oCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0
Zm9ybUNvbnRleHQuaApAQCAtNTEsNiArNTEsMTYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBh
c3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IGNyZWF0ZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlclN0eWxlKTsKIAorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzR0xFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJik7CisKKyNpZiBVU0UoRUdMKQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
RUdMRXh0ZW5zaW9uKEVHTERpc3BsYXksIGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyNpZiBV
U0UoR0xYKQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzR0xYRXh0ZW5zaW9uKERpc3BsYXkqLCBj
b25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB+R0xQbGF0Zm9ybUNvbnRleHQo
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKEdMUGxhdGZvcm1TdXJmYWNlKik7CkBA
IC04NCw2ICs5NCw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fY29udGV4dExvc3Q7CiAKIHBy
aXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplUmVzZXRTdGF0dXNFeHRlbnNpb24oKTsKKyAgICBz
dGF0aWMgdm9pZCBzcGxpdEFuZFN0b3JlRXh0ZW5zaW9uTmFtZXMoSGFzaFNldDxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+
IGNyZWF0ZU9mZlNjcmVlbkNvbnRleHQoKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxHTFBsYXRm
b3JtQ29udGV4dD4gY3JlYXRlQ3VycmVudENvbnRleHRXcmFwcGVyKCk7CiB9OwpkaWZmIC0tZ2l0
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb250ZXh0
LmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29u
dGV4dC5jcHAKaW5kZXggY2UzYjk5YS4uM2MwMmJiNCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb250ZXh0LmNwcAorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbnRleHQuY3BwCkBA
IC01OSwxMiArNTksNyBAQCBzdGF0aWMgYm9vbCBpc1JvYnVzdG5lc3NFeHRTdXBwb3J0ZWQoRUdM
RGlzcGxheSBkaXNwbGF5KQogCiAgICAgaWYgKCFkaWRRdWVyeUZvclJvYnVzdG5lc3NFeHRlbnNp
b24pIHsKICAgICAgICAgZGlkUXVlcnlGb3JSb2J1c3RuZXNzRXh0ZW5zaW9uID0gdHJ1ZTsKLSAg
ICAgICAgU3RyaW5nIHN1cHBvcnRlZEV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUykpOwotCi0gICAg
ICAgIGlmICghc3VwcG9ydGVkRXh0ZW5zaW9ucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHN1
cHBvcnRlZEV4dGVuc2lvbnMuYXBwZW5kKCIgIik7Ci0gICAgICAgICAgICBpc1JvYnVzdG5lc3NF
eHRlbnNpb25TdXBwb3J0ZWQgPSBzdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKCJFR0xfRVhU
X2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MiKTsKLSAgICAgICAgfQorICAgICAgICBpc1JvYnVz
dG5lc3NFeHRlbnNpb25TdXBwb3J0ZWQgPSBHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9ydHNFR0xF
eHRlbnNpb24oZGlzcGxheSwgIkVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIpOwog
ICAgIH0KIAogICAgIHJldHVybiBpc1JvYnVzdG5lc3NFeHRlbnNpb25TdXBwb3J0ZWQ7CkBAIC0x
MDgsOSArMTAzLDE4IEBAIGJvb2wgRUdMT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlhbGl6ZShHTFBs
YXRmb3JtU3VyZmFjZSogc3VyZmFjZSkKICAgICBpZiAoaXNSb2J1c3RuZXNzRXh0U3VwcG9ydGVk
KG1fZGlzcGxheSkpCiAgICAgICAgIG1fY29udGV4dEhhbmRsZSA9IGVnbENyZWF0ZUNvbnRleHQo
bV9kaXNwbGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0Um9idXN0bmVzc0F0dHJp
YnV0ZXMpOwogCi0gICAgaWYgKG1fY29udGV4dEhhbmRsZSAhPSBFR0xfTk9fQ09OVEVYVCkKLSAg
ICAgICAgbV9yZXNldExvc3RDb250ZXh0ID0gdHJ1ZTsKLSAgICBlbHNlCisgICAgaWYgKG1fY29u
dGV4dEhhbmRsZSAhPSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAvLyBUaGUgRUdMX0VYVF9j
cmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIHNwZWMgcmVxdWlyZXMgdGhhdCBhIGNvbnRleHQgY3Jl
YXRlZCB3aXRoCisgICAgICAgIC8vIEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJ
T05fU1RSQVRFR1lfRVhUIGJpdCBzZXQgbXVzdCBhbHNvIHN1cHBvcnQgR0xfRVhUX3JvYnVzdG5l
c3Mgb3IKKyAgICAgICAgLy8gYSB2ZXJzaW9uIG9mIE9wZW5HTCBpbmNvcnBvcmF0aW5nIGVxdWl2
YWxlbnQgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgLy8gVGhlIHNwZWMgYWxzbyBkZWZpbmVzIHNp
bWlsYXIgcmVxdWlyZW1lbnRzIGZvciBhdHRyaWJ1dGUgRUdMX0xPU0VfQ09OVEVYVF9PTl9SRVNF
VF9FWFQuCisgICAgICAgIGlmIChwbGF0Zm9ybU1ha2VDdXJyZW50KHN1cmZhY2UpICYmIChHTFBs
YXRmb3JtQ29udGV4dDo6c3VwcG9ydHNHTEV4dGVuc2lvbigiR0xfRVhUX3JvYnVzdG5lc3MiKSkp
CisgICAgICAgICAgICBtX3Jlc2V0TG9zdENvbnRleHQgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4dEhhbmRsZSk7
CisgICAgfQorCisgICAgaWYgKG1fY29udGV4dEhhbmRsZSA9PSBFR0xfTk9fQ09OVEVYVCkKICAg
ICAgICAgbV9jb250ZXh0SGFuZGxlID0gZWdsQ3JlYXRlQ29udGV4dChtX2Rpc3BsYXksIGNvbmZp
ZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJ1dGVzKTsKIAogICAgIGlmIChtX2NvbnRl
eHRIYW5kbGUgIT0gRUdMX05PX0NPTlRFWFQpCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb250ZXh0LmNwcAppbmRleCA5OTU2
Y2IxLi40OTQyZTU1IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5jcHAKQEAgLTM4LDE1ICszOCwxNSBAQCBz
dGF0aWMgaW50IEF0dHJpYnNbXSA9IHsKICAgICBHTFhfTE9TRV9DT05URVhUX09OX1JFU0VUX0FS
QiwKICAgICAwIH07CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVBUkJFeHRlbnNpb25zKCkKK3N0
YXRpYyB2b2lkIGluaXRpYWxpemVBUkJFeHRlbnNpb25zKERpc3BsYXkqIGRpc3BsYXkpCiB7CiAg
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQogICAgIGlmIChpbml0aWFsaXpl
ZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIGdsWENy
ZWF0ZUNvbnRleHRBdHRyaWJzQVJCID0gcmVpbnRlcnByZXRfY2FzdDxHTFhDUkVBVEVDT05URVhU
QVRUUklCU0FSQlBST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0x1Ynl0ZSo+KCJnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQiIpKSk7CisgICAgaWYgKEdMUGxh
dGZvcm1Db250ZXh0OjpzdXBwb3J0c0dMWEV4dGVuc2lvbihkaXNwbGF5LCAiR0xYX0FSQl9jcmVh
dGVfY29udGV4dF9yb2J1c3RuZXNzIikpCisgICAgICAgIGdsWENyZWF0ZUNvbnRleHRBdHRyaWJz
QVJCID0gcmVpbnRlcnByZXRfY2FzdDxHTFhDUkVBVEVDT05URVhUQVRUUklCU0FSQlBST0M+KGds
WEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhDcmVh
dGVDb250ZXh0QXR0cmlic0FSQiIpKSk7CiB9CiAKIEdMWE9mZlNjcmVlbkNvbnRleHQ6OkdMWE9m
ZlNjcmVlbkNvbnRleHQoKQpAQCAtNjcsMTQgKzY3LDIzIEBAIGJvb2wgR0xYT2ZmU2NyZWVuQ29u
dGV4dDo6aW5pdGlhbGl6ZShHTFBsYXRmb3JtU3VyZmFjZSogc3VyZmFjZSkKICAgICBHTFhGQkNv
bmZpZyBjb25maWcgPSBzdXJmYWNlLT5jb25maWd1cmF0aW9uKCk7CiAKICAgICBpZiAoY29uZmln
KSB7Ci0gICAgICAgIGluaXRpYWxpemVBUkJFeHRlbnNpb25zKCk7CisgICAgICAgIGluaXRpYWxp
emVBUkJFeHRlbnNpb25zKG1fZGlzcGxheSk7CiAKICAgICAgICAgaWYgKGdsWENyZWF0ZUNvbnRl
eHRBdHRyaWJzQVJCKQogICAgICAgICAgICAgbV9jb250ZXh0SGFuZGxlID0gZ2xYQ3JlYXRlQ29u
dGV4dEF0dHJpYnNBUkIobV9kaXNwbGF5LCBjb25maWcsIDAsIHRydWUsIEF0dHJpYnMpOwogCi0g
ICAgICAgIGlmIChtX2NvbnRleHRIYW5kbGUpCi0gICAgICAgICAgICBtX3Jlc2V0TG9zdENvbnRl
eHQgPSB0cnVlOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChtX2NvbnRleHRIYW5kbGUpIHsK
KyAgICAgICAgICAgIC8vIFRoZSBHTFhfQVJCX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3Mgc3Bl
YyByZXF1aXJlcyB0aGF0IGEgY29udGV4dCBjcmVhdGVkIHdpdGgKKyAgICAgICAgICAgIC8vIEdM
WF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfQklUX0FSQiBiaXQgc2V0IG11c3QgYWxzbyBzdXBwb3J0
IEdMX0FSQl9yb2J1c3RuZXNzIG9yCisgICAgICAgICAgICAvLyBhIHZlcnNpb24gb2YgT3BlbkdM
IGluY29ycG9yYXRpbmcgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgLy8g
VGhlIHNwZWMgYWxzbyBkZWZpbmVzIHNpbWlsYXIgcmVxdWlyZW1lbnRzIGZvciBhdHRyaWJ1dGUg
R0xYX0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0FSQi4KKyAgICAgICAgICAg
IGlmIChwbGF0Zm9ybU1ha2VDdXJyZW50KHN1cmZhY2UpICYmIEdMUGxhdGZvcm1Db250ZXh0Ojpz
dXBwb3J0c0dMRXh0ZW5zaW9uKCJHTF9BUkJfcm9idXN0bmVzcyIpKQorICAgICAgICAgICAgICAg
IG1fcmVzZXRMb3N0Q29udGV4dCA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZ2xYRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBtX2NvbnRleHRIYW5kbGUpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFtX2NvbnRleHRIYW5kbGUpCiAgICAgICAgICAgICBtX2Nv
bnRleHRIYW5kbGUgPSBnbFhDcmVhdGVOZXdDb250ZXh0KG1fZGlzcGxheSwgY29uZmlnLCBHTFhf
UkdCQV9UWVBFLCAwLCB0cnVlKTsKIAogICAgICAgICBpZiAobV9jb250ZXh0SGFuZGxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180980</attachid>
            <date>2012-12-31 12:38:18 -0800</date>
            <delta_ts>2013-01-01 04:22:19 -0800</delta_ts>
            <desc>patchv3</desc>
            <filename>extensionsreviewpatch.patch</filename>
            <type>text/plain</type>
            <size>14303</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGUxZjIzMTIuLmE4MzJjMWMgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTEyLTMxICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXSBbV2ViR0xdIE1pbm9yIGNsZWFudXAgaW4gUGxhdGZvcm1Db250ZXh0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGxv
Z2ljIHRvIGNoZWNrIGZvciBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpcyBzY2F0dGVyZWQgaW4gZGlm
ZmVyZW50IGNsYXNzZXMgaS5lIFBsYXRmb3JtQ29udGV4dCwgZWdsY29udGV4dCBldGMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIGFueSBkdXBsaWNhdGUgY29kZSBhbmQgYWRkcyBuZXcg
YXBpIGluIEdMUGxhdGZvcm1Db250ZXh0IHRvIHF1ZXJ5IGZvciBzdXBwb3J0ZWQgR0wsIEVHTCBh
bmQgR0xYIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6Y3Jl
YXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9y
dHNHTEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3Vw
cG9ydHNFR0xFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R0xQbGF0Zm9ybUNvbnRleHQ6
OnN1cHBvcnRzR0xYRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdMUGxhdGZvcm1Db250
ZXh0OjptYWtlQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6
aW5pdGlhbGl6ZVJlc2V0U3RhdHVzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jv
YnVzdG5lc3NFeHRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMT2ZmU2NyZWVuQ29u
dGV4dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUFSQkV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlhbGl6
ZSk6CisKIAogMjAxMi0xMi0zMSAgS29uZGFwYWxseSBLYWx5YW4gIDxrYWx5YW4ua29uZGFwYWxs
eUBpbnRlbC5jb20+CiAKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKaW5kZXggNzk5NTliYS4uODcwZGFj
ZCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBs
YXRmb3JtQ29udGV4dC5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKQEAgLTM4LDI3ICszOCw3NCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNBUkJQUk9D
IGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiA9IDA7CisjaWYgVVNFKE9QRU5HTF9FU18yKQor
c3RhdGljIFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0VYVFBST0MgZ2xHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzID0gMDsKKyNlbHNlCitzdGF0aWMgUEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVT
QVJCUFJPQyBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMgPSAwOworI2VuZGlmCiBzdGF0aWMgR0xQ
bGF0Zm9ybUNvbnRleHQqIG1fY3VycmVudENvbnRleHQgPSAwOwogCi1QYXNzT3duUHRyPEdMUGxh
dGZvcm1Db250ZXh0PiBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ29udGV4dChHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCitQYXNzT3duUHRyPEdMUGxhdGZvcm1D
b250ZXh0PiBjcmVhdGVPZmZTY3JlZW5Db250ZXh0KCkKIHsKLSAgICBpZiAoIWluaXRpYWxpemVP
cGVuR0xTaGltcygpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBVU0UoR0xYKQorICAg
IHJldHVybiBhZG9wdFB0cihuZXcgR0xYT2ZmU2NyZWVuQ29udGV4dCgpKTsKKyNlbGlmIFVTRShF
R0wpCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFR0xPZmZTY3JlZW5Db250ZXh0KCkpOworI2Vu
ZGlmCisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAorUGFzc093blB0cjxHTFBsYXRmb3JtQ29u
dGV4dD4gY3JlYXRlQ3VycmVudENvbnRleHRXcmFwcGVyKCkKK3sKICNpZiBVU0UoR0xYKQotICAg
IGlmICghZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKSB7Ci0gICAgICAgIGdsR2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQiA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VU
U1RBVFVTQVJCUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3NBUkIocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHTHVieXRlKj4oImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiIpKSk7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBHTFhDdXJyZW50Q29udGV4dFdyYXBwZXIoKSk7CisjZWxpZiBVU0UoRUdM
KQorICAgIHJldHVybiBhZG9wdFB0cihuZXcgRUdMQ3VycmVudENvbnRleHRXcmFwcGVyKCkpOwor
I2VuZGlmCisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBzcGxpdEFuZFN0b3JlRXh0
ZW5zaW9uTmFtZXMoSGFzaFNldDxTdHJpbmc+JiBzcGxpdEV4dE5hbWVzLCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbnNTdHJpbmcpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXh0TmFtZXM7CisgICAg
ZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgiICIsIGV4dE5hbWVzKTsKKyAgICB1bnNpZ25lZCBzaXpl
ID0gZXh0TmFtZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCisgICAgICAgIHNwbGl0RXh0TmFtZXMuYWRkKGV4dE5hbWVzW2ldKTsKKyAgICBleHROYW1l
cy5jbGVhcigpOworfQorCit2b2lkIGluaXRpYWxpemVSZXNldFN0YXR1c0V4dGVuc2lvbigpCit7
CisgICAgc3RhdGljIGJvb2wgZGlkSW5pdGlhbGl6ZVJvYnVzdG5lc3NFeHRlbnNpb24gPSBmYWxz
ZTsKKyAgICBpZiAoIWRpZEluaXRpYWxpemVSb2J1c3RuZXNzRXh0ZW5zaW9uKSB7CisgICAgICAg
IGRpZEluaXRpYWxpemVSb2J1c3RuZXNzRXh0ZW5zaW9uID0gdHJ1ZTsKKyNpZiBVU0UoT1BFTkdM
X0VTXzIpCisgICAgICAgIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIpKTsKKyNlbGlmIFVTRShFR0wpCisgICAgICAg
IGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQ
SElDU1JFU0VUU1RBVFVTQVJCUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQiIpKTsKKyNlbGlmIFVTRShHTFgpCisgICAgICAgIGdsR2V0R3JhcGhpY3NS
ZXNldFN0YXR1cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVT
QVJCUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3NBUkIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVi
eXRlKj4oImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiIpKSk7CisjZW5kaWYKICAgICB9Cit9
CisKK1Bhc3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IEdMUGxhdGZvcm1Db250ZXh0OjpjcmVh
dGVDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK3sK
KyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKICAgICBzd2l0Y2ggKHJlbmRlclN0
eWxlKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgotICAg
ICAgICBpZiAoT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBnbHhDb250ZXh0ID0gR0xQbGF0Zm9y
bUNvbnRleHQ6OmNyZWF0ZU9mZlNjcmVlbkNvbnRleHQoKSkKKyAgICAgICAgaWYgKE93blB0cjxH
TFBsYXRmb3JtQ29udGV4dD4gZ2x4Q29udGV4dCA9IGNyZWF0ZU9mZlNjcmVlbkNvbnRleHQoKSkK
ICAgICAgICAgICAgIHJldHVybiBnbHhDb250ZXh0LnJlbGVhc2UoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyVG9DdXJyZW50R0xDb250ZXh0Ogot
ICAgICAgICBpZiAoT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBnbHhDb250ZXh0ID0gR0xQbGF0
Zm9ybUNvbnRleHQ6OmNyZWF0ZUN1cnJlbnRDb250ZXh0V3JhcHBlcigpKQorICAgICAgICBpZiAo
T3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBnbHhDb250ZXh0ID0gY3JlYXRlQ3VycmVudENvbnRl
eHRXcmFwcGVyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2x4Q29udGV4dC5yZWxlYXNlKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93OgpAQCAtNjksMjcgKzExNiw2NiBAQCBQYXNzT3duUHRyPEdMUGxhdGZvcm1D
b250ZXh0PiBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ29udGV4dChHcmFwaGljc0NvbnRleHQz
RAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0
PiBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlT2ZmU2NyZWVuQ29udGV4dCgpCitib29sIEdMUGxh
dGZvcm1Db250ZXh0OjpzdXBwb3J0c0dMRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
LSNpZiBVU0UoR0xYKQotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xYT2ZmU2NyZWVuQ29udGV4
dCgpKTsKLSNlbGlmIFVTRShFR0wpCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFR0xPZmZTY3Jl
ZW5Db250ZXh0KCkpOwotI2VuZGlmCisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBzdXBwb3J0
ZWRFeHRlbnNpb25zOworICAgIHN0YXRpYyBib29sIHJldHJpZXZlZEV4dGVuc2lvbnMgPSBmYWxz
ZTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghcmV0cmlldmVkRXh0ZW5zaW9ucykg
eworICAgICAgICByZXRyaWV2ZWRFeHRlbnNpb25zID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nIGV4
dGVuc2lvbnNTdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPig6OmdsR2V0U3Ry
aW5nKEdMX0VYVEVOU0lPTlMpKTsKKyAgICAgICAgc3BsaXRBbmRTdG9yZUV4dGVuc2lvbk5hbWVz
KHN1cHBvcnRlZEV4dGVuc2lvbnMsIGV4dGVuc2lvbnNTdHJpbmcpOworICAgIH0KKworICAgIGlm
IChzdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc093blB0cjxHTFBsYXRmb3JtQ29udGV4
dD4gR0xQbGF0Zm9ybUNvbnRleHQ6OmNyZWF0ZUN1cnJlbnRDb250ZXh0V3JhcHBlcigpCisjaWYg
VVNFKEVHTCkKK2Jvb2wgR0xQbGF0Zm9ybUNvbnRleHQ6OnN1cHBvcnRzRUdMRXh0ZW5zaW9uKEVH
TERpc3BsYXkgZGlzcGxheSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotI2lmIFVTRShHTFgpCi0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTFhDdXJyZW50Q29udGV4dFdyYXBwZXIoKSk7Ci0jZWxp
ZiBVU0UoRUdMKQotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRUdMQ3VycmVudENvbnRleHRXcmFw
cGVyKCkpOworICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gc3VwcG9ydGVkRXh0ZW5zaW9uczsK
KyAgICBzdGF0aWMgYm9vbCByZXRyaWV2ZWRFeHRlbnNpb25zID0gZmFsc2U7CisKKyAgICBpZiAo
IXJldHJpZXZlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJ
U1BMQVkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0cmlldmVkRXh0
ZW5zaW9ucyA9IHRydWU7CisgICAgICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVO
U0lPTlMpKTsKKyAgICAgICAgc3BsaXRBbmRTdG9yZUV4dGVuc2lvbk5hbWVzKHN1cHBvcnRlZEV4
dGVuc2lvbnMsIGV4dGVuc2lvbnNTdHJpbmcpOworICAgIH0KKworICAgIGlmIChzdXBwb3J0ZWRF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KICNlbmRpZgogCi0gICAgcmV0dXJuIG51bGxwdHI7CisjaWYgVVNFKEdM
WCkKK2Jvb2wgR0xQbGF0Zm9ybUNvbnRleHQ6OnN1cHBvcnRzR0xYRXh0ZW5zaW9uKERpc3BsYXkq
IGRpc3BsYXksIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJp
bmc+IHN1cHBvcnRlZEV4dGVuc2lvbnM7CisgICAgc3RhdGljIGJvb2wgcmV0cmlldmVkRXh0ZW5z
aW9ucyA9IGZhbHNlOworCisgICAgaWYgKCFyZXRyaWV2ZWRFeHRlbnNpb25zKSB7CisgICAgICAg
IGlmICghZGlzcGxheSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXRy
aWV2ZWRFeHRlbnNpb25zID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcg
PSBnbFhRdWVyeUV4dGVuc2lvbnNTdHJpbmcoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSk7CisgICAgICAgIHNwbGl0QW5kU3RvcmVFeHRlbnNpb25OYW1lcyhzdXBwb3J0ZWRFeHRlbnNp
b25zLCBleHRlbnNpb25zU3RyaW5nKTsKKyAgICB9CisKKyAgICBpZiAoc3VwcG9ydGVkRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CisjZW5kaWYKIAogR0xQbGF0Zm9ybUNvbnRleHQ6OkdMUGxhdGZvcm1Db250ZXh0
KCkKICAgICA6IG1fY29udGV4dEhhbmRsZSgwKQpAQCAtMTE3LDIyICsyMDMsMjYgQEAgYm9vbCBH
TFBsYXRmb3JtQ29udGV4dDo6bWFrZUN1cnJlbnQoR0xQbGF0Zm9ybVN1cmZhY2UqIHN1cmZhY2Up
CiAgICAgZWxzZSBpZiAocGxhdGZvcm1NYWtlQ3VycmVudChzdXJmYWNlKSkKICAgICAgICAgbV9j
dXJyZW50Q29udGV4dCA9IHRoaXM7CiAKLSAgICBpZiAobV9yZXNldExvc3RDb250ZXh0ICYmIGds
R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQikgewotICAgICAgICBHTGVudW0gc3RhdHVzID0gZ2xH
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsK
LSAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfTk9fRVJST1I6Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfR1VJTFRZX0NPTlRFWFRfUkVTRVQ6Ci0g
ICAgICAgICAgICBtX2NvbnRleHRMb3N0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFBMQVRGT1JNQ09OVEVYVF9JTk5PQ0VOVF9DT05URVhUX1JFU0VUOgotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhUX1VOS05PV05fQ09OVEVY
VF9SRVNFVDoKLSAgICAgICAgICAgIG1fY29udGV4dExvc3QgPSB0cnVlOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBpZiAobV9y
ZXNldExvc3RDb250ZXh0KSB7CisgICAgICAgIGluaXRpYWxpemVSZXNldFN0YXR1c0V4dGVuc2lv
bigpOworCisgICAgICAgIGlmIChnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMpIHsKKyAgICAgICAg
ICAgIEdMZW51bSBzdGF0dXMgPSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKKworICAgICAg
ICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhU
X05PX0VSUk9SOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQTEFU
Rk9STUNPTlRFWFRfR1VJTFRZX0NPTlRFWFRfUkVTRVQ6CisgICAgICAgICAgICAgICAgbV9jb250
ZXh0TG9zdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFBMQVRGT1JNQ09OVEVYVF9JTk5PQ0VOVF9DT05URVhUX1JFU0VUOgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfVU5LTk9XTl9DT05URVhU
X1JFU0VUOgorICAgICAgICAgICAgICAgIG1fY29udGV4dExvc3QgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5oIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5oCmlu
ZGV4IDAzNTNkZjguLjNlMTM2MjQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuaAorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1Db250ZXh0LmgKQEAgLTUxLDYgKzUxLDE2
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBj
cmVhdGVDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAKKyAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0dMRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisjaWYgVVNFKEVH
TCkKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0VHTEV4dGVuc2lvbihFR0xEaXNwbGF5LCBjb25z
dCBTdHJpbmcmKTsKKyNlbmRpZgorCisjaWYgVVNFKEdMWCkKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c0dMWEV4dGVuc2lvbihEaXNwbGF5KiwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwogICAg
IHZpcnR1YWwgfkdMUGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlh
bGl6ZShHTFBsYXRmb3JtU3VyZmFjZSopOwpAQCAtODIsMTAgKzkyLDYgQEAgcHJvdGVjdGVkOgog
ICAgIFBsYXRmb3JtQ29udGV4dCBtX2NvbnRleHRIYW5kbGU7CiAgICAgYm9vbCBtX3Jlc2V0TG9z
dENvbnRleHQ7CiAgICAgYm9vbCBtX2NvbnRleHRMb3N0OwotCi1wcml2YXRlOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBjcmVhdGVPZmZTY3JlZW5Db250ZXh0KCk7
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IGNyZWF0ZUN1cnJlbnRD
b250ZXh0V3JhcHBlcigpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb250ZXh0
LmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29u
dGV4dC5jcHAKaW5kZXggY2UzYjk5YS4uM2MwMmJiNCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb250ZXh0LmNwcAorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbnRleHQuY3BwCkBA
IC01OSwxMiArNTksNyBAQCBzdGF0aWMgYm9vbCBpc1JvYnVzdG5lc3NFeHRTdXBwb3J0ZWQoRUdM
RGlzcGxheSBkaXNwbGF5KQogCiAgICAgaWYgKCFkaWRRdWVyeUZvclJvYnVzdG5lc3NFeHRlbnNp
b24pIHsKICAgICAgICAgZGlkUXVlcnlGb3JSb2J1c3RuZXNzRXh0ZW5zaW9uID0gdHJ1ZTsKLSAg
ICAgICAgU3RyaW5nIHN1cHBvcnRlZEV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUykpOwotCi0gICAg
ICAgIGlmICghc3VwcG9ydGVkRXh0ZW5zaW9ucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHN1
cHBvcnRlZEV4dGVuc2lvbnMuYXBwZW5kKCIgIik7Ci0gICAgICAgICAgICBpc1JvYnVzdG5lc3NF
eHRlbnNpb25TdXBwb3J0ZWQgPSBzdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKCJFR0xfRVhU
X2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MiKTsKLSAgICAgICAgfQorICAgICAgICBpc1JvYnVz
dG5lc3NFeHRlbnNpb25TdXBwb3J0ZWQgPSBHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9ydHNFR0xF
eHRlbnNpb24oZGlzcGxheSwgIkVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIpOwog
ICAgIH0KIAogICAgIHJldHVybiBpc1JvYnVzdG5lc3NFeHRlbnNpb25TdXBwb3J0ZWQ7CkBAIC0x
MDgsOSArMTAzLDE4IEBAIGJvb2wgRUdMT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlhbGl6ZShHTFBs
YXRmb3JtU3VyZmFjZSogc3VyZmFjZSkKICAgICBpZiAoaXNSb2J1c3RuZXNzRXh0U3VwcG9ydGVk
KG1fZGlzcGxheSkpCiAgICAgICAgIG1fY29udGV4dEhhbmRsZSA9IGVnbENyZWF0ZUNvbnRleHQo
bV9kaXNwbGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0Um9idXN0bmVzc0F0dHJp
YnV0ZXMpOwogCi0gICAgaWYgKG1fY29udGV4dEhhbmRsZSAhPSBFR0xfTk9fQ09OVEVYVCkKLSAg
ICAgICAgbV9yZXNldExvc3RDb250ZXh0ID0gdHJ1ZTsKLSAgICBlbHNlCisgICAgaWYgKG1fY29u
dGV4dEhhbmRsZSAhPSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAvLyBUaGUgRUdMX0VYVF9j
cmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIHNwZWMgcmVxdWlyZXMgdGhhdCBhIGNvbnRleHQgY3Jl
YXRlZCB3aXRoCisgICAgICAgIC8vIEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJ
T05fU1RSQVRFR1lfRVhUIGJpdCBzZXQgbXVzdCBhbHNvIHN1cHBvcnQgR0xfRVhUX3JvYnVzdG5l
c3Mgb3IKKyAgICAgICAgLy8gYSB2ZXJzaW9uIG9mIE9wZW5HTCBpbmNvcnBvcmF0aW5nIGVxdWl2
YWxlbnQgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgLy8gVGhlIHNwZWMgYWxzbyBkZWZpbmVzIHNp
bWlsYXIgcmVxdWlyZW1lbnRzIGZvciBhdHRyaWJ1dGUgRUdMX0xPU0VfQ09OVEVYVF9PTl9SRVNF
VF9FWFQuCisgICAgICAgIGlmIChwbGF0Zm9ybU1ha2VDdXJyZW50KHN1cmZhY2UpICYmIChHTFBs
YXRmb3JtQ29udGV4dDo6c3VwcG9ydHNHTEV4dGVuc2lvbigiR0xfRVhUX3JvYnVzdG5lc3MiKSkp
CisgICAgICAgICAgICBtX3Jlc2V0TG9zdENvbnRleHQgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4dEhhbmRsZSk7
CisgICAgfQorCisgICAgaWYgKG1fY29udGV4dEhhbmRsZSA9PSBFR0xfTk9fQ09OVEVYVCkKICAg
ICAgICAgbV9jb250ZXh0SGFuZGxlID0gZWdsQ3JlYXRlQ29udGV4dChtX2Rpc3BsYXksIGNvbmZp
ZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJ1dGVzKTsKIAogICAgIGlmIChtX2NvbnRl
eHRIYW5kbGUgIT0gRUdMX05PX0NPTlRFWFQpCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb250ZXh0LmNwcAppbmRleCA5OTU2
Y2IxLi40OTQyZTU1IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5jcHAKQEAgLTM4LDE1ICszOCwxNSBAQCBz
dGF0aWMgaW50IEF0dHJpYnNbXSA9IHsKICAgICBHTFhfTE9TRV9DT05URVhUX09OX1JFU0VUX0FS
QiwKICAgICAwIH07CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVBUkJFeHRlbnNpb25zKCkKK3N0
YXRpYyB2b2lkIGluaXRpYWxpemVBUkJFeHRlbnNpb25zKERpc3BsYXkqIGRpc3BsYXkpCiB7CiAg
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQogICAgIGlmIChpbml0aWFsaXpl
ZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIGdsWENy
ZWF0ZUNvbnRleHRBdHRyaWJzQVJCID0gcmVpbnRlcnByZXRfY2FzdDxHTFhDUkVBVEVDT05URVhU
QVRUUklCU0FSQlBST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0x1Ynl0ZSo+KCJnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQiIpKSk7CisgICAgaWYgKEdMUGxh
dGZvcm1Db250ZXh0OjpzdXBwb3J0c0dMWEV4dGVuc2lvbihkaXNwbGF5LCAiR0xYX0FSQl9jcmVh
dGVfY29udGV4dF9yb2J1c3RuZXNzIikpCisgICAgICAgIGdsWENyZWF0ZUNvbnRleHRBdHRyaWJz
QVJCID0gcmVpbnRlcnByZXRfY2FzdDxHTFhDUkVBVEVDT05URVhUQVRUUklCU0FSQlBST0M+KGds
WEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhDcmVh
dGVDb250ZXh0QXR0cmlic0FSQiIpKSk7CiB9CiAKIEdMWE9mZlNjcmVlbkNvbnRleHQ6OkdMWE9m
ZlNjcmVlbkNvbnRleHQoKQpAQCAtNjcsMTQgKzY3LDIzIEBAIGJvb2wgR0xYT2ZmU2NyZWVuQ29u
dGV4dDo6aW5pdGlhbGl6ZShHTFBsYXRmb3JtU3VyZmFjZSogc3VyZmFjZSkKICAgICBHTFhGQkNv
bmZpZyBjb25maWcgPSBzdXJmYWNlLT5jb25maWd1cmF0aW9uKCk7CiAKICAgICBpZiAoY29uZmln
KSB7Ci0gICAgICAgIGluaXRpYWxpemVBUkJFeHRlbnNpb25zKCk7CisgICAgICAgIGluaXRpYWxp
emVBUkJFeHRlbnNpb25zKG1fZGlzcGxheSk7CiAKICAgICAgICAgaWYgKGdsWENyZWF0ZUNvbnRl
eHRBdHRyaWJzQVJCKQogICAgICAgICAgICAgbV9jb250ZXh0SGFuZGxlID0gZ2xYQ3JlYXRlQ29u
dGV4dEF0dHJpYnNBUkIobV9kaXNwbGF5LCBjb25maWcsIDAsIHRydWUsIEF0dHJpYnMpOwogCi0g
ICAgICAgIGlmIChtX2NvbnRleHRIYW5kbGUpCi0gICAgICAgICAgICBtX3Jlc2V0TG9zdENvbnRl
eHQgPSB0cnVlOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChtX2NvbnRleHRIYW5kbGUpIHsK
KyAgICAgICAgICAgIC8vIFRoZSBHTFhfQVJCX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3Mgc3Bl
YyByZXF1aXJlcyB0aGF0IGEgY29udGV4dCBjcmVhdGVkIHdpdGgKKyAgICAgICAgICAgIC8vIEdM
WF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfQklUX0FSQiBiaXQgc2V0IG11c3QgYWxzbyBzdXBwb3J0
IEdMX0FSQl9yb2J1c3RuZXNzIG9yCisgICAgICAgICAgICAvLyBhIHZlcnNpb24gb2YgT3BlbkdM
IGluY29ycG9yYXRpbmcgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgLy8g
VGhlIHNwZWMgYWxzbyBkZWZpbmVzIHNpbWlsYXIgcmVxdWlyZW1lbnRzIGZvciBhdHRyaWJ1dGUg
R0xYX0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0FSQi4KKyAgICAgICAgICAg
IGlmIChwbGF0Zm9ybU1ha2VDdXJyZW50KHN1cmZhY2UpICYmIEdMUGxhdGZvcm1Db250ZXh0Ojpz
dXBwb3J0c0dMRXh0ZW5zaW9uKCJHTF9BUkJfcm9idXN0bmVzcyIpKQorICAgICAgICAgICAgICAg
IG1fcmVzZXRMb3N0Q29udGV4dCA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZ2xYRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBtX2NvbnRleHRIYW5kbGUpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFtX2NvbnRleHRIYW5kbGUpCiAgICAgICAgICAgICBtX2Nv
bnRleHRIYW5kbGUgPSBnbFhDcmVhdGVOZXdDb250ZXh0KG1fZGlzcGxheSwgY29uZmlnLCBHTFhf
UkdCQV9UWVBFLCAwLCB0cnVlKTsKIAogICAgICAgICBpZiAobV9jb250ZXh0SGFuZGxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180988</attachid>
            <date>2013-01-01 04:22:19 -0800</date>
            <delta_ts>2013-01-02 08:47:48 -0800</delta_ts>
            <desc>patchv4</desc>
            <filename>extensionsreview3.patch</filename>
            <type>text/plain</type>
            <size>14063</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGUxZjIzMTIuLmE4MzJjMWMgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTEyLTMxICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXSBbV2ViR0xdIE1pbm9yIGNsZWFudXAgaW4gUGxhdGZvcm1Db250ZXh0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGxv
Z2ljIHRvIGNoZWNrIGZvciBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpcyBzY2F0dGVyZWQgaW4gZGlm
ZmVyZW50IGNsYXNzZXMgaS5lIFBsYXRmb3JtQ29udGV4dCwgZWdsY29udGV4dCBldGMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIGFueSBkdXBsaWNhdGUgY29kZSBhbmQgYWRkcyBuZXcg
YXBpIGluIEdMUGxhdGZvcm1Db250ZXh0IHRvIHF1ZXJ5IGZvciBzdXBwb3J0ZWQgR0wsIEVHTCBh
bmQgR0xYIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6Y3Jl
YXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9y
dHNHTEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6c3Vw
cG9ydHNFR0xFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R0xQbGF0Zm9ybUNvbnRleHQ6
OnN1cHBvcnRzR0xYRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdMUGxhdGZvcm1Db250
ZXh0OjptYWtlQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTFBsYXRmb3JtQ29udGV4dDo6
aW5pdGlhbGl6ZVJlc2V0U3RhdHVzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jv
YnVzdG5lc3NFeHRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMT2ZmU2NyZWVuQ29u
dGV4dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUFSQkV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlhbGl6
ZSk6CisKIAogMjAxMi0xMi0zMSAgS29uZGFwYWxseSBLYWx5YW4gIDxrYWx5YW4ua29uZGFwYWxs
eUBpbnRlbC5jb20+CiAKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKaW5kZXggNzk5NTliYS4uNTkyM2Q2
NiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBs
YXRmb3JtQ29udGV4dC5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKQEAgLTM4LDI3ICszOCw3NyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNBUkJQUk9D
IGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiA9IDA7CisjaWYgVVNFKE9QRU5HTF9FU18yKQor
c3RhdGljIFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0VYVFBST0MgZ2xHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzID0gMDsKKyNlbHNlCitzdGF0aWMgUEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVT
QVJCUFJPQyBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMgPSAwOworI2VuZGlmCiBzdGF0aWMgR0xQ
bGF0Zm9ybUNvbnRleHQqIG1fY3VycmVudENvbnRleHQgPSAwOwogCi1QYXNzT3duUHRyPEdMUGxh
dGZvcm1Db250ZXh0PiBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ29udGV4dChHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCitzdGF0aWMgUGFzc093blB0cjxHTFBs
YXRmb3JtQ29udGV4dD4gY3JlYXRlT2ZmU2NyZWVuQ29udGV4dCgpCiB7Ci0gICAgaWYgKCFpbml0
aWFsaXplT3BlbkdMU2hpbXMoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYgVVNFKEdM
WCkKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMWE9mZlNjcmVlbkNvbnRleHQoKSk7CisjZWxp
ZiBVU0UoRUdMKQorICAgIHJldHVybiBhZG9wdFB0cihuZXcgRUdMT2ZmU2NyZWVuQ29udGV4dCgp
KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CiAKK3N0YXRpYyBQYXNzT3duUHRy
PEdMUGxhdGZvcm1Db250ZXh0PiBjcmVhdGVDdXJyZW50Q29udGV4dFdyYXBwZXIoKQorewogI2lm
IFVTRShHTFgpCi0gICAgaWYgKCFnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpIHsKLSAgICAg
ICAgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdF
VEdSQVBISUNTUkVTRVRTVEFUVVNBUkJQUk9DPihnbFhHZXRQcm9jQWRkcmVzc0FSQihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCIikp
KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMWEN1cnJlbnRDb250ZXh0V3JhcHBlcigpKTsK
KyNlbGlmIFVTRShFR0wpCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFR0xDdXJyZW50Q29udGV4
dFdyYXBwZXIoKSk7CisjZW5kaWYKKworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
SGFzaFNldDxTdHJpbmc+IHBhcnNlRXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNT
dHJpbmcpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXh0TmFtZXM7CisgICAgZXh0ZW5zaW9uc1N0
cmluZy5zcGxpdCgiICIsIGV4dE5hbWVzKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gc3BsaXRFeHRO
YW1lczsKKyAgICB1bnNpZ25lZCBzaXplID0gZXh0TmFtZXMuc2l6ZSgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHNwbGl0RXh0TmFtZXMuYWRkKGV4
dE5hbWVzW2ldKTsKKyAgICBleHROYW1lcy5jbGVhcigpOworCisgICAgcmV0dXJuIHNwbGl0RXh0
TmFtZXM7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVSZXNldFN0YXR1c0V4dGVuc2lvbigpCit7
CisgICAgc3RhdGljIGJvb2wgcmVzb2x2ZWRSb2J1c3RuZXNzRXh0ZW5zaW9uID0gZmFsc2U7Cisg
ICAgaWYgKCFyZXNvbHZlZFJvYnVzdG5lc3NFeHRlbnNpb24pIHsKKyAgICAgICAgcmVzb2x2ZWRS
b2J1c3RuZXNzRXh0ZW5zaW9uID0gdHJ1ZTsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgICAg
IGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQ
SElDU1JFU0VUU1RBVFVTRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0VYVCIpKTsKKyNlbGlmIFVTRShFR0wpCisgICAgICAgIGdsR2V0R3JhcGhpY3NS
ZXNldFN0YXR1cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVT
QVJCUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiIp
KTsKKyNlbGlmIFVTRShHTFgpCisgICAgICAgIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1cyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTQVJCUFJPQz4oZ2xYR2V0
UHJvY0FkZHJlc3NBUkIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImdsR2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQiIpKSk7CisjZW5kaWYKICAgICB9Cit9CisKK1Bhc3NPd25QdHI8
R0xQbGF0Zm9ybUNvbnRleHQ+IEdMUGxhdGZvcm1Db250ZXh0OjpjcmVhdGVDb250ZXh0KEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK3sKKyNpZiAhVVNFKE9QRU5H
TF9FU18yKQorICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOwogI2VuZGlmCiAKICAgICBzd2l0Y2ggKHJlbmRlclN0eWxlKSB7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgotICAgICAgICBpZiAoT3duUHRy
PEdMUGxhdGZvcm1Db250ZXh0PiBnbHhDb250ZXh0ID0gR0xQbGF0Zm9ybUNvbnRleHQ6OmNyZWF0
ZU9mZlNjcmVlbkNvbnRleHQoKSkKKyAgICAgICAgaWYgKE93blB0cjxHTFBsYXRmb3JtQ29udGV4
dD4gZ2x4Q29udGV4dCA9IGNyZWF0ZU9mZlNjcmVlbkNvbnRleHQoKSkKICAgICAgICAgICAgIHJl
dHVybiBnbHhDb250ZXh0LnJlbGVhc2UoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyVG9DdXJyZW50R0xDb250ZXh0OgotICAgICAgICBpZiAoT3du
UHRyPEdMUGxhdGZvcm1Db250ZXh0PiBnbHhDb250ZXh0ID0gR0xQbGF0Zm9ybUNvbnRleHQ6OmNy
ZWF0ZUN1cnJlbnRDb250ZXh0V3JhcHBlcigpKQorICAgICAgICBpZiAoT3duUHRyPEdMUGxhdGZv
cm1Db250ZXh0PiBnbHhDb250ZXh0ID0gY3JlYXRlQ3VycmVudENvbnRleHRXcmFwcGVyKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZ2x4Q29udGV4dC5yZWxlYXNlKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OgpA
QCAtNjksMjcgKzExOSw2MCBAQCBQYXNzT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBHTFBsYXRm
b3JtQ29udGV4dDo6Y3JlYXRlQ29udGV4dChHcmFwaGljc0NvbnRleHQzRAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBHTFBsYXRmb3JtQ29u
dGV4dDo6Y3JlYXRlT2ZmU2NyZWVuQ29udGV4dCgpCitib29sIEdMUGxhdGZvcm1Db250ZXh0Ojpz
dXBwb3J0c0dMRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSNpZiBVU0UoR0xYKQot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xYT2ZmU2NyZWVuQ29udGV4dCgpKTsKLSNlbGlmIFVT
RShFR0wpCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFR0xPZmZTY3JlZW5Db250ZXh0KCkpOwot
I2VuZGlmCisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBzdXBwb3J0ZWRFeHRlbnNpb25zOwog
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFzdXBwb3J0ZWRFeHRlbnNpb25zLnNpemUo
KSkgeworICAgICAgICBTdHJpbmcgcmF3RXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KDo6Z2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpOworICAgICAgICBzdXBwb3J0
ZWRFeHRlbnNpb25zID0gcGFyc2VFeHRlbnNpb25zKHJhd0V4dGVuc2lvbnMpOworICAgIH0KKwor
ICAgIGlmIChzdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc093blB0cjxHTFBsYXRmb3Jt
Q29udGV4dD4gR0xQbGF0Zm9ybUNvbnRleHQ6OmNyZWF0ZUN1cnJlbnRDb250ZXh0V3JhcHBlcigp
CisjaWYgVVNFKEVHTCkKK2Jvb2wgR0xQbGF0Zm9ybUNvbnRleHQ6OnN1cHBvcnRzRUdMRXh0ZW5z
aW9uKEVHTERpc3BsYXkgZGlzcGxheSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotI2lmIFVTRShH
TFgpCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTFhDdXJyZW50Q29udGV4dFdyYXBwZXIoKSk7
Ci0jZWxpZiBVU0UoRUdMKQotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRUdMQ3VycmVudENvbnRl
eHRXcmFwcGVyKCkpOworICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gc3VwcG9ydGVkRXh0ZW5z
aW9uczsKKworICAgIGlmICghc3VwcG9ydGVkRXh0ZW5zaW9ucy5zaXplKCkpIHsKKyAgICAgICAg
aWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgU3RyaW5nIHJhd0V4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUykpOworICAgICAg
ICBzdXBwb3J0ZWRFeHRlbnNpb25zID0gcGFyc2VFeHRlbnNpb25zKHJhd0V4dGVuc2lvbnMpOwor
ICAgIH0KKworICAgIGlmIChzdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KICNlbmRpZgogCi0gICAg
cmV0dXJuIG51bGxwdHI7CisjaWYgVVNFKEdMWCkKK2Jvb2wgR0xQbGF0Zm9ybUNvbnRleHQ6OnN1
cHBvcnRzR0xYRXh0ZW5zaW9uKERpc3BsYXkqIGRpc3BsYXksIGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IHN1cHBvcnRlZEV4dGVuc2lvbnM7CisKKyAg
ICBpZiAoIXN1cHBvcnRlZEV4dGVuc2lvbnMuc2l6ZSgpKSB7CisgICAgICAgIGlmICghZGlzcGxh
eSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBTdHJpbmcgcmF3RXh0ZW5z
aW9ucyA9IGdsWFF1ZXJ5RXh0ZW5zaW9uc1N0cmluZyhkaXNwbGF5LCBEZWZhdWx0U2NyZWVuKGRp
c3BsYXkpKTsKKyAgICAgICAgc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IHBhcnNlRXh0ZW5zaW9ucyhy
YXdFeHRlbnNpb25zKTsKKyAgICB9CisKKyAgICBpZiAoc3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250
YWlucyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9
CisjZW5kaWYKIAogR0xQbGF0Zm9ybUNvbnRleHQ6OkdMUGxhdGZvcm1Db250ZXh0KCkKICAgICA6
IG1fY29udGV4dEhhbmRsZSgwKQpAQCAtMTE3LDIyICsyMDAsMjYgQEAgYm9vbCBHTFBsYXRmb3Jt
Q29udGV4dDo6bWFrZUN1cnJlbnQoR0xQbGF0Zm9ybVN1cmZhY2UqIHN1cmZhY2UpCiAgICAgZWxz
ZSBpZiAocGxhdGZvcm1NYWtlQ3VycmVudChzdXJmYWNlKSkKICAgICAgICAgbV9jdXJyZW50Q29u
dGV4dCA9IHRoaXM7CiAKLSAgICBpZiAobV9yZXNldExvc3RDb250ZXh0ICYmIGdsR2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQikgewotICAgICAgICBHTGVudW0gc3RhdHVzID0gZ2xHZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCk7Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICAgICAg
Y2FzZSBQTEFURk9STUNPTlRFWFRfTk9fRVJST1I6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBQTEFURk9STUNPTlRFWFRfR1VJTFRZX0NPTlRFWFRfUkVTRVQ6Ci0gICAgICAgICAg
ICBtX2NvbnRleHRMb3N0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFBMQVRGT1JNQ09OVEVYVF9JTk5PQ0VOVF9DT05URVhUX1JFU0VUOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhUX1VOS05PV05fQ09OVEVYVF9SRVNFVDoK
LSAgICAgICAgICAgIG1fY29udGV4dExvc3QgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBpZiAobV9yZXNldExvc3RD
b250ZXh0KSB7CisgICAgICAgIHJlc29sdmVSZXNldFN0YXR1c0V4dGVuc2lvbigpOworCisgICAg
ICAgIGlmIChnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMpIHsKKyAgICAgICAgICAgIEdMZW51bSBz
dGF0dXMgPSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKKworICAgICAgICAgICAgc3dpdGNo
IChzdGF0dXMpIHsKKyAgICAgICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhUX05PX0VSUk9SOgor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRf
R1VJTFRZX0NPTlRFWFRfUkVTRVQ6CisgICAgICAgICAgICAgICAgbV9jb250ZXh0TG9zdCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBMQVRGT1JNQ09O
VEVYVF9JTk5PQ0VOVF9DT05URVhUX1JFU0VUOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfVU5LTk9XTl9DT05URVhUX1JFU0VUOgorICAg
ICAgICAgICAgICAgIG1fY29udGV4dExvc3QgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5oIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5oCmluZGV4IDAzNTNkZjgu
LjNlMTM2MjQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR0xQbGF0Zm9ybUNvbnRleHQuaAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dMUGxhdGZvcm1Db250ZXh0LmgKQEAgLTUxLDYgKzUxLDE2IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBjcmVhdGVDb250ZXh0
KEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c0dMRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisjaWYgVVNFKEVHTCkKKyAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0VHTEV4dGVuc2lvbihFR0xEaXNwbGF5LCBjb25zdCBTdHJpbmcmKTsK
KyNlbmRpZgorCisjaWYgVVNFKEdMWCkKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0dMWEV4dGVu
c2lvbihEaXNwbGF5KiwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgfkdM
UGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShHTFBsYXRm
b3JtU3VyZmFjZSopOwpAQCAtODIsMTAgKzkyLDYgQEAgcHJvdGVjdGVkOgogICAgIFBsYXRmb3Jt
Q29udGV4dCBtX2NvbnRleHRIYW5kbGU7CiAgICAgYm9vbCBtX3Jlc2V0TG9zdENvbnRleHQ7CiAg
ICAgYm9vbCBtX2NvbnRleHRMb3N0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdMUGxhdGZvcm1Db250ZXh0PiBjcmVhdGVPZmZTY3JlZW5Db250ZXh0KCk7Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IGNyZWF0ZUN1cnJlbnRDb250ZXh0V3JhcHBl
cigpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb250ZXh0LmNwcCBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5jcHAKaW5k
ZXggY2UzYjk5YS4uM2MwMmJiNCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb250ZXh0LmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbnRleHQuY3BwCkBAIC01OSwxMiArNTks
NyBAQCBzdGF0aWMgYm9vbCBpc1JvYnVzdG5lc3NFeHRTdXBwb3J0ZWQoRUdMRGlzcGxheSBkaXNw
bGF5KQogCiAgICAgaWYgKCFkaWRRdWVyeUZvclJvYnVzdG5lc3NFeHRlbnNpb24pIHsKICAgICAg
ICAgZGlkUXVlcnlGb3JSb2J1c3RuZXNzRXh0ZW5zaW9uID0gdHJ1ZTsKLSAgICAgICAgU3RyaW5n
IHN1cHBvcnRlZEV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihlZ2xR
dWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUykpOwotCi0gICAgICAgIGlmICghc3Vw
cG9ydGVkRXh0ZW5zaW9ucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVu
c2lvbnMuYXBwZW5kKCIgIik7Ci0gICAgICAgICAgICBpc1JvYnVzdG5lc3NFeHRlbnNpb25TdXBw
b3J0ZWQgPSBzdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKCJFR0xfRVhUX2NyZWF0ZV9jb250
ZXh0X3JvYnVzdG5lc3MiKTsKLSAgICAgICAgfQorICAgICAgICBpc1JvYnVzdG5lc3NFeHRlbnNp
b25TdXBwb3J0ZWQgPSBHTFBsYXRmb3JtQ29udGV4dDo6c3VwcG9ydHNFR0xFeHRlbnNpb24oZGlz
cGxheSwgIkVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIpOwogICAgIH0KIAogICAg
IHJldHVybiBpc1JvYnVzdG5lc3NFeHRlbnNpb25TdXBwb3J0ZWQ7CkBAIC0xMDgsOSArMTAzLDE4
IEBAIGJvb2wgRUdMT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlhbGl6ZShHTFBsYXRmb3JtU3VyZmFj
ZSogc3VyZmFjZSkKICAgICBpZiAoaXNSb2J1c3RuZXNzRXh0U3VwcG9ydGVkKG1fZGlzcGxheSkp
CiAgICAgICAgIG1fY29udGV4dEhhbmRsZSA9IGVnbENyZWF0ZUNvbnRleHQobV9kaXNwbGF5LCBj
b25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0Um9idXN0bmVzc0F0dHJpYnV0ZXMpOwogCi0g
ICAgaWYgKG1fY29udGV4dEhhbmRsZSAhPSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgbV9yZXNl
dExvc3RDb250ZXh0ID0gdHJ1ZTsKLSAgICBlbHNlCisgICAgaWYgKG1fY29udGV4dEhhbmRsZSAh
PSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAvLyBUaGUgRUdMX0VYVF9jcmVhdGVfY29udGV4
dF9yb2J1c3RuZXNzIHNwZWMgcmVxdWlyZXMgdGhhdCBhIGNvbnRleHQgY3JlYXRlZCB3aXRoCisg
ICAgICAgIC8vIEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lf
RVhUIGJpdCBzZXQgbXVzdCBhbHNvIHN1cHBvcnQgR0xfRVhUX3JvYnVzdG5lc3Mgb3IKKyAgICAg
ICAgLy8gYSB2ZXJzaW9uIG9mIE9wZW5HTCBpbmNvcnBvcmF0aW5nIGVxdWl2YWxlbnQgZnVuY3Rp
b25hbGl0eS4KKyAgICAgICAgLy8gVGhlIHNwZWMgYWxzbyBkZWZpbmVzIHNpbWlsYXIgcmVxdWly
ZW1lbnRzIGZvciBhdHRyaWJ1dGUgRUdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQuCisgICAg
ICAgIGlmIChwbGF0Zm9ybU1ha2VDdXJyZW50KHN1cmZhY2UpICYmIChHTFBsYXRmb3JtQ29udGV4
dDo6c3VwcG9ydHNHTEV4dGVuc2lvbigiR0xfRVhUX3JvYnVzdG5lc3MiKSkpCisgICAgICAgICAg
ICBtX3Jlc2V0TG9zdENvbnRleHQgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
Z2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4dEhhbmRsZSk7CisgICAgfQorCisg
ICAgaWYgKG1fY29udGV4dEhhbmRsZSA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgbV9jb250
ZXh0SGFuZGxlID0gZWdsQ3JlYXRlQ29udGV4dChtX2Rpc3BsYXksIGNvbmZpZywgRUdMX05PX0NP
TlRFWFQsIGNvbnRleHRBdHRyaWJ1dGVzKTsKIAogICAgIGlmIChtX2NvbnRleHRIYW5kbGUgIT0g
RUdMX05PX0NPTlRFWFQpCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb250ZXh0LmNwcAppbmRleCA5OTU2Y2IxLi40OTQyZTU1
IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L0dMWENvbnRleHQuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9nbHgvR0xYQ29udGV4dC5jcHAKQEAgLTM4LDE1ICszOCwxNSBAQCBzdGF0aWMgaW50IEF0
dHJpYnNbXSA9IHsKICAgICBHTFhfTE9TRV9DT05URVhUX09OX1JFU0VUX0FSQiwKICAgICAwIH07
CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVBUkJFeHRlbnNpb25zKCkKK3N0YXRpYyB2b2lkIGlu
aXRpYWxpemVBUkJFeHRlbnNpb25zKERpc3BsYXkqIGRpc3BsYXkpCiB7CiAgICAgc3RhdGljIGJv
b2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQogICAgIGlmIChpbml0aWFsaXplZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIGdsWENyZWF0ZUNvbnRleHRB
dHRyaWJzQVJCID0gcmVpbnRlcnByZXRfY2FzdDxHTFhDUkVBVEVDT05URVhUQVRUUklCU0FSQlBS
T0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJn
bFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQiIpKSk7CisgICAgaWYgKEdMUGxhdGZvcm1Db250ZXh0
OjpzdXBwb3J0c0dMWEV4dGVuc2lvbihkaXNwbGF5LCAiR0xYX0FSQl9jcmVhdGVfY29udGV4dF9y
b2J1c3RuZXNzIikpCisgICAgICAgIGdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCID0gcmVpbnRl
cnByZXRfY2FzdDxHTFhDUkVBVEVDT05URVhUQVRUUklCU0FSQlBST0M+KGdsWEdldFByb2NBZGRy
ZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhDcmVhdGVDb250ZXh0QXR0
cmlic0FSQiIpKSk7CiB9CiAKIEdMWE9mZlNjcmVlbkNvbnRleHQ6OkdMWE9mZlNjcmVlbkNvbnRl
eHQoKQpAQCAtNjcsMTQgKzY3LDIzIEBAIGJvb2wgR0xYT2ZmU2NyZWVuQ29udGV4dDo6aW5pdGlh
bGl6ZShHTFBsYXRmb3JtU3VyZmFjZSogc3VyZmFjZSkKICAgICBHTFhGQkNvbmZpZyBjb25maWcg
PSBzdXJmYWNlLT5jb25maWd1cmF0aW9uKCk7CiAKICAgICBpZiAoY29uZmlnKSB7Ci0gICAgICAg
IGluaXRpYWxpemVBUkJFeHRlbnNpb25zKCk7CisgICAgICAgIGluaXRpYWxpemVBUkJFeHRlbnNp
b25zKG1fZGlzcGxheSk7CiAKICAgICAgICAgaWYgKGdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJC
KQogICAgICAgICAgICAgbV9jb250ZXh0SGFuZGxlID0gZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNB
UkIobV9kaXNwbGF5LCBjb25maWcsIDAsIHRydWUsIEF0dHJpYnMpOwogCi0gICAgICAgIGlmICht
X2NvbnRleHRIYW5kbGUpCi0gICAgICAgICAgICBtX3Jlc2V0TG9zdENvbnRleHQgPSB0cnVlOwot
ICAgICAgICBlbHNlCisgICAgICAgIGlmIChtX2NvbnRleHRIYW5kbGUpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBHTFhfQVJCX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3Mgc3BlYyByZXF1aXJlcyB0
aGF0IGEgY29udGV4dCBjcmVhdGVkIHdpdGgKKyAgICAgICAgICAgIC8vIEdMWF9DT05URVhUX1JP
QlVTVF9BQ0NFU1NfQklUX0FSQiBiaXQgc2V0IG11c3QgYWxzbyBzdXBwb3J0IEdMX0FSQl9yb2J1
c3RuZXNzIG9yCisgICAgICAgICAgICAvLyBhIHZlcnNpb24gb2YgT3BlbkdMIGluY29ycG9yYXRp
bmcgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgLy8gVGhlIHNwZWMgYWxz
byBkZWZpbmVzIHNpbWlsYXIgcmVxdWlyZW1lbnRzIGZvciBhdHRyaWJ1dGUgR0xYX0NPTlRFWFRf
UkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0FSQi4KKyAgICAgICAgICAgIGlmIChwbGF0Zm9y
bU1ha2VDdXJyZW50KHN1cmZhY2UpICYmIEdMUGxhdGZvcm1Db250ZXh0OjpzdXBwb3J0c0dMRXh0
ZW5zaW9uKCJHTF9BUkJfcm9idXN0bmVzcyIpKQorICAgICAgICAgICAgICAgIG1fcmVzZXRMb3N0
Q29udGV4dCA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2xYRGVz
dHJveUNvbnRleHQobV9kaXNwbGF5LCBtX2NvbnRleHRIYW5kbGUpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFtX2NvbnRleHRIYW5kbGUpCiAgICAgICAgICAgICBtX2NvbnRleHRIYW5kbGUg
PSBnbFhDcmVhdGVOZXdDb250ZXh0KG1fZGlzcGxheSwgY29uZmlnLCBHTFhfUkdCQV9UWVBFLCAw
LCB0cnVlKTsKIAogICAgICAgICBpZiAobV9jb250ZXh0SGFuZGxlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>