diff --git a/.gitignore b/.gitignore index 06e8ffd..ca4c3cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .import *.import sketchfab +.* diff --git a/Main.tscn b/Main.tscn index 8e94c2b..69ce68f 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,4 +1,3 @@ -[gd_scene format=2] - -[node name="Spatial" type="Spatial" index="0"] +[gd_scene format=3 uid="uid://scfkut8juyym"] +[node name="Node3D" type="Node3D"] diff --git a/addons/sketchfab/Api.gd b/addons/sketchfab/Api.gd index 532989d..4b0b341 100644 --- a/addons/sketchfab/Api.gd +++ b/addons/sketchfab/Api.gd @@ -1,11 +1,11 @@ -tool +@tool extends Object const OAUTH_HOSTNAME = "sketchfab.com" const API_HOSTNAME = "api.sketchfab.com" const USE_SSL = true const BASE_PATH = "/v3" -const CLIENT_ID = "a99JEwOhmIWHdRRDDgBsxbBf8ufC0ACoUcDAifSV" +const CLIENT_ID = "IUO8d5VVOIUCzWQArQ3VuXfbwx5QekZfLeDlpOmW" enum SymbolicErrors { NOT_AUTHORIZED, @@ -23,14 +23,14 @@ static func set_token(token): const Requestor = preload("res://addons/sketchfab/Requestor.gd") var Result = Requestor.Result -var requestor = Requestor.new(API_HOSTNAME, USE_SSL) +var requestor = Requestor.new(API_HOSTNAME) var busy = false func term(): requestor.term() func cancel(): - yield(requestor.cancel(), "completed") + await requestor.cancel() func login(username, password): var query = { @@ -39,13 +39,13 @@ func login(username, password): } busy = true - var requestor = Requestor.new(OAUTH_HOSTNAME, USE_SSL) + var requestor = Requestor.new(OAUTH_HOSTNAME) requestor.request( "/oauth2/token/?grant_type=password&client_id=%s" % CLIENT_ID, query, { "method": HTTPClient.METHOD_POST, "encoding": "form" } ) - var result = yield(requestor, "completed") + var result = await requestor.completed requestor.term() busy = false @@ -61,7 +61,7 @@ func login(username, password): func get_my_info(): busy = true requestor.request("%s/me" % BASE_PATH, null, { "token": get_token() }) - var result = yield(requestor, "completed") + var result = await requestor.completed busy = false return _handle_result(result) @@ -70,7 +70,7 @@ func get_categories(): busy = true requestor.request("%s/categories" % BASE_PATH) - var result = yield(requestor, "completed") + var result = await requestor.completed busy = false return _handle_result(result) @@ -79,7 +79,7 @@ func get_model_detail(uid): busy = true requestor.request("%s/models/%s" % [BASE_PATH, uid]) - var result = yield(requestor, "completed") + var result = await requestor.completed busy = false return _handle_result(result) @@ -88,7 +88,7 @@ func request_download(uid): busy = true requestor.request("%s/models/%s/download" % [BASE_PATH, uid], null, { "token": get_token() }) - var result = yield(requestor, "completed") + var result = await requestor.completed busy = false return _handle_result(result) @@ -117,19 +117,19 @@ func search_models(q, categories, animated, staff_picked, min_face_count, max_fa var search_domain = BASE_PATH + domain_suffix requestor.request(search_domain, query, { "token": get_token() }) - var result = yield(requestor, "completed") + var result = await requestor.completed busy = false return _handle_result(result) func fetch_next_page(url): # Strip protocol + domain - var uri = url.right(url.find(API_HOSTNAME) + API_HOSTNAME.length()) + var uri = url.right(url.length() - url.find(API_HOSTNAME) - API_HOSTNAME.length()) busy = true requestor.request(uri) - var result = yield(requestor, "completed") + var result = await requestor.completed busy = false return _handle_result(result) diff --git a/addons/sketchfab/HttpImage.gd b/addons/sketchfab/HttpImage.gd index cf87b43..7dc4b35 100644 --- a/addons/sketchfab/HttpImage.gd +++ b/addons/sketchfab/HttpImage.gd @@ -1,26 +1,25 @@ -tool -extends Control +@tool +extends TextureRect const MAX_COUNT = 4 -export var max_size = 256 -export var background = Color(0, 0, 0, 0) -export var immediate = false +@export var max_size = 256 +@export var background = Color(0, 0, 0, 0) +@export var immediate = false -var url setget _set_url +var url : set = _set_url var url_to_load -var http = HTTPRequest.new() +var http_request = null var busy -var texture - func _enter_tree(): - if !get_tree().has_meta("__http_image_count"): - get_tree().set_meta("__http_image_count", 0) - if !http.get_parent(): - add_child(http) + if !http_request: + http_request = HTTPRequest.new() + add_child(http_request) + http_request.request_completed.connect(self._http_request_completed) + http_request.set_tls_options(TLSOptions.client()) busy = false if url_to_load: @@ -28,30 +27,12 @@ func _enter_tree(): func _exit_tree(): if busy: - http.cancel_request() + http_request.cancel_request() get_tree().set_meta("__http_image_count", get_tree().get_meta("__http_image_count") - 1) busy = false -func _draw(): - var rect = Rect2(0, 0, get_rect().size.x, get_rect().size.y) - draw_rect(rect, background) - - if !texture: - return - var tw = texture.get_width() - var th = texture.get_height() - if float(tw) / th > rect.size.x / rect.size.y: - var old = rect.size.y - rect.size.y = rect.size.x * float(th) / tw - rect.position.y += 0.5 * (old - rect.size.y) - else: - var old = rect.size.x - rect.size.x = rect.size.y * float(tw) / th - rect.position.x += 0.5 * (old - rect.size.x) - - draw_texture_rect(texture, rect, false) func _set_url(url): url_to_load = url @@ -61,11 +42,12 @@ func _set_url(url): _start_load() func _start_load(): - http.cancel_request() + http_request.cancel_request() texture = null - update() + queue_redraw() if !url_to_load: + print("there was no url to load from") return while true: @@ -76,39 +58,40 @@ func _start_load(): get_tree().set_meta("__http_image_count", count + 1) break else: - yield(get_tree(), "idle_frame") + await get_tree().process_frame _load(url_to_load) url_to_load = null -func _load(url_to_load): - http.request(url_to_load, [], false) +func _load(url_to_load):# Create an HTTP request node and connect its completion signal. + # Perform the HTTP request. The URL below returns a PNG image as of writing. + var error = http_request.request(url_to_load) + if error != OK: + push_error("An error occurred in the HTTP request.") - busy = true - var data = yield(http, "request_completed") +# Called when the HTTP request is completed. +func _http_request_completed(result, response_code, headers, body): - busy = false get_tree().set_meta("__http_image_count", get_tree().get_meta("__http_image_count") - 1) - - var result = data[0] - var code = data[1] - var headers = data[2] - var body = data[3] - if result != HTTPRequest.RESULT_SUCCESS: + push_error("Image couldn't be downloaded. Try a different image.") + + var image = Image.new() + var error = image.load_jpg_from_buffer(body) + if error != OK: + push_error("Couldn't load the image.") return - var img = Image.new() - if img.load_jpg_from_buffer(body) == OK || img.load_png_from_buffer(body) == OK: - var w = img.get_width() - var h = img.get_height() - if w > h: - var new_w = min(w, max_size) - img.resize(new_w, (float(h) / w) * new_w) - else: - var new_h = min(h, max_size) - img.resize((float(w) / h) * new_h, new_h) + # Display the image in a TextureRect node. + var w = image.get_width() + var h = image.get_height() + if w > h: + var new_w = min(w, max_size) + image.resize(new_w, (float(h) / w) * new_w) + else: + var new_h = min(h, max_size) + image.resize((float(w) / h) * new_h, new_h) + + texture = ImageTexture.create_from_image(image) + - texture = ImageTexture.new() - texture.create_from_image(img) - update() diff --git a/addons/sketchfab/Main.gd b/addons/sketchfab/Main.gd index 0666a8b..14196d9 100644 --- a/addons/sketchfab/Main.gd +++ b/addons/sketchfab/Main.gd @@ -1,4 +1,4 @@ -tool +@tool extends Control const CONFIG_FILE_PATH = "user://sketchfab.ini" @@ -34,27 +34,27 @@ const Utils = preload("res://addons/sketchfab/Utils.gd") const Api = preload("res://addons/sketchfab/Api.gd") var api = Api.new() -onready var search_text = find_node("Search").find_node("Text") -onready var search_categories = find_node("Search").find_node("Categories") -onready var search_animated = find_node("Search").find_node("Animated") -onready var search_staff_picked = find_node("Search").find_node("StaffPicked") -onready var search_face_count = find_node("Search").find_node("FaceCount") -onready var search_sort_by = find_node("Search").find_node("SortBy") -onready var search_domain = find_node("Search").find_node("SearchDomain") -onready var cta_button = find_node("CTA") -onready var trailer = find_node("Trailer") +@onready var search_text = find_child("Search").find_child("Text") +@onready var search_categories = find_child("Search").find_child("Categories") +@onready var search_animated = find_child("Search").find_child("Animated") +@onready var search_staff_picked = find_child("Search").find_child("StaffPicked") +@onready var search_face_count = find_child("Search").find_child("FaceCount") +@onready var search_sort_by = find_child("Search").find_child("SortBy") +@onready var search_domain = find_child("Search").find_child("SearchDomain") +@onready var cta_button = find_child("CTA") +@onready var trailer = find_child("Trailer") -onready var paginator = find_node("Paginator") +@onready var paginator = find_child("Paginator") -onready var not_logged = find_node("NotLogged") -onready var login_name = not_logged.find_node("UserName") -onready var login_password = not_logged.find_node("Password") -onready var login_button = not_logged.find_node("Login") +@onready var not_logged = find_child("NotLogged") +@onready var login_name = not_logged.find_child("UserName") +@onready var login_password = not_logged.find_child("Password") +@onready var login_button = not_logged.find_child("Login") -onready var logged = find_node("Logged") -onready var logged_name = logged.find_node("UserName") -onready var logged_plan = logged.find_node("Plan") -onready var logged_avatar = logged.find_node("Avatar") +@onready var logged = find_child("Logged") +@onready var logged_name = logged.find_child("UserName") +@onready var logged_plan = logged.find_child("Plan") +@onready var logged_avatar = logged.find_child("Avatar") var cfg var can_search @@ -64,14 +64,12 @@ func _enter_tree(): cfg = ConfigFile.new() cfg.load(CONFIG_FILE_PATH) - find_node("Logo").texture = ( - Utils.create_texture_from_file("res://addons/sketchfab/sketchfab.png.noimport", get_tree().get_meta("__editor_scale") / 2.0)) func _ready(): var editor_scale = get_tree().get_meta("__editor_scale") - logged_avatar.rect_min_size *= editor_scale - not_logged.rect_min_size *= editor_scale - logged.find_node("MainBlock").rect_min_size *= editor_scale + logged_avatar.custom_minimum_size *= editor_scale + not_logged.custom_minimum_size *= editor_scale + logged.find_child("MainBlock").custom_minimum_size *= editor_scale func _exit_tree(): cfg.save(CONFIG_FILE_PATH) @@ -79,16 +77,16 @@ func _exit_tree(): func _notification(what): if what != NOTIFICATION_VISIBILITY_CHANGED: return - if !visible || !must_start_up: + if !is_visible_in_tree() || !is_node_ready() || !must_start_up: return must_start_up = false - logged_avatar.max_size = logged_avatar.rect_min_size.y + logged_avatar.max_size = logged_avatar.custom_minimum_size.y can_search = false search_categories.get_popup().add_check_item("All") - search_categories.get_popup().connect("index_pressed", self, "_on_Categories_index_pressed") + search_categories.get_popup().index_pressed.connect(_on_Categories_index_pressed) for item in FACE_COUNT_OPTIONS: search_face_count.add_item(item[0]) @@ -110,11 +108,11 @@ func _notification(what): if cfg.has_section_key("api", "token"): api.set_token(cfg.get_value("api", "token")) - yield(_populate_login(), "completed") + await _populate_login() else: not_logged.visible = true - yield(_load_categories(), "completed") + await _load_categories() _commit_category(0) can_search = true @@ -171,13 +169,13 @@ func _login(): cfg.set_value("api", "user", login_name.text) _set_login_disabled(true) - var token = yield(api.login(login_name.text, login_password.text), "completed") + var token = await api.login(login_name.text, login_password.text) _set_login_disabled(false) if token: cfg.set_value("api", "token", token) cfg.save(CONFIG_FILE_PATH) - yield(_populate_login(), "completed") + await _populate_login() else: OS.alert('Please check username and password and try again.', 'Cannot login') _logout() @@ -189,7 +187,7 @@ func _populate_login(): search_domain.show() _set_login_disabled(true) - var user = yield(api.get_my_info(), "completed") + var user = await api.get_my_info() _set_login_disabled(false) if !user || typeof(user) != TYPE_DICTIONARY: @@ -239,7 +237,7 @@ func _logout(): search_domain.set_meta("__suffix", SEARCH_DOMAIN[0][1]) func _load_categories(): - var result = yield(api.get_categories(), "completed") + var result = await api.get_categories() if typeof(result) != TYPE_DICTIONARY: return @@ -258,8 +256,8 @@ func _search(): paginator.search( search_text.text, search_categories.get_meta("__slugs"), - search_animated.pressed, - search_staff_picked.pressed, + search_animated.button_pressed, + search_staff_picked.button_pressed, search_face_count.get_meta("__data")[1], search_face_count.get_meta("__data")[2], search_sort_by.get_meta("__key"), diff --git a/addons/sketchfab/Main.tscn b/addons/sketchfab/Main.tscn index d050f54..842e7e5 100644 --- a/addons/sketchfab/Main.tscn +++ b/addons/sketchfab/Main.tscn @@ -1,942 +1,590 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=8 format=3 uid="uid://co44lw44eu7le"] -[ext_resource path="res://addons/sketchfab/Main.gd" type="Script" id=1] -[ext_resource path="res://addons/sketchfab/HttpImage.gd" type="Script" id=2] -[ext_resource path="res://addons/sketchfab/Paginator.gd" type="Script" id=3] +[ext_resource type="Script" path="res://addons/sketchfab/Main.gd" id="1"] +[ext_resource type="Script" path="res://addons/sketchfab/HttpImage.gd" id="2"] +[ext_resource type="Texture2D" uid="uid://c8u07nn7dtjpi" path="res://addons/sketchfab/icon.png" id="2_gb3i3"] +[ext_resource type="Script" path="res://addons/sketchfab/Paginator.gd" id="3"] -[sub_resource type="GDScript" id=1] - -script/source = "tool +[sub_resource type="GDScript" id="1"] +script/source = "@tool extends Control func _draw(): draw_rect(get_rect(), Color(1.0, 1.0, 1.0)) " -[node name="Main" type="VBoxContainer" index="0"] +[sub_resource type="Image" id="Image_h875h"] +data = { +"data": PackedByteArray(2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 170, 221, 0, 170, 219, 2, 170, 217, 2, 170, 217, 2, 168, 218, 2, 170, 219, 2, 170, 219, 0, 169, 218, 2, 170, 219, 1, 169, 218, 2, 168, 218, 2, 170, 219, 3, 171, 220, 2, 170, 219, 2, 170, 219, 3, 169, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 217, 2, 170, 217, 2, 170, 215, 3, 171, 218, 3, 170, 222, 2, 169, 221, 2, 170, 219, 3, 171, 216, 2, 170, 219, 2, 170, 219, 3, 171, 220, 2, 170, 219, 1, 169, 218, 1, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 4, 167, 224, 0, 170, 222, 0, 169, 221, 0, 171, 221, 2, 170, 219, 3, 167, 218, 2, 168, 218, 0, 170, 221, 2, 170, 219, 3, 171, 220, 2, 170, 219, 2, 170, 219, 0, 170, 219, 1, 171, 220, 3, 171, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 171, 217, 3, 171, 218, 4, 169, 217, 4, 168, 219, 2, 169, 222, 0, 170, 222, 0, 171, 219, 1, 172, 218, 2, 168, 218, 1, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 168, 218, 4, 168, 219, 4, 168, 219, 2, 170, 217, 0, 171, 217, 0, 171, 217, 2, 170, 217, 3, 167, 218, 3, 169, 219, 2, 170, 219, 3, 171, 220, 3, 171, 220, 3, 169, 219, 2, 168, 218, 1, 169, 218, 3, 171, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 170, 216, 0, 170, 219, 3, 171, 220, 2, 170, 217, 0, 168, 215, 0, 168, 215, 4, 169, 217, 8, 168, 220, 4, 170, 220, 1, 169, 218, 0, 168, 217, 0, 169, 218, 4, 170, 220, 4, 170, 220, 3, 169, 219, 3, 171, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 1, 169, 218, 2, 170, 219, 3, 171, 220, 5, 171, 223, 1, 167, 217, 0, 170, 221, 2, 177, 230, 3, 179, 236, 2, 181, 237, 2, 179, 229, 0, 174, 221, 1, 169, 218, 0, 170, 219, 0, 171, 221, 0, 170, 220, 1, 169, 218, 3, 169, 219, 3, 169, 219, 0, 168, 217, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 1, 169, 218, 1, 169, 218, 3, 171, 220, 4, 172, 221, 4, 179, 226, 0, 177, 227, 2, 168, 218, 6, 139, 180, 2, 100, 129, 0, 92, 117, 2, 120, 156, 2, 150, 196, 0, 170, 221, 6, 178, 228, 7, 181, 231, 4, 176, 226, 2, 169, 221, 2, 168, 218, 2, 170, 219, 0, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 221, 0, 170, 216, 5, 170, 224, 0, 171, 217, 2, 169, 221, 2, 170, 219, 0, 170, 216, 3, 170, 222, 7, 168, 223, 1, 168, 212, 4, 171, 216, 5, 170, 224, 0, 177, 229, 0, 180, 231, 6, 171, 219, 3, 152, 195, 3, 120, 155, 0, 81, 110, 3, 51, 73, 0, 34, 44, 1, 20, 26, 5, 5, 13, 4, 8, 17, 0, 19, 28, 0, 38, 49, 0, 67, 84, 5, 95, 130, 6, 134, 181, 0, 175, 222, 0, 178, 227, 7, 166, 222, 4, 167, 222, 3, 171, 220, 2, 168, 220, 3, 170, 223, 0, 170, 221, 0, 170, 222, 4, 170, 220, 3, 168, 216, 0, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 217, 0, 172, 222, 5, 166, 218, 0, 169, 217, 2, 168, 216, 5, 170, 218, 2, 170, 217, 3, 171, 220, 0, 171, 219, 3, 177, 228, 0, 177, 229, 2, 159, 202, 3, 133, 169, 1, 95, 123, 0, 58, 78, 0, 40, 57, 0, 30, 38, 2, 30, 42, 4, 32, 43, 0, 31, 38, 0, 29, 34, 0, 23, 30, 1, 16, 23, 4, 15, 17, 2, 11, 18, 1, 5, 14, 1, 5, 8, 0, 20, 23, 2, 73, 91, 2, 141, 180, 0, 177, 223, 1, 178, 220, 1, 166, 222, 4, 171, 215, 0, 174, 217, 3, 170, 215, 0, 169, 215, 4, 170, 220, 2, 170, 217, 3, 171, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 170, 215, 0, 169, 220, 0, 173, 216, 5, 169, 222, 0, 170, 216, 2, 167, 223, 0, 171, 219, 2, 167, 212, 2, 177, 224, 1, 135, 172, 0, 69, 86, 3, 46, 55, 1, 31, 41, 0, 28, 36, 4, 34, 45, 0, 39, 49, 0, 43, 55, 0, 41, 54, 0, 34, 44, 0, 24, 31, 1, 24, 30, 1, 21, 28, 0, 16, 23, 5, 19, 22, 0, 16, 26, 1, 21, 22, 3, 24, 27, 0, 21, 32, 1, 24, 32, 6, 33, 44, 1, 72, 100, 5, 142, 188, 1, 177, 224, 1, 177, 227, 1, 166, 212, 6, 170, 221, 0, 171, 214, 0, 170, 221, 2, 168, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 4, 168, 219, 0, 171, 219, 1, 172, 216, 1, 169, 218, 0, 170, 221, 0, 170, 222, 7, 167, 217, 0, 178, 228, 2, 149, 192, 4, 32, 44, 5, 28, 44, 4, 36, 57, 0, 41, 49, 6, 38, 59, 0, 40, 52, 0, 35, 53, 2, 38, 52, 3, 32, 40, 1, 24, 32, 0, 24, 31, 4, 27, 35, 4, 21, 29, 0, 13, 24, 0, 15, 28, 2, 15, 23, 2, 15, 23, 2, 19, 26, 2, 22, 29, 2, 29, 36, 2, 36, 45, 0, 30, 42, 2, 34, 47, 0, 79, 108, 1, 148, 192, 6, 178, 226, 3, 175, 225, 4, 170, 220, 1, 169, 216, 2, 171, 226, 3, 169, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 170, 222, 4, 168, 221, 0, 170, 216, 3, 169, 217, 0, 169, 218, 2, 171, 212, 6, 167, 221, 1, 171, 223, 0, 46, 60, 3, 20, 30, 0, 46, 68, 0, 35, 51, 0, 42, 45, 3, 33, 57, 3, 37, 49, 2, 42, 50, 0, 31, 42, 2, 27, 34, 2, 22, 29, 0, 25, 31, 0, 26, 32, 3, 22, 28, 1, 16, 21, 0, 17, 21, 0, 18, 23, 2, 15, 24, 0, 20, 27, 0, 23, 27, 1, 17, 30, 1, 33, 48, 0, 43, 56, 1, 33, 46, 5, 28, 44, 0, 32, 42, 3, 83, 116, 2, 147, 192, 2, 179, 233, 0, 172, 215, 2, 170, 219, 3, 172, 213, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 168, 220, 2, 170, 219, 3, 169, 221, 2, 168, 220, 2, 175, 218, 2, 167, 215, 0, 182, 232, 5, 80, 109, 0, 8, 10, 1, 30, 44, 1, 43, 57, 0, 40, 51, 3, 36, 51, 0, 42, 51, 0, 39, 50, 2, 35, 50, 1, 25, 37, 0, 22, 35, 0, 24, 34, 0, 28, 32, 0, 25, 29, 0, 22, 33, 2, 16, 29, 5, 13, 24, 0, 13, 21, 3, 20, 30, 0, 22, 30, 0, 24, 25, 0, 23, 25, 0, 27, 38, 4, 36, 51, 3, 36, 51, 0, 38, 49, 0, 38, 48, 0, 28, 36, 0, 38, 46, 5, 95, 129, 5, 172, 227, 4, 170, 218, 0, 166, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 5, 170, 218, 2, 167, 215, 0, 173, 223, 2, 168, 220, 2, 163, 215, 6, 182, 231, 1, 113, 151, 0, 10, 11, 0, 23, 28, 0, 31, 36, 0, 43, 56, 3, 39, 53, 4, 38, 47, 1, 38, 56, 0, 36, 52, 1, 26, 30, 1, 26, 31, 0, 24, 31, 0, 23, 33, 2, 25, 31, 1, 24, 30, 0, 24, 31, 0, 19, 24, 1, 17, 17, 0, 17, 24, 1, 20, 26, 1, 20, 27, 3, 20, 30, 2, 18, 31, 0, 21, 31, 0, 35, 43, 0, 37, 48, 1, 33, 48, 0, 37, 53, 2, 38, 52, 2, 29, 46, 2, 44, 58, 0, 133, 176, 3, 178, 225, 8, 169, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 217, 0, 170, 222, 1, 169, 216, 3, 170, 214, 3, 178, 233, 0, 143, 185, 3, 24, 29, 0, 19, 28, 1, 18, 26, 0, 30, 45, 4, 43, 60, 3, 42, 57, 0, 40, 51, 3, 41, 52, 0, 27, 36, 0, 26, 35, 0, 24, 33, 0, 27, 31, 0, 25, 30, 0, 22, 33, 0, 23, 33, 1, 26, 31, 0, 19, 25, 2, 15, 23, 0, 19, 24, 2, 22, 29, 0, 23, 31, 0, 23, 28, 3, 22, 26, 1, 19, 23, 1, 30, 38, 1, 38, 56, 0, 38, 50, 2, 33, 53, 0, 39, 49, 0, 35, 47, 0, 63, 87, 2, 88, 115, 0, 157, 202, 1, 170, 225, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 172, 222, 2, 166, 219, 4, 170, 220, 0, 173, 220, 5, 166, 218, 1, 44, 60, 0, 12, 17, 2, 22, 33, 1, 18, 26, 0, 32, 38, 1, 44, 60, 0, 41, 50, 1, 31, 42, 4, 20, 35, 0, 22, 26, 2, 26, 38, 1, 26, 33, 0, 27, 31, 0, 27, 30, 0, 23, 29, 1, 23, 36, 2, 24, 37, 0, 20, 29, 0, 16, 20, 3, 20, 27, 3, 21, 31, 0, 22, 30, 0, 20, 28, 3, 22, 28, 3, 22, 29, 1, 25, 37, 3, 37, 49, 0, 38, 56, 1, 34, 51, 2, 36, 45, 5, 34, 42, 0, 74, 100, 0, 79, 110, 0, 102, 139, 2, 174, 214, 2, 169, 214, 7, 168, 222, 0, 171, 219, 1, 171, 222, 0, 171, 213, 7, 167, 219, 0, 173, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 170, 214, 6, 170, 223, 1, 169, 218, 0, 180, 231, 0, 74, 101, 0, 9, 8, 3, 23, 34, 0, 21, 27, 2, 19, 27, 0, 28, 42, 0, 42, 58, 0, 42, 58, 3, 94, 125, 2, 55, 71, 2, 36, 38, 0, 18, 30, 0, 17, 24, 0, 21, 29, 0, 26, 35, 0, 25, 34, 0, 26, 30, 0, 28, 28, 0, 24, 25, 0, 17, 24, 0, 25, 26, 0, 25, 27, 0, 27, 30, 3, 26, 32, 3, 22, 28, 0, 16, 20, 0, 13, 17, 2, 17, 22, 3, 31, 43, 2, 39, 55, 0, 36, 48, 3, 35, 48, 0, 79, 106, 1, 88, 118, 5, 76, 108, 3, 124, 171, 0, 178, 228, 3, 168, 224, 2, 170, 217, 1, 168, 221, 2, 170, 217, 3, 171, 220, 3, 169, 219, 0, 171, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 215, 1, 166, 214, 2, 184, 234, 0, 112, 142, 0, 12, 20, 4, 24, 31, 0, 23, 28, 0, 24, 30, 0, 17, 26, 2, 39, 48, 0, 33, 45, 8, 117, 156, 12, 187, 242, 2, 121, 163, 0, 112, 146, 0, 93, 126, 0, 67, 86, 0, 44, 57, 3, 23, 30, 2, 20, 22, 0, 25, 29, 1, 26, 33, 2, 20, 30, 5, 19, 28, 4, 19, 24, 4, 15, 21, 2, 9, 17, 0, 10, 14, 3, 22, 26, 1, 41, 51, 0, 71, 93, 8, 106, 133, 3, 76, 91, 0, 25, 33, 6, 29, 43, 0, 47, 62, 0, 89, 116, 3, 82, 113, 0, 84, 112, 0, 84, 110, 5, 153, 199, 0, 174, 227, 5, 167, 216, 3, 170, 222, 4, 171, 223, 0, 170, 219, 2, 170, 219, 1, 171, 223, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 7, 166, 221, 1, 177, 226, 0, 135, 175, 0, 12, 15, 0, 14, 18, 2, 10, 13, 4, 11, 17, 4, 12, 15, 1, 17, 14, 0, 20, 31, 1, 110, 139, 6, 182, 232, 9, 172, 229, 4, 149, 193, 2, 101, 142, 2, 110, 146, 3, 110, 154, 2, 103, 145, 1, 89, 125, 0, 65, 91, 0, 40, 56, 0, 24, 31, 0, 13, 19, 2, 11, 18, 2, 30, 42, 2, 51, 66, 5, 85, 108, 6, 121, 152, 6, 149, 193, 9, 170, 222, 9, 180, 236, 11, 181, 240, 6, 171, 227, 0, 109, 145, 2, 36, 45, 0, 42, 63, 0, 78, 111, 4, 78, 113, 2, 83, 112, 0, 77, 106, 0, 97, 126, 0, 168, 214, 3, 173, 222, 1, 172, 218, 2, 169, 221, 3, 167, 218, 3, 169, 217, 4, 168, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 166, 218, 5, 176, 230, 6, 96, 130, 0, 76, 102, 0, 75, 98, 2, 67, 95, 0, 65, 84, 1, 57, 80, 3, 40, 56, 6, 99, 133, 16, 185, 244, 19, 177, 225, 16, 180, 233, 23, 180, 233, 23, 159, 209, 24, 155, 201, 20, 157, 203, 24, 156, 205, 27, 162, 210, 24, 166, 212, 24, 161, 207, 25, 146, 191, 20, 133, 173, 13, 134, 165, 5, 160, 208, 10, 176, 226, 10, 185, 238, 6, 181, 236, 8, 179, 233, 10, 176, 228, 9, 170, 222, 12, 171, 226, 5, 166, 210, 0, 172, 225, 2, 139, 175, 14, 95, 125, 16, 109, 143, 11, 101, 127, 9, 98, 132, 7, 91, 125, 5, 82, 112, 0, 128, 177, 5, 175, 224, 3, 168, 216, 2, 170, 217, 0, 172, 218, 2, 172, 223, 0, 173, 216, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 173, 223, 0, 165, 209, 2, 115, 157, 1, 128, 173, 0, 142, 192, 0, 142, 195, 7, 145, 194, 0, 137, 183, 20, 167, 218, 31, 196, 244, 26, 184, 232, 27, 185, 232, 27, 182, 238, 35, 193, 238, 45, 201, 252, 43, 199, 255, 41, 203, 252, 40, 202, 251, 42, 200, 248, 42, 197, 245, 47, 202, 250, 50, 211, 255, 45, 210, 255, 38, 205, 250, 12, 184, 234, 7, 173, 221, 8, 170, 217, 8, 173, 219, 8, 173, 221, 10, 172, 221, 8, 173, 219, 7, 176, 219, 4, 169, 223, 1, 161, 209, 0, 166, 210, 42, 196, 246, 92, 219, 254, 82, 211, 253, 81, 210, 252, 76, 205, 245, 83, 205, 242, 45, 158, 200, 0, 165, 212, 6, 169, 224, 2, 170, 215, 4, 170, 218, 4, 164, 222, 0, 171, 215, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 174, 220, 5, 161, 212, 0, 107, 140, 0, 101, 139, 0, 109, 149, 7, 125, 175, 0, 127, 180, 15, 155, 208, 41, 196, 250, 29, 186, 237, 23, 185, 234, 34, 181, 233, 31, 190, 232, 40, 196, 244, 39, 194, 242, 37, 193, 242, 37, 192, 240, 38, 192, 242, 42, 196, 248, 44, 198, 248, 46, 201, 249, 49, 200, 247, 47, 194, 246, 45, 192, 246, 43, 195, 242, 24, 184, 232, 9, 173, 226, 8, 169, 224, 12, 173, 228, 9, 175, 227, 5, 173, 222, 10, 176, 226, 10, 170, 228, 0, 163, 206, 0, 159, 211, 38, 193, 241, 77, 217, 253, 85, 210, 255, 78, 211, 252, 92, 221, 255, 58, 187, 227, 0, 112, 150, 4, 166, 215, 3, 170, 222, 0, 171, 217, 2, 168, 218, 4, 170, 222, 4, 170, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 174, 218, 1, 152, 207, 2, 103, 147, 0, 107, 143, 1, 109, 145, 0, 96, 136, 26, 158, 196, 42, 199, 250, 44, 195, 248, 31, 186, 232, 26, 184, 232, 27, 187, 237, 47, 189, 251, 40, 196, 244, 36, 193, 246, 42, 197, 245, 47, 198, 245, 46, 202, 251, 48, 204, 255, 49, 200, 255, 48, 199, 252, 45, 203, 251, 42, 200, 248, 43, 195, 245, 43, 197, 249, 43, 197, 247, 35, 193, 241, 15, 177, 224, 4, 170, 220, 9, 173, 226, 12, 173, 225, 7, 171, 222, 7, 173, 221, 5, 162, 213, 4, 160, 208, 34, 199, 247, 68, 209, 252, 85, 211, 255, 85, 219, 254, 68, 196, 233, 3, 103, 139, 0, 110, 147, 3, 173, 224, 2, 168, 216, 0, 170, 221, 0, 171, 221, 1, 169, 216, 2, 168, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 219, 3, 169, 219, 0, 175, 228, 2, 145, 187, 3, 103, 135, 5, 108, 153, 0, 96, 137, 57, 156, 187, 112, 222, 255, 35, 197, 244, 44, 196, 245, 28, 185, 236, 30, 185, 231, 40, 192, 241, 39, 194, 251, 44, 194, 245, 46, 196, 246, 47, 202, 255, 48, 202, 252, 47, 201, 251, 47, 201, 251, 46, 200, 250, 47, 201, 251, 47, 201, 251, 43, 197, 247, 42, 196, 246, 42, 196, 246, 41, 195, 245, 44, 198, 248, 40, 196, 245, 23, 181, 229, 10, 172, 221, 8, 172, 223, 8, 174, 226, 10, 174, 225, 1, 165, 218, 4, 164, 216, 45, 200, 248, 57, 203, 250, 83, 221, 255, 69, 206, 240, 14, 113, 155, 0, 96, 131, 6, 113, 159, 1, 173, 221, 1, 169, 216, 0, 170, 216, 6, 171, 217, 1, 169, 216, 2, 169, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 219, 3, 169, 219, 3, 175, 225, 1, 139, 185, 2, 105, 140, 1, 96, 140, 50, 153, 188, 155, 233, 255, 116, 219, 250, 41, 196, 252, 38, 198, 250, 30, 186, 234, 35, 191, 239, 43, 197, 247, 40, 200, 252, 42, 202, 250, 48, 203, 249, 46, 200, 252, 47, 201, 251, 47, 201, 251, 47, 201, 251, 46, 200, 250, 47, 201, 251, 47, 201, 251, 44, 198, 248, 43, 197, 247, 43, 197, 247, 43, 197, 247, 39, 193, 243, 41, 197, 246, 42, 200, 248, 26, 186, 236, 10, 171, 223, 7, 171, 222, 12, 173, 227, 3, 169, 217, 5, 170, 218, 52, 203, 250, 46, 201, 255, 67, 202, 249, 18, 124, 163, 0, 97, 134, 0, 102, 133, 3, 116, 158, 1, 173, 221, 5, 171, 221, 0, 168, 219, 2, 169, 221, 0, 170, 219, 2, 168, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 219, 1, 175, 225, 1, 138, 174, 3, 92, 132, 50, 154, 193, 145, 233, 255, 143, 229, 255, 115, 220, 250, 45, 200, 254, 38, 196, 243, 37, 194, 237, 45, 203, 251, 49, 201, 251, 50, 200, 250, 46, 202, 253, 49, 201, 248, 48, 202, 252, 47, 201, 251, 47, 201, 251, 47, 201, 251, 46, 200, 250, 47, 201, 251, 47, 201, 251, 43, 197, 247, 43, 197, 247, 42, 196, 246, 42, 196, 246, 44, 198, 248, 42, 196, 246, 40, 196, 245, 44, 200, 249, 36, 193, 244, 15, 175, 225, 7, 174, 219, 7, 168, 222, 14, 173, 228, 46, 203, 248, 53, 207, 255, 69, 186, 229, 2, 99, 131, 0, 103, 142, 0, 103, 136, 0, 115, 158, 0, 172, 220, 5, 170, 218, 1, 168, 220, 1, 171, 222, 0, 172, 220, 3, 167, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 219, 4, 174, 226, 0, 116, 157, 49, 149, 181, 148, 233, 254, 139, 229, 255, 146, 226, 253, 124, 222, 255, 35, 199, 252, 111, 214, 255, 59, 201, 251, 44, 201, 252, 44, 200, 249, 47, 202, 250, 46, 202, 253, 46, 201, 249, 50, 202, 252, 47, 201, 251, 47, 201, 251, 47, 201, 251, 46, 200, 250, 47, 201, 251, 47, 201, 251, 43, 197, 247, 42, 196, 246, 43, 197, 247, 41, 195, 245, 41, 195, 245, 43, 197, 247, 42, 196, 246, 42, 196, 246, 41, 197, 246, 40, 196, 245, 26, 186, 236, 3, 168, 216, 15, 180, 225, 58, 202, 254, 79, 211, 250, 115, 230, 251, 86, 190, 229, 0, 101, 133, 4, 97, 138, 4, 122, 168, 4, 176, 226, 2, 168, 216, 3, 171, 218, 0, 171, 215, 0, 170, 216, 4, 170, 222, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 164, 217, 58, 167, 210, 154, 230, 253, 138, 227, 255, 133, 225, 250, 141, 231, 255, 127, 221, 255, 120, 220, 254, 165, 235, 255, 55, 201, 252, 39, 195, 244, 46, 200, 250, 48, 203, 251, 47, 201, 253, 47, 203, 254, 48, 200, 250, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 43, 197, 247, 42, 196, 246, 40, 194, 244, 45, 199, 249, 43, 197, 247, 40, 194, 244, 44, 196, 246, 45, 197, 247, 42, 196, 246, 43, 197, 247, 43, 196, 254, 26, 189, 230, 33, 190, 233, 99, 219, 255, 98, 217, 255, 104, 218, 252, 135, 229, 254, 86, 191, 221, 3, 91, 127, 3, 122, 165, 2, 172, 224, 2, 169, 221, 2, 168, 218, 3, 172, 215, 0, 171, 215, 3, 170, 222, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 216, 47, 194, 237, 120, 214, 252, 139, 226, 253, 126, 224, 255, 128, 224, 249, 129, 225, 250, 181, 237, 254, 155, 234, 247, 39, 204, 252, 41, 196, 244, 48, 198, 249, 50, 200, 251, 48, 199, 252, 47, 203, 254, 49, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 46, 200, 250, 47, 201, 251, 47, 201, 251, 43, 197, 247, 42, 196, 246, 44, 198, 248, 40, 194, 244, 42, 196, 246, 44, 198, 248, 42, 196, 246, 41, 195, 245, 43, 197, 247, 41, 195, 245, 41, 196, 250, 36, 193, 238, 74, 210, 248, 108, 218, 255, 95, 217, 255, 112, 222, 255, 124, 216, 255, 129, 235, 255, 87, 186, 215, 1, 131, 167, 2, 172, 224, 1, 168, 221, 5, 170, 224, 2, 168, 218, 3, 171, 218, 0, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 173, 217, 24, 185, 231, 11, 173, 222, 83, 205, 244, 134, 228, 254, 135, 224, 254, 131, 225, 251, 161, 236, 255, 146, 226, 251, 47, 207, 255, 48, 200, 247, 38, 194, 245, 42, 198, 246, 45, 201, 252, 44, 202, 250, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 43, 197, 247, 42, 196, 246, 43, 197, 247, 41, 195, 245, 41, 195, 245, 42, 196, 246, 42, 196, 246, 42, 196, 246, 42, 196, 246, 42, 196, 246, 43, 195, 242, 28, 188, 240, 70, 203, 248, 113, 222, 255, 101, 217, 255, 102, 218, 255, 93, 220, 255, 96, 213, 255, 99, 223, 255, 41, 187, 226, 0, 169, 220, 5, 173, 222, 1, 168, 221, 2, 168, 220, 2, 170, 219, 0, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 167, 220, 48, 196, 244, 12, 179, 231, 0, 170, 219, 41, 187, 238, 107, 215, 251, 142, 225, 255, 164, 230, 255, 131, 220, 255, 43, 203, 253, 49, 204, 250, 40, 196, 247, 43, 194, 241, 44, 195, 248, 47, 199, 246, 46, 202, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 47, 201, 251, 46, 200, 250, 42, 196, 246, 41, 195, 245, 41, 196, 244, 42, 196, 246, 43, 197, 247, 42, 196, 246, 42, 196, 246, 42, 196, 246, 41, 195, 245, 38, 192, 242, 36, 190, 242, 33, 191, 239, 63, 201, 250, 111, 221, 254, 107, 222, 251, 92, 216, 254, 64, 206, 252, 51, 206, 250, 61, 207, 255, 38, 195, 240, 0, 168, 217, 3, 172, 213, 0, 169, 215, 3, 170, 222, 3, 169, 219, 3, 171, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 1, 167, 217, 50, 198, 244, 29, 187, 235, 4, 171, 223, 1, 168, 221, 41, 190, 232, 146, 228, 252, 175, 234, 250, 117, 221, 255, 45, 202, 253, 54, 204, 255, 42, 198, 249, 41, 197, 246, 41, 197, 246, 40, 194, 246, 45, 200, 248, 47, 201, 251, 47, 201, 251, 47, 201, 251, 48, 202, 252, 47, 201, 251, 47, 201, 251, 42, 196, 246, 42, 196, 246, 45, 197, 247, 42, 196, 246, 40, 194, 244, 45, 199, 249, 41, 197, 246, 38, 194, 243, 37, 193, 242, 35, 191, 240, 39, 191, 240, 29, 190, 236, 58, 198, 247, 109, 222, 255, 110, 218, 255, 99, 218, 252, 69, 212, 254, 67, 208, 251, 63, 210, 254, 37, 198, 242, 0, 168, 214, 10, 167, 222, 2, 169, 221, 1, 171, 220, 2, 168, 218, 5, 169, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 2, 169, 224, 45, 197, 234, 52, 198, 247, 30, 181, 226, 103, 212, 245, 146, 231, 255, 153, 233, 255, 169, 234, 255, 113, 220, 254, 46, 203, 254, 56, 206, 255, 46, 202, 251, 40, 196, 245, 41, 197, 246, 42, 193, 246, 41, 196, 244, 44, 198, 248, 46, 200, 250, 47, 201, 251, 48, 202, 252, 46, 200, 250, 46, 200, 250, 42, 196, 246, 43, 197, 247, 40, 194, 244, 42, 196, 246, 43, 197, 247, 40, 196, 245, 37, 193, 242, 37, 193, 242, 36, 192, 241, 37, 193, 242, 36, 192, 241, 29, 189, 237, 51, 196, 241, 108, 218, 255, 125, 223, 255, 100, 218, 255, 69, 206, 252, 75, 210, 255, 73, 209, 255, 42, 197, 245, 0, 172, 217, 4, 168, 221, 0, 170, 221, 0, 169, 218, 2, 170, 219, 1, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 0, 167, 212, 36, 195, 237, 78, 211, 255, 119, 222, 255, 155, 235, 255, 142, 226, 254, 153, 228, 255, 164, 235, 255, 111, 219, 255, 47, 204, 255, 55, 205, 255, 50, 204, 254, 41, 196, 244, 41, 195, 245, 43, 194, 247, 41, 195, 245, 42, 196, 246, 44, 198, 248, 46, 200, 250, 48, 202, 252, 46, 200, 250, 46, 200, 250, 42, 196, 246, 43, 197, 247, 43, 197, 247, 42, 196, 246, 41, 197, 246, 36, 192, 241, 36, 192, 241, 37, 193, 242, 35, 191, 240, 36, 192, 241, 34, 191, 242, 34, 191, 242, 45, 196, 239, 109, 217, 255, 132, 223, 254, 93, 216, 255, 67, 207, 255, 72, 210, 255, 69, 205, 253, 42, 194, 243, 0, 171, 217, 4, 170, 222, 0, 170, 219, 0, 170, 219, 4, 172, 221, 0, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 3, 167, 220, 32, 188, 236, 74, 211, 253, 84, 216, 254, 110, 220, 255, 141, 229, 251, 157, 231, 244, 157, 231, 255, 112, 220, 255, 45, 205, 255, 54, 204, 254, 52, 207, 255, 48, 200, 249, 40, 194, 244, 43, 194, 247, 42, 196, 246, 40, 194, 244, 41, 195, 245, 43, 197, 247, 46, 200, 250, 47, 201, 251, 47, 201, 251, 42, 196, 246, 42, 196, 246, 42, 198, 247, 37, 193, 242, 37, 193, 242, 35, 191, 240, 36, 192, 241, 36, 192, 241, 36, 192, 241, 36, 192, 241, 36, 191, 245, 34, 190, 238, 38, 193, 237, 112, 219, 255, 132, 226, 252, 94, 218, 255, 53, 205, 254, 60, 208, 254, 65, 214, 255, 42, 198, 246, 0, 166, 213, 5, 166, 220, 1, 169, 218, 0, 170, 219, 0, 168, 217, 3, 169, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 1, 165, 218, 30, 188, 233, 75, 213, 252, 85, 211, 251, 90, 213, 255, 96, 219, 253, 133, 226, 255, 150, 231, 252, 111, 219, 255, 45, 205, 255, 55, 205, 255, 52, 207, 255, 54, 206, 255, 41, 195, 245, 42, 193, 246, 40, 194, 244, 41, 195, 245, 41, 195, 245, 41, 195, 245, 44, 198, 248, 46, 200, 250, 47, 201, 251, 42, 196, 246, 41, 195, 245, 37, 193, 242, 34, 190, 239, 36, 192, 241, 38, 192, 242, 37, 191, 241, 35, 191, 240, 40, 196, 245, 36, 192, 243, 39, 193, 245, 39, 194, 238, 38, 194, 242, 114, 219, 251, 131, 225, 251, 107, 217, 254, 41, 196, 244, 49, 204, 252, 55, 206, 251, 45, 197, 246, 4, 172, 219, 4, 168, 219, 2, 170, 219, 4, 172, 219, 1, 169, 218, 5, 171, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 2, 167, 221, 23, 184, 236, 65, 208, 252, 91, 219, 254, 113, 222, 255, 110, 221, 251, 127, 226, 255, 157, 227, 253, 112, 219, 253, 47, 204, 255, 56, 206, 255, 51, 205, 255, 52, 207, 255, 42, 196, 246, 46, 197, 250, 43, 197, 247, 42, 196, 246, 42, 196, 246, 41, 195, 245, 41, 195, 245, 41, 195, 245, 43, 197, 247, 39, 193, 243, 38, 192, 242, 38, 194, 243, 38, 194, 243, 40, 194, 244, 41, 195, 245, 41, 195, 245, 41, 195, 245, 42, 198, 249, 32, 188, 239, 37, 191, 243, 54, 210, 251, 50, 206, 255, 117, 224, 255, 141, 226, 255, 132, 222, 255, 66, 201, 246, 27, 177, 230, 11, 149, 198, 21, 167, 218, 6, 177, 223, 0, 169, 218, 0, 168, 217, 1, 169, 216, 0, 170, 219, 0, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 2, 168, 218, 19, 179, 229, 88, 218, 252, 127, 224, 255, 124, 218, 254, 118, 223, 253, 142, 227, 255, 150, 230, 253, 116, 221, 253, 46, 202, 253, 55, 205, 255, 49, 203, 253, 44, 198, 248, 38, 192, 242, 46, 200, 252, 48, 203, 251, 48, 202, 252, 49, 203, 253, 47, 201, 251, 46, 200, 250, 46, 200, 250, 48, 203, 251, 43, 198, 246, 41, 196, 244, 43, 197, 247, 44, 198, 248, 42, 196, 246, 43, 197, 247, 44, 198, 248, 44, 200, 249, 37, 193, 244, 27, 183, 234, 24, 180, 231, 45, 202, 247, 49, 204, 255, 108, 221, 255, 149, 229, 255, 147, 228, 255, 97, 211, 248, 8, 162, 214, 1, 141, 190, 9, 153, 205, 3, 174, 220, 0, 171, 219, 0, 170, 219, 3, 169, 217, 2, 172, 221, 0, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 1, 167, 217, 20, 180, 228, 117, 223, 255, 122, 219, 252, 122, 225, 255, 123, 224, 252, 137, 228, 249, 178, 235, 255, 118, 221, 254, 42, 198, 247, 54, 201, 252, 47, 203, 252, 35, 191, 240, 31, 187, 236, 43, 197, 249, 49, 204, 252, 48, 202, 252, 48, 202, 252, 48, 202, 252, 48, 202, 252, 49, 204, 252, 51, 206, 254, 45, 200, 248, 42, 197, 245, 42, 196, 246, 44, 198, 248, 43, 197, 247, 42, 196, 246, 44, 198, 248, 41, 197, 246, 29, 185, 236, 24, 181, 232, 24, 181, 232, 31, 187, 238, 47, 202, 255, 95, 215, 250, 153, 229, 253, 146, 231, 252, 116, 221, 251, 39, 201, 250, 52, 203, 248, 23, 170, 221, 0, 164, 212, 3, 169, 219, 5, 171, 221, 3, 169, 217, 0, 168, 217, 4, 170, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 218, 0, 168, 215, 33, 182, 225, 141, 229, 251, 139, 225, 255, 140, 226, 251, 108, 217, 248, 171, 233, 255, 202, 239, 255, 104, 218, 255, 37, 198, 250, 51, 203, 253, 36, 192, 240, 34, 189, 243, 36, 188, 235, 34, 192, 240, 42, 203, 247, 48, 202, 254, 49, 204, 250, 49, 201, 250, 46, 201, 255, 47, 203, 252, 63, 208, 253, 57, 199, 245, 39, 196, 247, 42, 196, 246, 44, 198, 248, 42, 196, 246, 43, 197, 247, 43, 199, 248, 36, 192, 241, 22, 179, 230, 26, 183, 234, 26, 183, 234, 23, 179, 228, 33, 195, 244, 86, 213, 255, 149, 225, 255, 146, 233, 252, 129, 222, 255, 42, 196, 248, 40, 198, 245, 13, 115, 155, 1, 158, 203, 1, 170, 225, 3, 170, 214, 0, 170, 213, 0, 172, 218, 2, 169, 222, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 3, 171, 218, 0, 165, 219, 32, 185, 227, 141, 228, 255, 148, 229, 255, 76, 202, 242, 56, 192, 234, 188, 241, 247, 191, 239, 251, 83, 209, 250, 39, 200, 252, 43, 198, 246, 32, 190, 238, 34, 190, 241, 35, 190, 238, 34, 188, 240, 42, 197, 245, 49, 203, 255, 47, 202, 250, 51, 203, 252, 48, 202, 254, 47, 201, 251, 66, 211, 255, 62, 204, 250, 40, 196, 245, 43, 197, 247, 43, 197, 247, 43, 197, 247, 43, 197, 247, 40, 196, 245, 27, 183, 232, 26, 183, 234, 24, 181, 232, 26, 182, 230, 25, 182, 235, 21, 182, 234, 61, 206, 253, 148, 227, 255, 153, 229, 252, 138, 223, 254, 51, 209, 254, 19, 132, 172, 0, 86, 121, 0, 156, 197, 1, 175, 226, 1, 171, 220, 2, 169, 221, 2, 168, 218, 4, 168, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 3, 171, 220, 0, 171, 218, 35, 180, 225, 145, 232, 255, 65, 197, 235, 0, 164, 218, 90, 207, 240, 185, 242, 251, 180, 232, 253, 66, 207, 253, 41, 198, 249, 33, 188, 234, 35, 193, 241, 32, 188, 239, 34, 190, 238, 35, 189, 243, 37, 187, 238, 45, 199, 251, 48, 203, 251, 49, 204, 252, 47, 201, 253, 51, 203, 252, 68, 211, 255, 67, 209, 255, 43, 198, 246, 43, 197, 247, 43, 197, 247, 44, 198, 248, 43, 199, 248, 31, 187, 236, 23, 180, 231, 26, 183, 234, 24, 181, 232, 27, 181, 233, 24, 181, 236, 20, 179, 234, 33, 188, 232, 129, 227, 252, 145, 230, 251, 150, 230, 255, 38, 171, 204, 0, 103, 145, 12, 113, 155, 4, 161, 206, 1, 171, 222, 2, 168, 220, 6, 167, 222, 5, 172, 217, 2, 170, 217, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 0, 166, 221, 23, 180, 225, 46, 188, 226, 6, 176, 227, 8, 177, 232, 121, 216, 246, 191, 238, 254, 168, 232, 255, 48, 202, 254, 33, 187, 239, 37, 192, 238, 33, 187, 237, 34, 190, 239, 33, 194, 240, 34, 191, 244, 34, 188, 238, 37, 193, 244, 50, 205, 253, 47, 201, 251, 46, 200, 250, 56, 207, 254, 66, 209, 253, 69, 211, 255, 50, 201, 248, 42, 196, 246, 43, 197, 247, 44, 200, 249, 39, 195, 246, 25, 182, 233, 25, 182, 233, 24, 181, 232, 25, 182, 233, 23, 183, 233, 28, 182, 232, 29, 180, 237, 32, 186, 238, 49, 194, 239, 39, 187, 233, 46, 186, 237, 38, 181, 239, 35, 190, 234, 41, 193, 240, 1, 173, 221, 0, 168, 217, 3, 171, 220, 4, 170, 222, 0, 171, 215, 0, 169, 215, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 167, 219, 8, 169, 221, 3, 169, 221, 6, 173, 218, 1, 171, 222, 88, 210, 249, 164, 236, 255, 136, 223, 251, 29, 189, 241, 35, 191, 242, 35, 193, 240, 38, 189, 242, 34, 188, 238, 34, 192, 239, 31, 191, 239, 34, 190, 238, 33, 189, 238, 46, 200, 250, 47, 203, 252, 46, 200, 250, 60, 206, 255, 68, 209, 254, 69, 212, 255, 57, 203, 250, 41, 195, 245, 44, 198, 248, 43, 199, 248, 28, 184, 235, 26, 183, 234, 25, 182, 233, 25, 182, 233, 25, 182, 233, 22, 181, 236, 26, 187, 233, 24, 181, 232, 38, 188, 239, 63, 204, 255, 25, 182, 237, 20, 181, 233, 35, 193, 241, 46, 198, 248, 25, 182, 233, 1, 167, 219, 4, 169, 215, 3, 171, 218, 2, 169, 221, 0, 168, 217, 5, 172, 227, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 172, 213, 5, 166, 221, 4, 172, 217, 2, 173, 219, 10, 175, 229, 80, 208, 253, 104, 218, 254, 90, 215, 247, 33, 188, 234, 30, 187, 238, 27, 189, 238, 39, 191, 241, 37, 188, 241, 34, 188, 238, 33, 191, 238, 34, 189, 237, 33, 189, 238, 37, 191, 241, 48, 204, 253, 49, 204, 252, 60, 205, 252, 70, 211, 255, 68, 211, 255, 64, 206, 252, 42, 197, 245, 45, 199, 249, 34, 190, 239, 24, 181, 232, 25, 182, 233, 25, 182, 233, 26, 183, 234, 25, 182, 233, 25, 186, 238, 23, 183, 231, 27, 181, 231, 48, 195, 247, 80, 213, 254, 38, 195, 246, 25, 185, 233, 30, 187, 232, 40, 195, 243, 6, 172, 220, 0, 171, 219, 0, 170, 216, 0, 172, 218, 0, 170, 219, 2, 170, 219, 2, 168, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 172, 222, 0, 171, 218, 2, 172, 221, 9, 169, 227, 25, 187, 236, 72, 210, 249, 99, 219, 253, 101, 220, 255, 72, 206, 244, 28, 178, 228, 24, 188, 239, 28, 182, 232, 34, 190, 241, 35, 186, 241, 32, 190, 237, 36, 190, 240, 34, 190, 239, 33, 187, 239, 43, 199, 250, 51, 203, 252, 64, 206, 252, 72, 210, 255, 68, 211, 255, 70, 208, 254, 47, 202, 250, 40, 194, 244, 26, 182, 231, 26, 183, 234, 24, 181, 232, 26, 183, 234, 27, 184, 235, 26, 183, 234, 29, 185, 236, 30, 186, 237, 22, 179, 230, 53, 201, 249, 91, 218, 251, 50, 198, 246, 36, 188, 238, 33, 188, 236, 32, 188, 239, 4, 170, 218, 2, 170, 219, 2, 168, 220, 4, 172, 221, 0, 168, 213, 3, 169, 217, 0, 171, 217, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 4, 168, 221, 2, 168, 220, 4, 169, 215, 10, 174, 227, 38, 195, 246, 66, 203, 249, 96, 221, 253, 106, 218, 255, 109, 219, 255, 59, 199, 250, 19, 179, 231, 29, 184, 232, 24, 184, 236, 27, 180, 237, 26, 188, 234, 31, 187, 238, 33, 189, 238, 37, 191, 243, 35, 192, 243, 50, 202, 249, 70, 211, 255, 71, 209, 255, 68, 211, 255, 72, 210, 255, 51, 206, 254, 31, 186, 234, 27, 183, 232, 26, 183, 234, 26, 183, 234, 26, 183, 234, 28, 185, 236, 27, 184, 235, 24, 184, 236, 29, 183, 233, 23, 182, 237, 65, 200, 247, 94, 216, 253, 60, 205, 252, 37, 193, 250, 37, 191, 245, 12, 178, 228, 0, 168, 215, 3, 171, 220, 3, 168, 222, 1, 169, 218, 0, 172, 218, 2, 168, 220, 0, 170, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 5, 168, 223, 0, 171, 217, 1, 169, 214, 28, 186, 233, 43, 194, 249, 54, 201, 252, 105, 217, 255, 107, 220, 254, 104, 218, 255, 101, 219, 255, 44, 190, 237, 25, 179, 233, 25, 185, 235, 28, 183, 231, 29, 187, 234, 21, 182, 236, 26, 186, 234, 27, 185, 232, 29, 184, 232, 46, 197, 244, 64, 212, 255, 64, 210, 255, 60, 207, 251, 65, 210, 255, 50, 204, 254, 28, 182, 232, 27, 183, 234, 28, 185, 236, 26, 186, 236, 26, 183, 234, 29, 186, 237, 26, 183, 234, 27, 185, 233, 23, 184, 238, 27, 185, 233, 73, 206, 249, 93, 216, 255, 76, 211, 255, 40, 196, 244, 40, 192, 242, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 170, 219, 5, 169, 220, 0, 167, 216, 22, 187, 233, 51, 202, 255, 54, 200, 247, 100, 218, 254, 103, 220, 253, 99, 217, 255, 100, 219, 251, 93, 215, 252, 27, 189, 236, 23, 182, 237, 23, 183, 231, 28, 179, 234, 27, 182, 236, 21, 181, 233, 26, 183, 234, 31, 187, 238, 42, 196, 246, 51, 203, 253, 51, 203, 252, 51, 203, 252, 50, 202, 251, 42, 196, 246, 35, 189, 239, 27, 183, 234, 21, 178, 229, 27, 184, 235, 27, 184, 235, 26, 183, 234, 28, 185, 236, 29, 185, 236, 25, 185, 237, 31, 183, 230, 85, 212, 253, 91, 217, 255, 76, 211, 255, 48, 203, 251, 24, 184, 234, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 171, 217, 6, 167, 219, 5, 172, 225, 0, 168, 217, 32, 189, 240, 60, 208, 254, 94, 218, 254, 98, 218, 252, 106, 216, 249, 100, 216, 255, 106, 221, 252, 82, 205, 249, 23, 182, 238, 25, 184, 239, 25, 186, 232, 27, 183, 232, 31, 186, 240, 35, 190, 244, 40, 196, 247, 43, 197, 249, 45, 199, 251, 49, 203, 253, 51, 207, 255, 46, 202, 251, 42, 196, 246, 42, 196, 246, 37, 193, 242, 27, 184, 235, 24, 181, 232, 24, 181, 232, 25, 182, 233, 26, 183, 234, 28, 182, 232, 27, 184, 237, 39, 189, 239, 79, 212, 255, 70, 208, 247, 57, 198, 244, 40, 196, 245, 5, 171, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 217, 2, 169, 221, 2, 169, 221, 3, 169, 219, 0, 167, 214, 33, 190, 235, 92, 218, 255, 100, 219, 251, 111, 219, 255, 116, 220, 255, 109, 217, 255, 108, 221, 255, 66, 202, 242, 22, 178, 229, 27, 185, 233, 37, 192, 240, 42, 196, 246, 43, 197, 247, 43, 197, 247, 42, 196, 246, 42, 197, 245, 48, 203, 251, 50, 205, 253, 44, 198, 248, 40, 194, 244, 39, 193, 243, 41, 197, 246, 38, 194, 245, 27, 184, 235, 24, 181, 232, 26, 183, 234, 24, 181, 232, 25, 183, 231, 21, 178, 231, 27, 184, 237, 47, 194, 245, 37, 192, 238, 43, 194, 247, 24, 185, 237, 0, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 168, 218, 4, 171, 223, 0, 170, 219, 1, 167, 217, 2, 174, 222, 0, 165, 213, 67, 202, 247, 107, 220, 254, 108, 222, 255, 112, 219, 251, 120, 220, 254, 117, 225, 251, 110, 223, 255, 48, 196, 244, 31, 186, 242, 37, 193, 244, 37, 193, 241, 38, 194, 242, 37, 193, 241, 37, 193, 241, 40, 195, 243, 42, 197, 245, 43, 197, 247, 40, 194, 244, 39, 195, 244, 39, 195, 244, 38, 194, 243, 37, 193, 244, 33, 190, 241, 24, 181, 232, 19, 176, 227, 17, 177, 227, 13, 178, 224, 15, 172, 225, 19, 180, 232, 36, 193, 244, 33, 193, 243, 41, 198, 251, 6, 173, 225, 0, 167, 216, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 170, 222, 4, 168, 221, 0, 170, 216, 2, 170, 217, 1, 171, 220, 0, 169, 220, 30, 181, 228, 101, 217, 254, 113, 220, 252, 116, 223, 255, 121, 226, 255, 110, 217, 253, 84, 211, 254, 53, 198, 245, 15, 179, 232, 18, 178, 228, 15, 177, 226, 18, 180, 229, 19, 179, 229, 20, 180, 230, 21, 181, 231, 22, 179, 230, 25, 182, 233, 28, 185, 236, 25, 182, 233, 29, 185, 236, 27, 183, 234, 27, 183, 234, 28, 185, 236, 21, 178, 229, 15, 175, 225, 16, 176, 226, 12, 180, 227, 17, 175, 223, 23, 184, 230, 37, 194, 239, 39, 195, 243, 26, 182, 231, 1, 169, 218, 3, 170, 222, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 6, 170, 223, 0, 169, 217, 1, 169, 218, 4, 172, 221, 0, 167, 219, 4, 165, 217, 73, 209, 247, 122, 222, 254, 114, 221, 255, 91, 215, 253, 61, 207, 254, 60, 208, 254, 58, 204, 253, 25, 182, 235, 18, 179, 223, 18, 179, 231, 19, 180, 232, 18, 180, 229, 18, 180, 229, 17, 177, 227, 16, 176, 228, 20, 180, 232, 23, 183, 235, 25, 182, 233, 26, 183, 234, 29, 185, 236, 28, 184, 235, 25, 182, 233, 19, 176, 227, 18, 178, 228, 15, 177, 226, 12, 178, 228, 14, 174, 222, 26, 184, 231, 40, 192, 241, 36, 194, 241, 10, 170, 218, 3, 171, 220, 1, 168, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 215, 0, 167, 219, 0, 172, 222, 4, 168, 221, 0, 170, 216, 5, 171, 221, 2, 167, 221, 30, 186, 224, 111, 221, 255, 73, 208, 253, 57, 209, 255, 63, 209, 255, 64, 206, 254, 65, 211, 255, 38, 189, 232, 14, 180, 232, 21, 178, 229, 20, 177, 228, 19, 176, 227, 20, 177, 228, 19, 176, 227, 21, 178, 229, 25, 182, 233, 24, 181, 232, 23, 183, 233, 24, 181, 232, 27, 184, 235, 28, 184, 235, 26, 183, 234, 17, 177, 227, 19, 181, 230, 15, 177, 226, 16, 176, 226, 15, 177, 226, 22, 182, 232, 40, 194, 248, 14, 180, 232, 0, 165, 217, 4, 172, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 219, 2, 170, 219, 0, 169, 218, 1, 171, 222, 2, 170, 219, 3, 171, 220, 2, 170, 219, 2, 170, 217, 33, 190, 241, 50, 200, 251, 50, 197, 249, 48, 203, 251, 50, 202, 251, 60, 206, 255, 46, 196, 246, 18, 178, 226, 20, 180, 230, 20, 177, 228, 24, 181, 232, 17, 177, 225, 17, 179, 226, 17, 179, 226, 24, 181, 232, 27, 181, 233, 27, 183, 234, 23, 180, 231, 25, 182, 233, 22, 182, 232, 19, 179, 229, 19, 179, 231, 17, 177, 227, 18, 178, 228, 18, 178, 230, 13, 175, 222, 27, 185, 232, 24, 186, 235, 1, 167, 217, 0, 171, 216, 3, 169, 217, 6, 167, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 2, 170, 219, 3, 171, 220, 1, 169, 218, 1, 169, 218, 4, 170, 220, 2, 168, 218, 6, 172, 222, 14, 174, 222, 28, 186, 234, 43, 199, 248, 40, 196, 244, 39, 194, 242, 46, 198, 248, 33, 189, 238, 24, 184, 234, 27, 184, 235, 30, 187, 238, 27, 184, 235, 28, 186, 234, 28, 186, 234, 29, 187, 235, 20, 180, 230, 17, 177, 227, 19, 179, 229, 17, 179, 228, 17, 178, 230, 9, 170, 222, 3, 164, 216, 9, 170, 222, 14, 175, 227, 12, 173, 225, 11, 175, 226, 18, 180, 227, 20, 182, 229, 4, 172, 221, 9, 170, 224, 0, 168, 217, 4, 172, 219, 0, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 170, 219, 1, 169, 218, 3, 171, 220, 1, 169, 218, 3, 169, 219, 4, 170, 220, 1, 167, 217, 6, 172, 222, 17, 179, 226, 12, 177, 223, 25, 187, 234, 41, 197, 246, 44, 198, 248, 33, 189, 240, 27, 184, 235, 26, 186, 236, 29, 185, 236, 30, 186, 237, 28, 185, 236, 30, 186, 237, 33, 187, 239, 31, 185, 237, 22, 182, 232, 14, 180, 228, 18, 179, 231, 12, 173, 225, 3, 164, 216, 0, 160, 212, 1, 162, 214, 7, 168, 220, 11, 172, 224, 9, 170, 222, 9, 175, 225, 12, 170, 218, 3, 163, 211, 0, 172, 220, 3, 167, 220, 4, 170, 220, 0, 169, 218, 0, 172, 222, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 171, 220, 1, 169, 218, 2, 170, 219, 2, 170, 219, 3, 171, 220, 2, 170, 219, 2, 170, 219, 5, 172, 224, 15, 177, 226, 17, 179, 228, 15, 177, 226, 29, 186, 237, 42, 196, 248, 32, 188, 239, 25, 182, 233, 27, 184, 235, 28, 184, 235, 25, 182, 233, 28, 185, 236, 28, 184, 235, 29, 185, 236, 30, 186, 237, 25, 182, 233, 15, 177, 224, 7, 168, 220, 0, 160, 212, 0, 160, 211, 0, 164, 215, 0, 161, 212, 0, 164, 215, 11, 175, 226, 9, 175, 225, 7, 172, 220, 0, 147, 198, 1, 151, 202, 1, 173, 221, 2, 169, 221, 0, 170, 219, 0, 169, 218, 3, 170, 222, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 169, 219, 3, 171, 220, 0, 169, 218, 0, 169, 218, 2, 172, 221, 5, 173, 222, 17, 178, 230, 18, 179, 231, 16, 177, 229, 11, 172, 224, 11, 171, 221, 21, 178, 229, 23, 180, 231, 21, 181, 229, 20, 180, 230, 21, 181, 231, 21, 181, 231, 21, 181, 231, 20, 180, 230, 27, 185, 233, 10, 164, 214, 5, 155, 206, 0, 159, 209, 4, 164, 214, 3, 165, 214, 1, 166, 214, 0, 165, 213, 0, 165, 215, 5, 171, 219, 6, 174, 221, 2, 154, 203, 2, 138, 190, 5, 149, 201, 0, 170, 216, 2, 172, 223, 0, 169, 218, 2, 170, 217, 3, 169, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 3, 169, 219, 2, 170, 219, 0, 170, 218, 1, 171, 220, 2, 170, 217, 5, 170, 218, 18, 180, 229, 8, 169, 221, 0, 166, 216, 0, 168, 217, 0, 165, 214, 8, 173, 221, 17, 179, 228, 12, 177, 223, 15, 177, 226, 15, 177, 226, 16, 178, 227, 15, 177, 226, 17, 179, 226, 12, 168, 217, 0, 142, 193, 0, 139, 192, 0, 144, 195, 0, 144, 196, 0, 148, 199, 0, 152, 202, 0, 152, 202, 3, 157, 207, 7, 163, 212, 3, 159, 208, 0, 140, 190, 5, 139, 190, 0, 146, 195, 0, 172, 218, 1, 169, 218, 3, 169, 217, 5, 170, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 217, 2, 170, 219, 1, 169, 218, 2, 169, 221, 1, 171, 220, 4, 172, 219, 3, 165, 212, 22, 178, 227, 9, 165, 214, 3, 165, 212, 0, 167, 214, 1, 169, 218, 1, 169, 218, 0, 167, 216, 5, 173, 220, 17, 182, 230, 17, 179, 228, 14, 176, 225, 18, 180, 229, 16, 178, 227, 17, 175, 223, 1, 151, 201, 0, 139, 189, 3, 140, 192, 3, 140, 192, 1, 141, 192, 1, 141, 192, 0, 140, 193, 0, 141, 194, 0, 141, 194, 0, 140, 193, 0, 144, 196, 2, 144, 194, 0, 140, 189, 0, 144, 193, 3, 169, 217, 2, 169, 221, 2, 168, 218, 6, 171, 219, 0, 171, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 171, 217, 1, 169, 218, 2, 169, 221, 3, 170, 222, 0, 170, 219, 3, 169, 217, 7, 165, 213, 48, 198, 248, 52, 198, 247, 2, 163, 209, 0, 165, 213, 1, 165, 216, 2, 166, 219, 0, 169, 220, 0, 168, 217, 12, 169, 222, 18, 178, 228, 15, 177, 226, 14, 179, 227, 18, 178, 228, 7, 159, 209, 0, 142, 194, 1, 141, 192, 0, 138, 187, 0, 142, 190, 0, 142, 190, 1, 143, 191, 0, 141, 191, 0, 141, 191, 1, 143, 193, 0, 142, 192, 3, 145, 195, 7, 157, 207, 0, 144, 193, 0, 143, 195, 3, 164, 216, 3, 170, 222, 1, 171, 222, 2, 168, 218, 0, 171, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 0, 171, 217, 1, 169, 218, 2, 170, 219, 3, 168, 222, 1, 167, 217, 5, 171, 221, 0, 170, 220, 56, 199, 239, 104, 218, 254, 33, 186, 228, 0, 163, 216, 0, 165, 217, 1, 169, 216, 0, 168, 217, 0, 166, 216, 2, 167, 215, 8, 174, 224, 12, 177, 225, 18, 183, 229, 10, 166, 214, 0, 143, 195, 0, 147, 198, 0, 144, 192, 4, 135, 187, 4, 140, 192, 0, 140, 190, 0, 143, 190, 1, 141, 190, 4, 139, 194, 1, 142, 196, 0, 141, 193, 2, 140, 187, 3, 151, 199, 6, 166, 216, 0, 139, 190, 3, 163, 215, 7, 172, 220, 0, 171, 214, 3, 169, 227, 4, 168, 219, 2, 169, 222, 0, 171, 217, 0, 170, 214, 4, 170, 218, 3, 168, 216, 3, 170, 222, 0, 171, 223, 2, 168, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 3, 171, 220, 3, 171, 220, 2, 170, 219, 1, 169, 218, 2, 170, 219, 3, 171, 220, 2, 170, 219, 4, 172, 219, 3, 169, 221, 3, 170, 222, 1, 171, 222, 2, 170, 219, 2, 169, 221, 0, 170, 213, 73, 202, 244, 92, 216, 254, 92, 213, 255, 24, 175, 218, 0, 165, 215, 4, 168, 221, 0, 168, 214, 0, 171, 217, 0, 169, 220, 3, 167, 218, 11, 176, 224, 16, 170, 220, 0, 144, 197, 0, 139, 194, 2, 143, 196, 0, 142, 192, 1, 137, 187, 0, 138, 187, 1, 141, 192, 0, 142, 192, 1, 143, 191, 0, 140, 190, 0, 141, 194, 0, 140, 193, 1, 143, 191, 2, 138, 186, 7, 157, 210, 11, 167, 216, 0, 160, 210, 3, 168, 216, 0, 172, 218, 4, 170, 222, 0, 172, 209, 1, 168, 220, 1, 171, 223, 2, 169, 221, 0, 169, 220, 3, 173, 225, 3, 167, 220, 2, 170, 215, 2, 172, 221, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 2, 170, 219, 3, 171, 220, 2, 170, 219, 2, 170, 219, 1, 169, 216, 4, 168, 221, 0, 167, 222, 0, 170, 216, 6, 173, 215, 1, 167, 219, 3, 171, 218, 80, 208, 255, 89, 216, 255, 91, 215, 253, 83, 210, 251, 15, 171, 219, 0, 165, 217, 3, 167, 218, 0, 169, 217, 0, 166, 218, 2, 163, 215, 3, 167, 218, 2, 162, 212, 0, 154, 206, 0, 156, 206, 0, 155, 203, 0, 140, 191, 0, 137, 184, 0, 137, 184, 1, 141, 192, 0, 140, 193, 0, 142, 190, 0, 142, 189, 0, 142, 192, 2, 144, 194, 0, 143, 190, 0, 143, 194, 4, 141, 195, 3, 161, 208, 26, 190, 243, 5, 172, 225, 1, 173, 219, 0, 166, 218, 9, 169, 229, 4, 170, 218, 2, 168, 216, 0, 171, 217, 2, 166, 217, 2, 170, 219, 0, 170, 214, 4, 169, 217, 0, 170, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 1, 169, 218, 1, 169, 218, 2, 170, 219, 3, 171, 220, 2, 170, 219, 1, 169, 218, 2, 170, 219, 1, 168, 221, 3, 172, 215, 3, 171, 220, 3, 169, 219, 1, 169, 216, 2, 168, 218, 33, 181, 227, 77, 208, 254, 72, 211, 254, 72, 211, 252, 80, 216, 255, 60, 202, 248, 1, 166, 212, 0, 166, 219, 5, 164, 219, 0, 165, 215, 0, 163, 214, 0, 163, 214, 0, 169, 217, 1, 171, 220, 0, 172, 217, 1, 168, 213, 4, 142, 191, 0, 133, 181, 0, 134, 181, 3, 149, 198, 1, 148, 199, 0, 139, 187, 0, 141, 187, 0, 141, 189, 0, 140, 190, 0, 140, 191, 0, 139, 190, 0, 137, 183, 37, 170, 215, 70, 211, 255, 39, 196, 247, 9, 165, 222, 5, 167, 216, 2, 173, 217, 0, 170, 214, 3, 170, 225, 0, 170, 222, 1, 174, 216, 2, 170, 215, 3, 170, 222, 2, 169, 221, 3, 169, 217, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 2, 170, 219, 3, 171, 220, 3, 171, 220, 2, 170, 219, 1, 169, 218, 2, 170, 219, 3, 171, 220, 2, 170, 217, 0, 170, 214, 1, 171, 222, 1, 168, 223, 4, 171, 223, 62, 198, 236, 112, 219, 255, 62, 210, 255, 48, 203, 249, 53, 203, 254, 57, 204, 255, 51, 202, 247, 26, 182, 230, 0, 164, 217, 0, 160, 214, 3, 160, 211, 0, 165, 214, 0, 161, 213, 0, 165, 215, 0, 168, 217, 3, 167, 218, 0, 154, 203, 0, 141, 189, 1, 131, 180, 3, 135, 183, 0, 150, 197, 2, 156, 206, 1, 147, 196, 0, 138, 184, 2, 140, 189, 4, 140, 190, 0, 138, 187, 8, 145, 189, 51, 190, 229, 85, 217, 255, 80, 212, 250, 77, 213, 255, 48, 200, 249, 1, 172, 218, 1, 167, 217, 9, 170, 222, 8, 170, 217, 3, 170, 222, 3, 169, 221, 1, 167, 215, 1, 171, 220, 0, 165, 219, 4, 169, 215, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 3, 171, 220, 2, 170, 219, 1, 169, 218, 2, 170, 219, 4, 172, 221, 4, 170, 220, 2, 168, 218, 0, 171, 225, 6, 171, 217, 0, 165, 216, 31, 181, 232, 90, 212, 249, 107, 225, 253, 109, 218, 255, 77, 213, 253, 49, 205, 255, 50, 204, 255, 54, 205, 255, 34, 192, 240, 35, 191, 240, 31, 187, 236, 3, 169, 217, 2, 162, 212, 0, 165, 215, 0, 163, 214, 2, 163, 215, 4, 172, 221, 4, 158, 210, 0, 143, 196, 0, 149, 196, 6, 133, 184, 0, 134, 182, 5, 157, 206, 0, 155, 204, 3, 155, 204, 0, 151, 198, 0, 137, 189, 2, 133, 185, 20, 158, 204, 72, 204, 252, 84, 217, 255, 83, 212, 254, 76, 212, 254, 76, 212, 252, 79, 215, 255, 70, 207, 253, 31, 179, 215, 0, 167, 214, 4, 168, 219, 1, 171, 222, 0, 171, 220, 3, 169, 217, 6, 166, 216, 2, 172, 223, 0, 171, 221, 1, 169, 218, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 3, 171, 220, 2, 170, 219, 1, 169, 218, 1, 169, 218, 3, 169, 219, 4, 170, 220, 4, 170, 220, 4, 170, 220, 1, 165, 216, 13, 169, 226, 65, 197, 235, 108, 224, 249, 106, 220, 255, 100, 216, 255, 112, 219, 255, 91, 218, 253, 53, 204, 255, 56, 208, 255, 41, 199, 247, 34, 188, 240, 35, 191, 242, 33, 193, 241, 31, 187, 236, 6, 171, 219, 0, 161, 213, 0, 161, 213, 0, 166, 214, 2, 168, 216, 0, 146, 199, 0, 145, 198, 0, 152, 198, 0, 132, 181, 1, 141, 190, 3, 158, 206, 0, 153, 202, 0, 155, 204, 0, 155, 203, 1, 148, 199, 41, 176, 224, 79, 216, 255, 78, 215, 255, 78, 209, 255, 74, 210, 252, 73, 214, 255, 72, 209, 251, 81, 212, 255, 112, 219, 255, 207, 244, 253, 108, 205, 237, 1, 167, 217, 0, 164, 222, 8, 173, 218, 0, 173, 223, 5, 170, 226, 0, 170, 215, 2, 168, 218, 3, 171, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 1, 169, 218, 3, 171, 220, 6, 172, 222, 3, 169, 219, 0, 165, 215, 2, 168, 218, 9, 175, 225, 51, 188, 230, 74, 207, 250, 105, 219, 255, 104, 223, 255, 110, 220, 255, 113, 220, 252, 107, 217, 254, 101, 219, 255, 59, 205, 254, 49, 204, 250, 36, 191, 237, 35, 190, 238, 35, 189, 241, 34, 190, 241, 34, 192, 240, 35, 191, 240, 11, 171, 223, 4, 159, 213, 0, 170, 216, 0, 156, 207, 4, 143, 200, 0, 149, 199, 0, 147, 195, 2, 142, 191, 3, 143, 194, 0, 155, 203, 0, 156, 205, 1, 155, 205, 0, 163, 211, 0, 160, 210, 57, 198, 244, 80, 214, 252, 76, 209, 250, 78, 209, 255, 76, 213, 255, 71, 212, 255, 85, 213, 248, 113, 216, 255, 99, 218, 255, 176, 235, 253, 254, 255, 253, 187, 233, 249, 48, 184, 222, 0, 164, 218, 5, 165, 213, 0, 170, 213, 8, 172, 225, 6, 171, 217, 4, 172, 221, 4, 172, 221, 3, 171, 220, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 2, 170, 219, 5, 170, 216, 1, 168, 220, 3, 169, 221, 2, 170, 215, 0, 172, 215, 4, 170, 220, 6, 167, 221, 0, 171, 221, 2, 169, 221, 2, 170, 219, 0, 171, 217, 0, 169, 218, 3, 169, 221, 3, 169, 221, 3, 171, 218, 5, 172, 217, 1, 173, 221, 0, 169, 218, 0, 168, 217, 0, 166, 218, 9, 169, 217, 49, 186, 228, 108, 211, 242, 154, 228, 253, 196, 242, 255, 96, 210, 246, 33, 194, 248, 56, 202, 249, 77, 205, 254, 90, 216, 254, 102, 219, 252, 110, 220, 255, 70, 215, 255, 39, 190, 237, 34, 190, 238, 32, 189, 240, 34, 190, 239, 35, 189, 239, 35, 190, 238, 33, 189, 237, 32, 190, 238, 16, 176, 224, 0, 157, 205, 0, 147, 198, 0, 145, 198, 0, 145, 196, 0, 144, 196, 0, 140, 193, 0, 149, 199, 0, 159, 207, 0, 162, 210, 1, 165, 218, 0, 162, 217, 0, 165, 215, 8, 164, 212, 67, 208, 254, 79, 210, 254, 77, 212, 255, 69, 210, 255, 81, 214, 255, 111, 222, 252, 118, 223, 255, 108, 218, 255, 110, 219, 248, 218, 248, 250, 234, 252, 255, 217, 245, 255, 110, 209, 230, 36, 184, 222, 11, 172, 224, 0, 164, 215, 0, 167, 211, 0, 166, 215, 0, 170, 216, 2, 173, 219, 4, 172, 221, 4, 170, 222, 0, 170, 221, 0, 170, 216, 5, 170, 216, 4, 169, 225, 3, 169, 217, 3, 168, 213, 4, 169, 217, 3, 169, 219, 0, 170, 216, 0, 171, 217, 3, 171, 220, 3, 171, 220, 2, 170, 219, 2, 169, 224, 0, 171, 221, 3, 171, 220, 4, 168, 219, 3, 169, 219, 3, 169, 219, 3, 169, 219, 0, 170, 218, 5, 169, 220, 1, 169, 218, 4, 170, 220, 5, 171, 223, 3, 171, 220, 4, 170, 220, 5, 169, 220, 0, 168, 216, 0, 163, 218, 10, 167, 220, 41, 179, 226, 96, 204, 240, 152, 228, 252, 181, 239, 253, 183, 239, 252, 179, 238, 254, 186, 237, 254, 181, 238, 255, 53, 198, 245, 33, 191, 236, 35, 195, 243, 35, 191, 242, 45, 197, 246, 71, 201, 251, 56, 202, 249, 40, 192, 239, 38, 194, 243, 36, 192, 241, 39, 193, 243, 37, 191, 241, 38, 192, 242, 40, 196, 245, 43, 195, 245, 37, 193, 242, 20, 176, 225, 18, 170, 220, 22, 172, 223, 18, 172, 222, 17, 171, 221, 21, 173, 222, 8, 164, 215, 2, 167, 215, 0, 166, 214, 2, 163, 215, 1, 165, 218, 0, 166, 215, 0, 161, 210, 24, 174, 224, 81, 215, 252, 76, 207, 255, 91, 214, 255, 115, 222, 254, 102, 216, 250, 77, 200, 244, 18, 178, 230, 136, 217, 246, 201, 244, 255, 186, 236, 247, 209, 240, 255, 207, 244, 255, 186, 237, 254, 168, 233, 253, 136, 219, 249, 92, 200, 238, 51, 187, 227, 20, 175, 223, 0, 166, 219, 0, 166, 219, 3, 169, 219, 5, 171, 219, 5, 171, 223, 0, 168, 220, 2, 168, 216, 1, 171, 220, 0, 171, 221, 0, 171, 222, 1, 171, 222, 4, 170, 220, 3, 169, 221, 1, 168, 223, 1, 169, 218, 3, 171, 220, 1, 169, 218, 0, 172, 218, 0, 171, 217, 2, 169, 222, 0, 171, 223, 0, 170, 216, 0, 170, 216, 1, 173, 221, 3, 169, 217, 5, 171, 219, 0, 172, 218, 0, 172, 219, 1, 168, 220, 0, 164, 213, 6, 168, 217, 33, 180, 231, 91, 200, 229, 139, 225, 250, 181, 240, 255, 186, 239, 253, 176, 237, 255, 168, 236, 255, 172, 234, 255, 182, 234, 255, 181, 237, 254, 195, 242, 255, 139, 223, 247, 34, 192, 240, 43, 195, 242, 40, 191, 248, 40, 192, 241, 32, 193, 239, 33, 185, 232, 33, 188, 236, 42, 198, 247, 40, 196, 245, 41, 195, 245, 44, 196, 246, 44, 198, 248, 39, 195, 244, 45, 195, 246, 42, 198, 247, 24, 182, 230, 24, 180, 229, 28, 184, 235, 26, 186, 234, 26, 186, 234, 29, 187, 235, 13, 174, 229, 1, 167, 217, 0, 168, 215, 1, 166, 214, 1, 167, 217, 0, 167, 216, 0, 167, 216, 2, 162, 214, 35, 191, 232, 89, 217, 255, 81, 209, 244, 48, 192, 242, 21, 177, 228, 0, 169, 224, 81, 200, 234, 212, 244, 255, 196, 238, 254, 206, 242, 255, 216, 239, 255, 193, 239, 254, 180, 236, 249, 190, 238, 252, 200, 239, 254, 193, 245, 255, 192, 239, 255, 175, 234, 252, 139, 220, 247, 75, 198, 232, 16, 175, 214, 0, 166, 209, 3, 170, 215, 4, 170, 220, 7, 171, 222, 0, 169, 219, 0, 171, 221, 5, 169, 220, 2, 166, 217, 0, 170, 218, 0, 172, 218, 4, 169, 215, 2, 170, 219, 3, 171, 220, 4, 172, 221, 0, 167, 214, 1, 169, 216, 5, 171, 221, 2, 168, 218, 7, 169, 218, 10, 172, 221, 3, 167, 218, 1, 168, 223, 2, 167, 221, 1, 165, 218, 4, 169, 217, 29, 182, 224, 80, 200, 235, 136, 220, 246, 170, 235, 253, 184, 241, 255, 177, 238, 255, 168, 235, 252, 168, 235, 252, 174, 237, 255, 175, 234, 252, 175, 234, 252, 182, 241, 255, 185, 238, 254, 180, 237, 255, 195, 242, 255, 94, 212, 250, 35, 190, 246, 43, 197, 247, 37, 195, 242, 37, 192, 248, 31, 187, 236, 28, 184, 233, 34, 192, 240, 41, 197, 246, 43, 198, 246, 43, 195, 244, 43, 197, 247, 41, 197, 248, 43, 197, 247, 33, 193, 241, 15, 177, 224, 17, 179, 228, 18, 178, 228, 23, 183, 233, 26, 186, 236, 26, 182, 233, 19, 180, 234, 1, 167, 217, 0, 168, 217, 2, 168, 216, 1, 167, 217, 0, 167, 216, 1, 171, 222, 0, 164, 217, 7, 167, 217, 27, 180, 224, 12, 174, 220, 6, 172, 224, 1, 173, 219, 39, 183, 218, 191, 238, 254, 205, 240, 255, 206, 239, 255, 212, 246, 255, 210, 244, 253, 189, 241, 252, 188, 236, 255, 187, 235, 255, 182, 235, 253, 185, 238, 255, 182, 241, 255, 191, 236, 255, 191, 238, 254, 184, 240, 255, 164, 230, 255, 102, 206, 245, 31, 182, 227, 0, 170, 216, 0, 168, 217, 3, 171, 220, 4, 172, 219, 4, 171, 215, 2, 170, 217, 3, 170, 223, 2, 169, 222, 2, 170, 219, 4, 170, 222, 3, 169, 221, 2, 170, 219, 5, 171, 223, 4, 167, 222, 5, 169, 220, 2, 172, 221, 0, 171, 218, 0, 168, 217, 5, 165, 213, 3, 171, 216, 32, 184, 225, 87, 201, 235, 146, 221, 244, 181, 237, 250, 189, 243, 253, 181, 240, 254, 173, 236, 254, 170, 233, 250, 173, 234, 253, 175, 236, 255, 174, 236, 255, 170, 235, 255, 173, 235, 255, 179, 236, 255, 185, 236, 255, 185, 238, 254, 182, 238, 255, 192, 239, 255, 173, 235, 255, 52, 199, 243, 31, 192, 244, 45, 196, 243, 29, 183, 235, 29, 185, 234, 29, 186, 237, 28, 184, 235, 33, 189, 238, 43, 198, 246, 42, 197, 245, 41, 195, 245, 42, 196, 248, 44, 198, 248, 31, 191, 239, 13, 178, 226, 17, 179, 228, 14, 176, 225, 17, 179, 228, 25, 182, 233, 28, 182, 234, 23, 183, 233, 5, 170, 218, 0, 168, 217, 0, 168, 217, 0, 168, 217, 1, 169, 218, 0, 166, 214, 0, 160, 209, 1, 157, 208, 0, 163, 216, 8, 174, 224, 21, 176, 222, 3, 174, 228, 150, 224, 251, 215, 249, 255, 206, 240, 250, 213, 246, 255, 205, 242, 250, 206, 242, 254, 189, 236, 252, 190, 235, 255, 183, 239, 255, 182, 240, 254, 189, 234, 253, 182, 235, 253, 176, 238, 253, 180, 239, 255, 175, 236, 255, 170, 236, 252, 188, 244, 255, 176, 236, 255, 130, 217, 247, 55, 191, 231, 17, 172, 218, 0, 164, 216, 2, 168, 220, 4, 170, 220, 0, 170, 221, 1, 171, 222, 4, 168, 219, 2, 169, 221, 0, 169, 218, 2, 168, 218, 7, 173, 223, 1, 167, 215, 0, 165, 213, 0, 167, 219, 4, 170, 220, 43, 186, 228, 97, 206, 239, 155, 227, 251, 187, 239, 255, 203, 245, 255, 194, 240, 255, 189, 237, 255, 180, 236, 255, 172, 235, 253, 176, 235, 251, 174, 236, 255, 172, 234, 255, 174, 235, 254, 174, 235, 254, 173, 234, 253, 178, 237, 255, 184, 240, 255, 185, 238, 252, 182, 240, 252, 185, 236, 253, 188, 236, 250, 195, 242, 255, 142, 226, 250, 34, 191, 242, 36, 188, 237, 25, 188, 229, 29, 185, 234, 33, 189, 238, 30, 186, 237, 27, 183, 232, 34, 188, 238, 42, 197, 245, 44, 198, 248, 40, 194, 246, 45, 197, 247, 32, 190, 238, 15, 177, 226, 16, 178, 227, 16, 178, 227, 14, 179, 227, 16, 178, 227, 24, 181, 232, 27, 183, 231, 11, 173, 222, 0, 166, 216, 1, 168, 220, 1, 167, 217, 1, 166, 214, 0, 158, 206, 0, 158, 205, 0, 164, 212, 4, 168, 221, 1, 165, 216, 1, 167, 217, 100, 203, 236, 223, 246, 255, 203, 240, 246, 206, 245, 255, 209, 240, 255, 207, 243, 255, 211, 245, 255, 184, 236, 249, 184, 237, 255, 187, 238, 255, 186, 238, 252, 183, 240, 251, 180, 239, 255, 182, 234, 255, 183, 235, 255, 180, 237, 254, 173, 236, 253, 166, 233, 252, 170, 235, 253, 185, 238, 254, 184, 240, 255, 150, 226, 252, 89, 201, 239, 32, 181, 223, 4, 171, 216, 0, 166, 216, 1, 167, 217, 0, 169, 215, 5, 170, 218, 2, 170, 217, 3, 167, 220, 0, 165, 219, 10, 172, 221, 55, 191, 231, 115, 210, 242, 160, 226, 250, 189, 242, 255, 200, 243, 255, 195, 241, 255, 180, 238, 252, 179, 236, 253, 184, 235, 254, 186, 238, 252, 191, 240, 255, 189, 237, 255, 175, 232, 252, 175, 236, 255, 174, 235, 254, 174, 237, 254, 171, 237, 253, 172, 235, 253, 176, 237, 255, 183, 239, 252, 186, 236, 247, 184, 240, 253, 190, 237, 255, 184, 238, 250, 181, 239, 253, 194, 239, 255, 96, 211, 242, 11, 177, 227, 37, 188, 245, 34, 189, 237, 31, 185, 235, 32, 186, 236, 30, 186, 235, 29, 185, 234, 33, 189, 238, 41, 195, 245, 43, 197, 247, 45, 197, 247, 28, 186, 234, 14, 176, 225, 15, 177, 226, 17, 179, 228, 14, 179, 227, 12, 177, 225, 17, 177, 227, 25, 183, 231, 17, 179, 228, 2, 166, 217, 1, 167, 217, 0, 162, 211, 0, 158, 206, 0, 154, 202, 2, 156, 206, 0, 166, 211, 2, 166, 219, 0, 164, 215, 49, 185, 225, 202, 242, 250, 209, 242, 255, 211, 244, 251, 214, 243, 255, 208, 244, 255, 207, 243, 255, 208, 241, 255, 189, 238, 255, 188, 236, 255, 188, 237, 252, 186, 237, 254, 182, 234, 255, 183, 235, 255, 183, 236, 254, 181, 238, 255, 179, 238, 255, 179, 236, 255, 176, 235, 251, 172, 235, 250, 171, 236, 254, 169, 236, 255, 177, 238, 255, 181, 240, 255, 168, 235, 254, 142, 224, 248, 106, 211, 241, 65, 194, 233, 29, 180, 223, 10, 170, 218, 0, 165, 213, 24, 177, 218, 110, 213, 246, 172, 233, 254, 191, 239, 253, 199, 243, 255, 194, 240, 253, 184, 237, 251, 179, 236, 253, 184, 237, 255, 186, 238, 252, 186, 239, 253, 182, 240, 254, 183, 239, 255, 182, 239, 255, 181, 238, 255, 181, 239, 251, 171, 237, 253, 171, 236, 254, 173, 236, 254, 174, 235, 254, 176, 234, 254, 182, 237, 255, 186, 238, 255, 186, 237, 255, 184, 237, 255, 183, 238, 255, 185, 238, 255, 183, 239, 252, 193, 241, 253, 217, 244, 251, 68, 180, 217, 0, 153, 207, 17, 172, 218, 21, 176, 224, 28, 182, 232, 31, 187, 238, 33, 189, 238, 31, 187, 236, 34, 188, 238, 41, 195, 245, 42, 198, 247, 21, 181, 229, 14, 179, 227, 17, 179, 228, 14, 176, 225, 17, 179, 228, 17, 179, 228, 17, 174, 225, 14, 175, 227, 19, 180, 232, 1, 165, 216, 0, 160, 209, 0, 156, 204, 1, 156, 204, 5, 157, 207, 1, 155, 207, 4, 168, 219, 3, 160, 213, 34, 176, 222, 191, 239, 253, 197, 239, 255, 194, 240, 255, 207, 245, 254, 211, 240, 255, 207, 241, 253, 216, 246, 255, 203, 239, 253, 181, 239, 251, 186, 237, 254, 184, 237, 253, 177, 239, 254, 181, 235, 255, 182, 237, 255, 174, 237, 255, 176, 237, 255, 184, 236, 255, 183, 235, 255, 176, 234, 254, 173, 235, 255, 171, 236, 255, 173, 235, 248, 176, 235, 253, 169, 234, 255, 161, 233, 255, 169, 235, 255, 181, 237, 254, 177, 236, 254, 164, 237, 255, 135, 226, 255, 112, 210, 239, 170, 229, 245, 183, 240, 255, 181, 238, 255, 178, 235, 252, 178, 235, 252, 178, 235, 252, 181, 238, 255, 181, 239, 253, 183, 239, 254, 183, 239, 254, 183, 239, 254, 183, 239, 254, 185, 238, 252, 185, 238, 252, 186, 238, 252, 186, 238, 252, 179, 238, 252, 172, 235, 252, 169, 234, 255, 174, 236, 255, 179, 237, 255, 184, 237, 255, 186, 237, 255, 185, 238, 255, 186, 238, 251, 191, 238, 255, 196, 239, 255, 204, 242, 253, 201, 243, 255, 226, 247, 250, 222, 251, 255, 57, 173, 214, 0, 139, 192, 6, 146, 197, 4, 152, 200, 4, 163, 205, 12, 166, 216, 24, 174, 227, 27, 183, 232, 36, 187, 240, 45, 197, 247, 18, 180, 227, 12, 177, 223, 19, 179, 229, 17, 179, 228, 17, 177, 227, 23, 181, 229, 24, 182, 230, 25, 183, 228, 27, 182, 236, 2, 163, 209, 2, 154, 203, 4, 155, 208, 0, 155, 203, 2, 154, 203, 1, 161, 211, 0, 165, 213, 18, 174, 215, 178, 235, 254, 206, 240, 250, 193, 240, 255, 190, 243, 251, 199, 238, 253, 209, 243, 253, 209, 243, 253, 211, 243, 255, 200, 239, 254, 186, 238, 252, 183, 239, 255, 181, 236, 255, 179, 236, 253, 182, 238, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 179, 236, 255, 177, 236, 254, 174, 235, 254, 171, 236, 254, 173, 236, 254, 174, 235, 254, 171, 233, 254, 167, 233, 255, 163, 234, 255, 162, 234, 255, 162, 233, 253, 165, 233, 254, 173, 236, 254, 176, 237, 255, 176, 234, 254, 180, 238, 255, 176, 234, 254, 177, 235, 255, 180, 238, 255, 179, 236, 255, 180, 237, 255, 179, 236, 255, 181, 236, 255, 183, 235, 255, 183, 235, 255, 184, 236, 255, 184, 236, 255, 186, 237, 255, 186, 237, 255, 187, 238, 255, 187, 238, 255, 179, 236, 255, 173, 234, 255, 173, 236, 254, 179, 238, 254, 185, 238, 252, 189, 238, 253, 190, 239, 254, 196, 243, 253, 205, 243, 255, 202, 245, 254, 200, 239, 254, 210, 243, 255, 218, 245, 252, 228, 249, 254, 222, 251, 255, 62, 176, 212, 0, 143, 197, 5, 150, 205, 3, 144, 197, 0, 146, 198, 1, 148, 199, 0, 153, 196, 6, 156, 207, 15, 165, 216, 22, 182, 230, 23, 185, 232, 28, 185, 236, 27, 184, 235, 32, 190, 238, 31, 187, 236, 30, 188, 236, 33, 190, 243, 21, 184, 227, 2, 159, 214, 1, 157, 205, 0, 157, 200, 0, 157, 204, 1, 158, 211, 0, 160, 208, 15, 165, 216, 162, 228, 250, 197, 245, 255, 190, 238, 252, 193, 239, 252, 197, 240, 255, 193, 241, 253, 193, 240, 255, 207, 243, 255, 210, 243, 255, 198, 240, 254, 184, 236, 250, 181, 236, 255, 181, 236, 255, 178, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 178, 237, 255, 175, 236, 255, 172, 235, 253, 173, 236, 254, 173, 236, 254, 171, 233, 254, 166, 232, 254, 163, 234, 255, 163, 234, 255, 165, 233, 254, 166, 232, 254, 169, 231, 252, 170, 232, 253, 176, 237, 255, 176, 237, 255, 176, 234, 254, 178, 237, 255, 179, 238, 255, 176, 235, 253, 178, 237, 255, 178, 237, 255, 177, 236, 254, 177, 236, 254, 177, 236, 254, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 179, 238, 255, 184, 237, 255, 180, 235, 255, 175, 234, 252, 178, 235, 252, 188, 240, 254, 195, 241, 254, 199, 241, 255, 203, 242, 255, 205, 240, 255, 200, 242, 254, 199, 244, 250, 201, 241, 251, 219, 248, 252, 224, 249, 254, 213, 243, 254, 221, 250, 246, 215, 244, 255, 49, 175, 215, 0, 142, 195, 2, 153, 200, 0, 150, 200, 2, 146, 198, 2, 149, 203, 0, 149, 196, 0, 149, 200, 11, 169, 217, 32, 190, 238, 32, 186, 236, 31, 187, 236, 32, 188, 237, 33, 187, 237, 29, 185, 234, 31, 189, 237, 24, 177, 234, 0, 156, 203, 1, 161, 211, 0, 156, 204, 1, 158, 211, 1, 156, 202, 7, 162, 210, 145, 222, 250, 208, 245, 253, 188, 241, 247, 195, 241, 255, 194, 240, 255, 193, 240, 255, 190, 244, 254, 193, 240, 255, 199, 241, 255, 204, 241, 255, 193, 239, 254, 180, 236, 251, 180, 235, 255, 181, 238, 255, 179, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 177, 235, 255, 172, 235, 253, 173, 236, 254, 173, 236, 254, 169, 234, 254, 166, 232, 254, 165, 233, 255, 165, 233, 254, 165, 233, 254, 167, 233, 255, 170, 235, 255, 172, 234, 255, 190, 237, 253, 192, 239, 255, 191, 238, 254, 192, 239, 255, 190, 237, 253, 189, 236, 252, 192, 239, 255, 192, 239, 255, 190, 239, 255, 189, 238, 255, 189, 238, 253, 189, 238, 253, 187, 239, 253, 187, 239, 253, 187, 239, 253, 186, 238, 252, 186, 239, 255, 186, 239, 255, 186, 237, 254, 191, 238, 254, 200, 242, 255, 204, 242, 255, 203, 241, 254, 203, 243, 255, 203, 239, 253, 199, 243, 254, 203, 243, 255, 206, 242, 255, 215, 250, 255, 221, 246, 251, 225, 247, 255, 217, 247, 255, 227, 251, 253, 215, 246, 249, 51, 166, 211, 0, 142, 194, 4, 153, 196, 1, 147, 204, 0, 149, 199, 0, 150, 197, 1, 151, 202, 0, 158, 206, 16, 174, 222, 33, 187, 237, 32, 186, 236, 31, 185, 235, 32, 186, 236, 31, 187, 236, 39, 186, 237, 11, 173, 220, 5, 156, 211, 2, 156, 206, 5, 161, 212, 2, 157, 214, 0, 150, 204, 123, 217, 242, 210, 244, 253, 190, 239, 254, 194, 242, 252, 196, 239, 255, 185, 236, 255, 190, 239, 254, 194, 235, 253, 191, 240, 255, 183, 236, 252, 190, 237, 255, 185, 236, 253, 177, 236, 252, 180, 237, 255, 181, 238, 255, 179, 238, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 179, 236, 255, 181, 236, 255, 181, 238, 255, 178, 237, 255, 174, 235, 253, 173, 236, 254, 171, 236, 254, 168, 235, 254, 165, 233, 254, 165, 233, 254, 165, 233, 254, 167, 233, 255, 169, 234, 254, 172, 234, 255, 172, 234, 255, 199, 241, 255, 200, 242, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 200, 242, 255, 201, 243, 255, 199, 241, 255, 202, 241, 255, 202, 241, 255, 202, 241, 255, 202, 241, 255, 201, 240, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 197, 240, 255, 199, 242, 255, 199, 241, 255, 201, 240, 255, 203, 243, 255, 202, 242, 254, 198, 240, 252, 198, 242, 253, 205, 242, 255, 200, 240, 248, 202, 242, 252, 214, 244, 255, 221, 248, 255, 219, 248, 254, 221, 247, 248, 224, 244, 253, 213, 248, 250, 229, 248, 254, 214, 241, 250, 49, 165, 212, 0, 143, 197, 0, 153, 197, 2, 146, 196, 0, 151, 198, 1, 153, 203, 0, 160, 208, 0, 157, 205, 21, 175, 225, 34, 190, 239, 31, 187, 236, 32, 186, 236, 31, 187, 236, 32, 188, 237, 10, 167, 218, 0, 156, 204, 1, 155, 207, 3, 157, 211, 1, 157, 208, 122, 212, 239, 193, 240, 255, 170, 236, 252, 174, 237, 255, 176, 232, 249, 172, 238, 254, 175, 237, 255, 172, 237, 255, 178, 230, 252, 169, 236, 253, 172, 235, 253, 179, 234, 255, 178, 235, 254, 174, 237, 254, 179, 238, 255, 180, 237, 255, 179, 236, 255, 180, 237, 254, 180, 237, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 181, 236, 255, 182, 237, 255, 180, 237, 255, 178, 237, 255, 173, 234, 253, 173, 236, 254, 168, 235, 254, 165, 233, 254, 165, 233, 254, 166, 232, 254, 169, 234, 254, 173, 235, 255, 172, 234, 255, 172, 234, 255, 200, 242, 255, 199, 241, 255, 197, 241, 254, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 200, 239, 254, 202, 242, 254, 199, 241, 253, 198, 242, 253, 200, 242, 254, 200, 242, 254, 202, 242, 254, 204, 242, 255, 201, 239, 255, 199, 242, 249, 202, 242, 252, 217, 246, 254, 220, 244, 248, 220, 249, 255, 217, 251, 253, 216, 250, 252, 223, 245, 255, 217, 245, 255, 226, 251, 255, 205, 242, 248, 36, 165, 207, 0, 146, 200, 5, 150, 207, 0, 148, 195, 0, 152, 202, 1, 161, 209, 0, 158, 206, 2, 158, 209, 23, 180, 231, 30, 188, 236, 31, 187, 236, 28, 186, 234, 31, 187, 236, 0, 160, 212, 0, 160, 212, 1, 161, 209, 1, 157, 205, 142, 213, 235, 220, 251, 255, 194, 240, 255, 176, 234, 254, 173, 235, 255, 172, 237, 255, 173, 235, 255, 170, 232, 253, 171, 238, 255, 176, 239, 255, 173, 236, 254, 170, 237, 255, 177, 235, 255, 175, 236, 255, 175, 238, 255, 178, 237, 255, 179, 236, 255, 177, 236, 252, 179, 236, 253, 180, 237, 255, 180, 237, 255, 179, 238, 255, 180, 237, 255, 181, 236, 255, 181, 236, 255, 181, 238, 255, 179, 238, 255, 174, 235, 254, 173, 236, 254, 168, 235, 254, 165, 233, 254, 166, 232, 254, 168, 233, 255, 171, 233, 254, 173, 235, 255, 172, 233, 254, 171, 233, 254, 201, 240, 255, 200, 239, 254, 201, 240, 255, 201, 240, 255, 201, 240, 255, 198, 240, 254, 198, 240, 254, 200, 242, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 198, 240, 254, 198, 240, 254, 198, 240, 254, 198, 240, 254, 199, 241, 255, 200, 242, 255, 198, 242, 255, 197, 241, 254, 197, 241, 254, 201, 240, 255, 203, 241, 254, 206, 239, 254, 200, 240, 252, 204, 247, 254, 210, 239, 255, 219, 247, 255, 220, 251, 254, 223, 246, 254, 221, 243, 255, 223, 248, 255, 221, 246, 253, 221, 250, 255, 218, 245, 255, 228, 254, 253, 205, 244, 251, 36, 158, 209, 0, 144, 195, 7, 151, 201, 0, 152, 202, 0, 159, 209, 0, 161, 210, 0, 156, 207, 4, 161, 212, 25, 182, 233, 32, 186, 236, 34, 190, 239, 25, 181, 229, 5, 159, 209, 4, 154, 207, 10, 163, 204, 157, 226, 241, 223, 248, 255, 200, 239, 254, 205, 243, 252, 205, 243, 252, 176, 233, 252, 174, 236, 255, 172, 234, 255, 170, 239, 255, 175, 237, 252, 169, 235, 251, 173, 236, 253, 171, 238, 255, 178, 236, 255, 179, 238, 255, 176, 237, 255, 178, 237, 255, 179, 236, 255, 178, 237, 255, 178, 237, 255, 179, 236, 255, 178, 237, 255, 179, 238, 255, 179, 238, 255, 180, 237, 255, 181, 236, 255, 180, 237, 255, 180, 237, 255, 177, 235, 255, 173, 236, 254, 167, 234, 253, 165, 233, 254, 168, 234, 255, 172, 234, 255, 172, 234, 255, 172, 234, 255, 172, 234, 255, 172, 234, 255, 198, 242, 255, 198, 242, 255, 198, 242, 255, 197, 241, 254, 198, 242, 255, 199, 243, 255, 198, 242, 255, 198, 242, 255, 199, 241, 253, 199, 241, 253, 199, 241, 253, 199, 241, 253, 199, 241, 253, 199, 241, 253, 199, 241, 253, 199, 241, 253, 198, 242, 255, 199, 241, 255, 201, 240, 255, 201, 240, 255, 199, 241, 255, 200, 242, 255, 200, 242, 254, 199, 242, 251, 204, 241, 255, 198, 241, 250, 216, 245, 251, 217, 247, 255, 220, 249, 255, 225, 246, 251, 218, 249, 254, 222, 247, 252, 223, 248, 255, 218, 249, 252, 220, 247, 255, 214, 244, 254, 231, 249, 253, 201, 237, 249, 32, 164, 202, 0, 142, 195, 3, 153, 206, 0, 160, 210, 0, 159, 208, 1, 158, 209, 0, 157, 208, 5, 162, 213, 32, 186, 236, 34, 188, 238, 23, 178, 224, 0, 154, 207, 26, 167, 212, 173, 229, 255, 219, 247, 255, 197, 241, 250, 207, 240, 255, 204, 241, 255, 204, 241, 255, 206, 244, 255, 183, 234, 251, 173, 236, 254, 173, 234, 253, 176, 234, 255, 170, 237, 255, 174, 235, 255, 173, 236, 254, 180, 235, 255, 181, 237, 254, 178, 237, 253, 178, 235, 254, 179, 236, 255, 176, 237, 255, 177, 235, 255, 178, 237, 255, 177, 236, 254, 178, 237, 255, 178, 237, 255, 180, 237, 255, 181, 236, 255, 180, 237, 255, 180, 237, 255, 180, 237, 255, 174, 235, 254, 167, 234, 253, 166, 232, 254, 169, 234, 255, 173, 235, 255, 172, 234, 255, 171, 234, 252, 172, 234, 255, 172, 234, 255, 198, 242, 255, 198, 242, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 198, 242, 255, 199, 241, 255, 202, 242, 254, 201, 240, 255, 206, 243, 252, 217, 247, 255, 219, 246, 253, 220, 247, 254, 220, 247, 255, 220, 247, 254, 220, 247, 254, 223, 247, 255, 218, 249, 252, 222, 247, 251, 221, 244, 255, 215, 246, 249, 231, 252, 253, 198, 237, 254, 25, 160, 207, 2, 148, 197, 0, 160, 210, 0, 160, 210, 0, 159, 209, 1, 158, 211, 0, 158, 206, 9, 165, 214, 31, 191, 243, 4, 165, 217, 43, 171, 220, 188, 236, 250, 217, 246, 252, 198, 242, 255, 205, 242, 250, 204, 241, 255, 204, 242, 255, 203, 241, 254, 205, 245, 255, 203, 240, 255, 191, 237, 250, 176, 235, 251, 169, 233, 255, 176, 237, 255, 172, 235, 252, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 179, 238, 255, 175, 236, 255, 170, 232, 253, 170, 235, 255, 171, 233, 254, 172, 234, 255, 172, 234, 255, 172, 234, 255, 172, 234, 255, 172, 234, 255, 198, 242, 255, 198, 242, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 199, 241, 255, 198, 242, 255, 199, 241, 255, 202, 242, 254, 202, 241, 255, 206, 243, 252, 219, 248, 255, 220, 247, 254, 220, 247, 254, 220, 247, 255, 220, 247, 254, 220, 247, 254, 220, 245, 252, 218, 249, 254, 221, 246, 251, 227, 247, 255, 218, 246, 255, 214, 243, 249, 237, 253, 253, 186, 234, 244, 14, 160, 209, 4, 161, 212, 0, 157, 207, 0, 159, 209, 3, 160, 213, 0, 161, 208, 1, 157, 206, 9, 169, 221, 54, 188, 225, 196, 239, 255, 215, 243, 254, 194, 242, 255, 201, 243, 255, 204, 242, 255, 207, 238, 255, 204, 244, 254, 204, 242, 255, 204, 242, 253, 205, 241, 255, 200, 244, 255, 183, 241, 255, 172, 234, 255, 174, 235, 254, 173, 236, 253, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 178, 237, 255, 179, 238, 255, 175, 236, 255, 170, 232, 253, 172, 234, 255, 171, 233, 254, 172, 234, 255, 172, 234, 255, 172, 234, 255, 172, 234, 255, 172, 234, 255), +"format": "RGB8", +"height": 90, +"mipmaps": false, +"width": 90 +} + +[sub_resource type="ImageTexture" id="ImageTexture_7av17"] +image = SubResource("Image_h875h") -anchor_left = 0.0 -anchor_top = 0.0 +[node name="Main" type="VBoxContainer"] +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 size_flags_horizontal = 3 size_flags_vertical = 3 -alignment = 0 -script = ExtResource( 1 ) -_sections_unfolded = [ "Anchor", "Hint", "Margin", "Material", "Rect", "Size Flags", "custom_constants" ] - -[node name="Header" type="MarginContainer" parent="." index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 1024.0 -margin_bottom = 90.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false +script = ExtResource("1") + +[node name="Header" type="MarginContainer" parent="."] +self_modulate = Color(0, 0.28, 0.168, 1) +layout_mode = 2 mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -custom_constants/margin_right = 10 -custom_constants/margin_top = 8 -custom_constants/margin_left = 10 -custom_constants/margin_bottom = 6 -script = SubResource( 1 ) -_sections_unfolded = [ "Material", "Mouse", "Rect", "Size Flags", "Theme", "custom_constants" ] - -[node name="_" type="HBoxContainer" parent="Header" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 10.0 -margin_top = 8.0 -margin_right = 1014.0 -margin_bottom = 84.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -alignment = 0 - -[node name="Logo" type="TextureRect" parent="Header/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 38.0 -margin_bottom = 38.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 2 -size_flags_vertical = 4 -stretch_mode = 0 -_sections_unfolded = [ "Size Flags" ] - -[node name="Logged" type="VBoxContainer" parent="Header/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 664.0 -margin_top = 5.0 -margin_right = 860.0 -margin_bottom = 71.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 0 -size_flags_vertical = 4 -alignment = 0 -_sections_unfolded = [ "Anchor", "Grow Direction", "Margin", "Rect", "Size Flags" ] - -[node name="_2" type="Label" parent="Header/_/Logged" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 196.0 -margin_bottom = 14.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 +script = SubResource("1") + +[node name="_" type="HBoxContainer" parent="Header"] +self_modulate = Color(1, 0, 0.401978, 1) +layout_mode = 2 + +[node name="Logo" type="TextureRect" parent="Header/_"] +layout_mode = 2 +size_flags_horizontal = 3 +texture = ExtResource("2_gb3i3") +stretch_mode = 5 + +[node name="Logged" type="VBoxContainer" parent="Header/_"] +layout_mode = 2 +size_flags_horizontal = 3 size_flags_vertical = 4 -custom_colors/font_color = Color( 0.4, 0.4, 0.4, 1 ) -text = "Logged in as" -align = 1 -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "custom_colors" ] - -[node name="_" type="HBoxContainer" parent="Header/_/Logged" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 18.0 -margin_right = 196.0 -margin_bottom = 66.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -custom_constants/separation = 8 -alignment = 0 -_sections_unfolded = [ "Rect", "Size Flags", "custom_constants" ] - -[node name="MainBlock" type="VBoxContainer" parent="Header/_/Logged/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 140.0 -margin_bottom = 48.0 -rect_min_size = Vector2( 140, 0 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 +size_flags_stretch_ratio = 10.0 + +[node name="_" type="HBoxContainer" parent="Header/_/Logged"] +layout_mode = 2 + +[node name="MainBlock" type="VBoxContainer" parent="Header/_/Logged/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 5 -alignment = 0 -_sections_unfolded = [ "Rect", "Size Flags", "custom_constants" ] - -[node name="UserName" type="Label" parent="Header/_/Logged/_/MainBlock" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 140.0 -margin_bottom = 14.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 4 -custom_colors/font_color = Color( 0, 0, 0, 1 ) -text = "User" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -[node name="Plan" type="Label" parent="Header/_/Logged/_/MainBlock" index="1"] +[node name="_2" type="Label" parent="Header/_/Logged/_/MainBlock"] +layout_mode = 2 +text = "Logged in as" +horizontal_alignment = 2 + +[node name="UserName" type="Label" parent="Header/_/Logged/_/MainBlock"] +layout_mode = 2 +text = "User: " +horizontal_alignment = 2 +[node name="Plan" type="Label" parent="Header/_/Logged/_/MainBlock"] visible = false -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 18.0 -margin_right = 140.0 -margin_bottom = 32.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 4 -custom_colors/font_color = Color( 0, 0, 0, 1 ) -text = "Plan" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 - -[node name="Logout" type="Button" parent="Header/_/Logged/_/MainBlock" index="2"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 18.0 -margin_right = 140.0 -margin_bottom = 38.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 3 -size_flags_vertical = 1 -toggle_mode = false -enabled_focus_mode = 2 -shortcut = null -group = null +layout_mode = 2 +text = "Plan: BASIC" + +[node name="Logout" type="Button" parent="Header/_/Logged/_/MainBlock"] +layout_mode = 2 +size_flags_horizontal = 8 text = "Logout" -flat = false -align = 1 -_sections_unfolded = [ "Size Flags" ] - -[node name="Avatar" type="Control" parent="Header/_/Logged/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 148.0 -margin_right = 196.0 -margin_bottom = 48.0 -rect_min_size = Vector2( 48, 48 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -script = ExtResource( 2 ) -_sections_unfolded = [ "Rect", "Size Flags" ] -max_size = 256 -background = Color( 0, 0, 0, 0 ) -immediate = false - -[node name="NotLogged" type="VBoxContainer" parent="Header/_" index="2"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 864.0 -margin_right = 1004.0 -margin_bottom = 76.0 -rect_min_size = Vector2( 140, 0 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 0 -size_flags_vertical = 4 -alignment = 0 -_sections_unfolded = [ "Anchor", "Grow Direction", "Margin", "Rect", "Size Flags", "custom_constants" ] -[node name="_" type="Label" parent="Header/_/NotLogged" index="0"] +[node name="Avatar" type="TextureRect" parent="Header/_/Logged/_"] +layout_mode = 2 +texture = SubResource("ImageTexture_7av17") +expand_mode = 3 +stretch_mode = 5 +script = ExtResource("2") +max_size = 0.0 +[node name="NotLogged" type="VBoxContainer" parent="Header/_"] visible = false -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 140.0 -margin_bottom = 14.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 +layout_mode = 2 +size_flags_horizontal = 3 size_flags_vertical = 4 -custom_colors/font_color = Color( 0.4, 0.4, 0.4, 1 ) +size_flags_stretch_ratio = 10.0 + +[node name="_" type="Label" parent="Header/_/NotLogged"] +visible = false +layout_mode = 2 text = "You're not logged in" -align = 1 -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "custom_colors" ] - -[node name="UserName" type="LineEdit" parent="Header/_/NotLogged" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 140.0 -margin_bottom = 24.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 + +[node name="UserName" type="LineEdit" parent="Header/_/NotLogged"] +layout_mode = 2 mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -focus_mode = 2 -context_menu_enabled = true +text = "tttttt4343" placeholder_text = "User" -placeholder_alpha = 0.6 -caret_blink = false -caret_blink_speed = 0.65 -caret_position = 0 -_sections_unfolded = [ "Placeholder", "custom_colors" ] - -[node name="Password" type="LineEdit" parent="Header/_/NotLogged" index="2"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 28.0 -margin_right = 140.0 -margin_bottom = 52.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 + +[node name="Password" type="LineEdit" parent="Header/_/NotLogged"] +layout_mode = 2 mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -secret = true -focus_mode = 2 -context_menu_enabled = true placeholder_text = "Password" -placeholder_alpha = 0.6 -caret_blink = false -caret_blink_speed = 0.65 -caret_position = 0 -_sections_unfolded = [ "Placeholder", "custom_colors" ] - -[node name="Login" type="Button" parent="Header/_/NotLogged" index="3"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 56.0 -margin_right = 140.0 -margin_bottom = 76.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 +secret = true + +[node name="Login" type="Button" parent="Header/_/NotLogged"] +layout_mode = 2 disabled = true -toggle_mode = false -enabled_focus_mode = 2 -shortcut = null -group = null text = "Login" -flat = false -align = 1 -_sections_unfolded = [ "Rect", "Size Flags" ] - -[node name="Search" type="MarginContainer" parent="." index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 94.0 -margin_right = 1024.0 -margin_bottom = 162.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false + +[node name="Search" type="MarginContainer" parent="."] +layout_mode = 2 mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -custom_constants/margin_right = 8 -custom_constants/margin_top = 2 -custom_constants/margin_left = 8 -_sections_unfolded = [ "custom_constants" ] - -[node name="_" type="VBoxContainer" parent="Search" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 8.0 -margin_top = 2.0 -margin_right = 1016.0 -margin_bottom = 68.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false + +[node name="_" type="VBoxContainer" parent="Search"] +layout_mode = 2 mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -alignment = 0 -_sections_unfolded = [ "Size Flags", "custom_constants" ] - -[node name="_" type="HBoxContainer" parent="Search/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 1008.0 -margin_bottom = 24.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 + +[node name="_" type="HBoxContainer" parent="Search/_"] +layout_mode = 2 size_flags_vertical = 4 -custom_constants/separation = 10 alignment = 1 -_sections_unfolded = [ "Anchor", "Margin", "Size Flags", "custom_constants" ] - -[node name="_" type="Label" parent="Search/_/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 5.0 -margin_right = 46.0 -margin_bottom = 19.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 4 + +[node name="_" type="Label" parent="Search/_/_"] +layout_mode = 2 text = "Search:" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "Anchor", "Focus", "Margin", "Rect", "Size Flags" ] - -[node name="SearchDomain" type="OptionButton" parent="Search/_/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 5.0 -margin_right = 146.0 -margin_bottom = 19.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -size_flags_horizontal = 1 + +[node name="SearchDomain" type="OptionButton" parent="Search/_/_"] +layout_mode = 2 size_flags_vertical = 4 toggle_mode = false -action_mode = 0 -enabled_focus_mode = 2 -shortcut = null -group = null -flat = false -align = 0 -items = [ ] -selected = -1 -_sections_unfolded = [ "Rect", "Size Flags" ] -rect_max_size = Vector2( 120, 0 ) - - -[node name="Text" type="LineEdit" parent="Search/_/_" index="2"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 - -margin_left = -56.0 -margin_right = -56 -margin_bottom = 24.0 - -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 1 +item_count = 9 +selected = 0 +popup/item_0/text = "Whole site" +popup/item_0/id = 0 +popup/item_1/text = "Own models (PRO)" +popup/item_1/id = 1 +popup/item_2/text = "Purchased models" +popup/item_2/id = 2 +popup/item_3/text = "Whole site" +popup/item_3/id = 3 +popup/item_4/text = "Own models (PRO)" +popup/item_4/id = 4 +popup/item_5/text = "Purchased models" +popup/item_5/id = 5 +popup/item_6/text = "Whole site" +popup/item_6/id = 6 +popup/item_7/text = "Own models (PRO)" +popup/item_7/id = 7 +popup/item_8/text = "Purchased models" +popup/item_8/id = 8 +metadata/__suffix = "/search?type=models&downloadable=true" + +[node name="Text" type="LineEdit" parent="Search/_/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 -focus_mode = 2 -context_menu_enabled = true -placeholder_alpha = 0.6 caret_blink = true -caret_blink_speed = 0.65 -caret_position = 0 -_sections_unfolded = [ "Caret", "Placeholder", "Size Flags" ] - -[node name="Button" type="Button" parent="Search/_/_" index="3"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 888.0 -margin_top = 2.0 -margin_right = 1008.0 -margin_bottom = 22.0 -rect_min_size = Vector2( 120, 0 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 + +[node name="Button" type="Button" parent="Search/_/_"] +layout_mode = 2 size_flags_vertical = 4 -toggle_mode = false -enabled_focus_mode = 2 -shortcut = null -group = null text = "Search" -flat = false -align = 1 -_sections_unfolded = [ "Anchor", "Focus", "Margin", "Mouse", "Rect", "Size Flags", "Theme", "custom_styles" ] - -[node name="_3" type="PanelContainer" parent="Search/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 28.0 -margin_right = 1008.0 -margin_bottom = 66.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -_sections_unfolded = [ "Visibility", "custom_styles" ] - -[node name="_" type="HBoxContainer" parent="Search/_/_3" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 7.0 -margin_top = 7.0 -margin_right = 1001.0 -margin_bottom = 31.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -custom_constants/separation = 14 -alignment = 0 -_sections_unfolded = [ "custom_constants" ] - -[node name="_3" type="HBoxContainer" parent="Search/_/_3/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 2.0 -margin_right = 312.0 -margin_bottom = 22.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 + +[node name="_3" type="PanelContainer" parent="Search/_"] +layout_mode = 2 + +[node name="_" type="HBoxContainer" parent="Search/_/_3"] +layout_mode = 2 + +[node name="_3" type="HBoxContainer" parent="Search/_/_3/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 size_flags_stretch_ratio = 2.0 -custom_constants/separation = 16 -alignment = 0 -_sections_unfolded = [ "Size Flags" ] - -[node name="_" type="Label" parent="Search/_/_3/_/_3" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 3.0 -margin_right = 67.0 -margin_bottom = 17.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 4 + +[node name="_" type="Label" parent="Search/_/_3/_/_3"] +layout_mode = 2 text = "Categories" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 - -[node name="Categories" type="MenuButton" parent="Search/_/_3/_/_3" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 83.0 -margin_right = 312.0 -margin_bottom = 20.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 + +[node name="Categories" type="MenuButton" parent="Search/_/_3/_/_3"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 +focus_mode = 2 toggle_mode = false -action_mode = 0 -enabled_focus_mode = 2 -shortcut = null -group = null +text = "All" flat = false -align = 0 -items = [ ] -_sections_unfolded = [ "Rect", "Size Flags" ] - -[node name="Animated" type="CheckBox" parent="Search/_/_3/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 326.0 -margin_right = 443.0 -margin_bottom = 24.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 +item_count = 57 +popup/item_0/text = "All" +popup/item_0/checkable = 1 +popup/item_0/checked = true +popup/item_0/id = 0 +popup/item_1/text = "Animals & Pets" +popup/item_1/checkable = 1 +popup/item_1/checked = true +popup/item_1/id = 1 +popup/item_2/text = "Architecture" +popup/item_2/checkable = 1 +popup/item_2/checked = true +popup/item_2/id = 2 +popup/item_3/text = "Art & Abstract" +popup/item_3/checkable = 1 +popup/item_3/checked = true +popup/item_3/id = 3 +popup/item_4/text = "Cars & Vehicles" +popup/item_4/checkable = 1 +popup/item_4/checked = true +popup/item_4/id = 4 +popup/item_5/text = "Characters & Creatures" +popup/item_5/checkable = 1 +popup/item_5/checked = true +popup/item_5/id = 5 +popup/item_6/text = "Cultural Heritage & History" +popup/item_6/checkable = 1 +popup/item_6/checked = true +popup/item_6/id = 6 +popup/item_7/text = "Electronics & Gadgets" +popup/item_7/checkable = 1 +popup/item_7/checked = true +popup/item_7/id = 7 +popup/item_8/text = "Fashion & Style" +popup/item_8/checkable = 1 +popup/item_8/checked = true +popup/item_8/id = 8 +popup/item_9/text = "Food & Drink" +popup/item_9/checkable = 1 +popup/item_9/checked = true +popup/item_9/id = 9 +popup/item_10/text = "Furniture & Home" +popup/item_10/checkable = 1 +popup/item_10/checked = true +popup/item_10/id = 10 +popup/item_11/text = "Music" +popup/item_11/checkable = 1 +popup/item_11/checked = true +popup/item_11/id = 11 +popup/item_12/text = "Nature & Plants" +popup/item_12/checkable = 1 +popup/item_12/checked = true +popup/item_12/id = 12 +popup/item_13/text = "News & Politics" +popup/item_13/checkable = 1 +popup/item_13/checked = true +popup/item_13/id = 13 +popup/item_14/text = "People" +popup/item_14/checkable = 1 +popup/item_14/checked = true +popup/item_14/id = 14 +popup/item_15/text = "Places & Travel" +popup/item_15/checkable = 1 +popup/item_15/checked = true +popup/item_15/id = 15 +popup/item_16/text = "Science & Technology" +popup/item_16/checkable = 1 +popup/item_16/checked = true +popup/item_16/id = 16 +popup/item_17/text = "Sports & Fitness" +popup/item_17/checkable = 1 +popup/item_17/checked = true +popup/item_17/id = 17 +popup/item_18/text = "Weapons & Military" +popup/item_18/checkable = 1 +popup/item_18/checked = true +popup/item_18/id = 18 +popup/item_19/text = "All" +popup/item_19/checkable = 1 +popup/item_19/checked = true +popup/item_19/id = 19 +popup/item_20/text = "Animals & Pets" +popup/item_20/checkable = 1 +popup/item_20/checked = true +popup/item_20/id = 20 +popup/item_21/text = "Architecture" +popup/item_21/checkable = 1 +popup/item_21/checked = true +popup/item_21/id = 21 +popup/item_22/text = "Art & Abstract" +popup/item_22/checkable = 1 +popup/item_22/checked = true +popup/item_22/id = 22 +popup/item_23/text = "Cars & Vehicles" +popup/item_23/checkable = 1 +popup/item_23/checked = true +popup/item_23/id = 23 +popup/item_24/text = "Characters & Creatures" +popup/item_24/checkable = 1 +popup/item_24/checked = true +popup/item_24/id = 24 +popup/item_25/text = "Cultural Heritage & History" +popup/item_25/checkable = 1 +popup/item_25/checked = true +popup/item_25/id = 25 +popup/item_26/text = "Electronics & Gadgets" +popup/item_26/checkable = 1 +popup/item_26/checked = true +popup/item_26/id = 26 +popup/item_27/text = "Fashion & Style" +popup/item_27/checkable = 1 +popup/item_27/checked = true +popup/item_27/id = 27 +popup/item_28/text = "Food & Drink" +popup/item_28/checkable = 1 +popup/item_28/checked = true +popup/item_28/id = 28 +popup/item_29/text = "Furniture & Home" +popup/item_29/checkable = 1 +popup/item_29/checked = true +popup/item_29/id = 29 +popup/item_30/text = "Music" +popup/item_30/checkable = 1 +popup/item_30/checked = true +popup/item_30/id = 30 +popup/item_31/text = "Nature & Plants" +popup/item_31/checkable = 1 +popup/item_31/checked = true +popup/item_31/id = 31 +popup/item_32/text = "News & Politics" +popup/item_32/checkable = 1 +popup/item_32/checked = true +popup/item_32/id = 32 +popup/item_33/text = "People" +popup/item_33/checkable = 1 +popup/item_33/checked = true +popup/item_33/id = 33 +popup/item_34/text = "Places & Travel" +popup/item_34/checkable = 1 +popup/item_34/checked = true +popup/item_34/id = 34 +popup/item_35/text = "Science & Technology" +popup/item_35/checkable = 1 +popup/item_35/checked = true +popup/item_35/id = 35 +popup/item_36/text = "Sports & Fitness" +popup/item_36/checkable = 1 +popup/item_36/checked = true +popup/item_36/id = 36 +popup/item_37/text = "Weapons & Military" +popup/item_37/checkable = 1 +popup/item_37/checked = true +popup/item_37/id = 37 +popup/item_38/text = "All" +popup/item_38/checkable = 1 +popup/item_38/checked = true +popup/item_38/id = 38 +popup/item_39/text = "Animals & Pets" +popup/item_39/checkable = 1 +popup/item_39/checked = true +popup/item_39/id = 39 +popup/item_40/text = "Architecture" +popup/item_40/checkable = 1 +popup/item_40/checked = true +popup/item_40/id = 40 +popup/item_41/text = "Art & Abstract" +popup/item_41/checkable = 1 +popup/item_41/checked = true +popup/item_41/id = 41 +popup/item_42/text = "Cars & Vehicles" +popup/item_42/checkable = 1 +popup/item_42/checked = true +popup/item_42/id = 42 +popup/item_43/text = "Characters & Creatures" +popup/item_43/checkable = 1 +popup/item_43/checked = true +popup/item_43/id = 43 +popup/item_44/text = "Cultural Heritage & History" +popup/item_44/checkable = 1 +popup/item_44/checked = true +popup/item_44/id = 44 +popup/item_45/text = "Electronics & Gadgets" +popup/item_45/checkable = 1 +popup/item_45/checked = true +popup/item_45/id = 45 +popup/item_46/text = "Fashion & Style" +popup/item_46/checkable = 1 +popup/item_46/checked = true +popup/item_46/id = 46 +popup/item_47/text = "Food & Drink" +popup/item_47/checkable = 1 +popup/item_47/checked = true +popup/item_47/id = 47 +popup/item_48/text = "Furniture & Home" +popup/item_48/checkable = 1 +popup/item_48/checked = true +popup/item_48/id = 48 +popup/item_49/text = "Music" +popup/item_49/checkable = 1 +popup/item_49/checked = true +popup/item_49/id = 49 +popup/item_50/text = "Nature & Plants" +popup/item_50/checkable = 1 +popup/item_50/checked = true +popup/item_50/id = 50 +popup/item_51/text = "News & Politics" +popup/item_51/checkable = 1 +popup/item_51/checked = true +popup/item_51/id = 51 +popup/item_52/text = "People" +popup/item_52/checkable = 1 +popup/item_52/checked = true +popup/item_52/id = 52 +popup/item_53/text = "Places & Travel" +popup/item_53/checkable = 1 +popup/item_53/checked = true +popup/item_53/id = 53 +popup/item_54/text = "Science & Technology" +popup/item_54/checkable = 1 +popup/item_54/checked = true +popup/item_54/id = 54 +popup/item_55/text = "Sports & Fitness" +popup/item_55/checkable = 1 +popup/item_55/checked = true +popup/item_55/id = 55 +popup/item_56/text = "Weapons & Military" +popup/item_56/checkable = 1 +popup/item_56/checked = true +popup/item_56/id = 56 +metadata/__slugs = [] + +[node name="Animated" type="CheckBox" parent="Search/_/_3/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 size_flags_stretch_ratio = 0.75 -toggle_mode = true -enabled_focus_mode = 2 -shortcut = null -group = null text = "Animated" -flat = false -align = 0 -_sections_unfolded = [ "Size Flags" ] - -[node name="StaffPicked" type="CheckBox" parent="Search/_/_3/_" index="2"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 457.0 -margin_right = 574.0 -margin_bottom = 24.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 + +[node name="StaffPicked" type="CheckBox" parent="Search/_/_3/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 size_flags_stretch_ratio = 0.75 -toggle_mode = true -pressed = true -enabled_focus_mode = 2 -shortcut = null -group = null text = "Staff-picked" -flat = false -align = 0 -_sections_unfolded = [ "Size Flags" ] - -[node name="_" type="HBoxContainer" parent="Search/_/_3/_" index="3"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 588.0 -margin_top = 2.0 -margin_right = 744.0 -margin_bottom = 22.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 + +[node name="_" type="HBoxContainer" parent="Search/_/_3/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 -custom_constants/separation = 16 -alignment = 0 - -[node name="_" type="Label" parent="Search/_/_3/_/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 3.0 -margin_right = 44.0 -margin_bottom = 17.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 4 + +[node name="_" type="Label" parent="Search/_/_3/_/_"] +layout_mode = 2 text = "Sort by" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 - -[node name="SortBy" type="OptionButton" parent="Search/_/_3/_/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 60.0 -margin_right = 156.0 -margin_bottom = 20.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 + +[node name="SortBy" type="OptionButton" parent="Search/_/_3/_/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 toggle_mode = false -action_mode = 0 -enabled_focus_mode = 2 -shortcut = null -group = null -flat = false -align = 0 -items = [ ] -selected = -1 -_sections_unfolded = [ "Rect", "Size Flags" ] - -[node name="_2" type="HBoxContainer" parent="Search/_/_3/_" index="4"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 758.0 -margin_top = 2.0 -margin_right = 994.0 -margin_bottom = 22.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 +item_count = 12 +selected = 0 +popup/item_0/text = "Relevance" +popup/item_0/id = 0 +popup/item_1/text = "Recent" +popup/item_1/id = 1 +popup/item_2/text = "Likes" +popup/item_2/id = 2 +popup/item_3/text = "Views" +popup/item_3/id = 3 +popup/item_4/text = "Relevance" +popup/item_4/id = 4 +popup/item_5/text = "Recent" +popup/item_5/id = 5 +popup/item_6/text = "Likes" +popup/item_6/id = 6 +popup/item_7/text = "Views" +popup/item_7/id = 7 +popup/item_8/text = "Relevance" +popup/item_8/id = 8 +popup/item_9/text = "Recent" +popup/item_9/id = 9 +popup/item_10/text = "Likes" +popup/item_10/id = 10 +popup/item_11/text = "Views" +popup/item_11/id = 11 +metadata/__key = "-publishedAt" + +[node name="_2" type="HBoxContainer" parent="Search/_/_3/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 size_flags_stretch_ratio = 1.5 -custom_constants/separation = 16 -alignment = 0 -_sections_unfolded = [ "Size Flags" ] - -[node name="_" type="Label" parent="Search/_/_3/_/_2" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 3.0 -margin_right = 69.0 -margin_bottom = 17.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 4 + +[node name="_" type="Label" parent="Search/_/_3/_/_2"] +layout_mode = 2 text = "Face count" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 - -[node name="FaceCount" type="OptionButton" parent="Search/_/_3/_/_2" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 85.0 -margin_right = 236.0 -margin_bottom = 20.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 + +[node name="FaceCount" type="OptionButton" parent="Search/_/_3/_/_2"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 toggle_mode = false -action_mode = 0 -enabled_focus_mode = 2 -shortcut = null -group = null -flat = false -align = 0 -items = [ ] -selected = -1 -_sections_unfolded = [ "Rect", "Size Flags" ] - -[node name="_2" type="MarginContainer" parent="." index="2"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 166.0 -margin_right = 1024.0 -margin_bottom = 600.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 +item_count = 18 +selected = 0 +popup/item_0/text = "Any" +popup/item_0/id = 0 +popup/item_1/text = "Up to 10k" +popup/item_1/id = 1 +popup/item_2/text = "10k to 50k" +popup/item_2/id = 2 +popup/item_3/text = "50k to 100k" +popup/item_3/id = 3 +popup/item_4/text = "100k to 250k" +popup/item_4/id = 4 +popup/item_5/text = "More than 250k" +popup/item_5/id = 5 +popup/item_6/text = "Any" +popup/item_6/id = 6 +popup/item_7/text = "Up to 10k" +popup/item_7/id = 7 +popup/item_8/text = "10k to 50k" +popup/item_8/id = 8 +popup/item_9/text = "50k to 100k" +popup/item_9/id = 9 +popup/item_10/text = "100k to 250k" +popup/item_10/id = 10 +popup/item_11/text = "More than 250k" +popup/item_11/id = 11 +popup/item_12/text = "Any" +popup/item_12/id = 12 +popup/item_13/text = "Up to 10k" +popup/item_13/id = 13 +popup/item_14/text = "10k to 50k" +popup/item_14/id = 14 +popup/item_15/text = "50k to 100k" +popup/item_15/id = 15 +popup/item_16/text = "100k to 250k" +popup/item_16/id = 16 +popup/item_17/text = "More than 250k" +popup/item_17/id = 17 +metadata/__data = ["Any", null, null] + +[node name="_2" type="MarginContainer" parent="."] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -custom_constants/margin_right = 8 -custom_constants/margin_top = 8 -custom_constants/margin_left = 8 -custom_constants/margin_bottom = 8 -_sections_unfolded = [ "Size Flags", "custom_constants" ] - -[node name="Paginator" type="ScrollContainer" parent="_2" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 8.0 -margin_top = 8.0 -margin_right = 1016.0 -margin_bottom = 426.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = true mouse_filter = 0 -mouse_default_cursor_shape = 0 + +[node name="Paginator" type="ScrollContainer" parent="_2"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -scroll_horizontal_enabled = true -scroll_horizontal = 0 -scroll_vertical_enabled = true -scroll_vertical = 0 -script = ExtResource( 3 ) -_sections_unfolded = [ "Anchor", "Margin", "Material", "Rect", "Size Flags", "Theme" ] - -[node name="_" type="VBoxContainer" parent="_2/Paginator" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 1008.0 -margin_bottom = 104.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 +mouse_filter = 0 +script = ExtResource("3") + +[node name="_" type="VBoxContainer" parent="_2/Paginator"] +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 1 -alignment = 0 -_sections_unfolded = [ "Size Flags" ] - -[node name="ResultsGrid" type="GridContainer" parent="_2/Paginator/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 1008.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 + +[node name="ResultsGrid" type="GridContainer" parent="_2/Paginator/_"] +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 1 -custom_constants/vseparation = 16 -custom_constants/hseparation = 16 columns = 6 -_sections_unfolded = [ "Size Flags", "custom_constants" ] - -[node name="Trailer" type="VBoxContainer" parent="_2/Paginator/_" index="1"] -modulate = Color( 1, 1, 1, 0 ) +[node name="Trailer" type="VBoxContainer" parent="_2/Paginator/_"] +modulate = Color(1, 1, 1, 0) +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 1 - -[node name="Label" type="Label" parent="_2/Paginator/_/Trailer" index="0"] +[node name="Label" type="Label" parent="_2/Paginator/_/Trailer"] +layout_mode = 2 size_flags_horizontal = 4 text = "Fetching..." -[node name="CTA" type="Button" parent="_2/Paginator/_/Trailer" index="1"] - -disabled=false +[node name="CTA" type="Button" parent="_2/Paginator/_/Trailer"] +visible = false +layout_mode = 2 size_flags_horizontal = 4 text = "Upgrade to PRO" [connection signal="pressed" from="Header/_/Logged/_/MainBlock/Logout" to="." method="_on_Logout_pressed"] - [connection signal="text_changed" from="Header/_/NotLogged/UserName" to="." method="_on_any_login_text_changed"] - -[connection signal="text_entered" from="Header/_/NotLogged/UserName" to="." method="_on_UserName_text_entered"] - [connection signal="text_changed" from="Header/_/NotLogged/Password" to="." method="_on_any_login_text_changed"] - -[connection signal="text_entered" from="Header/_/NotLogged/Password" to="." method="_on_Password_text_entered"] - [connection signal="pressed" from="Header/_/NotLogged/Login" to="." method="_on_Login_pressed"] - -[connection signal="text_entered" from="Search/_/_/Text" to="." method="_on_SearchText_text_entered"] - +[connection signal="item_selected" from="Search/_/_/SearchDomain" to="." method="_on_SearchDomain_item_selected"] [connection signal="pressed" from="Search/_/_/Button" to="." method="_on_SearchButton_pressed"] - [connection signal="pressed" from="Search/_/_3/_/Animated" to="." method="_on_any_search_trigger_changed"] - [connection signal="pressed" from="Search/_/_3/_/StaffPicked" to="." method="_on_any_search_trigger_changed"] - [connection signal="item_selected" from="Search/_/_3/_/_/SortBy" to="." method="_on_SortBy_item_selected"] - -[connection signal="item_selected" from="Search/_/_/SearchDomain" to="." method="_on_SearchDomain_item_selected"] - [connection signal="item_selected" from="Search/_/_3/_/_2/FaceCount" to="." method="_on_FaceCount_item_selected"] - - diff --git a/addons/sketchfab/ModelDialog.gd b/addons/sketchfab/ModelDialog.gd index 04414ec..981563d 100644 --- a/addons/sketchfab/ModelDialog.gd +++ b/addons/sketchfab/ModelDialog.gd @@ -1,5 +1,5 @@ -tool -extends WindowDialog +@tool +extends Window const SafeData = preload("res://addons/sketchfab/SafeData.gd") const Utils = preload("res://addons/sketchfab/Utils.gd") @@ -9,16 +9,16 @@ const Api = preload("res://addons/sketchfab/Api.gd") var api = Api.new() var downloader -onready var label_model = find_node("Model") -onready var label_user = find_node("User") -onready var image = find_node("Image") +@onready var label_model = find_child("Model") +@onready var label_user = find_child("User") +@onready var image = find_child("Image") -onready var info = find_node("Info") -onready var license = find_node("License") +@onready var info = find_child("Info") +@onready var license = find_child("License") -onready var download = find_node("Download") -onready var progress = find_node("ProgressBar") -onready var size_label = find_node("Size") +@onready var download = find_child("Download") +@onready var progress = find_child("ProgressBar") +@onready var size_label = find_child("Size") var uid var imported_path @@ -31,9 +31,6 @@ func set_uid(uid): func _ready(): $All.visible = false - var editor_scale = get_tree().get_meta("__editor_scale") - image.rect_min_size *= editor_scale - rect_size *= editor_scale func _on_about_to_show(): if !uid: @@ -45,7 +42,7 @@ func _on_about_to_show(): if Api.get_token(): # Request download link - var result = yield(api.request_download(uid), "completed") + var result = await api.request_download(uid) if !get_tree(): return @@ -77,7 +74,7 @@ func _on_about_to_show(): # Populate other information - var data = yield(api.get_model_detail(uid), "completed") + var data = await api.get_model_detail(uid) if typeof(data) != TYPE_DICTIONARY: hide() return @@ -91,8 +88,9 @@ func _on_about_to_show(): var thumbnails = SafeData.dictionary(data, "thumbnails") var images = SafeData.array(thumbnails, "images") - image.max_size = image.get_rect().size.x - image.url = Utils.get_best_size_url(images, self.image.max_size, SafeData) + image.max_size = size.x + $All.size = size + image.url = Utils.get_best_size_url(images, image.max_size, SafeData) var vc = SafeData.integer(data, "vertexCount") var fc = SafeData.integer(data, "faceCount") @@ -111,7 +109,6 @@ func _on_about_to_show(): SafeData.string(license_data, "fullName"), SafeData.string(license_data, "requirements"), ] - $All.visible = true func _on_Download_pressed(): @@ -133,27 +130,27 @@ func _on_Download_pressed(): var host_idx = download_url.find("//") + 2 var path_idx = download_url.find("/", host_idx) var host = download_url.substr(host_idx, path_idx - host_idx) - var path = download_url.right(path_idx) - downloader = Requestor.new(host, true) + var path = download_url.right(download_url.length() - path_idx) + downloader = Requestor.new(host) - var dir = Directory.new() - dir.make_dir("res://sketchfab") + DirAccess.make_dir_absolute("res://sketchfab") var file_regex = RegEx.new() file_regex.compile("[^/]+?\\.zip") var filename = file_regex.search(download_url).get_string() var zip_path = "res://sketchfab/%s" % filename - downloader.connect("download_progressed", self, "_on_download_progressed") + downloader.download_progressed.connect(_on_download_progressed) downloader.request(path, null, { "download_to": zip_path }) - var result = yield(downloader, "completed") + var result = await downloader.completed if !result: return downloader.term() downloader = null - if !result.ok || result.code != 200: + if !result.ok: + print("result.code : ", result.code) download.visible = true progress.visible = false size_label.visible = false @@ -164,9 +161,9 @@ func _on_Download_pressed(): # Unpack - progress.percent_visible = false + progress.show_percentage = false size_label.text = " Model downloaded! Unpacking..." - yield(get_tree(), "idle_frame") + await get_tree().process_frame if !get_tree(): return @@ -176,8 +173,8 @@ func _on_Download_pressed(): "--zip-to-unpack %s" % ProjectSettings.globalize_path(zip_path), "--no-window", "--quit", - ], true, out) - print(out) + ], out) + print(out[0]) size_label.text = " Model unpacked into project!" @@ -188,7 +185,7 @@ func _on_Download_pressed(): var ei = get_tree().get_meta("__editor_interface") ei.get_resource_filesystem().scan() while ei.get_resource_filesystem().is_scanning(): - yield(get_tree(), "idle_frame") + await get_tree().process_frame if !get_tree(): return ei.select_file(imported_path) diff --git a/addons/sketchfab/ModelDialog.tscn b/addons/sketchfab/ModelDialog.tscn index 2e1787d..206bff5 100644 --- a/addons/sketchfab/ModelDialog.tscn +++ b/addons/sketchfab/ModelDialog.tscn @@ -1,410 +1,143 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=3 uid="uid://cbbf5tsglncro"] -[ext_resource path="res://addons/sketchfab/ModelDialog.gd" type="Script" id=1] -[ext_resource path="res://addons/sketchfab/HttpImage.gd" type="Script" id=2] +[ext_resource type="Script" path="res://addons/sketchfab/ModelDialog.gd" id="1"] +[ext_resource type="Texture2D" uid="uid://c8u07nn7dtjpi" path="res://addons/sketchfab/icon.png" id="2_tnc8c"] +[ext_resource type="Script" path="res://addons/sketchfab/HttpImage.gd" id="3_n3nr0"] -[node name="ModelDialog" type="WindowDialog" index="0"] +[node name="ModelDialog" type="Window"] +position = Vector2i(0, 36) +unresizable = true +always_on_top = true +popup_window = true +script = ExtResource("1") -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 631.0 -margin_bottom = 542.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -popup_exclusive = false -window_title = "Model detail" -resizable = false -script = ExtResource( 1 ) -_sections_unfolded = [ "Popup", "Rect", "Size Flags", "Theme", "custom_constants" ] - -[node name="All" type="VBoxContainer" parent="." index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 +[node name="All" type="ScrollContainer" parent="."] +visible = false +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -margin_bottom = -10.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 +offset_right = 420.0 +offset_bottom = -100.0 +grow_horizontal = 2 +grow_vertical = 2 +follow_focus = true +horizontal_scroll_mode = 0 +vertical_scroll_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="All"] +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 1 -alignment = 0 -_sections_unfolded = [ "Anchor", "Margin", "Rect", "Size Flags" ] -[node name="_" type="MarginContainer" parent="All" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 631.0 -margin_bottom = 62.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false +[node name="_" type="MarginContainer" parent="All/VBoxContainer"] +layout_mode = 2 mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -custom_constants/margin_right = 8 -custom_constants/margin_top = 12 -custom_constants/margin_left = 8 -custom_constants/margin_bottom = 12 -_sections_unfolded = [ "Anchor", "Margin", "Size Flags", "custom_constants" ] - -[node name="_" type="VBoxContainer" parent="All/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 8.0 -margin_top = 12.0 -margin_right = 623.0 -margin_bottom = 50.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -alignment = 0 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 12 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 12 -[node name="Model" type="Label" parent="All/_/_" index="0"] +[node name="_" type="VBoxContainer" parent="All/VBoxContainer/_"] +layout_mode = 2 -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 615.0 -margin_bottom = 14.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 +[node name="Model" type="Label" parent="All/VBoxContainer/_/_"] +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 4 text = "Model" -percent_visible = 1.0 -lines_skipped = 0 max_lines_visible = 1 -_sections_unfolded = [ "Size Flags", "custom_fonts" ] -[node name="_" type="HBoxContainer" parent="All/_/_" index="1"] +[node name="_" type="HBoxContainer" parent="All/VBoxContainer/_/_"] +layout_mode = 2 -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 18.0 -margin_right = 615.0 -margin_bottom = 38.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -alignment = 0 - -[node name="User" type="Label" parent="All/_/_/_" index="0"] - -self_modulate = Color( 1, 1, 1, 0.752941 ) -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 3.0 -margin_right = 407.0 -margin_bottom = 17.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 +[node name="User" type="Label" parent="All/VBoxContainer/_/_/_"] +self_modulate = Color(1, 1, 1, 0.752941) +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 4 size_flags_stretch_ratio = 2.0 text = "User" -percent_visible = 1.0 -lines_skipped = 0 max_lines_visible = 1 -_sections_unfolded = [ "Size Flags", "Visibility" ] -[node name="ViewOnSite" type="Button" parent="All/_/_/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 411.0 -margin_right = 615.0 -margin_bottom = 20.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 +[node name="ViewOnSite" type="Button" parent="All/VBoxContainer/_/_/_"] +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 1 -toggle_mode = false -enabled_focus_mode = 2 -shortcut = null -group = null text = "View on Sketchfab" -flat = false -align = 1 -_sections_unfolded = [ "Anchor", "Margin", "Size Flags" ] -[node name="Image" type="Control" parent="All" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 66.0 -margin_right = 631.0 -margin_bottom = 322.0 -rect_min_size = Vector2( 0, 256 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 3 -size_flags_vertical = 1 -script = ExtResource( 2 ) -_sections_unfolded = [ "Margin", "Rect", "Size Flags" ] -max_size = 256 -background = Color( 0, 0, 0, 0.752941 ) +[node name="Image" type="TextureRect" parent="All/VBoxContainer"] +clip_contents = true +custom_minimum_size = Vector2(512, 2.08165e-12) +layout_mode = 2 +texture = ExtResource("2_tnc8c") +stretch_mode = 5 +script = ExtResource("3_n3nr0") +max_size = 1024 +background = Color(0, 0, 0, 0.752941) immediate = true -[node name="_2" type="MarginContainer" parent="All" index="2"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 326.0 -margin_right = 631.0 -margin_bottom = 372.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 +[node name="_2" type="MarginContainer" parent="All/VBoxContainer"] +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 1 -custom_constants/margin_right = 16 -custom_constants/margin_top = 8 -custom_constants/margin_left = 16 -custom_constants/margin_bottom = 8 -_sections_unfolded = [ "Size Flags", "custom_constants" ] - -[node name="Download" type="Button" parent="All/_2" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 16.0 -margin_top = 8.0 -margin_right = 615.0 -margin_bottom = 38.0 -rect_min_size = Vector2( 0, 30 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -focus_mode = 2 mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -toggle_mode = false -enabled_focus_mode = 2 -shortcut = null -group = null -flat = false +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 8 + +[node name="Download" type="Button" parent="All/VBoxContainer/_2"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 clip_text = true -align = 1 -_sections_unfolded = [ "Rect" ] - -[node name="ProgressBar" type="ProgressBar" parent="All/_2" index="1"] +[node name="ProgressBar" type="ProgressBar" parent="All/VBoxContainer/_2"] visible = false -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 16.0 -margin_top = 8.0 -margin_right = 615.0 -margin_bottom = 38.0 -rect_min_size = Vector2( 0, 30 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 0 -min_value = 0.0 -max_value = 100.0 +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 step = 1.0 -page = 0.0 -value = 0.0 -exp_edit = false -rounded = false -percent_visible = true -_sections_unfolded = [ "Percent", "Rect" ] - -[node name="Size" type="Label" parent="All/_2" index="2"] +[node name="Size" type="Label" parent="All/VBoxContainer/_2"] visible = false -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 16.0 -margin_top = 16.0 -margin_right = 615.0 -margin_bottom = 30.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 4 -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "Size Flags" ] - -[node name="_3" type="MarginContainer" parent="All" index="3"] -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 376.0 -margin_right = 631.0 -margin_bottom = 532.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 +[node name="_3" type="MarginContainer" parent="All/VBoxContainer"] +layout_mode = 2 size_flags_vertical = 3 -custom_constants/margin_right = 8 -custom_constants/margin_top = 20 -custom_constants/margin_left = 8 -custom_constants/margin_bottom = 0 -_sections_unfolded = [ "Anchor", "Margin", "Size Flags", "custom_constants" ] - -[node name="_" type="GridContainer" parent="All/_3" index="0"] +mouse_filter = 0 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 0 -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 8.0 -margin_top = 20.0 -margin_right = 623.0 -margin_bottom = 156.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 +[node name="_" type="GridContainer" parent="All/VBoxContainer/_3"] +layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 1 -custom_constants/vseparation = 12 +theme_override_constants/v_separation = 12 columns = 2 -_sections_unfolded = [ "Size Flags", "custom_constants" ] - -[node name="_" type="Label" parent="All/_3/_" index="0"] -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 305.0 -margin_bottom = 14.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 +[node name="_" type="Label" parent="All/VBoxContainer/_3/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Model information" uppercase = true -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "Size Flags" ] -[node name="_2" type="Label" parent="All/_3/_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 309.0 -margin_right = 614.0 -margin_bottom = 14.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 +[node name="_2" type="Label" parent="All/VBoxContainer/_3/_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 text = "License" uppercase = true -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "Size Flags" ] - -[node name="Info" type="Label" parent="All/_3/_" index="2"] -self_modulate = Color( 1, 1, 1, 0.752941 ) -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 26.0 -margin_right = 305.0 -margin_bottom = 136.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 +[node name="Info" type="Label" parent="All/VBoxContainer/_3/_"] +self_modulate = Color(1, 1, 1, 0.752941) +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Info Info Info" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "Size Flags", "Visibility" ] -[node name="License" type="Label" parent="All/_3/_" index="3"] - -self_modulate = Color( 1, 1, 1, 0.752941 ) -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 309.0 -margin_top = 26.0 -margin_right = 614.0 -margin_bottom = 136.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 +[node name="License" type="Label" parent="All/VBoxContainer/_3/_"] +self_modulate = Color(1, 1, 1, 0.752941) +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "License @@ -413,17 +146,8 @@ License License License License" -autowrap = true clip_text = true -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 -_sections_unfolded = [ "Size Flags", "Visibility" ] - -[connection signal="about_to_show" from="." to="." method="_on_about_to_show"] - -[connection signal="pressed" from="All/_/_/_/ViewOnSite" to="." method="_on_ViewOnSite_pressed"] - -[connection signal="pressed" from="All/_2/Download" to="." method="_on_Download_pressed"] - +[connection signal="about_to_popup" from="." to="." method="_on_about_to_show"] +[connection signal="pressed" from="All/VBoxContainer/_/_/_/ViewOnSite" to="." method="_on_ViewOnSite_pressed"] +[connection signal="pressed" from="All/VBoxContainer/_2/Download" to="." method="_on_Download_pressed"] diff --git a/addons/sketchfab/Paginator.gd b/addons/sketchfab/Paginator.gd index 905e475..7a35629 100644 --- a/addons/sketchfab/Paginator.gd +++ b/addons/sketchfab/Paginator.gd @@ -1,4 +1,4 @@ -tool +@tool extends ScrollContainer const SafeData = preload("res://addons/sketchfab/SafeData.gd") @@ -6,11 +6,11 @@ var ResultItem = load("res://addons/sketchfab/ResultItem.tscn") var api = preload("res://addons/sketchfab/Api.gd").new() -onready var grid = find_node("ResultsGrid") -onready var trailer = find_node("Trailer") -onready var label = find_node("Label") -onready var cta_button = find_node("CTA") -onready var search_domain = find_node("SearchDomain") +@onready var grid = find_child("ResultsGrid") +@onready var trailer = find_child("Trailer") +@onready var label = find_child("Label") +@onready var cta_button = find_child("CTA") +@onready var search_domain = find_child("SearchDomain") var next_page_url @@ -23,13 +23,14 @@ func _exit_tree(): func search(query, categories, animated, staff_picked, min_face_count, max_face_count, sort_by, domain_suffix): for item in grid.get_children(): grid.remove_child(item) + item.queue_free() queue_sort() trailer.modulate.a = 1.0 label.text = "Fetching..." cta_button.hide() - yield(api.cancel(), "completed") - var result = yield(api.search_models( + await api.cancel() + var result = await api.search_models( query, categories, animated, @@ -38,14 +39,14 @@ func search(query, categories, animated, staff_picked, min_face_count, max_face_ max_face_count, sort_by, domain_suffix - ), "completed") + ) trailer.modulate.a = 0.0 - + print(result.keys(), result["next"]) var n_results = _process_page(result) # Upgrade to pro and empty results if domain_suffix == "/me": - var user = yield(api.get_my_info(), "completed") + var user = await api.get_my_info() if user["account"] == "plus" || user["account"] == "basic": trailer.modulate.a = 1.0 label.text = "Access your personal library of 3D models" @@ -66,34 +67,35 @@ func search(query, categories, animated, staff_picked, min_face_count, max_face_ func _process(delta): if !api.busy && next_page_url && trailer.get_global_rect().intersects(get_viewport_rect()): + print(next_page_url) # Fetch next page trailer.modulate.a = 1.0 label.text = "Fetching..." cta_button.hide() - var result = yield(api.fetch_next_page(next_page_url), "completed") + var result = await api.fetch_next_page(next_page_url) trailer.modulate.a = 0.0 _process_page(result) -func _process_page(result): +func _process_page(result_data): next_page_url = null # Canceled? - if !result: + if !result_data: return # Collect and check - if typeof(result) != TYPE_DICTIONARY: + if typeof(result_data) != TYPE_DICTIONARY: return # Process - var results = SafeData.array(result, "results") + var results = SafeData.array(result_data, "results") for result in results: - var item = ResultItem.instance() + var item = ResultItem.instantiate() item.set_data(result) grid.add_child(item) # Set next page now we know the current one succeeded - next_page_url = SafeData.string(result, "next") + next_page_url = SafeData.string(result_data, "next") return results.size() diff --git a/addons/sketchfab/Requestor.gd b/addons/sketchfab/Requestor.gd index 4629c4a..4ffb706 100644 --- a/addons/sketchfab/Requestor.gd +++ b/addons/sketchfab/Requestor.gd @@ -1,14 +1,14 @@ -tool +@tool extends Object -const LOG_LEVEL = 1 +const LOG_LEVEL = 2 const YIELD_PERIOD_MS = 50 signal download_progressed signal completed class Result: - var ok setget , _is_ok + var ok : get = _is_ok var code var data @@ -29,16 +29,14 @@ const DEFAULT_OPTIONS = { var has_enhanced_qs_from_dict var hostname -var use_ssl var http = HTTPClient.new() var busy = false var canceled = false var terminated = false -func _init(hostname, use_ssl): +func _init(hostname): self.hostname = hostname - self.use_ssl = use_ssl has_enhanced_qs_from_dict = http.query_string_from_dict({"a": null}) == "a" @@ -49,7 +47,7 @@ func cancel(): canceled = true else: call_deferred("emit_signal", "completed", null) - yield(self, "completed") + await self.completed func term(): if LOG_LEVEL >= 2: @@ -59,7 +57,7 @@ func term(): func request(path, payload = null, options = DEFAULT_OPTIONS): while busy && !terminated: - yield(Engine.get_main_loop(), "idle_frame") + await Engine.get_main_loop().process_frame if terminated: if LOG_LEVEL >= 2: print("TERMINATE HONORED") @@ -81,9 +79,9 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): while reconnect_tries: http.poll() if http.get_status() != HTTPClient.STATUS_CONNECTED: - http.connect_to_host(hostname, -1, use_ssl, false) + http.connect_to_host(hostname, -1, TLSOptions.client()) while true: - yield(Engine.get_main_loop(), "idle_frame") + await Engine.get_main_loop().process_frame if terminated: if LOG_LEVEL >= 2: print("TERMINATE HONORED") @@ -93,8 +91,7 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): status = http.get_status() if status in [ HTTPClient.STATUS_CANT_CONNECT, - HTTPClient.STATUS_CANT_RESOLVE, - HTTPClient.STATUS_SSL_HANDSHAKE_ERROR, + HTTPClient.STATUS_CANT_RESOLVE, ]: busy = false emit_signal("completed", Result.new(-1)) @@ -121,7 +118,7 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): uri += "&" + _dict_to_query_string(payload) elif encoding == "json": headers.append("Content-Type: application/json") - encoded_payload = to_json(payload) + encoded_payload = JSON.new().stringify(payload) elif encoding == "form": headers.append("Content-Type: application/x-www-form-urlencoded") encoded_payload = _dict_to_query_string(payload) @@ -141,6 +138,7 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): print("Payload:") print(encoded_payload) + print("\n uri : ", uri, "\n headers : ", headers, "\n encoded_payload : ", encoded_payload) http.request(_get_option(options, "method"), uri, headers, encoded_payload) http.poll() if http.get_status() in [ @@ -162,7 +160,7 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): pass while true: - yield(Engine.get_main_loop(), "idle_frame") + await Engine.get_main_loop().process_frame if terminated: if LOG_LEVEL >= 2: print("TERMINATE HONORED") @@ -214,14 +212,15 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): total_bytes = int(response_headers["Content-Length"]) else: total_bytes = -1 - - file = File.new() - if file.open(out_path, File.WRITE) != OK: + print("out_path : ", out_path) + file = FileAccess.open(out_path, FileAccess.WRITE) + if file == null: + push_warning("strange quitting because file not found") busy = false emit_signal("completed", Result.new(-1)) return - var last_yield = OS.get_ticks_msec() + var last_yield = Time.get_ticks_msec() while status == HTTPClient.STATUS_BODY: var chunk = http.read_response_body_chunk() @@ -234,9 +233,9 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): response_body = response_body if response_body else "" response_body += chunk.get_string_from_utf8() - var time = OS.get_ticks_msec() + var time = Time.get_ticks_msec() if time - last_yield > YIELD_PERIOD_MS: - yield(Engine.get_main_loop(), "idle_frame") + await Engine.get_main_loop().process_frame last_yield = time if terminated: if file: @@ -259,7 +258,7 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): status = http.get_status() if status in [ HTTPClient.STATUS_DISCONNECTED, - HTTPClient.STATUS_CONNECTION_ERROR + HTTPClient.STATUS_CONNECTION_ERROR ] && !terminated && !canceled: if file: file.close() @@ -267,7 +266,7 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): emit_signal("completed", Result.new(-1)) return - yield(Engine.get_main_loop(), "idle_frame") + await Engine.get_main_loop().process_frame if terminated: if file: file.close() @@ -300,7 +299,9 @@ func request(path, payload = null, options = DEFAULT_OPTIONS): if file: data = bytes else: - data = parse_json(response_body) if response_body else null + var test_json_conv = JSON.new() + test_json_conv.parse(response_body) if response_body else null + data = test_json_conv.get_data() emit_signal("completed", Result.new(response_code, data)) func _get_option(options, key): @@ -316,8 +317,8 @@ func _dict_to_query_string(dictionary): var value = dictionary[key] if typeof(value) == TYPE_ARRAY: for v in value: - qs += "&%s=%s" % [key.percent_encode(), v.percent_encode()] + qs += "&%s=%s" % [key.uri_encode(), v.uri_encode()] else: - qs += "&%s=%s" % [key.percent_encode(), String(value).percent_encode()] + qs += "&%s=%s" % [key.uri_encode(), String(value).uri_encode()] qs.erase(0, 1) return qs diff --git a/addons/sketchfab/ResultItem.gd b/addons/sketchfab/ResultItem.gd index f349a86..4264f94 100644 --- a/addons/sketchfab/ResultItem.gd +++ b/addons/sketchfab/ResultItem.gd @@ -1,4 +1,4 @@ -tool +@tool extends MarginContainer const SafeData = preload("res://addons/sketchfab/SafeData.gd") @@ -6,9 +6,9 @@ const Utils = preload("res://addons/sketchfab/Utils.gd") const ModelDialog = preload("res://addons/sketchfab/ModelDialog.tscn") -onready var user_name = find_node("UserName") -onready var model_name = find_node("ModelName") -onready var image = find_node("Image") +@onready var user_name = find_child("UserName") +@onready var model_name = find_child("ModelName") +@onready var image = find_child("Image") var data @@ -17,8 +17,6 @@ var dialog func set_data(data): self.data = data -func _enter_tree(): - rect_min_size *= get_tree().get_meta("__editor_scale") func _ready(): if !data: @@ -34,11 +32,11 @@ func _ready(): image.url = Utils.get_best_size_url(images, self.image.max_size, SafeData) func _on_Button_pressed(): - dialog = ModelDialog.instance() + dialog = ModelDialog.instantiate() dialog.set_uid(SafeData.string(data, "uid")) add_child(dialog) - dialog.connect("popup_hide", self, "_on_dialog_hide") - dialog.popup_centered() + dialog.close_requested.connect(_on_dialog_hide) + dialog.popup_centered_ratio() func _on_dialog_hide(): - remove_child(dialog) + dialog.queue_free() diff --git a/addons/sketchfab/ResultItem.tscn b/addons/sketchfab/ResultItem.tscn index 32c1ef0..2a2253d 100644 --- a/addons/sketchfab/ResultItem.tscn +++ b/addons/sketchfab/ResultItem.tscn @@ -1,252 +1,87 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=5 format=3 uid="uid://c73ysle0rfi4j"] -[ext_resource path="res://addons/sketchfab/ResultItem.gd" type="Script" id=1] -[ext_resource path="res://addons/sketchfab/HttpImage.gd" type="Script" id=2] +[ext_resource type="Script" path="res://addons/sketchfab/ResultItem.gd" id="1"] +[ext_resource type="Script" path="res://addons/sketchfab/HttpImage.gd" id="2"] -[sub_resource type="StyleBoxFlat" id=2] +[sub_resource type="StyleBoxFlat" id="1"] +bg_color = Color(0, 0, 0, 0.627451) -content_margin_left = -1.0 -content_margin_right = -1.0 -content_margin_top = -1.0 -content_margin_bottom = -1.0 -bg_color = Color( 1, 1, 1, 0.0627451 ) -draw_center = true -border_width_left = 0 -border_width_top = 0 -border_width_right = 0 -border_width_bottom = 0 -border_color = Color( 0.8, 0.8, 0.8, 1 ) -border_blend = false -corner_radius_top_left = 0 -corner_radius_top_right = 0 -corner_radius_bottom_right = 0 -corner_radius_bottom_left = 0 -corner_detail = 8 -expand_margin_left = 0.0 -expand_margin_right = 0.0 -expand_margin_top = 0.0 -expand_margin_bottom = 0.0 -shadow_color = Color( 0, 0, 0, 0.6 ) -shadow_size = 0 -anti_aliasing = true -anti_aliasing_size = 1 +[sub_resource type="StyleBoxFlat" id="2"] +bg_color = Color(1, 1, 1, 0.0627451) -[sub_resource type="StyleBoxFlat" id=1] - -content_margin_left = -1.0 -content_margin_right = -1.0 -content_margin_top = -1.0 -content_margin_bottom = -1.0 -bg_color = Color( 0, 0, 0, 0.627451 ) -draw_center = true -border_width_left = 0 -border_width_top = 0 -border_width_right = 0 -border_width_bottom = 0 -border_color = Color( 0.8, 0.8, 0.8, 1 ) -border_blend = false -corner_radius_top_left = 0 -corner_radius_top_right = 0 -corner_radius_bottom_right = 0 -corner_radius_bottom_left = 0 -corner_detail = 8 -expand_margin_left = 0.0 -expand_margin_right = 0.0 -expand_margin_top = 0.0 -expand_margin_bottom = 0.0 -shadow_color = Color( 0, 0, 0, 0.6 ) -shadow_size = 0 -anti_aliasing = true -anti_aliasing_size = 1 - -[node name="ResultItem" type="MarginContainer" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 191.0 -margin_bottom = 231.0 -rect_min_size = Vector2( 0, 220 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false +[node name="ResultItem" type="MarginContainer"] +custom_minimum_size = Vector2(8.3266e-12, 8.3266e-12) +offset_right = 191.0 +offset_bottom = 231.0 +size_flags_horizontal = 3 focus_mode = 2 mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 3 -size_flags_vertical = 1 -custom_constants/margin_right = 0 -custom_constants/margin_left = 0 -script = ExtResource( 1 ) -_sections_unfolded = [ "Mouse", "Rect", "Theme", "Visibility", "custom_constants", "custom_styles" ] +theme_override_constants/margin_left = 0 +theme_override_constants/margin_right = 0 +script = ExtResource("1") -[node name="_2" type="Button" parent="." index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 191.0 -margin_bottom = 231.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 2 +[node name="_2" type="Button" parent="."] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -custom_styles/hover = SubResource( 2 ) -custom_styles/normal = SubResource( 1 ) -toggle_mode = false -enabled_focus_mode = 0 -shortcut = null -group = null -flat = false -align = 1 -_sections_unfolded = [ "Mouse", "Size Flags", "Theme", "custom_styles" ] - -[node name="_" type="VBoxContainer" parent="." index="1"] +focus_mode = 0 +mouse_default_cursor_shape = 2 +theme_override_styles/normal = SubResource("1") +theme_override_styles/hover = SubResource("2") -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 191.0 -margin_bottom = 231.0 -rect_min_size = Vector2( 0, 200 ) -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = true -mouse_filter = 2 -mouse_default_cursor_shape = 0 +[node name="_" type="VBoxContainer" parent="."] +clip_contents = true +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -custom_constants/separation = 8 -alignment = 0 -_sections_unfolded = [ "Anchor", "Mouse", "Rect", "Size Flags", "custom_constants" ] - -[node name="_" type="MarginContainer" parent="_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 191.0 -margin_bottom = 181.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false mouse_filter = 2 -mouse_default_cursor_shape = 0 +theme_override_constants/separation = 8 + +[node name="_" type="MarginContainer" parent="_"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -custom_constants/margin_right = 0 -custom_constants/margin_top = 4 -custom_constants/margin_left = 0 -_sections_unfolded = [ "Anchor", "Mouse", "Rect", "Size Flags", "custom_constants" ] - -[node name="Image" type="Control" parent="_/_" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 4.0 -margin_right = 191.0 -margin_bottom = 181.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false mouse_filter = 2 -mouse_default_cursor_shape = 0 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 0 + +[node name="Image" type="TextureRect" parent="_/_"] +custom_minimum_size = Vector2(2.08165e-12, 256) +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 7 -script = ExtResource( 2 ) -_sections_unfolded = [ "Mouse", "Rect", "Size Flags" ] -max_size = 256 -background = Color( 0, 0, 0, 0 ) -immediate = false - -[node name="_2" type="MarginContainer" parent="_" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 189.0 -margin_right = 191.0 -margin_bottom = 231.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -custom_constants/margin_right = 6 -custom_constants/margin_left = 6 -custom_constants/margin_bottom = 10 -_sections_unfolded = [ "Size Flags", "custom_constants" ] - -[node name="_" type="VBoxContainer" parent="_/_2" index="0"] +stretch_mode = 5 +script = ExtResource("2") -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 6.0 -margin_right = 185.0 -margin_bottom = 32.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false +[node name="_2" type="MarginContainer" parent="_"] +layout_mode = 2 mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -alignment = 0 -_sections_unfolded = [ "custom_constants" ] - -[node name="ModelName" type="Label" parent="_/_2/_" index="0"] +theme_override_constants/margin_left = 6 +theme_override_constants/margin_right = 6 +theme_override_constants/margin_bottom = 10 -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_right = 179.0 -margin_bottom = 14.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false +[node name="_" type="VBoxContainer" parent="_/_2"] +layout_mode = 2 mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 + +[node name="ModelName" type="Label" parent="_/_2/_"] +custom_minimum_size = Vector2(256, 2.08165e-12) +layout_mode = 2 size_flags_vertical = 1 text = "Title" -align = 1 -autowrap = true -percent_visible = 1.0 -lines_skipped = 0 +autowrap_mode = 3 max_lines_visible = 2 -_sections_unfolded = [ "Anchor", "Margin", "Mouse", "Rect", "Size Flags", "Visibility", "custom_colors", "custom_constants" ] - -[node name="UserName" type="Label" parent="_/_2/_" index="1"] -self_modulate = Color( 1, 1, 1, 0.501961 ) -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 18.0 -margin_right = 179.0 -margin_bottom = 32.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 +[node name="UserName" type="Label" parent="_/_2/_"] +self_modulate = Color(1, 1, 1, 0.501961) +custom_minimum_size = Vector2(256, 2.08165e-12) +layout_mode = 2 size_flags_vertical = 1 text = "by" -align = 1 -autowrap = true -percent_visible = 1.0 -lines_skipped = 0 +autowrap_mode = 3 max_lines_visible = 2 -_sections_unfolded = [ "Anchor", "Margin", "Rect", "Size Flags", "Visibility", "custom_colors", "custom_constants", "custom_styles" ] [connection signal="pressed" from="_2" to="." method="_on_Button_pressed"] - - diff --git a/addons/sketchfab/SafeData.gd b/addons/sketchfab/SafeData.gd index 82e80ec..0235494 100644 --- a/addons/sketchfab/SafeData.gd +++ b/addons/sketchfab/SafeData.gd @@ -1,10 +1,10 @@ -tool +@tool static func string(data, key): return data[key] if _safe_has_key(data, key) && typeof(data[key]) == TYPE_STRING else "" static func integer(data, key): - return int(data[key]) if _safe_has_key(data, key) && typeof(data[key]) in [TYPE_INT, TYPE_REAL] else 0 + return int(data[key]) if _safe_has_key(data, key) && typeof(data[key]) in [TYPE_INT, TYPE_FLOAT] else 0 static func array(data, key): return data[key] if _safe_has_key(data, key) && typeof(data[key]) == TYPE_ARRAY else [] diff --git a/addons/sketchfab/Utils.gd b/addons/sketchfab/Utils.gd index 9c3e899..712aece 100644 --- a/addons/sketchfab/Utils.gd +++ b/addons/sketchfab/Utils.gd @@ -1,17 +1,5 @@ -tool +@tool -static func create_texture_from_file(path, scale = 1.0): - var file = File.new() - file.open(path, File.READ) - var buffer = file.get_buffer(file.get_len()) - file.close() - var img = Image.new() - img.load_png_from_buffer(buffer) - if abs(scale - 1.0) > 0.01: - img.resize(scale * img.get_width(), scale * img.get_height()) - var texture = ImageTexture.new() - texture.create_from_image(img) - return texture static func get_best_size_url(images, target_size, SafeData): var target_length_sq = Vector2(target_size, target_size).length_squared() diff --git a/addons/sketchfab/icon.png.noimport b/addons/sketchfab/icon.png.noimport deleted file mode 100644 index dd5276d..0000000 Binary files a/addons/sketchfab/icon.png.noimport and /dev/null differ diff --git a/addons/sketchfab/plugin.cfg b/addons/sketchfab/plugin.cfg index dde9d89..529f57b 100644 --- a/addons/sketchfab/plugin.cfg +++ b/addons/sketchfab/plugin.cfg @@ -1,7 +1,7 @@ -[plugin] - -name="Sketchfab" -description="Sketchfab browsing & importing right inside Godot" -author="Sketchfab" -version="1.1.0" -script="plugin.gd" +[plugin] + +name="Sketchfab" +description="Sketchfab browsing & importing right inside Godot" +author="Sketchfab" +version="1.1.0" +script="plugin.gd" diff --git a/addons/sketchfab/plugin.gd b/addons/sketchfab/plugin.gd index 292503a..6f8e371 100644 --- a/addons/sketchfab/plugin.gd +++ b/addons/sketchfab/plugin.gd @@ -1,57 +1,31 @@ -tool +@tool extends EditorPlugin const Utils = preload("res://addons/sketchfab/Utils.gd") -var main = preload("res://addons/sketchfab/Main.tscn").instance() +var Main = preload("res://addons/sketchfab/Main.tscn") +var main func _enter_tree(): - get_tree().set_meta("__editor_scale", _get_editor_scale()) - get_tree().set_meta("__editor_interface", get_editor_interface()) - get_editor_interface().get_editor_viewport().add_child(main) + main = Main.instantiate() + get_tree().set_meta("__editor_scale", EditorInterface.get_editor_scale()) + get_tree().set_meta("__editor_interface", EditorInterface) + get_tree().set_meta("__http_image_count", 0) + get_editor_interface().get_editor_main_screen().add_child(main) main.visible = false func _exit_tree(): - get_editor_interface().get_editor_viewport().remove_child(main) + main.queue_free() -func has_main_screen(): +func _has_main_screen(): return true -func get_plugin_name(): +func _get_plugin_name(): return "Sketchfab" -func get_plugin_icon(): - # Call _get_editor_scale() here as SceneTree is not instanced yet - return Utils.create_texture_from_file( - "res://addons/sketchfab/icon.png.noimport", - _get_editor_scale() / 2.0) +func _get_plugin_icon(): + return load("res://addons/sketchfab/icon.png") -func make_visible(visible): +func _make_visible(visible): main.visible = visible -# WORKAROUND until there's access to editor scale for plugins -func _get_editor_scale(): - var settings = get_editor_interface().get_editor_settings() - var display_scale = settings.get("interface/editor/display_scale") - - if display_scale == 0: - var screen = OS.get_current_screen() - return (2.0 if - OS.get_screen_dpi(screen) >= 192 && OS.get_screen_size(screen).x > 2000 - else 1.0) - elif display_scale == 1: - return 0.75 - elif display_scale == 2: - return 1.0 - elif display_scale == 3: - return 1.25 - elif display_scale == 4: - return 1.5 - elif display_scale == 5: - return 1.75 - elif display_scale == 6: - return 2.0 - else: - return (settings.get("interface/editor/custom_display_scale") if - settings.has_setting("interface/editor/custom_display_scale") - else 1.0) diff --git a/addons/sketchfab/unzip.gd b/addons/sketchfab/unzip.gd index 568656d..56b73ed 100644 --- a/addons/sketchfab/unzip.gd +++ b/addons/sketchfab/unzip.gd @@ -8,7 +8,7 @@ func _init(): var zip_path for arg in OS.get_cmdline_args(): if arg.begins_with(ARG_PREFIX): - zip_path = arg.right(ARG_PREFIX.length()) + zip_path = arg.right(arg.length() - ARG_PREFIX.length()) break if !zip_path: @@ -18,6 +18,7 @@ func _init(): print("Unpacking %s..." % zip_path) if !ProjectSettings.load_resource_pack(zip_path): + print(zip_path) print("Package file not found") return @@ -26,34 +27,31 @@ func _init(): var base_name = name_regex.search(zip_path).get_string(1) var out_path = zip_path.left(zip_path.find(base_name)) + base_name + "/" - Directory.new().make_dir(out_path) + DirAccess.make_dir_absolute(out_path) unpack_dir("res://", out_path) print("Done!") func unpack_dir(src_path, out_path): - print("Directory: %s -> %s" % [src_path, out_path]) - - var dir = Directory.new() - dir.open(src_path) - dir.list_dir_begin(true) + print("DirAccess: %s -> %s" % [src_path, out_path]) + var dir = DirAccess.open(src_path) + dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": if dir.current_is_dir(): var new_src_path = "%s%s/" % [src_path, file_name] var new_out_path = "%s%s/" % [out_path, file_name] - Directory.new().make_dir(new_out_path) + DirAccess.make_dir_absolute(new_out_path) unpack_dir(new_src_path, new_out_path) else: var file_src_path = "%s%s" % [src_path, file_name] var file_out_path = "%s%s" % [out_path, file_name] print("File: %s -> %s" % [file_src_path, file_out_path]) - var file = File.new() - file.open(file_src_path, File.READ) - var data = file.get_buffer(file.get_len()) + var file = FileAccess.open(file_src_path, FileAccess.READ) + var data = file.get_buffer(file.get_length()) file.close() - file.open(file_out_path, File.WRITE) + file = FileAccess.open(file_out_path, FileAccess.WRITE) file.store_buffer(data) file.close() file_name = dir.get_next() diff --git a/default_env.tres b/default_env.tres index ad86b72..8dd3c41 100644 --- a/default_env.tres +++ b/default_env.tres @@ -1,101 +1,9 @@ -[gd_resource type="Environment" load_steps=2 format=2] - -[sub_resource type="ProceduralSky" id=1] +[gd_resource type="Environment" load_steps=2 format=3 uid="uid://cviwyu6v3c6pi"] +[sub_resource type="Sky" id="1"] radiance_size = 4 -sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 ) -sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 ) -sky_curve = 0.25 -sky_energy = 1.0 -ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 ) -ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 ) -ground_curve = 0.01 -ground_energy = 1.0 -sun_color = Color( 1, 1, 1, 1 ) -sun_latitude = 35.0 -sun_longitude = 0.0 -sun_angle_min = 1.0 -sun_angle_max = 100.0 -sun_curve = 0.05 -sun_energy = 16.0 -texture_size = 2 [resource] - background_mode = 2 -background_sky = SubResource( 1 ) -background_sky_custom_fov = 0.0 -background_color = Color( 0, 0, 0, 1 ) -background_energy = 1.0 -background_canvas_max_layer = 0 -ambient_light_color = Color( 0, 0, 0, 1 ) -ambient_light_energy = 1.0 -ambient_light_sky_contribution = 1.0 -fog_enabled = false -fog_color = Color( 0.5, 0.6, 0.7, 1 ) -fog_sun_color = Color( 1, 0.9, 0.7, 1 ) -fog_sun_amount = 0.0 -fog_depth_enabled = true -fog_depth_begin = 10.0 -fog_depth_curve = 1.0 -fog_transmit_enabled = false -fog_transmit_curve = 1.0 -fog_height_enabled = false -fog_height_min = 0.0 -fog_height_max = 100.0 -fog_height_curve = 1.0 -tonemap_mode = 0 -tonemap_exposure = 1.0 -tonemap_white = 1.0 -auto_exposure_enabled = false -auto_exposure_scale = 0.4 -auto_exposure_min_luma = 0.05 -auto_exposure_max_luma = 8.0 -auto_exposure_speed = 0.5 -ss_reflections_enabled = false -ss_reflections_max_steps = 64 -ss_reflections_fade_in = 0.15 -ss_reflections_fade_out = 2.0 -ss_reflections_depth_tolerance = 0.2 -ss_reflections_roughness = true -ssao_enabled = false -ssao_radius = 1.0 +sky = SubResource("1") ssao_intensity = 1.0 -ssao_radius2 = 0.0 -ssao_intensity2 = 1.0 -ssao_bias = 0.01 -ssao_light_affect = 0.0 -ssao_color = Color( 0, 0, 0, 1 ) -ssao_quality = 0 -ssao_blur = 3 -ssao_edge_sharpness = 4.0 -dof_blur_far_enabled = false -dof_blur_far_distance = 10.0 -dof_blur_far_transition = 5.0 -dof_blur_far_amount = 0.1 -dof_blur_far_quality = 1 -dof_blur_near_enabled = false -dof_blur_near_distance = 2.0 -dof_blur_near_transition = 1.0 -dof_blur_near_amount = 0.1 -dof_blur_near_quality = 1 -glow_enabled = false -glow_levels/1 = false -glow_levels/2 = false -glow_levels/3 = true -glow_levels/4 = false -glow_levels/5 = true -glow_levels/6 = false -glow_levels/7 = false -glow_intensity = 0.8 -glow_strength = 1.0 -glow_bloom = 0.0 -glow_blend_mode = 2 -glow_hdr_threshold = 1.0 -glow_hdr_scale = 2.0 -glow_bicubic_upscale = false -adjustment_enabled = false -adjustment_brightness = 1.0 -adjustment_contrast = 1.0 -adjustment_saturation = 1.0 - diff --git a/project.godot b/project.godot index f06b0d5..522d1f6 100644 --- a/project.godot +++ b/project.godot @@ -6,95 +6,96 @@ ; [section] ; section goes between [] ; param=value ; assign values to parameters -config_version=4 +config_version=5 [application] config/name="Sketchfab" run/main_scene="res://Main.tscn" +config/features=PackedStringArray("4.3") config/icon="res://icon.png" [editor_plugins] -enabled=PoolStringArray( "sketchfab" ) +enabled=PackedStringArray("res://addons/sketchfab/plugin.cfg") [input] ui_accept={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777222,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) - ] +] } ui_select={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null) - ] +] } ui_cancel={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) - ] +] } ui_focus_next={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194306,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_focus_prev={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194306,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_left={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +] } ui_right={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +] } ui_up={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +] } ui_down={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +] } ui_page_up={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777235,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194323,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_page_down={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777236,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194324,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_home={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777229,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194317,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_end={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777230,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194318,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } [rendering] -environment/default_environment="res://default_env.tres" +environment/defaults/default_environment="res://default_env.tres"