{"action":"created","comment":{"url":"https://api.github.com/repos/openhab/openhab-docs/pulls/comments/88567989","pull_request_review_id":9137306,"id":88567989,"diff_hunk":"@@ -4,96 +4,846 @@ layout: intro\n \n {% include base.html %}\n \n-# Migration from openHAB 1 to openHAB 2\n+# Migration from openHAB 1.x to openHAB 2\n \n-There are a few changes in openHAB 2 that you should be aware of, if you are coming from openHAB 1.\n+This tutorial provides a step-by-step procedure for migrating an existing openHAB 1.x installation to openHAB 2 snapshot. These procedures were generated starting from an apt-get installed openHAB 1.8.3, though they should work for previous versions. Where needed, additional details are provided for other platforms (Windows, OSX, non-Debian based Linux, etc.) and manually installed openHAB 1.x installs.\n \n-Note: This page is work in progress and serves as a place to collect whatever you feel is important to mention when migrating your existing setup to openHAB 2.\n \n-## Important Changes\n+These instructions emphasize the text based procedures over the use of PaperUI and Habmin which is closer to the openHAB 1.x experience.\n \n-### Configuration and Folder Structure\n+Note: In all of the other pages in this documentation, openHAB 2 is simply referred to as openHAB. In order to distinguish between the two versions in this, the current version is referred to as openHAB 2.\n \n-- The `configurations` folder has been renamed to `conf`\n-- Instead of the global `configurations/openhab.cfg` file, there is now an individual file per add-on in `conf/services`.  The `<key>:` prepended to each configuration property is removed in the new `<key>.cfg` files.\n-- You can still put additional jar files in the `addons` folder to install bindings that are not available in the distribution, but please note that removing a jar file from this folder will not uninstall it. To uninstall it, you will have to use the console command bundle:uninstall.\n-- The OSGi console commands are now available as \"smarthome\", not as \"openhab\" anymore.\n-- The webapps folder has been discontinued, but static resources can be placed in `conf/html`.\n+## Table of Contents\n \n-### User Interfaces\n+[1. Preparation](#preparation)\n \n-- The Classic UI URL has changed from `/openhab.app` to `/classicui/app`, so you can access your sitemaps at `http://<server>:8080/classicui/app?sitemap=<yoursitemap>`\n-- A new default sitemap provider is in place, which provides a dynamic sitemap with the name `_default`, which lists all group items that are not contained within any other group.\n-- It is possible to provide your own custom icons in the `conf/icons/classic` folder - no need to overwrite the icons that come with the runtime.\n-- For custom dynamic icons depending on an item state, you need in openHAB 2 to define in the `conf/icons/classic` folder a default icon (without the state part) in addition to the icons for the different states. This default icon was not required in openHAB 1. For example, for a Wifi level that can take a value from 1 to 4, in addition to the files wifi-1.png, wifi-2.png, wifi-3.png and wifi-4.png, you need to provide a file named wifi.png.\n-- Note that Basic UI requires icons with SVG format by default; a Basic UI setting is available to choose between SVG and PNG formats.\n+[2. Backups](#backups)\n \n-### Rules\n+[3. Shutdown openHAB 1.x](#shutdown-openhab-1x)\n \n-In order to continue using rules from openHAB 1, a few minor changes might be necessary:\n+[4. Install openHAB 2](#install-openhab-2)\n \n-1. Import statements at the top are not required anymore for any org.openhab package, so these can be removed\n-1. The state \"Uninitialized\" has been renamed to \"NULL\" and thus needs to be replaced in the rules\n-1. The `HSBType` state type can no longer be constructed using a `java.awt.Color` object, and there is no longer a `toColor()` method.  Use the following alternatives:\n+[5. Prepare openHAB 2 for the Existing openHAB 1.x Configuration](#prepare-openhab-2-for-the-existing-openhab-1x-configuration)\n \n-```java\n+&nbsp;&nbsp;[5.1 Text Based](#text-based)\n+\n+&nbsp;&nbsp;[5.2 Karaf Console](#karaf-console)\n+\n+&nbsp;&nbsp;[5.3 PaperUI Approach](#paperui-approach)\n+\n+&nbsp;&nbsp;[5.4 Configure Add-ons](#configure-add-ons)\n+\n+&nbsp;&nbsp;[5.5 Installing Unofficially Supported openHAB 1.x Add-ons](#installing-unofficially-supported-openhab-1x-add-ons)\n+\n+&nbsp;&nbsp;[5.6 Final Add-ons Installation Steps](#installing-unofficially-supported-openhab-1x-add-ons)\n+\n+[6. Necessary Changes](#necessary-changes)\n+\n+&nbsp;&nbsp;[6.1 Items](#items)\n+\n+&nbsp;&nbsp;[6.2 Sitemap](#sitemap)\n+\n+&nbsp;&nbsp;[6.3 Rules](#rules)\n+\n+[7. Testing](#testing)\n+\n+[8. New Concepts: Things and Channels](#new-concepts-things-and-channels)\n+\n+[9. Retire openHAB 1.x](#retire-openhab-1x)\n+\n+[10. Migrating to openHAB 2 Bindings](#migrating-to-openhab-2-bindings)\n+\n+&nbsp;&nbsp;[10.1 Eclipse SmartHome Designer](#eclipse-smarthome-designer)\n+\n+&nbsp;&nbsp;[10.2 My.openHAB](#myopenhab)\n+\n+&nbsp;&nbsp;[10.3 Other Bindings](#other-bindings)\n+\n+[11. Managing the Inbox, Things, and Channels](#managing-the-inbox-things-and-channels)\n+\n+&nbsp;&nbsp;[11.1 Managing the Inbox using PaperUI](#managing-the-inbox-using-paperui)\n+\n+&nbsp;&nbsp;[11.2 Managing the Inbox Using the Karaf Console](#managing-the-inbox-using-the-karaf-console)\n+\n+&nbsp;&nbsp;[11.3 Linking Channels to Items](#managing-the-inbox-using-the-karaf-console)\n+\n+&nbsp;&nbsp;[11.4 Manually Creating Things](#manually-creating-things)\n+\n+##Preparation\n+\n+Now is the time to consider and plan for your newly installed openHAB. Some \n+questions to ask and answer include:\n+\n+- Are you happy with your current deployment and maintenance of the deployment?\n+- Do you have or need to change your backup and configuration management \n+practices?\n+- Have you wanted to migrate to a container (e.g. \n+[Docker](../installation/docker.html) or a virtual machine?\n+- Do you want to start over fresh on a brand new OS install?\n+\n+Your answers to these and other similar questions will help guide you to \n+prepare your installation before you start the migration. For example, if you\n+want to start using git to back up and configuration manage your openHAB \n+configurations, or if you are considering moving to \n+[Docker](../installation/docker.html) or a VM or starting over fresh (e.g. \n+[openHABian](https://github.com/ThomDietrich/openhabian)), now is a good time\n+to start the process.\n+\n+The following procedure primarily focuses on an in-place migration. If you are\n+migrating to a fresh install, container, or another VM some of the following\n+steps can be skipped. Those steps are identified.\n+\n+One major consideration is that at the time of this writing openHAB 2 does not\n+implement authentication and authorization (i.e. no username and password). If\n+you are relying upon port forwarding to access your openHAB server remotely\n+instead of via a VPN, SSH tunneling, or [my.openhab](https://my.openhab.org/),\n+we highly recommend [setting up a reverse proxy](../configuration/nginx.html).","path":"tutorials/migration.md","position":119,"original_position":119,"commit_id":"03eb67a0df1e4d72d9a70e40bbf744cc40fd2348","original_commit_id":"03eb67a0df1e4d72d9a70e40bbf744cc40fd2348","user":{"login":"BClark09","id":8983584,"avatar_url":"https://avatars.githubusercontent.com/u/8983584?v=3","gravatar_id":"","url":"https://api.github.com/users/BClark09","html_url":"https://github.com/BClark09","followers_url":"https://api.github.com/users/BClark09/followers","following_url":"https://api.github.com/users/BClark09/following{/other_user}","gists_url":"https://api.github.com/users/BClark09/gists{/gist_id}","starred_url":"https://api.github.com/users/BClark09/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BClark09/subscriptions","organizations_url":"https://api.github.com/users/BClark09/orgs","repos_url":"https://api.github.com/users/BClark09/repos","events_url":"https://api.github.com/users/BClark09/events{/privacy}","received_events_url":"https://api.github.com/users/BClark09/received_events","type":"User","site_admin":false},"body":"same as above, won't comment on further uses of ../","created_at":"2016-11-17T23:07:54Z","updated_at":"2016-11-17T23:07:54Z","html_url":"https://github.com/openhab/openhab-docs/pull/140#discussion_r88567989","pull_request_url":"https://api.github.com/repos/openhab/openhab-docs/pulls/140","_links":{"self":{"href":"https://api.github.com/repos/openhab/openhab-docs/pulls/comments/88567989"},"html":{"href":"https://github.com/openhab/openhab-docs/pull/140#discussion_r88567989"},"pull_request":{"href":"https://api.github.com/repos/openhab/openhab-docs/pulls/140"}}},"pull_request":{"url":"https://api.github.com/repos/openhab/openhab-docs/pulls/140","id":94256349,"html_url":"https://github.com/openhab/openhab-docs/pull/140","diff_url":"https://github.com/openhab/openhab-docs/pull/140.diff","patch_url":"https://github.com/openhab/openhab-docs/pull/140.patch","issue_url":"https://api.github.com/repos/openhab/openhab-docs/issues/140","number":140,"state":"open","locked":false,"title":"Rewrote the Migration Tutorial","user":{"login":"rkoshak","id":6385096,"avatar_url":"https://avatars.githubusercontent.com/u/6385096?v=3","gravatar_id":"","url":"https://api.github.com/users/rkoshak","html_url":"https://github.com/rkoshak","followers_url":"https://api.github.com/users/rkoshak/followers","following_url":"https://api.github.com/users/rkoshak/following{/other_user}","gists_url":"https://api.github.com/users/rkoshak/gists{/gist_id}","starred_url":"https://api.github.com/users/rkoshak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkoshak/subscriptions","organizations_url":"https://api.github.com/users/rkoshak/orgs","repos_url":"https://api.github.com/users/rkoshak/repos","events_url":"https://api.github.com/users/rkoshak/events{/privacy}","received_events_url":"https://api.github.com/users/rkoshak/received_events","type":"User","site_admin":false},"body":"Rewrote based on the [tutorial on the forum](https://community.openhab.org/t/migration-from-oh-1-x-to-oh-2-tutorial/13947). I've done a good deal of editing to preserve the content that was already there and to add in instructions for using addons.cfg. Spelling and grammar checks out and links have been tested.\r\n\r\nCloses #86 \r\n\r\nSigned-off-by: Rich Koshak <rlkoshak@gmail.com> (github: rkoshak)","created_at":"2016-11-17T21:39:06Z","updated_at":"2016-11-17T23:58:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2f1e4739e5951cd6987d00e2424ec8ad7d866b26","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/openhab/openhab-docs/pulls/140/commits","review_comments_url":"https://api.github.com/repos/openhab/openhab-docs/pulls/140/comments","review_comment_url":"https://api.github.com/repos/openhab/openhab-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openhab/openhab-docs/issues/140/comments","statuses_url":"https://api.github.com/repos/openhab/openhab-docs/statuses/03eb67a0df1e4d72d9a70e40bbf744cc40fd2348","head":{"label":"rkoshak:issue86","ref":"issue86","sha":"03eb67a0df1e4d72d9a70e40bbf744cc40fd2348","user":{"login":"rkoshak","id":6385096,"avatar_url":"https://avatars.githubusercontent.com/u/6385096?v=3","gravatar_id":"","url":"https://api.github.com/users/rkoshak","html_url":"https://github.com/rkoshak","followers_url":"https://api.github.com/users/rkoshak/followers","following_url":"https://api.github.com/users/rkoshak/following{/other_user}","gists_url":"https://api.github.com/users/rkoshak/gists{/gist_id}","starred_url":"https://api.github.com/users/rkoshak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkoshak/subscriptions","organizations_url":"https://api.github.com/users/rkoshak/orgs","repos_url":"https://api.github.com/users/rkoshak/repos","events_url":"https://api.github.com/users/rkoshak/events{/privacy}","received_events_url":"https://api.github.com/users/rkoshak/received_events","type":"User","site_admin":false},"repo":{"id":74068743,"name":"openhab-docs","full_name":"rkoshak/openhab-docs","owner":{"login":"rkoshak","id":6385096,"avatar_url":"https://avatars.githubusercontent.com/u/6385096?v=3","gravatar_id":"","url":"https://api.github.com/users/rkoshak","html_url":"https://github.com/rkoshak","followers_url":"https://api.github.com/users/rkoshak/followers","following_url":"https://api.github.com/users/rkoshak/following{/other_user}","gists_url":"https://api.github.com/users/rkoshak/gists{/gist_id}","starred_url":"https://api.github.com/users/rkoshak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkoshak/subscriptions","organizations_url":"https://api.github.com/users/rkoshak/orgs","repos_url":"https://api.github.com/users/rkoshak/repos","events_url":"https://api.github.com/users/rkoshak/events{/privacy}","received_events_url":"https://api.github.com/users/rkoshak/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rkoshak/openhab-docs","description":"This repository contains the documentation for openHAB.","fork":true,"url":"https://api.github.com/repos/rkoshak/openhab-docs","forks_url":"https://api.github.com/repos/rkoshak/openhab-docs/forks","keys_url":"https://api.github.com/repos/rkoshak/openhab-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rkoshak/openhab-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rkoshak/openhab-docs/teams","hooks_url":"https://api.github.com/repos/rkoshak/openhab-docs/hooks","issue_events_url":"https://api.github.com/repos/rkoshak/openhab-docs/issues/events{/number}","events_url":"https://api.github.com/repos/rkoshak/openhab-docs/events","assignees_url":"https://api.github.com/repos/rkoshak/openhab-docs/assignees{/user}","branches_url":"https://api.github.com/repos/rkoshak/openhab-docs/branches{/branch}","tags_url":"https://api.github.com/repos/rkoshak/openhab-docs/tags","blobs_url":"https://api.github.com/repos/rkoshak/openhab-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rkoshak/openhab-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rkoshak/openhab-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/rkoshak/openhab-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rkoshak/openhab-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/rkoshak/openhab-docs/languages","stargazers_url":"https://api.github.com/repos/rkoshak/openhab-docs/stargazers","contributors_url":"https://api.github.com/repos/rkoshak/openhab-docs/contributors","subscribers_url":"https://api.github.com/repos/rkoshak/openhab-docs/subscribers","subscription_url":"https://api.github.com/repos/rkoshak/openhab-docs/subscription","commits_url":"https://api.github.com/repos/rkoshak/openhab-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/rkoshak/openhab-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/rkoshak/openhab-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/rkoshak/openhab-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/rkoshak/openhab-docs/contents/{+path}","compare_url":"https://api.github.com/repos/rkoshak/openhab-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rkoshak/openhab-docs/merges","archive_url":"https://api.github.com/repos/rkoshak/openhab-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rkoshak/openhab-docs/downloads","issues_url":"https://api.github.com/repos/rkoshak/openhab-docs/issues{/number}","pulls_url":"https://api.github.com/repos/rkoshak/openhab-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/rkoshak/openhab-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/rkoshak/openhab-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rkoshak/openhab-docs/labels{/name}","releases_url":"https://api.github.com/repos/rkoshak/openhab-docs/releases{/id}","deployments_url":"https://api.github.com/repos/rkoshak/openhab-docs/deployments","created_at":"2016-11-17T21:23:28Z","updated_at":"2016-11-17T21:23:30Z","pushed_at":"2016-11-17T21:30:58Z","git_url":"git://github.com/rkoshak/openhab-docs.git","ssh_url":"git@github.com:rkoshak/openhab-docs.git","clone_url":"https://github.com/rkoshak/openhab-docs.git","svn_url":"https://github.com/rkoshak/openhab-docs","homepage":"http://docs.openhab.org","size":10061,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"gh-pages"}},"base":{"label":"openhab:gh-pages","ref":"gh-pages","sha":"98c2ba9d5ad5048ad4ea5d08a3178d59781dcee4","user":{"login":"openhab","id":1007353,"avatar_url":"https://avatars.githubusercontent.com/u/1007353?v=3","gravatar_id":"","url":"https://api.github.com/users/openhab","html_url":"https://github.com/openhab","followers_url":"https://api.github.com/users/openhab/followers","following_url":"https://api.github.com/users/openhab/following{/other_user}","gists_url":"https://api.github.com/users/openhab/gists{/gist_id}","starred_url":"https://api.github.com/users/openhab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openhab/subscriptions","organizations_url":"https://api.github.com/users/openhab/orgs","repos_url":"https://api.github.com/users/openhab/repos","events_url":"https://api.github.com/users/openhab/events{/privacy}","received_events_url":"https://api.github.com/users/openhab/received_events","type":"Organization","site_admin":false},"repo":{"id":58825797,"name":"openhab-docs","full_name":"openhab/openhab-docs","owner":{"login":"openhab","id":1007353,"avatar_url":"https://avatars.githubusercontent.com/u/1007353?v=3","gravatar_id":"","url":"https://api.github.com/users/openhab","html_url":"https://github.com/openhab","followers_url":"https://api.github.com/users/openhab/followers","following_url":"https://api.github.com/users/openhab/following{/other_user}","gists_url":"https://api.github.com/users/openhab/gists{/gist_id}","starred_url":"https://api.github.com/users/openhab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openhab/subscriptions","organizations_url":"https://api.github.com/users/openhab/orgs","repos_url":"https://api.github.com/users/openhab/repos","events_url":"https://api.github.com/users/openhab/events{/privacy}","received_events_url":"https://api.github.com/users/openhab/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openhab/openhab-docs","description":"This repository contains the documentation for openHAB.","fork":false,"url":"https://api.github.com/repos/openhab/openhab-docs","forks_url":"https://api.github.com/repos/openhab/openhab-docs/forks","keys_url":"https://api.github.com/repos/openhab/openhab-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openhab/openhab-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openhab/openhab-docs/teams","hooks_url":"https://api.github.com/repos/openhab/openhab-docs/hooks","issue_events_url":"https://api.github.com/repos/openhab/openhab-docs/issues/events{/number}","events_url":"https://api.github.com/repos/openhab/openhab-docs/events","assignees_url":"https://api.github.com/repos/openhab/openhab-docs/assignees{/user}","branches_url":"https://api.github.com/repos/openhab/openhab-docs/branches{/branch}","tags_url":"https://api.github.com/repos/openhab/openhab-docs/tags","blobs_url":"https://api.github.com/repos/openhab/openhab-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openhab/openhab-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openhab/openhab-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/openhab/openhab-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openhab/openhab-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/openhab/openhab-docs/languages","stargazers_url":"https://api.github.com/repos/openhab/openhab-docs/stargazers","contributors_url":"https://api.github.com/repos/openhab/openhab-docs/contributors","subscribers_url":"https://api.github.com/repos/openhab/openhab-docs/subscribers","subscription_url":"https://api.github.com/repos/openhab/openhab-docs/subscription","commits_url":"https://api.github.com/repos/openhab/openhab-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/openhab/openhab-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/openhab/openhab-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/openhab/openhab-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/openhab/openhab-docs/contents/{+path}","compare_url":"https://api.github.com/repos/openhab/openhab-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openhab/openhab-docs/merges","archive_url":"https://api.github.com/repos/openhab/openhab-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openhab/openhab-docs/downloads","issues_url":"https://api.github.com/repos/openhab/openhab-docs/issues{/number}","pulls_url":"https://api.github.com/repos/openhab/openhab-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/openhab/openhab-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/openhab/openhab-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openhab/openhab-docs/labels{/name}","releases_url":"https://api.github.com/repos/openhab/openhab-docs/releases{/id}","deployments_url":"https://api.github.com/repos/openhab/openhab-docs/deployments","created_at":"2016-05-14T19:17:37Z","updated_at":"2016-11-12T18:39:24Z","pushed_at":"2016-11-17T21:39:06Z","git_url":"git://github.com/openhab/openhab-docs.git","ssh_url":"git@github.com:openhab/openhab-docs.git","clone_url":"https://github.com/openhab/openhab-docs.git","svn_url":"https://github.com/openhab/openhab-docs","homepage":"http://docs.openhab.org","size":19402,"stargazers_count":11,"watchers_count":11,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":39,"mirror_url":null,"open_issues_count":18,"forks":39,"open_issues":18,"watchers":11,"default_branch":"gh-pages"}},"_links":{"self":{"href":"https://api.github.com/repos/openhab/openhab-docs/pulls/140"},"html":{"href":"https://github.com/openhab/openhab-docs/pull/140"},"issue":{"href":"https://api.github.com/repos/openhab/openhab-docs/issues/140"},"comments":{"href":"https://api.github.com/repos/openhab/openhab-docs/issues/140/comments"},"review_comments":{"href":"https://api.github.com/repos/openhab/openhab-docs/pulls/140/comments"},"review_comment":{"href":"https://api.github.com/repos/openhab/openhab-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openhab/openhab-docs/pulls/140/commits"},"statuses":{"href":"https://api.github.com/repos/openhab/openhab-docs/statuses/03eb67a0df1e4d72d9a70e40bbf744cc40fd2348"}}}}
{"actor":{"display_login":"BClark09"}}