| <!DOCTYPE HTML> |
| <html lang="en-US"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>Avatica Go Releases</title> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <meta name="generator" content="Jekyll v4.2.2"> |
| <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900"> |
| <link rel="stylesheet" href="/avatica/css/screen.css"> |
| <link rel="icon" type="image/x-icon" href="/avatica/favicon.ico"> |
| </head> |
| |
| |
| <body class="wrap"> |
| <header role="banner"> |
| <nav class="mobile-nav show-on-mobiles"> |
| <ul> |
| <li class=""> |
| <a href="/avatica/">Home</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/downloads/">Download</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/community/">Community</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/develop/">Develop</a> |
| </li> |
| <li class="current"> |
| <a href="/avatica/news/">News</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/docs/">Docs</a> |
| </li> |
| </ul> |
| |
| </nav> |
| <div class="grid"> |
| <div class="unit one-third center-on-mobiles"> |
| <h1> |
| <a href="/avatica/"> |
| <span class="sr-only">Apache Calcite Avatica</span> |
| <img src="/avatica/img/logo.png" width="226" height="140" alt="Calcite Logo"> |
| </a> |
| </h1> |
| </div> |
| <nav class="main-nav unit two-thirds hide-on-mobiles"> |
| <ul> |
| <li class=""> |
| <a href="/avatica/">Home</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/downloads/">Download</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/community/">Community</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/develop/">Develop</a> |
| </li> |
| <li class="current"> |
| <a href="/avatica/news/">News</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/docs/">Docs</a> |
| </li> |
| </ul> |
| |
| </nav> |
| </div> |
| </header> |
| |
| |
| <section class="news"> |
| <div class="grid"> |
| |
| <div class="docs-nav-mobile unit whole show-on-mobiles"> |
| <select onchange="if (this.value) window.location.href=this.value"> |
| <option value="">Navigate the blog…</option> |
| <option value="/avatica/news/">Home</option> |
| <optgroup label="v1.x"> |
| |
| <option value="/news/2023/01/19/release-1.23.0/">Release 1.23.0</option> |
| |
| <option value="/news/2022/10/13/release-avatica-go-5.2.0/">Release Avatica Go 5.2.0</option> |
| |
| <option value="/news/2022/07/28/release-1.22.0/">Release 1.22.0</option> |
| |
| <option value="/news/2022/05/08/release-1.21.0/">Release 1.21.0</option> |
| |
| <option value="/news/2022/03/27/release-avatica-go-5.1.0/">Release Avatica Go 5.1.0</option> |
| |
| <option value="/news/2021/12/13/release-1.20.0/">Release 1.20.0</option> |
| |
| <option value="/news/2021/10/11/release-1.19.0/">Release 1.19.0</option> |
| |
| <option value="/news/2021/05/18/release-1.18.0/">Release 1.18.0</option> |
| |
| <option value="/news/2020/07/16/release-avatica-go-5.0.0/">Release Avatica Go 5.0.0</option> |
| |
| <option value="/news/2020/06/22/release-1.17.0/">Release 1.17.0</option> |
| |
| <option value="/news/2019/12/19/release-1.16.0/">Release 1.16.0</option> |
| |
| <option value="/news/2019/05/16/release-avatica-go-4.0.0/">Release Avatica Go 4.0.0</option> |
| |
| <option value="/news/2019/05/13/release-1.15.0/">Release 1.15.0</option> |
| |
| <option value="/news/2019/04/29/release-1.14.0/">Release 1.14.0</option> |
| |
| <option value="/news/2018/12/04/release-1.13.0/">Release 1.13.0</option> |
| |
| <option value="/news/2018/09/18/release-avatica-go-3.2.0/">Release Avatica Go 3.2.0</option> |
| |
| <option value="/news/2018/09/10/release-avatica-go-3.1.0/">Release Avatica Go 3.1.0</option> |
| |
| <option value="/news/2018/06/24/release-1.12.0/">Release 1.12.0</option> |
| |
| <option value="/news/2018/04/27/release-avatica-go-3.0.0/">Release Avatica Go 3.0.0</option> |
| |
| <option value="/news/2018/03/09/release-1.11.0/">Release 1.11.0</option> |
| |
| <option value="/news/2017/05/30/release-1.10.0/">Release 1.10.0</option> |
| |
| <option value="/news/2017/03/31/new-avatica-repository/">New Avatica Repository</option> |
| |
| <option value="/news/2016/11/01/release-1.9.0/">Release 1.9.0</option> |
| |
| <option value="/news/2016/06/04/release-1.8.0/">Release 1.8.0</option> |
| |
| <option value="/news/2016/03/18/release-1.7.1/">Release 1.7.1</option> |
| |
| <option value="/news/2016/03/04/separate-project/">Splitting Avatica from Calcite</option> |
| |
| </optgroup> |
| </select> |
| </div> |
| |
| |
| <div class="unit four-fifths"> |
| <!-- |
| |
| --> |
| |
| |
| |
| |
| |
| |
| <article> |
| <h2> |
| <a href="/avatica/news/2022/10/13/release-avatica-go-5.2.0/"> |
| Release Avatica Go 5.2.0 |
| </a> |
| </h2> |
| <span class="post-category"> |
| <span class="label"> |
| release |
| </span> |
| </span> |
| <div class="post-meta"> |
| <span class="post-date"> |
| 13 Oct 2022 |
| </span> |
| |
| |
| |
| <a href="http://github.com/F21" class="post-author"> |
| <img src="http://github.com/F21.png" |
| class="avatar" alt="francischuang avatar" |
| width="24" height="24"> |
| francischuang |
| </a> |
| </div> |
| <div class="post-content"> |
| <!-- |
| |
| --> |
| |
| <p>Apache Calcite Avatica Go 5.2.0 is a maintenance release of Avatica Go with some dependency updates, bug fixes and a new |
| minor feature. This release supports Go 1.18 and 1.19, which are currently the versions supported and maintained by the |
| Go team.</p> |
| |
| <p>In this release, the <code class="language-plaintext highlighter-rouge">xinsnake/go-http-digest-auth-client</code> digest authentication client has been replaced with |
| <code class="language-plaintext highlighter-rouge">icholy/digest</code> as the former has been deprecated and is no longer maintained. In addition, the <code class="language-plaintext highlighter-rouge">driver.SessionResetter</code> |
| has also been implemented, allowing stale connections to the server to be purged and reset.</p> |
| |
| <p>The Calcite team recommends users of this package to upgrade to this version, where practical, as the dependencies being |
| used by this package have also been upgraded.</p> |
| |
| |
| |
| <p>See the <a href="/avatica/docs/go_history.html#v5-2-0">release notes</a>; |
| <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p> |
| |
| |
| </div> |
| </article> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <article> |
| <h2> |
| <a href="/avatica/news/2022/03/27/release-avatica-go-5.1.0/"> |
| Release Avatica Go 5.1.0 |
| </a> |
| </h2> |
| <span class="post-category"> |
| <span class="label"> |
| release |
| </span> |
| </span> |
| <div class="post-meta"> |
| <span class="post-date"> |
| 27 Mar 2022 |
| </span> |
| |
| |
| |
| <a href="http://github.com/F21" class="post-author"> |
| <img src="http://github.com/F21.png" |
| class="avatar" alt="francischuang avatar" |
| width="24" height="24"> |
| francischuang |
| </a> |
| </div> |
| <div class="post-content"> |
| <!-- |
| |
| --> |
| |
| <p>Apache Calcite Avatica Go 5.1.0 is a maintenance release of Avatica Go with some dependency updates and bug fixes. |
| This release supports Go 1.17 and 1.18, which are currently the versions supported and maintained by the Go team.</p> |
| |
| <p>Of particular note is the replacement of the <a href="https://github.com/golang/protobuf">github.com/golang/protobuf</a> package with |
| <a href="https://pkg.go.dev/google.golang.org/protobuf">google.golang.org/protobuf</a> and the |
| <a href="https://pkg.go.dev/golang.org/x/xerrors">golang.org/x/xerrors</a> package with the standard library’s built-in |
| <a href="https://pkg.go.dev/errors">errors</a> package as the former packages have all be superseded by their replacements.</p> |
| |
| <p>The Calcite team recommends users of this package to upgrade to this version, where practical, as the dependencies being |
| used by this package have also been upgraded.</p> |
| |
| |
| |
| <p>See the <a href="/avatica/docs/go_history.html#v5-1-0">release notes</a>; |
| <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p> |
| |
| |
| </div> |
| </article> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <article> |
| <h2> |
| <a href="/avatica/news/2020/07/16/release-avatica-go-5.0.0/"> |
| Release Avatica Go 5.0.0 |
| </a> |
| </h2> |
| <span class="post-category"> |
| <span class="label"> |
| release |
| </span> |
| </span> |
| <div class="post-meta"> |
| <span class="post-date"> |
| 16 Jul 2020 |
| </span> |
| |
| |
| |
| <a href="http://github.com/F21" class="post-author"> |
| <img src="http://github.com/F21.png" |
| class="avatar" alt="francischuang avatar" |
| width="24" height="24"> |
| francischuang |
| </a> |
| </div> |
| <div class="post-content"> |
| <!-- |
| |
| --> |
| |
| <p>Apache Calcite Avatica Go 5.0.0 is a major release with numerous improvements and a breaking change. |
| As this is a new major version, users of this package will need to upgrade their import paths to |
| <code class="language-plaintext highlighter-rouge">"github.com/apache/calcite-avatica-go/v5"</code>.</p> |
| |
| <p>Since Go modules have been available since Go 1.11 (3 versions back as of writing), users of this library should |
| install it using Go modules as support for dep has been removed.</p> |
| |
| <p>This release also introduces the <code class="language-plaintext highlighter-rouge">batching</code> query string parameter in the DSN, which allows updates to the server using |
| a prepared statement to be batched together and executed once <code class="language-plaintext highlighter-rouge">Close()</code> is called on the statement.</p> |
| |
| <p><strong>Breaking change for connection metadata (<a href="https://issues.apache.org/jira/browse/CALCITE-3248">CALCITE-3248</a>):</strong> |
| Previously, it is possible to set the HTTP username and password using the <code class="language-plaintext highlighter-rouge">username</code> and <code class="language-plaintext highlighter-rouge">password</code> parameters in the |
| query string of the DSN. These parameters were confusing and didn’t signal the intent and effect of the parameters in addition |
| to clashing with the <code class="language-plaintext highlighter-rouge">avaticaUser</code> and <code class="language-plaintext highlighter-rouge">avaticaPassword</code> parameters. The <code class="language-plaintext highlighter-rouge">username</code> and <code class="language-plaintext highlighter-rouge">password</code> parameters have now been |
| removed as CALCITE-3248 implements the <a href="https://golang.org/pkg/database/sql/driver/#Connector">Connector interface</a> via the |
| <code class="language-plaintext highlighter-rouge">NewConnector()</code> method, which allows the driver to be instantiated with a custom HTTP client. Subsequently, it is now |
| possible to set up the driver with a custom HTTP client and decorate it with the <code class="language-plaintext highlighter-rouge">WithDigestAuth()</code>, <code class="language-plaintext highlighter-rouge">WithBasicAuth()</code>, |
| <code class="language-plaintext highlighter-rouge">WithKerberosAuth()</code> and <code class="language-plaintext highlighter-rouge">WithAdditionalHeaders()</code> methods.</p> |
| |
| <p>The Calcite team recommends users of this package to upgrade to this version, where practical, as the dependencies being |
| used by this package have also been upgraded.</p> |
| |
| |
| |
| <p>See the <a href="/avatica/docs/go_history.html#v5-0-0">release notes</a>; |
| <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p> |
| |
| |
| </div> |
| </article> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <article> |
| <h2> |
| <a href="/avatica/news/2019/05/16/release-avatica-go-4.0.0/"> |
| Release Avatica Go 4.0.0 |
| </a> |
| </h2> |
| <span class="post-category"> |
| <span class="label"> |
| release |
| </span> |
| </span> |
| <div class="post-meta"> |
| <span class="post-date"> |
| 16 May 2019 |
| </span> |
| |
| |
| |
| <a href="http://github.com/F21" class="post-author"> |
| <img src="http://github.com/F21.png" |
| class="avatar" alt="francischuang avatar" |
| width="24" height="24"> |
| francischuang |
| </a> |
| </div> |
| <div class="post-content"> |
| <!-- |
| |
| --> |
| |
| <p>Apache Calcite Avatica Go 4.0.0 is a major release with numerous improvements and a breaking change for Apache Phoenix. |
| As this is a new major version, users of this package will need to upgrade their import paths to |
| <code class="language-plaintext highlighter-rouge">"github.com/apache/calcite-avatica-go/v4"</code>.</p> |
| |
| <p><strong>Breaking change for Apache Phoenix (<a href="https://issues.apache.org/jira/browse/CALCITE-2724">CALCITE-2763</a>):</strong> |
| In Apache Phoenix, null and empty strings are equivalent. For some background on why this is the case, see |
| <a href="https://issues.apache.org/jira/browse/PHOENIX-947">PHOENIX-947</a>. In version 3 of Avatica-Go and below, null and empty |
| strings are returned as an empty string <code class="language-plaintext highlighter-rouge">""</code> to the client. This prevented database/sql’s built in NullString type from |
| working correctly. From 4.0.0 onwards, null and empty strings will be returned as a <code class="language-plaintext highlighter-rouge">nil</code>. This allows the usage of the |
| <code class="language-plaintext highlighter-rouge">sql.NullString</code> type.</p> |
| |
| <p>For this release, both <a href="https://github.com/golang/dep">dep</a> and Go modules are supported for package management. As |
| Go modules will be turned on by default in Go 1.13.0 (estimated to be released in September/October 2019), it is highly |
| recommended that users of this package start migrating to using Go modules to ease the transition.</p> |
| |
| <p>The Calcite team recommends users of this package to upgrade to this version, where practical, as the dependencies being |
| used by this package have also been upgraded.</p> |
| |
| |
| |
| <p>See the <a href="/avatica/docs/go_history.html#v4-0-0">release notes</a>; |
| <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p> |
| |
| |
| </div> |
| </article> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <article> |
| <h2> |
| <a href="/avatica/news/2018/09/18/release-avatica-go-3.2.0/"> |
| Release Avatica Go 3.2.0 |
| </a> |
| </h2> |
| <span class="post-category"> |
| <span class="label"> |
| release |
| </span> |
| </span> |
| <div class="post-meta"> |
| <span class="post-date"> |
| 18 Sep 2018 |
| </span> |
| |
| |
| |
| <a href="http://github.com/F21" class="post-author"> |
| <img src="http://github.com/F21.png" |
| class="avatar" alt="francischuang avatar" |
| width="24" height="24"> |
| francischuang |
| </a> |
| </div> |
| <div class="post-content"> |
| <!-- |
| |
| --> |
| |
| <p>Apache Calcite Avatica Go 3.2.0 is a minor release of Avatica Go with fixes to the import paths after enabling |
| support for Go modules.</p> |
| |
| <p>The 3.1.0 release contained a bug where packages within the library used the <code class="language-plaintext highlighter-rouge">"github.com/apache/calcite-avatica-go"</code> |
| import path rather than the <code class="language-plaintext highlighter-rouge">"github.com/apache/calcite-avatica-go/v3"</code> import path. This resulted in an issue where |
| 2 versions of the library are being used at the same time, causing some programs to not build.</p> |
| |
| <p><strong>The Calcite team recommends consumers of the Avatica Go library to not use the 3.1.0 release and ensure that the |
| 3.2.0 release is being used.</strong></p> |
| |
| |
| |
| <p>See the <a href="/avatica/docs/go_history.html#v3-2-0">release notes</a>; |
| <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p> |
| |
| |
| </div> |
| </article> |
| |
| |
| |
| |
| |
| <article> |
| <h2> |
| <a href="/avatica/news/2018/09/10/release-avatica-go-3.1.0/"> |
| Release Avatica Go 3.1.0 |
| </a> |
| </h2> |
| <span class="post-category"> |
| <span class="label"> |
| release |
| </span> |
| </span> |
| <div class="post-meta"> |
| <span class="post-date"> |
| 10 Sep 2018 |
| </span> |
| |
| |
| |
| <a href="http://github.com/F21" class="post-author"> |
| <img src="http://github.com/F21.png" |
| class="avatar" alt="francischuang avatar" |
| width="24" height="24"> |
| francischuang |
| </a> |
| </div> |
| <div class="post-content"> |
| <!-- |
| |
| --> |
| |
| <p>Apache Calcite Avatica Go 3.1.0 is a minor release of the Avatica Go client to bring in support for Go modules. |
| This release includes updated dependencies, testing against more targets and <a href="/avatica/docs/go_history.html#v3-1-0">support for Go Modules</a>.</p> |
| |
| <p>Go 1.11 along with Go modules support was released at the end of August 2018. Go modules will become the |
| official package management solution for Go projects. As the Go team currently supports both Go 1.11 and Go 1.10, |
| the Gopkg.toml and Gopkg.lock files are still available for those using dep for package management. We plan to |
| remove support for dep when Go 1.12 is released in early 2019, so we encourage users to upgrade to Go 1.11 and use |
| Go modules where possible.</p> |
| |
| |
| |
| <p>See the <a href="/avatica/docs/go_history.html#v3-1-0">release notes</a>; |
| <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p> |
| |
| |
| </div> |
| </article> |
| |
| |
| |
| |
| |
| |
| |
| <article> |
| <h2> |
| <a href="/avatica/news/2018/04/27/release-avatica-go-3.0.0/"> |
| Release Avatica Go 3.0.0 |
| </a> |
| </h2> |
| <span class="post-category"> |
| <span class="label"> |
| release |
| </span> |
| </span> |
| <div class="post-meta"> |
| <span class="post-date"> |
| 27 Apr 2018 |
| </span> |
| |
| |
| |
| <a href="http://github.com/F21" class="post-author"> |
| <img src="http://github.com/F21.png" |
| class="avatar" alt="francischuang avatar" |
| width="24" height="24"> |
| francischuang |
| </a> |
| </div> |
| <div class="post-content"> |
| <!-- |
| |
| --> |
| |
| <p>Apache Calcite Avatica Go 3.0.0 is the first release of the Avatica <a href="https://golang.org/">Go</a> |
| <a href="https://golang.org/pkg/database/sql/">database/sql</a> driver since the code has been donated to the Apache Calcite |
| project. This release includes support for Avatica with the HSQLDB backend, updated dependencies and <a href="/avatica/docs/go_history.html#v3-0-0">bug fixes</a>.</p> |
| |
| <p>There is a breaking change where the <code class="language-plaintext highlighter-rouge">Name()</code> method on the <code class="language-plaintext highlighter-rouge">ResponseError</code> error type has been changed to a property, <code class="language-plaintext highlighter-rouge">Name</code>.</p> |
| |
| <p>Users of the current <code class="language-plaintext highlighter-rouge">Boostport/avatica</code> library are encouraged to update to this new version of <code class="language-plaintext highlighter-rouge">apache/calcite-avatica-go</code> |
| as further development will take place in the <code class="language-plaintext highlighter-rouge">apache/calcite-avatica-go</code> repository.</p> |
| |
| <p>For most users, the updating is simply replacing the import path <code class="language-plaintext highlighter-rouge">_ github.com/Boostport/avatica</code> with <code class="language-plaintext highlighter-rouge">_ github.com/apache/calcite-avatica-go</code>.</p> |
| |
| |
| |
| <p>See the <a href="/avatica/docs/go_history.html#v3-0-0">release notes</a>; |
| <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p> |
| |
| |
| </div> |
| </article> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </div> |
| |
| <div class="unit one-fifth hide-on-mobiles"> |
| <aside> |
| <ul> |
| <li class=""> |
| <a href="/avatica/news/">All News</a> |
| </li> |
| <li class=""> |
| <a href="/avatica/news/avatica-releases/">Avatica Releases</a> |
| </li> |
| <li class="current"> |
| <a href="/avatica/news/avatica-go-releases/">Avatica Go Releases</a> |
| </li> |
| </ul> |
| <h4>Recent Releases</h4> |
| <ul> |
| |
| <li class=""> |
| <a href="/avatica/news/2023/01/19/release-1.23.0/">avatica 1.23.0</a> |
| </li> |
| |
| <li class=""> |
| <a href="/avatica/news/2022/10/13/release-avatica-go-5.2.0/">avatica-go 5.2.0</a> |
| </li> |
| |
| <li class=""> |
| <a href="/avatica/news/2022/07/28/release-1.22.0/">avatica 1.22.0</a> |
| </li> |
| |
| <li class=""> |
| <a href="/avatica/news/2022/05/08/release-1.21.0/">avatica 1.21.0</a> |
| </li> |
| |
| <li class=""> |
| <a href="/avatica/news/2022/03/27/release-avatica-go-5.1.0/">avatica-go 5.1.0</a> |
| </li> |
| |
| </ul> |
| <h4>Other News</h4> |
| <ul> |
| |
| <li class=""> |
| <a href="/avatica/news/2017/03/31/new-avatica-repository/">New Avatica Repository</a> |
| </li> |
| |
| <li class=""> |
| <a href="/avatica/news/2016/03/04/separate-project/">Splitting Avatica from Calcite</a> |
| </li> |
| |
| </ul> |
| </aside> |
| </div> |
| |
| |
| <div class="clear"></div> |
| |
| </div> |
| </section> |
| |
| |
| <footer role="contentinfo"> |
| <div id="poweredby"> |
| <a href="http://www.apache.org/"> |
| <span class="sr-only">Apache</span> |
| <img src="/avatica/img/feather.png" width="190" height="77" alt="Apache Logo"></a> |
| </div> |
| <div id="copyright"> |
| <p>The contents of this website are © 2023 |
| <a href="https://www.apache.org/">Apache Software Foundation</a> |
| under the terms of |
| the <a href="https://www.apache.org/licenses/LICENSE-2.0.html"> |
| Apache License v2</a>. Apache Calcite and its logo are |
| trademarks of the Apache Software Foundation. |
| </p> |
| <p> |
| <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a> |
| </p> |
| </div> |
| </footer> |
| |
| <script> |
| var anchorForId = function (id) { |
| var anchor = document.createElement("a"); |
| anchor.className = "header-link"; |
| anchor.href = "#" + id; |
| anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>"; |
| anchor.title = "Permalink"; |
| return anchor; |
| }; |
| |
| var linkifyAnchors = function (level, containingElement) { |
| var headers = containingElement.getElementsByTagName("h" + level); |
| for (var h = 0; h < headers.length; h++) { |
| var header = headers[h]; |
| |
| if (typeof header.id !== "undefined" && header.id !== "") { |
| header.appendChild(anchorForId(header.id)); |
| } |
| } |
| }; |
| |
| document.onreadystatechange = function () { |
| if (this.readyState === "complete") { |
| var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0]; |
| if (!contentBlock) { |
| return; |
| } |
| for (var level = 1; level <= 6; level++) { |
| linkifyAnchors(level, contentBlock); |
| } |
| } |
| }; |
| </script> |
| |
| |
| </body> |
| </html> |