UNPKG

intl-input-phone

Version:

Angular library to provide the international phone number feature by country dropdown and input fields with lots of customization and features like input masking, change the country, require valiation and many more.

466 lines 2.87 MB
import { Component, ViewEncapsulation, Input, Output, EventEmitter, forwardRef } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; import { IntlInputPhoneService } from "./intl-input-phone.service"; import { ConfigurationOptions } from "./model/Configuration"; import { ContentOptionsEnum, TooltipOptionsEnum, SortOrderEnum, OutputOptionsEnum } from "./model/Enums"; import * as i0 from "@angular/core"; import * as i1 from "./intl-input-phone.service"; import * as i2 from "@angular/common"; export class IntlInputPhoneComponent { constructor(_service) { this._service = _service; /** * Output event : It is fire when Is Required flag is change. */ this.OnIsRequiredChange = new EventEmitter(); /** * Output event : It is fire when Number is filled completly according to input masking. * return number or number with country code. */ this.OnNumberChange = new EventEmitter(); /** * Output event : It is fire when Number is filled completly according to input masking. * return number or number with country code. */ this.OnCountryDrpdwnChange = new EventEmitter(); this.onChange = () => { }; this.onTouched = () => { }; this.IsInputComplete = false; this.allCountryList = []; this.filteredCountryList = []; /** * Method to prepare the html and render the option html based on configuration. * Set the option html based on configuration provided */ this.prepareHtmlOptionToRender = (country) => { let optionHtml = ""; optionHtml += `<div class="CountryOptionItem">`; if (this.ConfigurationOption.OptionTextTypes.includes(ContentOptionsEnum.Flag)) { //check if customflag url is set then show the for that url if (country.IsShowCustomFlag != null && country.IsShowCustomFlag != undefined && country.IsShowCustomFlag) { optionHtml += `<div class="flags" style="background:url(` + country.CustomFlagUrl + `) no-repeat center/contain;"></div>`; } else { optionHtml += `<div class="flags ` + country.FlagCssClass + `"></div>`; } } if (this.ConfigurationOption.OptionTextTypes.includes(ContentOptionsEnum.CountryName)) { optionHtml += `<div class="CountryText">` + country.Name + `</div>`; } if (this.ConfigurationOption.OptionTextTypes.includes(ContentOptionsEnum.CountryPhoneCode)) { optionHtml += `<div class="CountryCode"> ` + country.CountryPhoneCode + `</div>`; } optionHtml += `</div>`; return $(optionHtml); }; /** * Return the Country falg and country code. * Change the input masking for the input. */ this.prepareHtmlOptionSelected = (selectedItem) => { this.selectedCountry = selectedItem; let selectedHtml = ""; selectedHtml += `<div class="CountryOptionItem CountryOptionSelected">`; //check if customflag url is set then show the for that url if (selectedItem.IsShowCustomFlag != null && selectedItem.IsShowCustomFlag != undefined && selectedItem.IsShowCustomFlag) { selectedHtml += `<div class="flags" style="background:url(` + selectedItem.CustomFlagUrl + `) no-repeat center/contain;"></div>`; } else { selectedHtml += `<div class="flags ` + selectedItem.FlagCssClass + `"></div>`; } selectedHtml += `<div class="CountryCode"> ` + selectedItem.CountryPhoneCode + `</div>`; selectedHtml += `</div>`; if (this.selectedCountry != null && this.selectedCountry.InputMasking != null && this.selectedCountry.InputMasking != "") { $("." + this.ConfigurationOption.SelectorClass + " .CountryNumberInput").inputmask(this.selectedCountry.InputMasking, { placeholder: "_", oncomplete: this.maskingOnCompleteEvent, onincomplete: this.maskingOnInCompleteEvent, oncleared: this.maskingOnClearedEvent }); //emit the output event. this.OnCountryDrpdwnChange.emit(this.selectedCountry); } return $(selectedHtml); }; /** * Method for apply the searching for the select 2. * Searching is apply based on country name, country ISO Code and Country phone Code. */ this.searchCountryData = (params, data) => { //check if query is empty then return show all listing. if (params != null && params != undefined && params.term != null && params.term != undefined && params.term != "") { //if query match with in name or phonecode or iso then return the data otherwise return null. try { if (data.Name.toLowerCase().includes(params.term.toLowerCase()) || data.CountryPhoneCode.toLowerCase().includes(params.term.toLowerCase()) || data.ISOCode.toLowerCase().includes(params.term.toLowerCase())) { return data; } return null; } catch (_a) { return null; } } else { return data; } }; /** * Method return the country option from the customcountry option. * Check if user given country is not available our list then add in the country. * Check if user given country is available in our list then replace those value which is not given by user. */ this.getCountryOptionFromCustomCountry = (customCountry) => { let existingCountry = this.allCountryList.find(x => x.ISOCode == customCountry.ISOCode); if (existingCountry != null && existingCountry != undefined) { //change the name. if (customCountry.Name != null && customCountry.Name != undefined && customCountry.Name != "") { existingCountry.Name = customCountry.Name; } //change in input masking. if (customCountry.InputMasking != null && customCountry.InputMasking != undefined && customCountry.InputMasking != "") { existingCountry.InputMasking = customCountry.InputMasking; } //set the country phonecode if (customCountry.CountryPhoneCode != null && customCountry.CountryPhoneCode != undefined && customCountry.CountryPhoneCode != "") { existingCountry.CountryPhoneCode = customCountry.CountryPhoneCode; } //set the custom flag url if (customCountry.CustomFlagUrl != null && customCountry.CustomFlagUrl != undefined && customCountry.CustomFlagUrl != "") { existingCountry.CustomFlagUrl = customCountry.CustomFlagUrl; existingCountry.IsShowCustomFlag = true; } return existingCountry; } else { let OutputCountry = { Name: customCountry.Name, ISOCode: customCountry.ISOCode, FlagCssClass: "flags ", CountryPhoneCode: customCountry.CountryPhoneCode, InputMasking: customCountry.InputMasking, CustomFlagUrl: customCountry.CustomFlagUrl, IsShowCustomFlag: true }; return OutputCountry; } }; /** * Event to handle the completed event for input masking. */ this.maskingOnCompleteEvent = (e) => { this.IsInputComplete = true; this.emitIsRequiredEvent(); }; /** * Event to handle incomplete event for input masking. */ this.maskingOnInCompleteEvent = (e) => { this.IsInputComplete = false; this.emitIsRequiredEvent(); }; /** * Event to handle cleared event for input masking. */ this.maskingOnClearedEvent = (e) => { this.IsInputComplete = false; this.emitIsRequiredEvent(); }; /** * Get Country list data. */ this.allCountryList = this._service.GetCountryList(); //assign the configuration option if found null so default dropdown will run. if (this.ConfigurationOption == null || this.ConfigurationOption == undefined) { this.ConfigurationOption = new ConfigurationOptions(); } } /** * * @param obj In this InputCountryModel : In "Number" we expect mobile number without country code and "ISOCode" we expect ISO code * for setting the country flag. */ writeValue(obj) { if (obj && obj.CountryModel.ISOCode) { let selectedCountry = this.filteredCountryList.find(x => x.ISOCode == obj.CountryModel.ISOCode); if (selectedCountry && selectedCountry.ISOCode) { $("." + this.ConfigurationOption.SelectorClass + " .CountryDrpDwn") .val(selectedCountry.ISOCode) .trigger("change"); $("." + this.ConfigurationOption.SelectorClass + " .CountryNumberInput").val(obj.Number); } } } /** * Register On Change Event */ registerOnChange(fn) { this.onChange = fn; } /** * Register on touched events. */ registerOnTouched(fn) { this.onTouched = fn; } get value() { return this.outputResult; } set value(obj) { this.writeValue(obj); } /** * Method to set the enable/disable state of the control using reactive form. */ setDisabledState(isDisabled) { if ($("." + this.ConfigurationOption.SelectorClass + " .CountryDrpDwn")) { $("." + this.ConfigurationOption.SelectorClass + " .CountryDrpDwn").prop("disabled", isDisabled); } if ($("." + this.ConfigurationOption.SelectorClass + " .CountryNumberInput")) { $("." + this.ConfigurationOption.SelectorClass + " .CountryNumberInput").prop("disabled", isDisabled); } } ngOnInit() { } ngAfterViewInit() { this.initializeCountryDrpDwn(); } ngOnChanges(changes) { if (changes["NumberTextValue"] && changes["NumberTextValue"].previousValue != changes["NumberTextValue"].currentValue) { this.initializeCountryDrpDwn(); } } /** * Method to initialize the country Dropdown. */ initializeCountryDrpDwn() { //#region Apply filter based on user given country list if (this.CountryList != null && this.CountryList != undefined && this.CountryList.length > 0) { //check whether specify in configuration to show all other country or not. if (this.ConfigurationOption.IsShowAllOtherCountry) { this.filteredCountryList = []; this.filteredCountryList = this.filteredCountryList.concat(this.allCountryList); } //Loop through the user country list and add/change the value in filteredCountryList. this.CountryList.forEach(customCountry => { let existingCountry = this.filteredCountryList.find(x => x.ISOCode.toLowerCase() == customCountry.ISOCode.toLowerCase()); if (existingCountry != null && existingCountry != undefined) { //update country in list. //remove the existing item. var existingIndex = this.filteredCountryList.findIndex(x => x.ISOCode == existingCountry.ISOCode); if (existingIndex > -1) { this.filteredCountryList.splice(existingIndex, 1); } existingCountry = this.getCountryOptionFromCustomCountry(customCountry); //add element in array. this.filteredCountryList.push(existingCountry); } else { //add country in list. this.filteredCountryList.push(this.getCountryOptionFromCustomCountry(customCountry)); } }); } else { this.filteredCountryList = this.allCountryList; } //#endregion //#region Apply Sorting based on configuration. switch (this.ConfigurationOption.SortBy) { case SortOrderEnum.CountryName: this.filteredCountryList = this.filteredCountryList.sort((objA, objB) => { if (objA.Name < objB.Name) return -1; else if (objA.Name > objB.Name) return 1; return 0; }); break; case SortOrderEnum.CountryISOCode: this.filteredCountryList = this.filteredCountryList.sort((objA, objB) => { if (objA.ISOCode < objB.ISOCode) return -1; else if (objA.ISOCode > objB.ISOCode) return 1; return 0; }); break; case SortOrderEnum.CountryPhoneCode: this.filteredCountryList = this.filteredCountryList.sort((objA, objB) => { if (objA.CountryPhoneCode < objB.CountryPhoneCode) return -1; else if (objA.CountryPhoneCode > objB.CountryPhoneCode) return 1; return 0; }); break; } //#endregion //#region set the selected country dropdown and set the input value. let selectedCountry; let NumberValue; if (this.NumberTextValue != null && this.NumberTextValue != undefined && this.NumberTextValue != "") { //get the country code from number and set the selected country. let countryCode = this.NumberTextValue.split(/ /)[0]; //replace the country code from numbertext. NumberValue = this.NumberTextValue.replace(countryCode, ""); NumberValue = NumberValue.trim(); if (countryCode.includes("+")) { //check if country contain bracket then get country code till next space. if (NumberValue[0] == "(") { countryCode += " " + NumberValue.split(/ /)[0]; NumberValue = this.NumberTextValue.replace(countryCode, ""); } //add the space in country code and trim the numbervalue. countryCode += " "; NumberValue = NumberValue.trim(); } else { NumberValue = countryCode; countryCode = ""; } //set the countrycode from this.filteredCountryList = $.map(this.filteredCountryList, objCountry => { objCountry.selected = false; return objCountry; }); if (this.SelectedCountryISOCode != null && this.SelectedCountryISOCode != undefined && this.SelectedCountryISOCode != "") { //get the selected country dropdown match the inital 3 character with the countrycode from the filteredcountry list. selectedCountry = this.filteredCountryList.find(x => x.ISOCode == this.SelectedCountryISOCode); if (selectedCountry != null && selectedCountry != undefined) { selectedCountry.selected = true; } } else { //get the selected country dropdown match the inital 3 character with the countrycode from the filteredcountry list. selectedCountry = this.filteredCountryList.find(x => x.CountryPhoneCode == countryCode); if (selectedCountry != null && selectedCountry != undefined) { selectedCountry.selected = true; } } } //#endregion //#region set the id and title for the country dropdown. var selectedDrpDwnData = $.map(this.filteredCountryList, obj => { obj.id = obj.ISOCode; //set the tooltip, if flag is true and based of value which is set in the configuration. if (this.ConfigurationOption.IsShowToolTip) { switch (this.ConfigurationOption.ToolTipText) { case TooltipOptionsEnum.CountryName: obj.title = obj.Name; break; case TooltipOptionsEnum.CountryISOCode: obj.title = obj.ISOCode; break; case TooltipOptionsEnum.CountryPhoneCode: obj.title = obj.CountryPhoneCode; break; default: obj.title = ""; break; } } else { obj.title = ""; } return obj; }); //#endregion $("." + this.ConfigurationOption.SelectorClass + " .CountryDrpDwn").select2({ data: selectedDrpDwnData, templateResult: this.prepareHtmlOptionToRender, minimumResultsForSearch: this.ConfigurationOption.IsShowSearchOption ? 0 : Infinity, matcher: this.searchCountryData, templateSelection: this.prepareHtmlOptionSelected }); if (selectedCountry && selectedCountry.selected) { $("." + this.ConfigurationOption.SelectorClass + " .CountryDrpDwn") .val(selectedCountry.id) .trigger("change"); } if (NumberValue != null && NumberValue != undefined && NumberValue != "") { $("." + this.ConfigurationOption.SelectorClass + " .CountryNumberInput").val(NumberValue); } } /** * Emit is Input completed event to outer component. */ emitIsRequiredEvent() { this.OnIsRequiredChange.emit(this.IsInputComplete); if (this.IsInputComplete) { this.emitOnNumberChange(); } else { this.outputResult = null; //updating null value in the form group. this.onChange(null); } } /** * Emit when input is change and completed the masking. * Return the output value based on configuration that whether we need to return number only or number with country code. */ emitOnNumberChange() { let inputValue = $("." + this.ConfigurationOption.SelectorClass + " .CountryNumberInput").val(); this.outputResult = { CountryModel: this.selectedCountry, Number: "" }; if (this.ConfigurationOption.OutputFormat == OutputOptionsEnum.NumberWithCountryCode) { let selectedCountryCode = this.selectedCountry.CountryPhoneCode; this.outputResult.Number = selectedCountryCode + inputValue; } else { this.outputResult.Number = inputValue; } this.OnNumberChange.emit(this.outputResult); this.onChange(this.outputResult); } } /** @nocollapse */ IntlInputPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: IntlInputPhoneComponent, deps: [{ token: i1.IntlInputPhoneService }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ IntlInputPhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.0", type: IntlInputPhoneComponent, selector: "intl-input-phone", inputs: { CountryList: "CountryList", ConfigurationOption: "ConfigurationOption", NumberTextValue: "NumberTextValue", SelectedCountryISOCode: "SelectedCountryISOCode" }, outputs: { OnIsRequiredChange: "OnIsRequiredChange", OnNumberChange: "OnNumberChange", OnCountryDrpdwnChange: "OnCountryDrpdwnChange" }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => IntlInputPhoneComponent)), multi: true } ], usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"ConfigurationOption?.SelectorClass\" class=\"input-main-div\">\r\n <div class=\"input-select-div\">\r\n <select class=\"CountryDrpDwn\">\r\n </select>\r\n </div> \r\n <input type=\"text\" name=\"InputPhone\" class=\"CountryNumberInput form-control\">\r\n</div>\r\n", styles: [".select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:2px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:2px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFFFFFFF\",endColorstr=\"#FFEEEEEE\",GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFEEEEEE\",endColorstr=\"#FFCCCCCC\",GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:linear-gradient(to bottom,#fff 0%,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFFFFFFF\",endColorstr=\"#FFEEEEEE\",GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFEEEEEE\",endColorstr=\"#FFFFFFFF\",GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:gray}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}html,body{height:100%}.CountryDrpDwn{width:120px}.input-main-div{position:relative}.input-select-div{display:inline-block;position:absolute}.input-main-div .CountryNumberInput{text-indent:120px;height:22px;width:20%;min-width:250px}.CountryOptionItem div{display:inline-block;vertical-align:middle}.CountryText,.CountryCode{padding-left:3px}.CountryOptionSelected{line-height:24px}.CountryOptionSelected .flags{height:23px;width:30px}.select2-dropdown.select2-dropdown--below{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important}.select2-dropdown.select2-dropdown--above{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important}.flags{height:25px;width:33px}.flag-ad{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 id%3D%22flag-icon-css-ad%22 viewBox%3D%220 0 640 480%22%3E%0D %3Cpath fill%3D%22%23d0103a%22 d%3D%22M0 0h640v480H0z%22%2F%3E%0D %3Cpath fill%3D%22%23fedf00%22 d%3D%22M0 0h435.2v480H0z%22%2F%3E%0D %3Cpath fill%3D%22%230018a8%22 d%3D%22M0 0h204.8v480H0z%22%2F%3E%0D %3Cpath fill%3D%22%23c7b37f%22 d%3D%22M300.4 136.6c7.7 0 10.9 6.6 18.6 6.6 4.7 0 7.5-1.5 11.7-3.9 2.9-1.6 4.7-2.5 8-2.5 3.4 0 5.5 1 7.3 4 1 1.6 1.8 4.9 1.3 6.7a40 40 0 0 1-2.7 8.3c-.7 1.6-1.3 2.5-1.3 4.2 0 4.1 5.6 5.5 9.4 5.6.8 0 7.7 0 12-4.2-2.3-.1-4.9-2-4.9-4.3 0-2.6 1.8-4.3 4.3-5.1.5-.1 1.3.3 1.7 0 .7-.3.4-1 1-1.4 1.2-1 2-1.6 3.6-1.6 1 0 1.6.1 2.5.7.4.4.6.8 1 .8 1.2 0 1.8-.8 3-.8a5 5 0 0 1 2.3.6c.6.3.6 1.5 1.4 1.5.4 0 2.4-.9 3.5-.9 2.2 0 3.4.8 4.8 2.5.4.5.6 1.4 1 1.4a6.2 6.2 0 0 1 4.8 3c.3.4.7 1.4 1.1 1.5.6.3 1 .2 1.7.7a6 6 0 0 1 2.8 4.8c0 .7-.3 1.6-.5 2.2-1.8 6.5-6.3 8.6-10.8 14.3-2 2.4-3.5 4.3-3.5 7.4 0 .7 1 2.1 1.3 2.7-.2-1.4.5-3.2 2-3.3a4 4 0 0 1 4 3.6 4.5 4.5 0 0 1-.3 1.8 9.6 9.6 0 0 1 4-1.4h1.9c3.3 0 7 1.9 9.3 3.8a21 21 0 0 1 7.3 16.8c-.8 5.2-.3 14.8-13.8 18.6 2.5 1 4.2 3 4.2 5.2a4.5 4.5 0 0 1-4.4 4.7 4.4 4.4 0 0 1-3.5-1.4c-2.8 2.8-3.3 5.7-3.3 9.7 0 2.4.4 3.8 1.4 6 1 2.2 1.8 3.5 3.7 5.1 1-1.5 2.1-2.6 4-2.6 1.7 0 3.2.6 3.9 2.2.2.5 0 .9.3 1.4.3.6.8.7 1.1 1.3.5 1 0 1.8.5 2.7.3.7.9.8 1.2 1.4.4 1 .5 1.6.5 2.7 0 3-2.7 5.2-5.7 5.2-1 0-1.4-.4-2.3-.3 1.7 1.7 3 2.5 4.3 4.5a17.7 17.7 0 0 1 3 10.3 22 22 0 0 1-2.8 11.2 20 20 0 0 1-7 8.5 35 35 0 0 1-16 6.4 74.4 74.4 0 0 1-11 1.4l-14.1.8c-7.2.4-12.2 1.5-17.3 6.6 2.4 1.7 4 3.5 4 6.4 0 3-1.8 5.3-4.7 6.2-.7.2-1.2 0-1.9.4s-.7 1.3-1.4 1.7a6.2 6.2 0 0 1-3.8 1 8 8 0 0 1-6.4-2.5c-2.2 1.8-3 3.4-5.5 4.9-.8.4-1.2 1-2.1 1-1.5 0-2.2-1-3.4-1.8a23 23 0 0 1-4.4-4c-2.3 1.3-3.6 2.4-6.3 2.4a7 7 0 0 1-4-1c-.6-.5-.8-1.2-1.5-1.6-.7-.5-1.3-.3-2.1-.7-3-1.3-5-3.5-5-6.8 0-2.9 1.8-4.7 4.4-6-5-5-10-5.8-17-6.2l-14-.8c-4.4-.3-6.8-.7-11-1.4-3.3-.5-5.2-.7-8.2-2.1-10.2-4.8-16.8-11.3-18-22.5-.2-1-.2-1.5-.2-2.5 0-5.8 2.3-9.4 6.4-13.5-1-.3-1.7 0-2.8-.3-2.5-1-4.4-2.7-4.4-5.5 0-1 0-1.7.5-2.6.4-.6 1-.7 1.2-1.4.2-1 0-1.6.4-2.5.3-.5.8-.6 1-1.2 1-1.9 2-3.4 4.1-3.4 1.8 0 3 1 3.8 2.5 1.8-.8 2.2-2.1 3.2-3.7a15.5 15.5 0 0 0 1.4-13.3c-.4-1.5-.6-2.5-1.8-3.7-1 1-2 1.4-3.4 1.4-2.9 0-5-2.5-5-5.3a4.8 4.8 0 0 1 3-4.6c-1.6-1.4-3-1.5-4.7-2.6-2.6-1.6-3.5-3.4-5.2-6-1.2-1.6-1.5-2.8-2-4.7a19 19 0 0 1-1-7.8c.6-5 1.5-8 4.6-11.9 1.8-2.3 3-3.7 5.8-4.9 2.3-1 3.7-1.7 6.2-1.7l2 .1a6.9 6.9 0 0 1 2.8.8c.4.2 1.1.9 1.1.4s-.3-.8-.3-1.3c0-2 1.5-4 3.6-4 1.5 0 2.1 1.4 2.9 2.7.4-.8.7-1.4.7-2.3 0-3.4-1.9-5.2-4-7.9-4.7-5.8-10.5-8.5-10.5-16 0-2.2 1-3.7 3-4.9.5-.3 1.3 0 1.8-.3s.4-1 .7-1.4c.5-.7 1-1 1.6-1.6 1-1 2-.6 3.1-1.5.6-.4.8-1 1.2-1.4 1.3-1.6 2.5-2.4 4.6-2.4 1 0 1.6 0 2.5.4l1 .5c.3-.2.8-.8 1.5-1.1a4 4 0 0 1 2.2-.6c1.1 0 1.8.6 3 .6.3 0 .4-.4.8-.6 1-.7 1.5-1 2.7-1 1.2 0 1.8.3 2.8 1 1 .5 1 1.3 2 1.8.5.3 1 .2 1.5.4 2.6.9 4.5 2.6 4.5 5.3 0 1.5-.3 2.5-1.4 3.5-.9.7-1.7.6-2.8 1a16 16 0 0 0 11.3 3.5c4.2 0 9.3-1.7 9.3-5.9 0-2-1-3-1.8-4.8a18.8 18.8 0 0 1-2.1-8.5c0-2.8.3-4.5 1.9-6.7 1.6-2.3 3.6-2.9 6.5-2.9z%22%2F%3E%0D %3Cg fill%3D%22none%22 stroke%3D%22%23703d29%22%3E%0D %3Cpath stroke-linejoin%3D%22round%22 stroke-width%3D%22.7%22 d%3D%22M272.4 159a3.6 3.6 0 0 0 2.4 2.4c.8.3 2.7.2 3.8-1.4 1-1.2 1-2.8.6-4a4.7 4.7 0 0 0-1.7-2.2l-5.1 5.2z%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 stroke-width%3D%22.7%22 d%3D%22M401 236.1c-1.2-2.9-4.3-1.6-4.4 0-.5 3.7 2.7 4.8 5 4.2a4 4 0 0 0 2.5-2c.6-1 .8-2.4.4-3.7a4.9 4.9 0 0 0-.8-1.6 5 5 0 0 0-1.3-1.2c-.9-.6-1.9-.6-3.4-.6-5.5 0-10.4 6.5-12 13.4-.6 2.2-1.3 7.3-.3 12a22.4 22.4 0 0 0 5.9 11.3 25.7 25.7 0 0 0 9.9 5.8 7.9 7.9 0 0 0 4 .1c3.2-.7 4.7-3.8 3-7-1.3-2.5-5.3-4-7.2-.6-.1.3-.4.9-.4 1.5 0 .9.4 2 1 2.4 1.5.9 3.8.6 3.7-2%22%2F%3E%0D %3Cpath stroke-width%3D%22.8%22 d%3D%22M383.8 274a11.3 11.3 0 0 1 6.6-3.7c3-.4 5.6.5 8.2 2a18.5 18.5 0 0 1 10.8 17c0 3.6-1 7.5-2 9.4-.8 1.7-3 9-15.3 14-7.1 3-18 3.6-25.7 4-10.4.3-20 .7-25.5 7.6%22%2F%3E%0D %3Cg stroke-width%3D%22.7%22%3E%0D %3Cpath d%3D%22M386.4 285.7c-.3-1 0-2.1.8-3.3 1.2-1.6 3.7-2.1 6-1a7.4 7.4 0 0 1 2.5 2.2l1.1 1.6c.7 1.1 1 2 1 2.5 2.5 7-1.4 14.5-6.5 17.6-4 2.4-8.7 3.4-14.4 4-2.5.4-4 .3-6.5.5h-9.6a70.1 70.1 0 0 0-7.2 0c-2.9.3-5 .4-7.6.8-1.6.2-3.4.5-5.4 1-.6 0-1.2.2-1.8.4l-1.2.3c-3.6 1.1-7 2.4-9.8 4.2-.8.5-1.8 1-2.5 1.7l-1.3 1.2c-2 2-3.9 4-4.4 6.7v1.6c0 1.8 1.4 4.3 5.4 5m5.5-170c.8 1.4 1.3 2.3.8 3.9-.6 1.7-1.8 2.8-3.6 2.8-4 0-6.3-4.8-4.5-7.8 3.2-5.3 9.3-2.3 15 .3-.3-1.3-.8-1.8-.7-3.5.1-4.2 3.2-6 4.5-10 .7-2.3 1-4.3-.7-6-1.5-1.3-3.2-1.3-5.1-.6-3.8 1.5-8.5 5.9-16.6 6-8.2-.1-12.8-4.5-16.7-6-2-.7-3.6-.7-5.1.7-1.7 1.6-1.4 3.6-.7 6 1.3 3.8 4.4 5.7 4.5 10 0 1.6-.4 2-.7 3.4 5.7-2.6 12-5.9 15-.3 1.7 3.2-.5 7.7-4.5 7.7-1.8 0-3-1-3.6-2.7-.4-1.5 0-2.8.8-4%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 d%3D%22M314.6 159.9a5.3 5.3 0 0 1 2.4 5c-.2 2.5-.8 3.1-2.8 4.5m2.4-3.8c-.1 1.5-.7 2.5-2.3 3.1%22%2F%3E%0D %3C%2Fg%3E%0D %3Cpath fill%3D%22%23c7b37f%22 stroke%3D%22none%22 d%3D%22M276.7 153.3l.7.5.8.8.5 1 .2.8v1.9l-.2.8-.5.6-.6.6-.9.5-1 .2-1 .2-1-.5-.9-.6-.5-.8-.4-1v-.4l4.8-4.6z%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 stroke-width%3D%22.7%22 d%3D%22M275.2 157.2c-.3-1.7-2.2-2-3-1-1.1 1.5-.3 4 2 4.7a4 4 0 0 0 3.9-1.4c1-1.3.9-2.8.5-4a4.5 4.5 0 0 0-1.7-2.2c-2.7-2-7.1-1.6-8.6 2-1.8 4.4 2.2 7.8 6 10.3 4.6 3.2 10 3.8 14 3.8 9.2-.1 16.2-4.5 20.7-7 1-.6 2.1-.5 2.7.2a2 2 0 0 1-.3 2.7%22%2F%3E%0D %3Cpath stroke-width%3D%22.7%22 d%3D%22M248 281.2l-2 .7-2 1.6-1 1.3-1.1 2-.5 1.5-.4 1.8-.2 1.4m19-10.1l-.1 1.8-.3 1.2-1 2.2-1.3 1.8-1.5 1.2-1.1.5-1.6.4%22%2F%3E%0D %3Cpath stroke-width%3D%22.8%22 d%3D%22M319.7 329.1c-.3 1.7-1.9 3.6-5.3 4.2l-.6.2%22%2F%3E%0D %3Cpath stroke-width%3D%22.9%22 d%3D%22M404.2 276.2a18.3 18.3 0 0 1 5.6 13.5c0 3.6-1 7.5-2 9.4-.8 1.7-3 9-15.3 14a85 85 0 0 1-25.6 4c-10.3.3-19.8.7-25.4 7.3%22%2F%3E%0D %3Cpath stroke-width%3D%22.6%22 d%3D%22M387.5 282.9c.8-1 3.5-2.4 5.8-1.1a6.2 6.2 0 0 1 2.3 2%22%2F%3E%0D %3Cpath stroke-width%3D%22.9%22 d%3D%22M401.6 273.8l1.4.5a7 7 0 0 0 4 0c2.8-.8 4.6-3.4 3.2-6.9a6 6 0 0 0-1.8-2.1%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 stroke-width%3D%22.7%22 d%3D%22M240.3 199.8c-2 1.1-3.3 1.4-4.8 3.1a28.1 28.1 0 0 0-2.6 6.8m46-51.7c0 1.8-1.2 2.8-3 3.2%22%2F%3E%0D %3Cpath stroke-width%3D%22.6%22 d%3D%22M397.1 192a19 19 0 0 1 18.6 19.8c0 16-9.9 18.5-13.8 19.6%22%2F%3E%0D %3Cpath stroke-width%3D%22.7%22 d%3D%22M398.4 192c8.1-.3 16.5 5.7 16.9 20.7.3 11.7-8 17-12 18%22%2F%3E%0D %3Cpath stroke-width%3D%22.6%22 d%3D%22M393.8 248.4l.1-1.6.6-2.5.7-2 .9-1.6 1-1.3m7.8-3.4v1.5l-.5 1-.7 1.1-.8.6-1.2.5h-1.1l-.8-.1m-14.3-52.8l.3-1.7.8-1.6 1-1.5 1.6-2.2 1.4-1.4 2-2.2 2-1.9 1.1-1.3 1.5-1.9 1.4-2 .8-1.7.5-2.2.1-2.7-.2-.8m-12.3 128.2l1.6-.4 1.2-.6.7-.7.5-.8.3-1.2v-.9m-158.2-12.1h2.7l1.6-.6m5-36.5l-.2 1.4-.4.6-.4.6-.7.5-.7.3-1 .1h-.6m9.9-15.5l-.3 2.1-.5 1-.8 1.2-1.2.9-1.2.6-2.3.5m15.3-39.7l-.5 1.3-.5 1-.8 1-1 1-1.2.5-1.1.3-.6-.1m.3-6.2v1%22%2F%3E%0D %3Cg stroke-width%3D%22.6%22%3E%0D %3Cpath stroke-linecap%3D%22round%22 d%3D%22M254.3 224a6.9 6.9 0 0 1-2.1 1.4m150.5 44.8l.5.2c1.4.8 4.2-.2 3.4-2.4%22%2F%3E%0D %3Cpath d%3D%22M397.8 239.6c1 1.3 2.9 1.7 4.4 1.3a4 4 0 0 0 2.5-2c.6-1 .8-2.4.4-3.7a4.9 4.9 0 0 0-.9-1.6 6.8 6.8 0 0 0-1.3-1.5l-.4-.2m6.4 34a4 4 0 0 0 .1-.7 4 4 0 0 0-1.3-3l-.8-.8m.4.5c0-1.8-1.5-3.2-3.4-3.5m-4.2 2.8l-1.3-1a15.7 15.7 0 0 1-4.3-10.7c0-4.2 1.6-8.4 3.6-10M341.2 324l1.8-1.6 1.2-1 2.3-1.4 2.2-1 1.6-.5 3-.6 3.6-.6m-29.5 19.4a17 17 0 0 1-7.6 6.1 17.7 17.7 0 0 1-7.6-6.1%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 d%3D%22M314.4 332.6a10 10 0 0 1-2.2 4.2%22%2F%3E%0D %3Cpath d%3D%22M314.7 330.5l-.4 2.2M312 337l-1 1-1.7.9-2 .6m-5.6-177.8c.3-.8.5-1.4.5-2.6-.1-4.2-3.2-6.1-4.5-10-.7-2.3-1-4.3.7-6 1.4-1.4 3.2-1.4 5-.6 4 1.5 8.6 5.8 16.7 6-8.1-.2-12.8-4.5-16.6-6-2-.8-3.8-1-5.3.5-1.7 1.6-1.2 3.8-.5 6.1 1.3 3.9 4.2 5.8 4.3 10 0 1.2-.3 1.8-.5 2.6M320 148c8-.4 14.9-5.8 17.1-6.3 2-.4 3-.2 4.5 1.1-1.4-1.3-3-1.2-5-.5-3.8 1.5-8.4 5.8-16.6 6m79.6 112.9a15.5 15.5 0 0 1-6.2-12.4c0-4.1 1.7-8.4 3.6-10m-70 97.6c-1.3 2-4.3 5-7.6 6.2a17.7 17.7 0 0 1-7.6-6.2%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 d%3D%22M306.7 163.7l2.3-1.3c1-.6 2.3-.5 2.9.2.6.7.7 2-.2 2.8%22%2F%3E%0D %3Cpath d%3D%22M294.7 169.3c5.5-1.2 10-3.6 13.4-5.5M340.3 328c.5.3.8 1 .8 1 .1.2.3.5.3.8.3 1.5-.7 2.4-2 2.6-1.7.2-3-.8-3.5-2M294.4 169c5.5-1.1 10-3.6 13.4-5.5m97.6 106.9c-1 .4-1.6.3-3-.2l-1.8-1a20.7 20.7 0 0 1-8.4-9 18.8 18.8 0 0 1-1.7-4.6 12 12 0 0 1-.5-3.3 25.6 25.6 0 0 1 4.7-15.3c1.1-1.6 2.1-2.5 4.2-2.6m-143.7-39.3a7.1 7.1 0 0 1 2.7 5.7c0 3.1-2.6 8.2-9 10a8.3 8.3 0 0 1-6.3-.8%22%2F%3E%0D %3Cpath d%3D%22M256.3 205.6c1.1.8 1.6 1.7 1.6 3.3 0 1-.7 2.4-1.9 3.7a12.4 12.4 0 0 1-8.8 4c-2 0-4-.4-6-1.7a9 9 0 0 1-3.8-5.4%22%2F%3E%0D %3Cpath d%3D%22M256.2 212.3c1.3 1.2 1.7 2.7 1.7 4.6 0 2.7-1.1 4.8-3.7 7-.6.6-1.2 1-2 1.5m129.5-22.1v3.5m-.3-4.4v5m.3-15.8v6.6m-.3-8v8.9m-1.9 82a18.7 18.7 0 0 1-4.2 5.6 19.6 19.6 0 0 1-5.8 4.1 24.6 24.6 0 0 1-6.6 2.2 33 33 0 0 1-6.8.9c-2.5 0-3.9 0-6.4-.2-2.6-.2-4-.6-6.7-.8-2.2-.2-3.4-.4-5.6-.3a28.3 28.3 0 0 0-11 1.8c-2.6 1-5.7 3-6.3 3.8a22 22 0 0 0-6.4-3.8 22 22 0 0 0-5.1-1.4c-2.3-.4-3.5-.4-5.8-.4-2.2 0-3.4.1-5.6.3-2.6.3-4 .6-6.7.8-2.5.2-3.9.3-6.4.2a33 33 0 0 1-13.4-3 19.5 19.5 0 0 1-6.4-4.8m42.1 53.4l1.8-.2m30.3-2.4l1.8-.1 1.7-.7 1.2-.8 1.7-2 .3-.6.3-1.7v-.8m47-136.7c.7-2.6-.2-5.4-2.8-5.3m-132 46.5a8.2 8.2 0 0 1-3.5 4.7m3.6-46.7a6.5 6.5 0 0 1-3.6 4c-1.9.8-4 0-5.2-.8%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 d%3D%22M243.8 202.4c1.5.8 3.1-.4 2.8-2.4a2.9 2.9 0 0 0-2.5-2.2%22%2F%3E%0D %3Cpath d%3D%22M250.2 286.6c.3.3.4.7.8.8.7.2 1.2.4 1.9-.5.8-1.1.3-2.8-.5-3.9a5 5 0 0 0-5.8-1c-.8.5-1.7 1-2.6 2.2l-1.1 1.6c-.7 1.1-1 2-1.1 2.4-2 5.9.4 12 4.1 15.7%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 d%3D%22M340.2 327.8l.7.8.2.9c.3 1.5-.7 2.4-2 2.6-1.6.2-2.8-.8-3.3-2%22%2F%3E%0D %3Cpath d%3D%22M389.4 154.8a7.4 7.4 0 0 1 6.3 7c0 4.4-1.5 6-3.8 9.2-2.5 3.4-10.7 9.6-10.7 16.7 0 4.3 1.2 7 4.3 8.4 2 1 4.3 0 5.4-1 2.6-2.4 1.5-6.5-1.2-7-3.2-.6-3.9 4.6-.7 4.3m17.9 69a3.7 3.7 0 0 0-3.6-3 3.7 3.7 0 0 0-3.7 3.7c0 1 .4 2 1 2.6%22%2F%3E%0D %3Cpath d%3D%22M383.9 195.1a7.1 7.1 0 0 0-2.7 5.7c0 3.1 2.6 8.2 9 10 2.4.7 4.8.6 6.2-.3m-156-10.3a9.4 9.4 0 0 0-4.8 3.5 16.9 16.9 0 0 0-2.2 12.7 15.8 15.8 0 0 0 2.3 5.6 8 8 0 0 0 1 1.2l1.2 1m64 92c4.9 2.1 8.4 3.7 11.4 8.5a10 10 0 0 1 1.2 4.9c0 2.7-1 5.7-3.3 7.6a8.3 8.3 0 0 1-6.7 2c-1.9-.2-3.7-1.6-4-2.6M254 224.1c2.7 2.2 3.9 4.2 3.9 7.5a8.4 8.4 0 0 1-4 7.5%22%2F%3E%0D %3Cpath stroke-linecap%3D%22round%22 d%3D%22M251.5 236.4c4 5.1 6.3 8.1 6.4 14.1.1 5.7-1.7 9.6-5 13.7%22%2F%3E%0D %3Cpath d%3D%22M329.8 169.3a4.1 4.1 0 0 0 1.5-2.2c.5-1.5.5-2.8-.2-4 1 1.4 1 2.5.7 4-.1 1-.8 1.5-1.6 2.3m51.5 86.1v16.2l-.1 2.5a34.4 34.4 0 0 1-.3 1.7%22%2F%3E%0D %3Cpath d%3D%22M381.4 254v19.9l-.5 2.6m.5-43v14.6m.3-13.4v11.8m0-26.8v8.8m-.3-9.9v11m.3-19v3.5m-.3-4.2v5m-1.8 65.2l-.4.7a18.7 18.7 0 0 1-4.1 5.7 19.6 19.6 0 0 1-5.9 4 24.6 24.6 0 0 1-6.5 2.2c-2.7.6-4.2.8-6.9.9-2.5 0-3.9 0-6.3-.2-2.7-.2-4.1-.5-6.8-.8-2.2-.2-3.4-.3-5.6-.3-2.2 0-3.5 0-5.7.4a22 22 0 0 0-5.2 1.4c-2.7 1.1-5.7 3-6.4 3.8-.6-.8-3.7-2.7-6.3-3.8a22 22 0 0 0-5.2-1.4c-2.2-.4-3.5-.4-5.8-.4-2.2 0-3.4.1-5.6.3-2.6.3-4 .6-6.7.8-2.5.2-3.9.3-6.3.2a33 33 0 0 1-13.5-3 19.5 19.5 0 0 1-5.8-4.1 22 22 0 0 1-2.5-2.8m-2-3.2a10.1 10.1 0 0 1-2.3 7.7c-.8.9-2.6 2.6-5 2.6-3.7 0-4.8-2.5-5-3.2%22%2F%3E%0D %3Cpath d%3D%22M255.6 278.9c.7.7 1.3 1.5 1.9 2.5 1 1.8.6 4.8-.1 6.2a4.4 4.4 0 0 1-.3.4m-20.3 18c2.3 2.4 5.7 5 10.9 7.1 7.1 3 18.1 3.6 25.7 4 10 .3 19.3.7 25 7m17.3-4a12 12 0 0 1 4 5.5m-7.3 11.5a8.2 8.2 0 0 1-.7.7 8.3 8.3 0 0 1-6.6 2c-2-.2-3.8-1.6-4.3-2.6m-5.4-2.9l.3.4a7.6 7.6 0 0 0 5.1 2.4m27 0a18 18 0 0 1-7.7 6.1 17.7 17.7 0 0 1-7.6-6.1l-.3-.5m15.6.4l.7.7a8.3 8.3 0 0 0 6.7 2 5.5 5.5 0 0 0 4-2.5l.5-.7%22%2F%3E%0D %3Cpath d%3D%22M339 336.6l-.7 1.2-1.1 1-1.7.7h-1.6%22%2F%3E%0D %3Cpath d%3D%22M343 325.3a7.7 7.7 0 0 1 2.4 2.9c.3.7.4 1.5.5 2.3a5.8 5.8 0 0 1-1.5 4.2 7.5 7.5 0 0 1-5.4 2.4 5.5 5.5 0 0 1-.4 0m.2-.2a6.8 6.8 0 0 1-5.2-2.2m63.7-67.9a23.8 23.8 0 0 1-4.8-6.4 18.8 18.8 0 0 1-1.7-4.5 12 12 0 0 1-.5-3.3 26 26 0 0 1 4.6-15.3c.7-.8 1.4-1.8 2.1-2.2m-1.3-75.9c2.5.2 4.8 3 4.8 5.7 0 3.8-1.3 5.5-4.4 9.3-2.6 3.2-10.6 9-10.3 14.5 0 1 .5 2 1.1 2.8m-3.2 3.5a7 7 0 0 0 2 1.4 5 5 0 0