added Gujarati translation

pull/914/head
Shashank Kashyap 3 years ago committed by GitHub
parent 120204995f
commit d35223ab94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,183 @@
# પ્રોગ્રામિંગ ભાષાઓ અને વેપારના સાધનોનો પરિચય
આ પાઠ પ્રોગ્રામિંગ ભાષાઓની મૂળભૂત બાબતોને આવરી લે છે. અહીં આવરી લેવામાં આવેલ વિષયો આજે મોટાભાગની આધુનિક પ્રોગ્રામિંગ ભાષાઓને લાગુ પડે છે. 'ટૂલ્સ ઓફ ધ ટ્રેડ' વિભાગમાં, તમે ઉપયોગી સોફ્ટવેર વિશે શીખી શકશો જે તમને વિકાસકર્તા તરીકે મદદ કરે છે.
![ઇન્ટ્રો પ્રોગ્રામિંગ](../../sketchnotes/webdev101-programming.png)
> [ટોમોમી ઈમુરા] (https://twitter.com/girlie_mac) દ્વારા સ્કેચનોટ
## પ્રી-લેક્ચર ક્વિઝ
[પ્રી-લેક્ચર ક્વિઝ](https://ashy-river-0debb7803.1.azurestaticapps.net/quiz/1)
## પરિચય
આ પાઠમાં, અમે આવરી લઈશું:
- પ્રોગ્રામિંગ શું છે?
- પ્રોગ્રામિંગ ભાષાઓના પ્રકાર
- પ્રોગ્રામના મૂળભૂત તત્વો
- વ્યાવસાયિક વિકાસકર્તા માટે ઉપયોગી સોફ્ટવેર અને ટૂલિંગ
> તમે [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/introduction-programming?WT.mc_id=academic-13441-cxa) પર આ પાઠ લઈ શકો છો!
## પ્રોગ્રામિંગ શું છે?
પ્રોગ્રામિંગ (કોડિંગ તરીકે પણ ઓળખાય છે) એ કમ્પ્યુટર અથવા મોબાઇલ ઉપકરણ જેવા ઉપકરણ માટે સૂચનાઓ લખવાની પ્રક્રિયા છે. અમે આ સૂચનાઓને પ્રોગ્રામિંગ ભાષા સાથે લખીએ છીએ, જે પછી ઉપકરણ દ્વારા અર્થઘટન કરવામાં આવે છે. સૂચનાઓના આ સેટને વિવિધ નામોથી ઓળખવામાં આવી શકે છે, પરંતુ *પ્રોગ્રામ*, *કોમ્પ્યુટર પ્રોગ્રામ*, *એપ્લિકેશન (એપ્લિકેશન)* અને *એક્ઝિક્યુટેબલ* એ થોડા લોકપ્રિય નામો છે.
*પ્રોગ્રામ* કોડ સાથે લખાયેલ કંઈપણ હોઈ શકે છે; વેબસાઇટ્સ, ગેમ્સ અને ફોન એપ્સ એ પ્રોગ્રામ છે. જ્યારે કોડ લખ્યા વિના પ્રોગ્રામ બનાવવો શક્ય છે, ત્યારે ઉપકરણ દ્વારા અંતર્ગત તર્કનું અર્થઘટન કરવામાં આવે છે અને તે તર્ક સંભવતઃ કોડ સાથે લખવામાં આવ્યો હતો. પ્રોગ્રામ કે જે *ચાલી રહ્યો છે* અથવા *એક્ઝિક્યુટીંગ* કોડ સૂચનાઓનું પાલન કરે છે. તમે જે ઉપકરણ સાથે આ પાઠ વાંચી રહ્યાં છો તે ઉપકરણ તેને તમારી સ્ક્રીન પર છાપવા માટે એક પ્રોગ્રામ ચલાવી રહ્યું છે.
✅ થોડું સંશોધન કરો: વિશ્વના પ્રથમ કમ્પ્યુટર પ્રોગ્રામર કોને માનવામાં આવે છે?
## પ્રોગ્રામિંગ ભાષાઓ
પ્રોગ્રામિંગ ભાષાઓ વિકાસકર્તાઓને ઉપકરણ માટે સૂચનાઓ લખવા માટે સક્ષમ કરે છે. ઉપકરણો ફક્ત દ્વિસંગી (1s અને 0s) ને જ સમજી શકે છે, અને *મોટા ભાગના* વિકાસકર્તાઓ માટે તે વાતચીત કરવાની ખૂબ કાર્યક્ષમ રીત નથી. પ્રોગ્રામિંગ લેંગ્વેજ એ મનુષ્ય અને કમ્પ્યુટર વચ્ચેના સંચાર માટેનું વાહન છે.
પ્રોગ્રામિંગ લેંગ્વેજ અલગ-અલગ ફોર્મેટમાં આવે છે અને વિવિધ હેતુઓ માટે કામ કરી શકે છે. ઉદાહરણ તરીકે, JavaScript મુખ્યત્વે વેબ એપ્લિકેશન માટે વપરાય છે, જ્યારે Bash મુખ્યત્વે ઓપરેટિંગ સિસ્ટમ્સ માટે વપરાય છે.
*નિમ્ન સ્તરની ભાષાઓ* સામાન્ય રીતે સૂચનાઓનું અર્થઘટન કરવા માટે ઉપકરણ માટે *ઉચ્ચ સ્તરની ભાષાઓ* કરતાં ઓછા પગલાંની જરૂર પડે છે. જો કે, ઉચ્ચ સ્તરની ભાષાઓને લોકપ્રિય બનાવે છે તે તેમની વાંચનક્ષમતા અને સમર્થન છે. જાવાસ્ક્રિપ્ટને ઉચ્ચ સ્તરની ભાષા ગણવામાં આવે છે.
નીચેનો કોડ JavaScript સાથેની ઉચ્ચ સ્તરની ભાષા અને ARM એસેમ્બલી કોડ સાથેની નિમ્ન સ્તરની ભાષા વચ્ચેનો તફાવત દર્શાવે છે.
```javascript
let number = 10
let n1 = 0, n2 = 1, nextTerm;
for (let i = 1; i <= number; i++) {
console.log(n1);
nextTerm = n1 + n2;
n1 = n2;
n2 = nextTerm;
}
```
```c
area ascen,code,readonly
entry
code32
adr r0,thumb+1
bx r0
code16
thumb
mov r0,#00
sub r0,r0,#01
mov r1,#01
mov r4,#10
ldr r2,=0x40000000
back add r0,r1
str r0,[r2]
add r2,#04
mov r3,r0
mov r0,r1
mov r1,r3
sub r4,#01
cmp r4,#00
bne back
end
```
માનો કે ના માનો, *તેઓ બંને એક જ કામ કરી રહ્યા છે*: 10 સુધી ફિબોનાકી સિક્વન્સ પ્રિન્ટ કરવું.
✅ ફિબોનાકી ક્રમ એ સંખ્યાઓના સમૂહ તરીકે [વ્યાખ્યાયિત](https://en.wikipedia.org/wiki/Fibonacci_number) છે જેમ કે દરેક સંખ્યા 0 અને 1 થી શરૂ થતી બે પહેલાની સંખ્યાઓનો સરવાળો છે.
## પ્રોગ્રામના તત્વો
પ્રોગ્રામમાં એક જ સૂચનાને *સ્ટેટમેન્ટ* કહેવામાં આવે છે અને તેમાં સામાન્ય રીતે અક્ષર અથવા રેખા અંતર હોય છે જે સૂચના સમાપ્ત થાય છે અથવા *સમાપ્ત* થાય છે તે ચિહ્નિત કરે છે. પ્રોગ્રામ કેવી રીતે સમાપ્ત થાય છે તે દરેક ભાષા સાથે બદલાય છે.
પ્રોગ્રામની અંદરના નિવેદનો સૂચનાઓનું પાલન કરવા માટે વપરાશકર્તા અથવા અન્યત્ર દ્વારા પ્રદાન કરવામાં આવેલ ડેટા પર આધાર રાખે છે. ડેટા પ્રોગ્રામ કેવી રીતે વર્તે છે તે બદલી શકે છે, તેથી પ્રોગ્રામિંગ લેંગ્વેજ અસ્થાયી રૂપે ડેટા સ્ટોર કરવાની રીત સાથે આવે છે જેથી તેનો પછીથી ઉપયોગ કરી શકાય. આને *ચલ* કહેવામાં આવે છે. ચલો એ નિવેદનો છે જે ઉપકરણને તેની મેમરીમાં ડેટા સાચવવા માટે સૂચના આપે છે. પ્રોગ્રામ્સમાંના ચલ બીજગણિતના ચલો જેવા જ હોય ​​છે, જ્યાં તેમનું એક વિશિષ્ટ નામ હોય છે અને સમય જતાં તેમની કિંમત બદલાઈ શકે છે.
ત્યાં એક તક છે કે કેટલાક નિવેદનો ઉપકરણ દ્વારા ચલાવવામાં આવશે નહીં. આ સામાન્ય રીતે જ્યારે વિકાસકર્તા દ્વારા લખવામાં આવે ત્યારે ડિઝાઇન દ્વારા અથવા જ્યારે કોઈ અણધારી ભૂલ થાય ત્યારે અકસ્માત દ્વારા હોય છે. એપ્લિકેશન પર આ પ્રકારનું નિયંત્રણ તેને વધુ મજબૂત અને જાળવવા યોગ્ય બનાવે છે. સામાન્ય રીતે, જ્યારે અમુક શરતો પૂરી થાય છે ત્યારે નિયંત્રણમાં આ ફેરફારો થાય છે. પ્રોગ્રામ કેવી રીતે ચાલે છે તે નિયંત્રિત કરવા માટે આધુનિક પ્રોગ્રામિંગમાં ઉપયોગમાં લેવાતું સામાન્ય નિવેદન એ `if..else` વિધાન છે.
✅ તમે પછીના પાઠોમાં આ પ્રકારના નિવેદન વિશે વધુ શીખી શકશો.
## વેપાર ના સાધનો
[![વેપારના સાધનો](https://img.youtube.com/vi/69WJeXGBdxg/0.jpg)](https://youtube.com/watch?v=69WJeXGBdxg "વેપારના સાધનો")
> 🎥 ટૂલિંગ વિશેના વિડિયો માટે ઉપરની છબી પર ક્લિક કરો
આ વિભાગમાં, તમે કેટલાક સોફ્ટવેર વિશે શીખી શકશો જે તમને તમારી વ્યાવસાયિક વિકાસ યાત્રા શરૂ કરતી વખતે ખૂબ જ ઉપયોગી લાગશે.
**વિકાસ વાતાવરણ** એ સાધનો અને સુવિધાઓનો એક અનન્ય સમૂહ છે જેનો વિકાસકર્તા સોફ્ટવેર લખતી વખતે વારંવાર ઉપયોગ કરે છે. આમાંના કેટલાક ટૂલ્સ ડેવલપરની ચોક્કસ જરૂરિયાતો માટે કસ્ટમાઇઝ કરવામાં આવ્યા છે અને જો તે ડેવલપર કામમાં, વ્યક્તિગત પ્રોજેક્ટ્સમાં અથવા જ્યારે તેઓ કોઈ અલગ પ્રોગ્રામિંગ ભાષાનો ઉપયોગ કરે છે ત્યારે તે સમય જતાં બદલાઈ શકે છે. ડેવલપમેન્ટ એન્વાયર્નમેન્ટ્સ ડેવલપર્સ જેટલા જ અનન્ય છે જે તેનો ઉપયોગ કરે છે.
### સંપાદકો
સોફ્ટવેર ડેવલપમેન્ટ માટે સૌથી નિર્ણાયક સાધનો પૈકી એક એડિટર છે. સંપાદકો તે છે જ્યાં તમે તમારો કોડ લખો છો અને કેટલીકવાર જ્યાં તમે તમારો કોડ ચલાવો છો.
વિકાસકર્તાઓ કેટલાક વધારાના કારણોસર સંપાદકો પર આધાર રાખે છે:
- *ડિબગીંગ* કોડ, લાઇન બાય લાઇન દ્વારા પગલું ભરીને ભૂલો અને ભૂલોને ઉજાગર કરવામાં મદદ કરે છે. કેટલાક સંપાદકો ડીબગીંગ ક્ષમતાઓ ધરાવે છે; તેઓ વિશિષ્ટ પ્રોગ્રામિંગ ભાષાઓ માટે કસ્ટમાઇઝ અને ઉમેરી શકાય છે.
- *સિન્ટેક્સ હાઇલાઇટિંગ* કોડમાં રંગો અને ટેક્સ્ટ ફોર્મેટિંગ ઉમેરે છે, જે તેને વાંચવાનું સરળ બનાવે છે. મોટાભાગના સંપાદકો કસ્ટમાઇઝ્ડ સિન્ટેક્સ હાઇલાઇટિંગને મંજૂરી આપે છે.
- *એક્સ્ટેન્શન્સ અને ઈન્ટીગ્રેશન* એ ડેવલપર્સ દ્વારા, ડેવલપર્સ માટે વિશિષ્ટ સાધનો છે. આ ટૂલ્સ બેઝ એડિટરમાં બનાવવામાં આવ્યા ન હતા. ઉદાહરણ તરીકે, ઘણા વિકાસકર્તાઓ તેમના કોડને તે કેવી રીતે કાર્ય કરે છે તે સમજાવવા દસ્તાવેજ કરે છે. દસ્તાવેજોમાં લખાણની ભૂલો શોધવામાં મદદ કરવા માટે તેઓ જોડણી તપાસ એક્સ્ટેંશન ઇન્સ્ટોલ કરી શકે છે. મોટાભાગના એક્સ્ટેંશન ચોક્કસ સંપાદકની અંદર ઉપયોગ માટે બનાવાયેલ છે, અને મોટાભાગના સંપાદકો ઉપલબ્ધ એક્સ્ટેંશન શોધવાની રીત સાથે આવે છે.
- *કસ્ટમાઇઝેશન* વિકાસકર્તાઓને તેમની જરૂરિયાતોને અનુરૂપ અનન્ય વિકાસ વાતાવરણ બનાવવા માટે સક્ષમ બનાવે છે. મોટાભાગના સંપાદકો અત્યંત વૈવિધ્યપૂર્ણ છે અને વિકાસકર્તાઓને કસ્ટમ એક્સ્ટેન્શન્સ બનાવવાની પણ મંજૂરી આપી શકે છે.
#### લોકપ્રિય સંપાદકો અને વેબ ડેવલપમેન્ટ એક્સ્ટેન્શન્સ
- [વિઝ્યુઅલ સ્ટુડિયો કોડ](https://code.visualstudio.com/)
- [કોડ જોડણી તપાસનાર](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)
- [લાઇવ શેર](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack)
- [સુંદર - કોડ ફોર્મેટર](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
- [એટમ](https://atom.io/)
- [જોડણી-તપાસ](https://atom.io/packages/spell-check)
- [ટેલિટાઇપ](https://atom.io/packages/teletype)
- [atom-beautify](https://atom.io/packages/atom-beautify)
## વેપાર ના સાધનો
[![વેપારના સાધનો](https://img.youtube.com/vi/69WJeXGBdxg/0.jpg)](https://youtube.com/watch?v=69WJeXGBdxg "વેપારના સાધનો")
> 🎥 ટૂલિંગ વિશેના વિડિયો માટે ઉપરની છબી પર ક્લિક કરો
આ વિભાગમાં, તમે કેટલાક સોફ્ટવેર વિશે શીખી શકશો જે તમને તમારી વ્યાવસાયિક વિકાસ યાત્રા શરૂ કરતી વખતે ખૂબ જ ઉપયોગી લાગશે.
**વિકાસ વાતાવરણ** એ સાધનો અને સુવિધાઓનો એક અનન્ય સમૂહ છે જેનો વિકાસકર્તા સોફ્ટવેર લખતી વખતે વારંવાર ઉપયોગ કરે છે. આમાંના કેટલાક ટૂલ્સ ડેવલપરની ચોક્કસ જરૂરિયાતો માટે કસ્ટમાઇઝ કરવામાં આવ્યા છે અને જો તે ડેવલપર કામમાં, વ્યક્તિગત પ્રોજેક્ટ્સમાં અથવા જ્યારે તેઓ કોઈ અલગ પ્રોગ્રામિંગ ભાષાનો ઉપયોગ કરે છે ત્યારે તે સમય જતાં બદલાઈ શકે છે. ડેવલપમેન્ટ એન્વાયર્નમેન્ટ્સ ડેવલપર્સ જેટલા જ અનન્ય છે જે તેનો ઉપયોગ કરે છે.
### સંપાદકો
સોફ્ટવેર ડેવલપમેન્ટ માટે સૌથી નિર્ણાયક સાધનો પૈકી એક એડિટર છે. સંપાદકો એ છે જ્યાં તમે તમારો કોડ લખો છો અને કેટલીકવાર જ્યાં તમે તમારો કોડ ચલાવો છો.
વિકાસકર્તાઓ કેટલાક વધારાના કારણોસર સંપાદકો પર આધાર રાખે છે:
- *ડિબગીંગ* કોડ, લાઇન બાય લાઇન દ્વારા પગલું ભરીને ભૂલો અને ભૂલોને ઉજાગર કરવામાં મદદ કરે છે. કેટલાક સંપાદકો ડીબગીંગ ક્ષમતાઓ ધરાવે છે; તેઓ વિશિષ્ટ પ્રોગ્રામિંગ ભાષાઓ માટે કસ્ટમાઇઝ અને ઉમેરી શકાય છે.
- *સિન્ટેક્સ હાઇલાઇટિંગ* કોડમાં રંગો અને ટેક્સ્ટ ફોર્મેટિંગ ઉમેરે છે, જે તેને વાંચવાનું સરળ બનાવે છે. મોટાભાગના સંપાદકો કસ્ટમાઇઝ્ડ સિન્ટેક્સ હાઇલાઇટિંગને મંજૂરી આપે છે.
- *એક્સ્ટેન્શન્સ અને ઈન્ટીગ્રેશન* એ ડેવલપર્સ દ્વારા, ડેવલપર્સ માટે વિશિષ્ટ સાધનો છે. આ ટૂલ્સ બેઝ એડિટરમાં બનાવવામાં આવ્યા ન હતા. ઉદાહરણ તરીકે, ઘણા વિકાસકર્તાઓ તેમના કોડને તે કેવી રીતે કાર્ય કરે છે તે સમજાવવા દસ્તાવેજ કરે છે. દસ્તાવેજોમાં લખાણની ભૂલો શોધવામાં મદદ કરવા માટે તેઓ જોડણી તપાસ એક્સ્ટેંશન ઇન્સ્ટોલ કરી શકે છે. મોટાભાગના એક્સ્ટેંશન ચોક્કસ સંપાદકની અંદર ઉપયોગ માટે બનાવાયેલ છે, અને મોટાભાગના સંપાદકો ઉપલબ્ધ એક્સ્ટેંશન શોધવાની રીત સાથે આવે છે.
- *કસ્ટમાઇઝેશન* વિકાસકર્તાઓને તેમની જરૂરિયાતોને અનુરૂપ અનન્ય વિકાસ વાતાવરણ બનાવવા માટે સક્ષમ બનાવે છે. મોટાભાગના સંપાદકો અત્યંત વૈવિધ્યપૂર્ણ છે અને વિકાસકર્તાઓને કસ્ટમ એક્સ્ટેન્શન્સ બનાવવાની પણ મંજૂરી આપી શકે છે.
#### લોકપ્રિય સંપાદકો અને વેબ ડેવલપમેન્ટ એક્સ્ટેન્શન્સ
- [વિઝ્યુઅલ સ્ટુડિયો કોડ](https://code.visualstudio.com/)
- [કોડ જોડણી તપાસનાર](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)
- [લાઇવ શેર](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack)
- [સુંદર - કોડ ફોર્મેટર](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
- [એટમ](https://atom.io/)
- [જોડણી-તપાસ](https://atom.io/packages/spell-check)
- [ટેલિટાઇપ](https://atom.io/packages/teletype)
- [atom-beautify](https://atom.io/packages/atom-beautify)
### દસ્તાવેજીકરણ
જ્યારે ડેવલપર કંઈક નવું શીખવા માંગે છે, ત્યારે તેનો ઉપયોગ કેવી રીતે કરવો તે શીખવા માટે તેઓ મોટાભાગે દસ્તાવેજીકરણ તરફ વળશે. ટૂલ્સ અને ભાષાઓનો યોગ્ય રીતે ઉપયોગ કેવી રીતે કરવો અને તે કેવી રીતે કાર્ય કરે છે તેનું ઊંડું જ્ઞાન મેળવવા માટે વિકાસકર્તાઓ ઘણીવાર દસ્તાવેજીકરણ પર આધાર રાખે છે.
#### વેબ ડેવલપમેન્ટ પર લોકપ્રિય દસ્તાવેજીકરણ
- [Mozilla Developer Network (MDN)](https://developer.mozilla.org/docs/Web), Mozilla તરફથી, [Firefox](https://www.mozilla.org/firefox/) બ્રાઉઝરના પ્રકાશકો
- [ફ્રન્ટેન્ડ માસ્ટર્સ](https://frontendmasters.com/learn/)
- [Web.dev](https://web.dev), Google તરફથી, [Chrome](https://www.google.com/chrome/) ના પ્રકાશકો
- [Microsoft ના પોતાના વિકાસકર્તા દસ્તાવેજ](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers), [Microsoft Edge](https://www.microsoft.com/edge) માટે
✅ થોડું સંશોધન કરો: હવે જ્યારે તમે વેબ ડેવલપરના પર્યાવરણની મૂળભૂત બાબતો જાણો છો, તો વેબ ડિઝાઇનરના વાતાવરણ સાથે તેની તુલના કરો અને વિરોધાભાસ કરો.
---
## 🚀 ચેલેન્જ
કેટલીક પ્રોગ્રામિંગ ભાષાઓની તુલના કરો. JavaScript વિ. Java ના કેટલાક વિશિષ્ટ લક્ષણો શું છે? COBOL વિરુદ્ધ ગો વિશે શું?
## પોસ્ટ-લેક્ચર ક્વિઝ
[લેક્ચર પછીની ક્વિઝ](https://ashy-river-0debb7803.1.azurestaticapps.net/quiz/2)
## સમીક્ષા અને સ્વ અભ્યાસ
પ્રોગ્રામરને ઉપલબ્ધ વિવિધ ભાષાઓ પર થોડો અભ્યાસ કરો. એક ભાષામાં એક લીટી લખવાનો પ્રયાસ કરો, અને પછી તેને બીજી બે ભાષામાં ફરીથી લખો. તમે શું શીખ્યા?
## સોંપણી
[દસ્તાવેજ વાંચવું](assignment.md)

@ -0,0 +1,11 @@
# ડૉક્સ વાંચવું
## સૂચનાઓ
એવા ઘણા સાધનો છે જેની વેબ ડેવલપરને જરૂર પડી શકે છે જે [ક્લાયન્ટ-સાઇડ ટૂલિંગ માટે MDN દસ્તાવેજીકરણ] (https://developer.mozilla.org/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Overview) પર છે. પાઠમાં આવરી લેવામાં આવેલ નથી તેવા 3 ટૂલ્સ પસંદ કરો, વેબ ડેવલપર શા માટે તેનો ઉપયોગ કરશે તે સમજાવો અને આ કેટેગરીમાં આવતા ટૂલની શોધ કરો અને તેના દસ્તાવેજો શેર કરો. MDN ડૉક્સ પર સમાન સાધન ઉદાહરણનો ઉપયોગ કરશો નહીં.
## રૂબ્રિક
અનુકરણીય | પર્યાપ્ત | સુધારા ની જરૂર છે
--- | --- | -- |
|વેબ ડેવલપર શા માટે સાધનનો ઉપયોગ કરશે તે સમજાવ્યું| કેવી રીતે, પરંતુ વિકાસકર્તા સાધનનો ઉપયોગ કેમ કરશે તે સમજાવ્યું નથી| વિકાસકર્તા સાધનનો ઉપયોગ કેવી રીતે અને શા માટે કરશે તેનો ઉલ્લેખ કર્યો નથી |
Loading…
Cancel
Save