Raphaëlle O'Neil is a climate engineering awareness activist & educator, and author of the children's chemtrail book "Funny Clouds: A Chemtrail Tale", illustrated by Sean Gautreaux. She is a mom, a massage therapist, and an actress, and long time overall freedom fighter going back her whole life, but after surviving recent assaults on the environment after Katrina and the BP oil spill, and discovering chemtrails, she has dedicated the past 8 years of her life to uncovering the truth about climate engineering and other government coverups- extending to issues of food, air, water and health, and the preservation of free speech and our human rights. Through her podcast Beyond the Veil, Raphaelle also explores,the issues of mind control and Luciferianism, having dated a survivor of Satanism (whose mom worked at Bohemian grove) while she was "awakening", years ago and ties it all together around the globalist agenda we see unfolding today. She has recently become a contributing climate engineering writer for The Liberty Beacon Project, where she along with others are trying to correct the very gate kept narrative of the chemtrail community. She recently helped expose the work of WeatherWar101 who shows another source of anthropogenic (man made) clouds- POWER PLANTS guided by NexRad, and most importantly recently discovered a secret about the hurricanes she says are 100% man made- that their eye is guided and goes RIGHT for the NexRad stations one after the other and have since before Katrina. She and her awesome team of regular concerned citizens are in the middle of researching just how many Hurricanes follow those strange odds and are currently working with others to change the chemtrail narrative into one that holds anthropological cloud makers responsible for the effects of their creations… regardless of the intent… in hopes of forcing greater scrutiny, integrity & accountability on the part of the public at large. She can be found on YouTube and now Bitchute as NOLAbutterfly. An educational children's book entitled Funny Clouds: A Chemtrail Tale written by environmental activists and mom Raphaelle O'Neil was released on March 3, 2016 and was immediately debunked in the Amazon book review comment section. This is no surprise, as the book exposes environmental toxicities that are being emitted from airplanes in our global skies. 'Funny Clouds' and its illustrations by Sean Gautreaux portray an accurate depiction of an ongoing geoengineering program that has evolved since the 1990's. In general, even though geoengineers such as David Keith have publicly admitted the existence and deployment of the weather modification programs, one being SRM (Solar Radiation Management), the clandestine projects are still not recognized by government officials and major news outlets. If the chemtrails are discussed on mainstream news, it is not to educate the viewers, and only serves to debunk the programs.


X-Plane 11 HD Mesh Scenery V4 Tile -30-160 (Oceania). The X-Plane HD scenery is an improved version of the base scenery. It consists of a more detailed ground triangle mesh and more accurate landclass data representation.
The archive XP11_HD_Mesh_V4_-30-160-Oceania.zip has 9 files and directories contained within it.


1. The M.Res. Degree shall be awarded for training in research. A subject of such study, together with the programme aims, learning outcomes, and syllabus for the course, and the special regulations for the examination and any subsequent amendments thereof, shall be approved by the General Board on the recommendation of the Faculty Board or other body concerned, after consultation with the appropriate Degree Committee.
2. The scheme of examination for the M.Res. Degree shall consist of written work or other exercises and the submission of a thesis (which terms shall include one or more equivalent pieces of extended research work such as an appraisal or a report), as prescribed in the appropriate special regulations for the subject as appended to these regulations. Any such prescribed scheme may require candidates also to take written papers in accordance with arrangements made by the Board of Graduate Studies on the recommendation of the appropriate Degree Committee. The examination for the Degree shall be held before the end of the course, except as provided under Regulation 7, and at such time or times as may be determined by the Degree Committee concerned, subject in the case of written papers to the approval of the Board of Examinations. Each written paper shall be of three hours' duration unless prescribed otherwise in the regulations that apply to the examination concerned.
3. No student shall be a candidate for the M.Res. Degree on more than one occasion or for the M.Res. Degree and for another University examination in the same term.
4. A candidate for the M.Res. Degree shall be a registered Graduate Student who, subject to the provisions of Regulation 5, shall pursue a course of training in research under the direction of a Supervisor appointed by the Degree Committee concerned and shall comply with any special conditions that the Degree Committee or the Board may lay down in a particular case. The course shall extend over one academical year. Students are required to attend in all three terms of the year, beginning from the date announced by the Degree Committee for the start of lectures, classes, or other formal instruction.
(b)may allow a candidate for the M.Res. Degree on account of illness or other sufficient cause to intermit his or her course of study for one or more terms, which terms shall not count for any purpose of these regulations except as provided in Regulation 7 of the general regulations for admission as a Graduate Student.
Every application for dispensation under sub-paragraphs (a)–(b) shall be made to the Secretary of the Board of Graduate Studies and shall be accompanied by an opinion from the applicant's Supervisor.
7. Each candidate shall submit two copies of the thesis in accordance with detailed arrangements approved by the Board, so as to arrive by a date which shall be determined by the Degree Committee, and which shall not be later than the last day of August in the academical year of the course, provided that a candidate may be permitted to submit her or his thesis at such later date as may be determined by the Degree Committee. In special circumstances the Degree Committee may allow a candidate to submit only one copy of the thesis. The Examiners and the Degree Committee may take into consideration any work published by the candidate which is submitted with the thesis.
8. In submitting a thesis a candidate shall state, generally in a preface and specifically in notes or in a bibliography, the sources from which information has been derived, the extent to which use has been made of the work of others, and the portions of the thesis which are claimed as original. A thesis shall not be accepted if it is substantially the same as one that the candidate has submitted, or is concurrently submitting, for any other degree, diploma, or similar qualification at any university or similar institution, but a thesis which the candidate has submitted or is concurrently submitting for some other purpose may be accepted. In submitting a thesis the candidate shall declare for what purpose, if any, other than for the M.Res. Degree, the whole or part of it has already been or is concurrently being submitted. The thesis, apart from quotations, shall be written in English.
10. The Degree Committee concerned shall appoint such number of Examiners and Assessors as they shall deem sufficient to conduct the examination for the M.Res. Degree and to report on the performance of a candidate. The Examiners and Assessors shall undertake such duties as the Degree Committee may decide.
(a) The Degree Committee shall appoint an External Examiner and a Senior Examiner; not later than the end of the Michaelmas Term the Secretary of the Degree Committee shall communicate to the Secretary of the Board of Graduate Studies the name of these Examiners and the names of the other Examiners and Assessors.
(b) Each candidate's thesis shall be referred to two Examiners each of whom shall make an independent report thereon. The special regulations for the examination may provide for an oral examination on the thesis and, if so specified, on the other parts of the examination. When the oral examination relates to the thesis both Examiners of the thesis shall be among the Examiners present at the oral examination. The Degree Committee in exceptional circumstances may permit the Examiners to conduct the oral examination by video-conference or other remote means. The Examiners participating in the oral examination shall sign a joint certificate of the result, including any marks assigned thereto, of that examination. If the Examiners do not agree in their recommendation, or if for any other reason the Degree Committee need a further opinion or opinions on the merit of the thesis submitted, the Degree Committee may appoint additional Examiners, provided that not more than one additional Examiner may be appointed without the leave of the Board of Graduate Studies. Each additional Examiner so appointed shall make an independent report on the thesis to the Degree Committee.
11. If the Degree Committee at a meeting held to consider the reports of the Examiners, approve the candidate's marks in the written papers or other exercises, the thesis submitted, and her or his performance in the oral examination (where held) as of the requisite standard for the M.Res. Degree and are of the opinion that the degree should be conferred, the Degree Committee shall communicate their resolution to the candidate and to the Secretary of the Board of Graduate Studies who shall publish a notice of the candidate's approval for the award of the degree of Master of Research. Distinctive marks may be attached to the names of those candidates who in the opinion of the Examiners deserve special credit.
12. If the Degree Committee, after consideration of a candidate's marks and the reports of the Examiners in the prescribed examination, are of the opinion that the candidate's work is not of the requisite standard for the degree, the Degree Committee shall communicate their resolution to the candidate and to the Secretary of the Board of Graduate Studies. After such a resolution has been made the student concerned shall not be eligible to take the examination for the degree again.
14. A Graduate Student whose course of study for the M.Res. Degree has included any term needed for the B.A. Degree and who elects to proceed to the B.A. Degree shall not be entitled to proceed to the M.Res. Degree.
The scheme of examination for the one-year course of study in Biological Science for the degree of Master of Research shall consist of a portfolio of research reports, of not more than 20,000 words in total, exclusive of tables, footnotes, bibliography, and appendices, on a theme and of a form approved and published annually in the Easter Term before the commencement of the course by the Degree Committee for the Faculty of Biology. The Degree Committee shall, at the same time, specify any other exercises which form part of the examination for candidates in particular subjects. The examination shall include an oral examination on the work submitted by the candidate and on the general field of knowledge within which such work falls. The portfolio shall provide evidence to satisfy the Examiners that a candidate can design and carry out an original investigation, assess and interpret the results obtained, and place the work in the wider perspective of the subject.
(c)a thesis, of no more than 12,000 words in length, including diagrams and footnotes, but excluding bibliography and appendices, on a subject approved by the Degree Committee; its assessment shall include an oral presentation of the project work on which the thesis is based.
2. The Degree Committee shall have the power to give notice of additional modules not later than the end of the Michaelmas Term of the academical year of the examination.
3. The examination may include, at the discretion of the Examiners, an oral examination on the reports and on the general field of knowledge within which they fall, and on the other work submitted by the candidate under Regulation 1.
(d)a thesis, of no more than 12,000 words in length, including diagrams and footnotes, but excluding bibliography and appendices, on a subject approved by the Degree Committee; its assessment shall include an oral presentation of the project work on which the thesis is based.
2. Students who have taken papers from Part IIb of the Engineering Tripos prior to starting the course may, with the permission of the Degree Committee, substitute one elective module under Regulation 1(a) above for a technical report on an extension of one of those papers.
3. The Degree Committee shall have the power to give notice of additional modules not later than the end of the Michaelmas Term of the academical year of the examination.
4. The examination may include, at the discretion of the Examiners, an oral examination on the reports and on the general field of knowledge within which they fall, and on the other work submitted by the candidate under Regulation 1.
(c)two reports, each of not more than 8,000 words in length, including diagrams and footnotes, but excluding bibliography and appendices, on projects approved by the Degree Committee.
2. The Degree Committee shall have the power to give notice of additional modules not later than the end of the Michaelmas Term of the academical year of the examination.
(b)two reports, each of not more than 10,000 words in length, including diagrams and footnotes, but excluding bibliography and appendices, on projects approved by the Degree Committee; the assessment of the first report shall include an oral presentation of the project work on which the report is based.
2. In publishing the list of modules and additional modules the Degree Committee shall announce the form of examination for each module, which shall be either a written paper, or one or more pieces of course-work or other exercises, or a combination of these, and shall specify the duration of any written paper and the limit to be placed on the length of any piece of course-work or other exercise. The Degree Committee shall have the power to give notice of additional optional modules not later than the end of the Michaelmas Term of the academical year of the examination.
2. In publishing the list of modules the Degree Committee shall announce the form of examination for each module, which shall be either a written paper, or one or more essays or other exercises, or a combination of these, and shall specify the duration of any written paper and the limit to be placed on the length of any essay or other exercise.
3. The examination may include, at the discretion of the Examiners, an oral examination on the thesis and on the general field of knowledge within which it falls, and on other work submitted by the candidate under Regulation 1.
The scheme of examination for the one-year course of study in Medical Science for the degree of Master of Research shall consist of a portfolio of research reports, of not more than 20,000 words in total, exclusive of tables, footnotes, bibliography, and appendices, on a theme and of a form approved and published annually in the Easter Term before the commencement of the course by the Degree Committee for the Faculties of Clinical Medicine and Veterinary Medicine. The examination shall include an oral examination on the work submitted by the candidate and on the general field of knowledge within which such work falls. The portfolio shall provide evidence to satisfy the Examiners that a candidate can design and carry out an original investigation, assess and interpret the results obtained, and place the work in the wider perspective of the subject.
1. The scheme of examination for the one-year course of study for the Degree of Master of Research in Physical Sciences shall consist of a portfolio of research reports of not more than 20,000 words in total, exclusive of tables, footnotes, bibliography, and appendices, on a theme approved by the Degree Committee for the Faculty concerned and specified in the schedule to these regulations.
2. The Degree Committee shall publish before the end of the Easter Term before the commencement of the course requirements for the form of the portfolio of research reports, and any other exercises which shall form part of the examination for candidates in the theme concerned. The Degree Committee may publish amendments to these requirements not later than the first day of the Michaelmas Term.
3. The examination shall include an oral examination on the work submitted by the candidate and on the general field of knowledge within which such work falls.
4. The portfolio shall provide evidence to satisfy the Examiners that a candidate can design and carry out an original investigation, assess and interpret the results obtained, and place the work in the wider perspective of the subject.
(b)two reports, each of not more than 7,000 words in length, including diagrams and footnotes but excluding bibliography and appendices, on projects approved by the Degree Committee.
(c)a thesis of not more than 15,000 words in length, including footnotes, but excluding tables, appendices, and bibliography, on a subject approved by the Degree Committee.
(c)two reports, each of not more than 10,000 words in length, including diagrams and footnotes, but excluding bibliography and appendices, on projects approved by the Degree Committee. The assessment of the first report shall include an oral presentation of the project work on which the report is based; the assessment of the second report shall include an oral examination.
2. In publishing the list of modules the Degree Committee shall announce the form of examination for each module, which shall be either a written paper, or one or more pieces of course-work or other exercises, or a combination of these, and shall specify the duration of any written paper and the limit to be placed on the length of any piece of course-work or other exercise. The Degree Committee shall have the power to give notice of additional modules not later than the end of the Michaelmas Term of the academical year of the examination.


text:
Top 10 Female Sex Toys
Sex Toys Reviews
Relationship & Dating Advice
Masturbation Techniques
Nancy's Expert Tips
Home » Sex Toys Reviews » Extase Elegance Is A Finely Tuned Machine
Extase Elegance Is A Finely Tuned Machine
The people from Extase contacted me to do a review of one of their new sex toys for women, and I gladly agreed. It looked like nothing out of the ordinary, but I decided to give it a try. Its nothing super exciting, but the controls were placed conveniently and it operated very quietly.
The elegance is completely unique in the way it's designed; if you want to compare it to other traditional vibrators such as rabbit vibrators. Besides being made from silicone, it's rechargeable which means no more worrying about running out of our power because I forgot to replace the batteries. I was really happy about this feature; it's really convenient, because now I can just plug the vibrator in during the day and it's ready for play time when I come home horny after work.
I'm really liked the fact that this vibrator has different speeds as well as different ways to experience the vibration; you can make the vibrations increase gradually, use a pulsating level, or even the switch back and forth between these levels to achieve as many orgasms as you want. Again, nothing so so different from other vibrators. A nice touch is that the vibrations run through the entire length of the vibrator so you get maximum pleasure from using it.
Although this model is shaped like a traditional vibrator, I'm happy that it's far from traditional in the amount of pleasure it provides with a combination of features and these pleasures will go on for a long time because of the high quality silicone material that it's made from. This vibrator felt absolutely wonderful inside of my body and was extremely easy to operate. Plus, it comes with its own travel bag so that I can take it with me discreetly.
With Remote Vibrators You Are at the Mercy of a Dial
The rabbit vibrator, why it is so important to adult toys
Why women love a rabbit vibe so much?
Feel The Intensity of The Autoblow 2 Adult Sex Toys
Masturbation with a Partner
The Best Vibrator, how to find it and what to look for
What Bullet Vibrator Reviews Show
About Masturbation
Nancy's Expert Tips
High Roller Waterproof Vibrator
Lucid Heart Glass Dildo
Crystal High Intensity Bullet Vibrator
G-spot Gel
[ Privacy Policy ] [ Contact Us ]

redpajama_set_name: RedPajamaCommonCrawl


You must have heard about the Government Flying Service (GFS). The picture you have in mind may be a helicopter saving hikers from dangerous cliff. You may be interested to know, however, that there is a team of fixed wing aircraft pilots in the GFS, who not only carry out rescue operations but also conduct investigation flights for the Hong Kong Observatory (HKO).
During last August & September and February to April this year, the GFS pilots flew at scheduled times in a twin-engined Jetstream J-41 fixed wing aircraft around Lantau Island to collect wind and temperature data for the HKO. With these data, we can better understand terrain-induced windshear around the airport.
I had the chance of talking to one of the GFS fixed wing pilots, Captain Kit Kwan. In deep blue uniform, Captain Kwan impressed me as sturdily built and full of confidence.
"What is the most difficult part of the flight?" I asked curiously.
"In one of the routes, we have to fly low, at 1000 feet, around Lantau. That we have to pay special attention. Other than this, there is no great difficulty." Captain Kwan continued to explain in earnest.
Fig.1 Captain Kit Kwan and the writer in front of the twin-engined Jetstream J41 fixed wing aircraft.
"Unless we have emergency operation, we would adhere to the scheduled investigation flights. Of course we have to check the weather. We cannot fly if the visibility is too low. Every trip takes about one hour and forty-five minutes. The co-pilot/crewman takes readings of wind direction and speed during the flight. If the aircraft encounters windshear or turbulence, that would be recorded as well. After the plane lands, it takes only about 10 minutes to download temperature data from the Flight Deck Recorder (FDR or Black Box)."
"Can I take a look at the Black Box ?" I definitely wanted to take a look at the FDR.
Captain Kwan replied with a smile, "The Black Box of our fixed wing is orange in colour, not black. It s located in the rear part of the aircraft."
I watched the GFS engineers open up the rear part of the aircraft and download data from the Black Box using a laptop PC. Another set of valuable weather data ready for our use!
Fig.2 A GFS engineer opens up the rear part of the fixed wing and downloads data from the "Black Box"(inset shown by arrow) inside.
Temperatures not only tell us how warm or cool the weather is. Their changes with height tell us much about the stability of the atmosphere. For instance, cool air under a layer of warm air tends to stay underneath the warm air, resulting in a stable condition called an inversion . This favours the appearance of fog, mist or haze, causing reduced visibility. On the other hand, warm air beneath a layer of cool air tends to rise, resulting in an unstable or convective situation sometimes causing showers and thunderstorms.
Twice a day, the Observatory releases a balloon carrying a radiosonde to measure temperatures aloft, up to ten kilometres or above.
With advances in remote sensing technology, the Observatory is now capable of measuring the temperatures in the lowest 1 km continuously. This is achieved by means of a radio acoustic sounding system (RASS), installed at Sha Lo Wan in February 2001. It works on the principle that the speed of sound changes with temperature, i.e. sound travels faster in warm air than in cold air. The RASS emits sound waves into the air and determines the temperature by tracking the propagation of these waves using radio. It finds applications in the forecasting of low visibility and in windshear alerting.
and receives radio waves. The four cylindrical loudspeakers surrounding it emit sound waves into the atmosphere.
to around 4000 m in haze. The temperature inversion dissipated by the evening (6:12 p.m.) following periods of sunshine during the day.
With increasing environmental awareness, more and more organisations are implementing green measures. The Observatory' s Airport Meteorological Office (AMO) is no exception.
In the past, weather information collected by AMO from all over the world was routinely printed, manually sorted and delivered to the forecaster. Thousands of messages were handled this way, day in and day out. Not only time and manpower consuming, this also wasted a lot of paper.
To improve the situation, the Observatory has developed an in-house' Weather Information Display System'. It collects all the relevant data and transmits them via computer network to a server for sorting and processing. The data are then displayed in web-page format to the forecaster through HKO' s intranet.
Since the system went into operation in May last year, demand for computer printouts has greatly decreased, resulting in reduction of over 80 percent of paper use. Apart from environmental conservation, we have also enhanced efficiency.
Fig.5 Weather information is now fully online at AMO.
The Observatory added another wind-powered generator at Yi Tung Shan, Lantau, in February 2001, making a total of four for its network of automatic weather stations.
Fig.6 The automatic weather station at Yi Tung Shan is now powered by both wind and solar energy.
The Observatory has a maintenance team at the Chek Lap Kok airport. There are two artisans in the team and Mr Ip King Hung is one of them. He has been working in the Observatory for more than 5 years. In this interview, Mr Ip tells us about his work at the airport.
Q: Mr Ip, could you please describe your work at the airport?
A: My work includes maintenance and assistance in the repair of meteorological equipment such as cleaning the runway visual range transmissometers regularly and maintaining the Stevenson screens in a number of automatic weather stations (AWSs) in and around the airport. I also design and make some accessories for the equipment.
Q: It seems to me that you often have to work outdoors.
A: I work outdoors half the time. Sometimes I have to make long and arduous journeys to those remotely located AWSs for emergency repair.
Q: You mentioned that one of your duties is to clean the visual range transmissometers regularly. Could you tell us more about it?
A: A transmissometer is a piece of highly sophisticated optical equipment for measuring the visual range. Its accuracy depends on the cleanliness of the lens, the same way as a pair of soiled glasses will blur one s vision. Therefore, cleaning must be done on time regardless of the weather conditions. The task can be quite demanding as the transmissometers are located very close to the runways, which could be quite scorching due to hot weather and aircraft exhausts. Despite all these, because of the importance of accurate data to aviation safety, it is worth the effort.
Q: Among the accessories designed and made by you, is there anything you find especially contented?
A: Early last year the Observatory started installing wind-powered generators at remote AWSs. I designed a 6-metre high mast for the generator. Although the mast is an assembly of parts, it can withstand winds of considerable strength and can be readily shipped by a helicopter. It carries a stand designed in such a manner that the mast can easily be lowered or erected to facilitate maintenance. The idea came from my years of work.
Q: During your years of service at the Chek Lap Kok airport, is there anything memorable?
A: I remember that back in 1996 when I installed equipment on the runway, the surrounding area was like a desert. However, two years after the opening of the airport, we have lush greenery everywhere in this world-class airport. This change is quite striking.
A: During holidays, I like to go hiking with my friends and colleagues. This is a good way for exercise and relaxation.
Fig.7 Mr. Ip King Hung cleaning a transmissometer along a runway.
Fig.8 Mr. Ip King Hung and his colleague testing a mast for wind-powered generator.
Fig.9 Cumulonimbus clouds producing heavy showers on the right (direction of Macau), contrasting the relatively bright sky on the left (Tai O). Visibility dropped below 1000 metres under heavy showers. The weather was associated with the passage of an active cold front. (Photo taken in the afternoon of 25 March 2001).
Fig. 10 Radar image at 5:30 p.m., 9 April 2001, severe thunderstorms over Hong Kong. Hail stones as large as 2.5 cm were observed in Tsimshatsui, Kowloon.
Fig. 11 A vertical cross section along point A and point B revealing signatures of hailstorm.
The Hong Kong International Airport (HKIA), which is located at Chek Lap Kok (CLK) to the north of Lantau Island, is surrounded by hills. When the airflow is disrupted by the nearby hills, terrain-induced windshear may occur at times around the airport. Under the influence of strong/gale force winds of Typhoon York when it buffeted Hong Kong in 1999, various types of terrain-induced windshear with different magnitudes appeared in the vicinity of CLK. Since nearly all the flights were cancelled due to inclement weather at that time, no windshear reports were available from pilots. However, the impact of windshear on the airport had been nicely picked up by the Terminal Doppler Weather Radar (TDWR).
During the night of 15 September 1999, Typhoon York was centred to the southeast of Hong Kong. Northerly winds prevailed locally. Due to the blockage of the Castle Peak to the north of HKIA, the northerly winds went around Castle Peak and backed slightly to northwest in the downstream region (Fig.12). Castle Peak is located quite a distance from CLK. Since the affected airflow was confined to the waters downstream of Castle Peak, only marginally reaching the approach and departure areas of the north runway, it is believed that the disrupted airflow might have only minimal effect on arriving and departing aircraft.
Fig.12 TDWR low-level radial winds observed at 11:20 p.m. 15 September 1999.
As York moved to the south of Lantau Island around noon of 16 September, winds veered to slightly north of east at the HKIA. With the absence of high mountains to the east of CLK, both wind speed and direction as depicted by the radar were comparatively uniform. It is considered that terrain-induced windshear did not occur over the approach and departure corridors.
York swept across the southwestern part of Lantau Island in the afternoon and winds over the HKIA turned southeasterly. At this time, the radar detected some small disturbances downstream of Lantau. These disturbances are believed to be generated as a result of deflection of the airflow by the ridges of Lantau Island, bringing about significant windshear as they moved towards the approach and departure corridors. With the turning of winds at HKIA to southerly, the signature of windshear over the airport became more prominent. Radar radial winds in Fig.13 show that behind the valleys of Lantau Island, several streaks of high-speed airflow were generated over the approach and departure areas. An aircraft flying across this region would have experienced severe windshear reaching 22 m/s, or about 43 kts loss or gain in headwind.
From the above case we can see that when a tropical cyclone affects the HKIA, depending on the wind direction various types of terrain-induced windshear with different magnitudes may result. The study indicates that there is a higher chance for windshear to occur when the background winds come from southeast through southwest, potentially affecting arriving and departing flights.
Fig.13 Low-level radial winds observed by the TDWR at 03:59 p.m. 16 September 1999.
With not many weather observations over the South China Sea, aircraft weather reports are an important source of information for the Observatory s weather forecasting. Hitherto, aircraft provide such reports to control tower manually over voice radio. The Observatory receives only about 30 such reports each day.
Now with the emergence of improved air-ground data communication technologies such as Aircraft Communication Addressing and Reporting System (ACARS), Automatic Dependent Surveillance (ADS) and Secondary Surveillance Radar (SSR) Mode S, the opportunity is there for aircraft reporting by fully automatic means. On-board computers can be programmed to prepare and transmit weather reports at regular intervals over digital data channels without the need for pilot intervention nor manual ground handling. The increased volume of aircraft reports is expected to translate into better weather forecasts.
The Hong Kong Observatory is now seeking to use these emerging technologies for the benefit of the aviation community.
The Observatory s long association with aviation began in 1920 when proposal for aviation weather service was first discussed.
Aviation forecasting service began in 1937 when a forecaster was stationed at Kai Tak on a part-time basis. The Airport Meteorological Office (AMO) at the Kai Tak Terminal Building came into operation in 1939. Aviation weather service was once suspended during the Second World War and resumed in August 1947. In response to the rapid growth in civil aviation in post-war years, a team of forecasters manned the AMO full-time starting from 1957 to meet the demand of professional weather services for aviation.
A set of three transmissometers was installed in 1974 along the runway at Kai Tak to measure runway visual range. In 1979, an in-house developed Low-Level Wind Shear Detection System was commissioned aiding the detection of low-level windshear along the precarious flight path over Kowloon City.
With the opening of the new Hong Kong International Airport at Chek Lap Kok in July 1998, new meteorological observation systems were implemented and a new mode of service was introduced to enable the AMO to cope with the ever-increasing demand for aviation weather services. Manual preparation of flight meteorological information documents in the early days had given way to automatic compilation and dissemination by means of web-based technology.
Fig.14 Airport Meteorological Office at Kai Tak.
part of the Low-level Wind Shear Detection System for the old Kai Tak Airport.
Fig.16 A transmissometer alongside the runway at Kai Tak.
The Hong Kong Observatory receives a Certificate of Appreciation for its web-based Aviation Meteorological Information Dissemination System in serving the aviation community.
Fig.17 Ms Katy Lam of KCRC, member of the judge panel, presenting a Certificate of Appreciation to Mr H.G. Wai on 11 January 2001.
By completing more than 5 self-learning packages last year, Mr. David Tse, Chief Experimental Officer and aviation forecaster, received an award under the Learning Recognition Scheme of the Civil Service Training and Development Institute. Our congratulations to David!
Fig.18 Mr. David Tse (3rd from right, middle row) at the award presentation ceremony on 2 April 2001.
The 15th Meeting of the Liaison Group on Aviation Meteorological Services was held at the Observatory on 28 December 2000. Topics discussed included the Intensive Windshear and Turbulence Reporting Exercises in 2000, experts' review of windshear and turbulence warning service, delivery of meteorological information on broadband circuits, weather services under the Communication Navigation Surveillance / Air Traffic Management (CNS/ATM) Systems and Automated Meteorological Data Relay (AMDAR) observation programme, sea breeze induced windshear and World Area Forecast System (WAFS) transition matters.
As part of regular technical exchanges, a delegation from Air Traffic Management Bureau, Civil Aviation Administration of China (CAAC/ATMB) visited the Hong Kong Observatory and participated in a seminar on aviation meteorological services and information exchange during 9-13 January 2001. The delegation included representatives from Qingdao, Chengdu, Xi an, Shenyang and Urumqi. They visited the Airport Meteorological Office and the Terminal Doppler Weather Radar Station. The future development of automatic downlink of aircraft weather report was discussed. There was also exchange of ideas on provision of weather data to airlines for flight planning.
Fig.19 Representatives of CAAC/ATMB and HKO exchanging ideas on aviation weather services in the seminar.
The Digital Automatic Terminal Information System (D-ATIS) and Digital VOLMET (D-VOLMET) broadcast services officially commenced on 19 April 2001. With appropriate setup on board aircraft, pilots can now get the latest weather information at their fingertips.
Fig.20 Director-General of Civil Aviation Department, Mr A.K.Y. Lam (left) and Acting Director of the HKO, Mr C.Y. Lam (right) introduce a print-out of air traffic and weather information.
The annual survey on aviation weather services conducted in March 2001 gives a satisfactory rating of 98%. We take this opportunity to thank for their returns. They also pointed us to areas requiring further improvement. We shall continue to strive for a better service.
Technical duties aside, station managers of the Observatory' s remote weather stations often face problems beyond their wildest dreams.
Earlier this year, when the Observatory was to install an acoustic sounding system at Sha Lo Wan, there had been concern that the sound beeps from the instrument might cause nuisance to villagers there. Our station mangers, Messrs C.K. Lee and W.M. Leung undertook to interview villagers and understand the situation. To their delight, the villagers hardly noticed any difference when the instrument was switched on. The villagers even thanked them for being so considerate.
Another incident involved a plan to erect fences around the remote weather station at Yi Tung Shan over Lantau, nearby a local resident s house. The resident expressed concern, as the fences might not look good aesthetically in the surrounding pristine area. Messrs. Lee and Leung listened and relayed the message back to the Observatory. The fences were subsequently put on hold. The resident was very pleased with the outcome and offered to look after conditions of our equipment there. To ensure adequate power generation, he even helps clean the solar panels from time to time.
Fig.21 Mr C.K. Lee (left) and Mr W.M. Leung (right) know very well success depends upon a good relationship with people.


Ever wanted to crush some of the world's most infamous celebrities?
Celebrity Crush allows you to chase your favourite characters across the screen and crush them with the tip of your fingers.
Complete achievements and unlock new celebrities as you progress.
Deploy massive bombs when things get out of hand!
Get social and share your high-scores on Facebook or Twitter.
Celebrity Crush is guaranteed to test your reaction speed and push you to the limit, while crushing some of the world's most popular celebrities.
✔ Easy, fun touch gestures to crush celebrities or deploy bombs.


MSME Udyog Aadhaar Registration is an initiative taken by Government to encourage for online filing of entrepreneurs Memorandum for Manufacturing enterprises as well as for Service enterprises by Micro and Small and Medium enterprises. For MSME Udyog Aadhaar registration government has categorized MSME sector into two kind, first is Manufacturing Enterprises and second is service enterprises. The Core benefits associated with acquiring Udyog Aadhaar number are Excise Exemption, Loan without collateral guarantee, low interest rate bank loan and other government benefits.


Bask in the natural light, revel in your view with our "in-line" design double brackets. Both blinds are operated separately so you have full control over their positioning.
Louvolite fabrics with Pollergen® always the first choice! Louvolite fabrics featuring the unique Pollergen® treatment can dramatically reduce the amount of active grass pollen entering a room.


Yeng Guiao's looming election defeat has motivated Rain or Shine players, vowing to go all out in winning the Oppo-PBA Commissioner's Cup championship for their fiery mentor.
Rain or Shine currently holds a huge 2-0 lead against Alaska in their best-of-7 championship series.
The Elasto Painters will be gunning for a commanding 3-0 bubble on Wednesday night.
Rain or Shine resident gunner Jeff Chan believes a league championship will bring a big smile on the face of the 57-year-old Guiao, whom he credits for installing a system that has made the Elasto Painters a legitimate title contender the last 3 seasons.
"I think it (Guiao's loss) would be good for the team because he can concentrate na sa Finals, but also, yung system kasi sa team, siya ang nag-install nun kaya even kapag wala siya, nai-implement na ng coaching staff yun," Chan told FOX Sports on Tuesday.
The left-handed Chan said they sure missed the presence of Guiao in practice over the final 2 weeks of the campaign period.
The fiery Rain or Shine mentor in fact, failed to coach the team in Game 2 of the team's semifinal tussle against San Miguel Beer.
But Chan said Guiao, no matter how busy he was in his campaign sortie in Pampanga where he was seeking re-election as congressman, still called them one by one to remind them what they needed to do in the series.
Guiao's commitment to the team is what fires up the Rain or Shine players as they close in for just the franchise's 2nd league title.
"Gusto na namin makuha yung championship. Ayaw na namin palagpasin ito saka ayaw din naman naming ma-double bukol si coach Yeng," he said.
Veteran guard Chris Tiu on the other hand, noted how focused Guiao was on Tuesday as they map out their game plan for Wednesday.
"He didn't talk about elections with us, it was just business as usual," Tiu said.
"We did our viewing session and prepares for Game 3. He was focused and sharp as usual," he added.
The 30-year-old Tiu is convinced that Guiao gave his best in his bid for a re-election.


The George Washington University (GW) School of Medicine and Health Sciences (SMHS), Office of International Medicine Programs (IMP), will offer the opportunity for talented 3rd and 4th year international students in medicine and health sciences to participate in a 5-week summer research and medical training program. Through this program, students will have access to medical and research enrichment opportunities with GW faculty members and gain exposure to the US medical education, research, and healthcare system. In addition, this program will provide students with workshops and activities that will enhance students' research skills and provide medical enrichment opportunities and professional development. This provides a unique stepping stone for students motivated to pursue graduate medical education and training in the United States.
Taking place this year from July 8 to August 9, 2019!


text:
#include <mbed.h>

#include "Configuration.h"

#ifdef __cplusplus
extern "C" {
#endif

#include "oneM2M.h"
#ifdef ONEM2M_V1_12
#include "oneM2M_V1_12.h"
#else
#include "oneM2M_V1.h"
#endif
#include "SKTtpDebug.h"

#ifdef __cplusplus
}
#endif

#ifdef ONEM2M_V1_12
#define TOPIC_SUBSCRIBE_REQ                 "/oneM2M/req/%s/%s" // FIXME
#define TOPIC_SUBSCRIBE_RES                 "/oneM2M/resp/%s/%s"
#define TOPIC_SUBSCRIBE_SIZE                2
//#define TOPIC_PUBLISH                       "/oneM2M/req/%s/%s"

#define TO_AE                               "%s/%s"
#define TO_CONTAINER                        "%s/%s/%s"
#else
#define TO_REMOTECSE                        "%s/remoteCSE-%s"
#define TO_NODE                             "%s/node-%s"
#define TO_CONTAINER                        "%s/remoteCSE-%s/container-%s"
#define TO_CONTENTINSTANCE                  "%s/remoteCSE-%s/container-%s/contentInstance-%s"
#define TO_AREANWKINFO                      "%s/node-%s/areaNwkInfo-%s"
#define TO_AE                               "%s/remoteCSE-%s/AE-%s"
#define TO_LOCATIONPOLICY                   "%s/locationPolicy-%s"
#define TO_MGMTCMD                          "%s/mgmtCmd-%s"
#define TO_MGMTCMDRESULT                    "%s/mgmtCmd-%s/execInstance-%s"

#define TOPIC_SUBSCRIBE_REQ                 "/oneM2M/req_msg/+/%s"
#define TOPIC_SUBSCRIBE_RES                 "/oneM2M/resp/%s/+"
#define TOPIC_SUBSCRIBE_SIZE                2
//#define TOPIC_PUBLISH                       "/oneM2M/req/%s/ThingPlug"

#define NAME_MGA                            "MQTT|%s"

#define UKEY								"(TBD.)"
#endif

enum VERIFICATION_STEP
{
    VERIFICATION_CSEBASE_RETRIEVE = 0,
	VERIFICATION_NODE_CREATE,
	VERIFICATION_REMOTECSE_CREATE,
	VERIFICATION_CONTAINER_CREATE,
	VERIFICATION_MGMTCMD_CREATE,
	VERIFICATION_CONTENTINSTANCE_CREATE,
	VERIFICATION_LOCATIONPOLICY_CREATE,
	VERIFICATION_AE_CREATE,
	VERIFICATION_AREANWKINFO_CREATE,

	VERIFICATION_AREANWKINFO_UPDATE = 9,
    VERIFICATION_AE_UPDATE,
	VERIFICATION_LOCATIONPOLICY_UPDATE,
	VERIFICATION_MGMTCMD_UPDATE,
	VERIFICATION_CONTAINER_UPDATE,
	VERIFICATION_REMOTECSE_UPDATE,
	VERIFICATION_NODE_UPDATE,

    VERIFICATION_AREANWKINFO_DELETE = 16,
    VERIFICATION_AE_DELETE,
    VERIFICATION_LOCATIONPOLICY_DELETE,
    VERIFICATION_CONTENTINSTANCE_DELETE,
    VERIFICATION_MGMTCMD_DELETE,
    VERIFICATION_CONTAINER_DELETE,
    VERIFICATION_REMOTECSE_DELETE,
    VERIFICATION_NODE_DELETE,

	VERIFICATION_ACCESSCONTROLPOLICY_CREATE,
	VERIFICATION_ACCESSCONTROLPOLICY_UPDATE,
	VERIFICATION_ACCESSCONTROLPOLICY_DELETE,

    VERIFICATION_END

};

#define ONEM2M_MEM_ALLOC(x, length, type)	x = (type*)calloc(length, sizeof(type));
#define ONEM2M_DEF_N_MEM_ALLOC(type, x)		type* x=NULL; ONEM2M_MEM_ALLOC(x, 1, type);
#define ONEM2M_MEM_FREE(x)					if(x!=NULL) { free(x); x=NULL; }

#define DEFAULT_BUF_SIZE					128

static enum VERIFICATION_STEP mStep = VERIFICATION_CSEBASE_RETRIEVE;

#ifdef ONEM2M_V1_12
static char mAEID[128] = "";
static char mNodeLink[23] = "";
#else
static char mDeviceKey[DEFAULT_BUF_SIZE];

static char mNodeLink[DEFAULT_BUF_SIZE];
static char mHostCSELink[DEFAULT_BUF_SIZE];
static char mRemoteCSEResourceName[DEFAULT_BUF_SIZE];
static char mContentInstanceResourceName[DEFAULT_BUF_SIZE];
static char mAEResourceName[DEFAULT_BUF_SIZE];
static char mLocationPolicyResourceName[DEFAULT_BUF_SIZE];
static char mMgmtCmdResourceName[DEFAULT_BUF_SIZE];
static char mAreaNwkInfoResourceName[DEFAULT_BUF_SIZE];
static char mContainerResourceName[DEFAULT_BUF_SIZE];
#endif
static char mClientID[24] = "";

/**
 * @brief do verification step
 */
void DoVerificationStep() {
	int resourceType;
	int operation;
	char to[DEFAULT_BUF_SIZE];
	char buffer[DEFAULT_BUF_SIZE];
	char* ri = ONEM2M_RI;
	char* fr = NULL;
	void* pc = NULL;

	switch(mStep) {
#ifdef ONEM2M_V1_12
	// RETRIEVE
	case VERIFICATION_CSEBASE_RETRIEVE:
		{
		resourceType = CSEBase;
		operation = RETRIEVE;
		fr = APP_AEID;
		memcpy(to, ONEM2M_TO, strlen(ONEM2M_TO));
		}
		break;
	// CREATE
	case VERIFICATION_NODE_CREATE:
		{
		resourceType = node;
		operation = CREATE;
		fr = APP_AEID;
		memcpy(to, ONEM2M_TO, strlen(ONEM2M_TO));
		oneM2M_v1_12_node* node = (oneM2M_v1_12_node *)calloc(sizeof(oneM2M_v1_12_node), 1);
		//memset(&node, 0, sizeof(node));
		node->rn = NAME_NODE;
		node->ni = "node_01";
		pc = (void *)node;
		}
		break;
	case VERIFICATION_REMOTECSE_CREATE:
		{
		resourceType = remoteCSE;
		operation = CREATE;
		fr = ""; // registered CSE-ID
		memcpy(to, ONEM2M_TO, strlen(ONEM2M_TO));
		oneM2M_v1_12_remoteCSE* remoteCSE = (oneM2M_v1_12_remoteCSE *)calloc(sizeof(oneM2M_v1_12_remoteCSE), 1);
		remoteCSE->rn = NAME_REMOTECSE;
		remoteCSE->cb = ONEM2M_CB;
		remoteCSE->cst = "2";
		remoteCSE->csi = "/"; // registered CSE-ID with slash
		remoteCSE->rr = "true";
		pc = (void *)remoteCSE;
		}
		break;
	case VERIFICATION_AE_CREATE:
		{
		resourceType = AE;
		operation = CREATE;
		fr = "S";
		memcpy(to, ONEM2M_TO, strlen(ONEM2M_TO));
		oneM2M_v1_12_AE* AE = (oneM2M_v1_12_AE *)calloc(sizeof(oneM2M_v1_12_AE), 1);
		//memset(&AE, 0, sizeof(AE));
		AE->rn = ONEM2M_AE_RESOURCENAME;
		AE->rr = "true";
		char poa[128] = "";
		snprintf(poa, sizeof(poa), "mqtt:///oneM2M/req/%s/%s", ONEM2M_SERVICENAME, ONEM2M_AE_RESOURCENAME);
		AE->poa = poa;
		AE->api = "middleware"; // pre-registered device name
		pc = (void *)AE;
		}
		break;
	case VERIFICATION_CONTAINER_CREATE:
		{
		resourceType = container;
		operation = CREATE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, ONEM2M_AE_RESOURCENAME);
		oneM2M_v1_12_container* container = (oneM2M_v1_12_container *)calloc(sizeof(oneM2M_v1_12_container), 1);
		//memset(&container, 0, sizeof(container));
		container->rn = NAME_CONTAINER;
		pc = (void *)container;
		}
		break;
	case VERIFICATION_CONTENTINSTANCE_CREATE:
		{
		resourceType = contentInstance;
		operation = CREATE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_CONTAINER, ONEM2M_TO, ONEM2M_AE_RESOURCENAME, NAME_CONTAINER);
		oneM2M_v1_12_contentInstance* contentInstance = (oneM2M_v1_12_contentInstance *)calloc(sizeof(oneM2M_v1_12_contentInstance), 1);
		//memset(&contentInstance, 0, sizeof(contentInstance));
		contentInstance->cnf = "text";
		contentInstance->con = "45";
		pc = (void *)contentInstance;
		}
		break;
	case VERIFICATION_MGMTCMD_CREATE:
		{
		resourceType = mgmtCmd;
		operation = CREATE;
		fr = APP_AEID;
		memcpy(to, ONEM2M_TO, strlen(ONEM2M_TO));
		oneM2M_v1_12_mgmtCmd* mgmtCmd = (oneM2M_v1_12_mgmtCmd *)calloc(sizeof(oneM2M_v1_12_mgmtCmd), 1);
		//memset(&mgmtCmd, 0, sizeof(mgmtCmd));
		mgmtCmd->rn = NAME_MGMTCMD;
		mgmtCmd->cmt = "1";
		mgmtCmd->ext = mNodeLink;
		pc = (void *)mgmtCmd;
		}
		break;
	case VERIFICATION_LOCATIONPOLICY_CREATE:
		{
		resourceType = locationPolicy;
		operation = CREATE;
		fr = mAEID;
		memcpy(to, ONEM2M_TO, strlen(ONEM2M_TO));
		oneM2M_v1_12_locationPolicy* locationPolicy = (oneM2M_v1_12_locationPolicy *)calloc(sizeof(oneM2M_v1_12_locationPolicy), 1);
		locationPolicy->rn = NAME_LOCATIONPOLICY;
		locationPolicy->lon = "cnt-location";
		locationPolicy->lit = "1";
		locationPolicy->los = "2";
		pc = (void *)locationPolicy;
		}
		break;
	case VERIFICATION_ACCESSCONTROLPOLICY_CREATE:
		{
		resourceType = accessControlPolicy;
		operation = CREATE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, ONEM2M_AE_RESOURCENAME);
		oneM2M_v1_12_accessControlPolicy* accessControlPolicy = (oneM2M_v1_12_accessControlPolicy *)calloc(sizeof(oneM2M_v1_12_accessControlPolicy), 1);
		accessControlPolicy->rn = NAME_ACCESSCONTROLPOLICY;
		snprintf(buffer, sizeof(buffer), "<acr><acor>%s</acor><acop>63</acop></acr>", mAEID);
		accessControlPolicy->pv = buffer;
		//memset(buffer, 0, sizeof(buffer));
		accessControlPolicy->pvs = buffer;
		pc = (void *)accessControlPolicy;
		}
		break;

	// UPDATE
	case VERIFICATION_NODE_UPDATE:
		{
		resourceType = node;
		operation = UPDATE;
		fr = APP_AEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_NODE);
		oneM2M_v1_12_node* node = (oneM2M_v1_12_node *)calloc(sizeof(oneM2M_v1_12_node), 1);
		pc = (void *)node;
		}
		break;
	case VERIFICATION_REMOTECSE_UPDATE:
		{
		resourceType = remoteCSE;
		operation = UPDATE;
		fr = ""; // registered CSE-ID
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_REMOTECSE);
		oneM2M_v1_12_remoteCSE* remoteCSE = (oneM2M_v1_12_remoteCSE *)calloc(sizeof(oneM2M_v1_12_remoteCSE), 1);
		remoteCSE->acpi = "";
		remoteCSE->nl = "";
		pc = (void *)remoteCSE;
		}
		break;
	case VERIFICATION_AE_UPDATE:
		{
		resourceType = AE;
		operation = UPDATE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, ONEM2M_AE_RESOURCENAME);
		oneM2M_v1_12_AE* AE = (oneM2M_v1_12_AE *)calloc(sizeof(oneM2M_v1_12_AE), 1);
		AE->poa = "http://";
		pc = (void *)AE;
		}
		break;
	case VERIFICATION_CONTAINER_UPDATE:
		{
		resourceType = container;
		operation = UPDATE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_CONTAINER, ONEM2M_TO, ONEM2M_AE_RESOURCENAME, NAME_CONTAINER);
		oneM2M_v1_12_container* container = (oneM2M_v1_12_container *)calloc(sizeof(oneM2M_v1_12_container), 1);
		container->lbl = "lbl";
		pc = (void *)container;
		}
		break;
	case VERIFICATION_MGMTCMD_UPDATE:
		{
		resourceType = mgmtCmd;
		operation = UPDATE;
		fr = APP_AEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_MGMTCMD);
		oneM2M_v1_12_mgmtCmd* mgmtCmd = (oneM2M_v1_12_mgmtCmd *)calloc(sizeof(oneM2M_v1_12_mgmtCmd), 1);
		mgmtCmd->dc = "test";
		pc = (void *)mgmtCmd;
		}
		break;
	case VERIFICATION_LOCATIONPOLICY_UPDATE:
		{
		resourceType = locationPolicy;
		operation = UPDATE;
		fr = APP_AEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_LOCATIONPOLICY);
		oneM2M_v1_12_locationPolicy* locationPolicy = (oneM2M_v1_12_locationPolicy *)calloc(sizeof(oneM2M_v1_12_locationPolicy), 1);
		locationPolicy->los = "1"; // locationSource : Network_based
		pc = (void *)locationPolicy;
		}
		break;
	case VERIFICATION_ACCESSCONTROLPOLICY_UPDATE:
		{
		resourceType = accessControlPolicy;
		operation = UPDATE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_CONTAINER, ONEM2M_TO, ONEM2M_AE_RESOURCENAME, NAME_ACCESSCONTROLPOLICY);
		oneM2M_v1_12_accessControlPolicy* accessControlPolicy = (oneM2M_v1_12_accessControlPolicy *)calloc(sizeof(oneM2M_v1_12_accessControlPolicy), 1);
		snprintf(buffer, sizeof(buffer), "<acr><acor>%s</acor><acop>63</acop></acr>", mAEID);
		accessControlPolicy->pv = buffer;
		//memset(buffer, 0, sizeof(buffer));
		accessControlPolicy->pvs = buffer;
		pc = (void *)accessControlPolicy;
		}
		break;

	// DELETE
	case VERIFICATION_NODE_DELETE:
		{
		resourceType = node;
		operation = DELETE;
		fr = APP_AEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_NODE);
		}
		break;
	case VERIFICATION_REMOTECSE_DELETE:
		{
		resourceType = remoteCSE;
		operation = DELETE;
		fr = ""; // registered CSE-ID
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_REMOTECSE);
		}
		break;
	case VERIFICATION_AE_DELETE:
		{
		resourceType = AE;
		operation = DELETE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, ONEM2M_AE_RESOURCENAME);
		}
		break;
	case VERIFICATION_CONTAINER_DELETE:
		{
		resourceType = container;
		operation = DELETE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_CONTAINER, ONEM2M_TO, ONEM2M_AE_RESOURCENAME, NAME_CONTAINER);
		}
		break;
	case VERIFICATION_MGMTCMD_DELETE:
		{
		resourceType = mgmtCmd;
		operation = DELETE;
		fr = APP_AEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_MGMTCMD);
		}
		break;
	case VERIFICATION_LOCATIONPOLICY_DELETE:
		{
		resourceType = locationPolicy;
		operation = DELETE;
		fr = APP_AEID;
		snprintf(to, sizeof(to), TO_AE, ONEM2M_TO, NAME_LOCATIONPOLICY);
		}
		break;
	case VERIFICATION_ACCESSCONTROLPOLICY_DELETE:
		{
		resourceType = accessControlPolicy;
		operation = DELETE;
		fr = mAEID;
		snprintf(to, sizeof(to), TO_CONTAINER, ONEM2M_TO, ONEM2M_AE_RESOURCENAME, NAME_ACCESSCONTROLPOLICY);
		}
		break;
#else
	// RETRIEVE
	case VERIFICATION_CSEBASE_RETRIEVE:
		{
		resourceType = CSEBase;
		operation = RETRIEVE;
		sprintf(to, ONEM2M_TO);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_CSEBase, pCSEBase);
		pCSEBase->ni = ONEM2M_NODEID;
		pc = (void *)pCSEBase;
		}
		break;

	// CREATE
	case VERIFICATION_NODE_CREATE:
		{
		resourceType = node;
		operation = CREATE;
		sprintf(to, ONEM2M_TO);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_node, pNode);
		pNode->ni = ONEM2M_NODEID;
		sprintf(buffer, NAME_MGA, mClientID);
		pNode->mga = buffer;
		pc = (void *)pNode;
		}
		break;
	case VERIFICATION_REMOTECSE_CREATE:
		{
		resourceType = remoteCSE;
		operation = CREATE;
		sprintf(to, ONEM2M_TO);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_remoteCSE, pRemoteCSE);
		pRemoteCSE->cst = "3";
		pRemoteCSE->ni = ONEM2M_NODEID;
		pRemoteCSE->nm = ONEM2M_NODEID;
		pRemoteCSE->passCode = ONEM2M_PASSCODE;
//		sprintf(buffer, , ONEM2M_NODEID);
//		pRemoteCSE->poa = buffer;
		pRemoteCSE->rr = "true";
		pRemoteCSE->nl = mNodeLink;
		pc = (void *)pRemoteCSE;
		}
		break;
	case VERIFICATION_CONTAINER_CREATE:
		{
		resourceType = container;
		operation = CREATE;
		sprintf(to, TO_REMOTECSE, ONEM2M_TO, mRemoteCSEResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_container, pContainer);
		pContainer->ni = ONEM2M_NODEID;
//		sprintf(buffer, NAME_CONTAINER, ONEM2M_NODEID);
		pContainer->nm = NAME_CONTAINER;
		pContainer->dKey = mDeviceKey;
		pContainer->lbl = "con";
		pc = (void *)pContainer;
		}
		break;
	case VERIFICATION_MGMTCMD_CREATE:
		{
		resourceType = mgmtCmd;
		operation = CREATE;
		sprintf(to, ONEM2M_TO);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_mgmtCmd, pMgmtCmd);
		pMgmtCmd->ni = ONEM2M_NODEID;
		sprintf(buffer, NAME_MGMTCMD, ONEM2M_NODEID, "mgmtCmd_01");
		pMgmtCmd->nm = buffer;
		pMgmtCmd->dKey = mDeviceKey;
		pMgmtCmd->cmt = "sensor_1";
		pMgmtCmd->exe = "false";
		pMgmtCmd->ext = mNodeLink;
		pMgmtCmd->lbl = ONEM2M_NODEID;
		pc = (void *)pMgmtCmd;
		}
		break;
	case VERIFICATION_CONTENTINSTANCE_CREATE:
		{
		resourceType = contentInstance;
		operation = CREATE;
		sprintf(to, TO_CONTAINER, ONEM2M_TO, mRemoteCSEResourceName, mContainerResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_contentInstance, pContentInstance);
		pContentInstance->ni = ONEM2M_NODEID;
		pContentInstance->dKey = mDeviceKey;
//		pContentInstance->cnf = "LoRa/Sensor";
//		pContentInstance->con = "{\"time\" : \"20000000\", \"value\" : \"500\"}";		//getLoRaInstance();
		pContentInstance->cnf = "text";
		pContentInstance->con = "45";
		pc = (void *)pContentInstance;
		}
		break;
	case VERIFICATION_LOCATIONPOLICY_CREATE:
		{
		resourceType = locationPolicy;
		operation = CREATE;
		sprintf(to, ONEM2M_TO);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_locationPolicy, pLocationPolicy);
		pLocationPolicy->ni = ONEM2M_NODEID;
		sprintf(buffer, NAME_LOCATIONPOLICY, ONEM2M_NODEID);
		pLocationPolicy->nm = buffer;
		pLocationPolicy->dKey = mDeviceKey;
		pLocationPolicy->los = "2";
		pc = (void *)pLocationPolicy;
		}
		break;
	case VERIFICATION_AE_CREATE:
		{
		resourceType = AE;
		operation = CREATE;
		sprintf(to, TO_REMOTECSE, ONEM2M_TO, mRemoteCSEResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_AE, pAE);
		pAE->ni = ONEM2M_NODEID;
		pAE->dKey = mDeviceKey;
		pAE->api= "1.2.481.1.0001.002.1234";
		sprintf(buffer, NAME_AE, ONEM2M_NODEID);
		pAE->apn= buffer;
		pc = (void *)pAE;
		}
		break;
	case VERIFICATION_AREANWKINFO_CREATE:
		{
		resourceType = mgmtObj;
		operation = CREATE;
		sprintf(to, TO_NODE, ONEM2M_TO, ONEM2M_NODEID);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_areaNwkInfo, pAreaNwkInfo);
		pAreaNwkInfo->ni = ONEM2M_NODEID;
		sprintf(buffer, NAME_AREANWKINFO, ONEM2M_NODEID);
		pAreaNwkInfo->nm = buffer;
		pAreaNwkInfo->dKey = mDeviceKey;
		pAreaNwkInfo->mgd = "1004";
		pAreaNwkInfo->ant = "type";
		pAreaNwkInfo->ldv = "";
		pc = (void *)pAreaNwkInfo;
		}
		break;

	// UPDATE
	case VERIFICATION_AREANWKINFO_UPDATE:
		{
		resourceType = mgmtObj;
		operation = UPDATE;
		sprintf(to, TO_AREANWKINFO, ONEM2M_TO, ONEM2M_NODEID, mAreaNwkInfoResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_areaNwkInfo, pAreaNwkInfo);
		pAreaNwkInfo->ni = ONEM2M_NODEID;
		sprintf(buffer, NAME_AREANWKINFO, ONEM2M_NODEID);
		pAreaNwkInfo->nm = buffer;
		pAreaNwkInfo->dKey = mDeviceKey;
		pAreaNwkInfo->ant = "type2";
		pAreaNwkInfo->ldv = "1";
		pc = (void *)pAreaNwkInfo;
		}
		break;
	case VERIFICATION_AE_UPDATE:
		{
		resourceType = AE;
		operation = UPDATE;
		sprintf(to, TO_AE, ONEM2M_TO, mRemoteCSEResourceName, mAEResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_AE, pAE);
		pAE->ni = ONEM2M_NODEID;
		pAE->dKey = mDeviceKey;
		sprintf(buffer, "%s_AE_02", ONEM2M_NODEID);
		pAE->apn= buffer;
		pc = (void *)pAE;
		}
		break;
	case VERIFICATION_LOCATIONPOLICY_UPDATE:
		{
		resourceType = locationPolicy;
		operation = UPDATE;
		sprintf(to, TO_LOCATIONPOLICY, ONEM2M_TO, mLocationPolicyResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_locationPolicy, pLocationPolicy);
		pLocationPolicy->ni = ONEM2M_NODEID;
		pLocationPolicy->dKey = mDeviceKey;
		pLocationPolicy->los = "3";
		pLocationPolicy->lbl = ONEM2M_NODEID;
		pc = (void *)pLocationPolicy;
		}
		break;
	case VERIFICATION_MGMTCMD_UPDATE:
		{
		resourceType = mgmtCmd;
		operation = UPDATE;
		sprintf(to, TO_MGMTCMD, ONEM2M_TO, mMgmtCmdResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_mgmtCmd, pMgmtCmd);
		pMgmtCmd->ni = ONEM2M_NODEID;
//		pMgmtCmd->dKey = mDeviceKey;
		pMgmtCmd->uKey = UKEY;
		pMgmtCmd->exe = "true";
//		pMgmtCmd->lbl = ONEM2M_NODEID;
		pMgmtCmd->ext = mNodeLink;
		pc = (void *)pMgmtCmd;
		}
		break;
	case VERIFICATION_CONTAINER_UPDATE:
		{
		resourceType = container;
		operation = UPDATE;
		sprintf(to, TO_CONTAINER, ONEM2M_TO, mRemoteCSEResourceName, mContainerResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_container, pContainer);
		pContainer->ni = ONEM2M_NODEID;
		pContainer->dKey = mDeviceKey;
		pContainer->lbl = "event";
		pc = (void *)pContainer;
		}
		break;
	case VERIFICATION_REMOTECSE_UPDATE:
		{
		resourceType = remoteCSE;
		operation = UPDATE;
		sprintf(to, TO_REMOTECSE, ONEM2M_TO, mRemoteCSEResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_remoteCSE, pRemoteCSE);
		pRemoteCSE->ni = ONEM2M_NODEID;
		pRemoteCSE->dKey = mDeviceKey;
		pc = (void *)pRemoteCSE;
		}
		break;
	case VERIFICATION_NODE_UPDATE:
		{
		resourceType = node;
		operation = UPDATE;
		sprintf(to, TO_NODE, ONEM2M_TO, ONEM2M_NODEID);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_node, pNode);
		pNode->ni = ONEM2M_NODEID;
		pNode->dKey = mDeviceKey;
		pNode->hcl = mHostCSELink;
		pc = (void *)pNode;
		}
		break;

	// DELETE
	case VERIFICATION_AREANWKINFO_DELETE:
		{
		resourceType = mgmtObj;
		operation = DELETE;
		sprintf(to, TO_AREANWKINFO, ONEM2M_TO, ONEM2M_NODEID, mAreaNwkInfoResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_areaNwkInfo, pAreaNwkInfo);
		pAreaNwkInfo->ni = ONEM2M_NODEID;
		pAreaNwkInfo->dKey = mDeviceKey;
		pc = (void *)pAreaNwkInfo;
		}
		break;
	case VERIFICATION_AE_DELETE:
		{
		resourceType = AE;
		operation = DELETE;
		sprintf(to, TO_AE, ONEM2M_TO, mRemoteCSEResourceName, mAEResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_AE, pAE);
		pAE->ni = ONEM2M_NODEID;
		pAE->dKey = mDeviceKey;
		pc = (void *)pAE;
		}
		break;
	case VERIFICATION_LOCATIONPOLICY_DELETE:
		{
		resourceType = locationPolicy;
		operation = DELETE;
		sprintf(to, TO_LOCATIONPOLICY, ONEM2M_TO, mLocationPolicyResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_locationPolicy, pLocationPolicy);
		pLocationPolicy->ni = ONEM2M_NODEID;
		pLocationPolicy->dKey = mDeviceKey;
		pc = (void *)pLocationPolicy;
		}
		break;
	case VERIFICATION_CONTENTINSTANCE_DELETE:
		{
		resourceType = contentInstance;
		operation = DELETE;
		sprintf(to, TO_CONTENTINSTANCE, ONEM2M_TO, mRemoteCSEResourceName, mContainerResourceName, mContentInstanceResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_contentInstance, pContentInstance);
		pContentInstance->ni = ONEM2M_NODEID;
		pContentInstance->dKey = mDeviceKey;
		pc = (void *)pContentInstance;
		}
		break;
	case VERIFICATION_MGMTCMD_DELETE:
		{
		resourceType = mgmtCmd;
		operation = DELETE;
		sprintf(to, TO_MGMTCMD, ONEM2M_TO, mMgmtCmdResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_mgmtCmd, pMgmtCmd);
		pMgmtCmd->ni = ONEM2M_NODEID;
		pMgmtCmd->dKey = mDeviceKey;
		pc = (void *)pMgmtCmd;
		}
		break;
	case VERIFICATION_CONTAINER_DELETE:
		{
		resourceType = container;
		operation = DELETE;
		sprintf(to, TO_CONTAINER, ONEM2M_TO, mRemoteCSEResourceName, mContainerResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_container, pContainer);
		pContainer->ni = ONEM2M_NODEID;
		pContainer->dKey = mDeviceKey;
		pc = (void *)pContainer;
		}
		break;
	case VERIFICATION_REMOTECSE_DELETE:
		{
		resourceType = remoteCSE;
		operation = DELETE;
		sprintf(to, TO_REMOTECSE, ONEM2M_TO, mRemoteCSEResourceName);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_remoteCSE, pRemoteCSE);
		pRemoteCSE->ni = ONEM2M_NODEID;
		pRemoteCSE->dKey = mDeviceKey;
		pc = (void *)pRemoteCSE;
		}
		break;
	case VERIFICATION_NODE_DELETE:
		{
		resourceType = node;
		operation = DELETE;
		sprintf(to, TO_NODE, ONEM2M_TO, ONEM2M_NODEID);

		ONEM2M_DEF_N_MEM_ALLOC(oneM2M_node, pNode);
		pNode->ni = ONEM2M_NODEID;
		pNode->dKey = mDeviceKey;
		pc = (void *)pNode;
		}
		break;
	default:
		mStep = VERIFICATION_END;
		break;
#endif
	}

	if(mStep < VERIFICATION_END) {
		if(pc != NULL) {
#ifdef ONEM2M_V1_12
			tp_oneM2M_V1_12_Request(resourceType, operation, fr, to, ri, pc);
#else
			tp_oneM2M_V1_Request(resourceType, operation, to, ri, pc);
#endif
			ONEM2M_MEM_FREE(pc);
		}
	}
}

void SDK_Verification_SimpleXmlParser(char* payload, char* name, char* value, int isPC) {
    char start[10];
    char end[10];
    char* pl = payload;
    memset(start, 0, sizeof(start));
    memset(end, 0, sizeof(end));

    if(isPC) {
        pl = strstr(payload, "<pc>");
    }

    snprintf(start, sizeof(start), "<%s>", name);
    snprintf(end, sizeof(end), "</%s>", name);
    char* s = strstr(pl, start) + strlen(start);
    char* e = strstr(pl, end);

    if(s && e) {
        memcpy(value, s, e-s);
        SKTDebugPrint(LOG_LEVEL_INFO, "[%s : %s]", name, value);
    }
}

void cbMQTTConnected(int result) {
	SKTDebugPrint(LOG_LEVEL_INFO, "cbMQTTConnected() result : %d", result);
}

void cbMQTTSubscribed(int result) {
	SKTDebugPrint(LOG_LEVEL_INFO, "cbMQTTSubscribed() result : %d", result);
    DoVerificationStep();
}

void cbMQTTDisconnected(int result) {
	SKTDebugPrint(LOG_LEVEL_INFO, "cbMQTTDisconnected() result : %d", result);
}

void cbMQTTConnectionLost(char* cause) {
	SKTDebugPrint(LOG_LEVEL_INFO, "cbMQTTConnectionLost() result : %s", cause);
}

void cbMQTTMessageDelivered(int token) {
	SKTDebugPrint(LOG_LEVEL_INFO, "cbMQTTMessageDelivered() token : %d, step : %d", token, mStep);
}

void cbMQTTMessageArrived(char* topic, char* msg, int msgLen) {
	SKTDebugPrint(LOG_LEVEL_INFO, "cbMQTTMessageArrived() topic : %s, step : %d", topic, mStep);

	char* payload = (char*)calloc(msgLen + 1, sizeof(char));
	memcpy(payload, msg, msgLen);
	SKTDebugPrint(LOG_LEVEL_INFO, "payload : %s", payload);

	char rsc[DEFAULT_BUF_SIZE];
	memset(rsc, 0, DEFAULT_BUF_SIZE);
	SDK_Verification_SimpleXmlParser(payload, ATTR_RSC, rsc, 0);
	char rsm[DEFAULT_BUF_SIZE];
	memset(rsm, 0, DEFAULT_BUF_SIZE);
	SDK_Verification_SimpleXmlParser(payload, ATTR_RSM, rsm, 0);

#ifdef ONEM2M_V1_12
	switch(mStep) {
		case VERIFICATION_CSEBASE_RETRIEVE:
			mStep = VERIFICATION_NODE_CREATE;
			break;
		case VERIFICATION_NODE_CREATE:
			SDK_Verification_SimpleXmlParser(payload, ATTR_RI, mNodeLink, 1);
			if(strlen(mNodeLink) == 0) {
				mStep = VERIFICATION_END;
			} else {
				mStep = VERIFICATION_AE_CREATE;
			}
			break;
	   case VERIFICATION_AE_CREATE:
		   SDK_Verification_SimpleXmlParser(payload, ATTR_AEI, mAEID, 1);
			if(strlen(mAEID) == 0) {
				mStep = VERIFICATION_END;
			} else {
				mStep = VERIFICATION_CONTAINER_CREATE;
			}
			break;
		case VERIFICATION_CONTAINER_CREATE:
			mStep = VERIFICATION_MGMTCMD_CREATE;
			break;
		case VERIFICATION_MGMTCMD_CREATE:
			mStep = VERIFICATION_ACCESSCONTROLPOLICY_CREATE;
			break;
		case VERIFICATION_LOCATIONPOLICY_CREATE:
			mStep = VERIFICATION_CONTENTINSTANCE_CREATE;
			break;
		case VERIFICATION_ACCESSCONTROLPOLICY_CREATE:
			mStep = VERIFICATION_LOCATIONPOLICY_CREATE;
			break;
		case VERIFICATION_CONTENTINSTANCE_CREATE:
			mStep = VERIFICATION_NODE_UPDATE;
			break;
		case VERIFICATION_NODE_UPDATE:
			mStep = VERIFICATION_AE_UPDATE;
			break;
		case VERIFICATION_REMOTECSE_UPDATE:
			// TODO
			break;
		case VERIFICATION_AE_UPDATE:
			mStep = VERIFICATION_CONTAINER_UPDATE;
			break;
		case VERIFICATION_CONTAINER_UPDATE:
			mStep = VERIFICATION_MGMTCMD_UPDATE;
			break;
		case VERIFICATION_MGMTCMD_UPDATE:
			mStep = VERIFICATION_LOCATIONPOLICY_UPDATE;
			break;
		case VERIFICATION_LOCATIONPOLICY_UPDATE:
			mStep = VERIFICATION_ACCESSCONTROLPOLICY_UPDATE;
			break;
		case VERIFICATION_ACCESSCONTROLPOLICY_UPDATE:
			mStep = VERIFICATION_LOCATIONPOLICY_DELETE;
			break;
		case VERIFICATION_NODE_DELETE:
			mStep = VERIFICATION_END;
			break;
		case VERIFICATION_REMOTECSE_DELETE:
			break;
		case VERIFICATION_AE_DELETE:
			mStep = VERIFICATION_NODE_DELETE;
			break;
		case VERIFICATION_CONTAINER_DELETE:
			mStep = VERIFICATION_ACCESSCONTROLPOLICY_DELETE;
			break;
		case VERIFICATION_MGMTCMD_DELETE:
			mStep = VERIFICATION_CONTAINER_DELETE;
			break;
		case VERIFICATION_LOCATIONPOLICY_DELETE:
			mStep = VERIFICATION_MGMTCMD_DELETE;
			break;
		case VERIFICATION_ACCESSCONTROLPOLICY_DELETE:
			mStep = VERIFICATION_AE_DELETE;
			break;
		default:
			break;
	}
#else
	switch(mStep) {
		case VERIFICATION_NODE_CREATE:
			{
			SDK_Verification_SimpleXmlParser(payload, ATTR_RI, mNodeLink, 1);
			SDK_Verification_SimpleXmlParser(payload, ATTR_HCL, mHostCSELink, 1);
			if(strlen(mNodeLink) == 0) {
				mStep = VERIFICATION_END;
			}
			}
			break;
		case VERIFICATION_REMOTECSE_CREATE:
			{
			SKTDebugPrint(LOG_LEVEL_INFO, "mDeviceKey = 0x%x", mDeviceKey);
			SDK_Verification_SimpleXmlParser(payload, ATTR_DKEY, mDeviceKey, 0);
			SDK_Verification_SimpleXmlParser(payload, ATTR_RN, mRemoteCSEResourceName, 0);
			if(strlen(mDeviceKey) == 0 || strlen(mRemoteCSEResourceName) == 0) {
				mStep = VERIFICATION_END;
			}
			SKTDebugPrint(LOG_LEVEL_INFO, "mDeviceKey = %s", mDeviceKey);
			}
			break;
		case VERIFICATION_CONTAINER_CREATE:
			{
			SDK_Verification_SimpleXmlParser(payload, ATTR_RN, mContainerResourceName, 1);
			if(strlen(mContainerResourceName) == 0) {
				mStep = VERIFICATION_END;
			}
			}
			break;
		case VERIFICATION_MGMTCMD_CREATE:
			{
			SDK_Verification_SimpleXmlParser(payload, ATTR_RN, mMgmtCmdResourceName, 1);
			if(strlen(mMgmtCmdResourceName) == 0) {
				mStep = VERIFICATION_END;
			}
			}
			break;
		case VERIFICATION_CONTENTINSTANCE_CREATE:
			{
			SDK_Verification_SimpleXmlParser(payload, ATTR_RN, mContentInstanceResourceName, 1);
			if(strlen(mContentInstanceResourceName) == 0) {
				mStep = VERIFICATION_END;
			}
			}
			break;
		case VERIFICATION_LOCATIONPOLICY_CREATE:
			{
			SDK_Verification_SimpleXmlParser(payload, ATTR_RN, mLocationPolicyResourceName, 1);
			if(strlen(mLocationPolicyResourceName) == 0) {
				mStep = VERIFICATION_END;
			}
			}
			break;
		case VERIFICATION_AE_CREATE:
			{
			SDK_Verification_SimpleXmlParser(payload, ATTR_RN, mAEResourceName, 1);
			if(strlen(mAEResourceName) == 0) {
				mStep = VERIFICATION_END;
			}
			}
			break;
		case VERIFICATION_AREANWKINFO_CREATE:
			{
			SDK_Verification_SimpleXmlParser(payload, ATTR_RN, mAreaNwkInfoResourceName, 1);
			if(strlen(mAreaNwkInfoResourceName) == 0) {
				mStep = VERIFICATION_END;
			}
			}
			break;
		default:
			break;
	}

	mStep = static_cast<VERIFICATION_STEP>((int)mStep + 1);
#endif

	SKTDebugPrint(LOG_LEVEL_INFO, "=============================================================================");
	free(payload);
	DoVerificationStep();
}

int SDKVerificationMain()
{
	SKTDebugInit(True, LOG_LEVEL_INFO, stdout);

	SKTDebugPrint(LOG_LEVEL_INFO, "");
	SKTDebugPrint(LOG_LEVEL_INFO, "==========================================================================");
	SKTDebugPrint(LOG_LEVEL_INFO, "*** SDKVerification example ***");
	SKTDebugPrint(LOG_LEVEL_INFO, "==========================================================================");

	int rc = 0;

	// set callbacks
	rc = tpMQTTSetCallbacks(cbMQTTConnected, cbMQTTSubscribed, cbMQTTDisconnected, cbMQTTConnectionLost, cbMQTTMessageDelivered, cbMQTTMessageArrived);
	if(rc != 0) {
		SKTDebugPrint(LOG_LEVEL_DEBUG, "#### tpMQTTSetCallbacks failed. rc = %d", rc);
		goto exit;
	}
	SKTDebugPrint(LOG_LEVEL_DEBUG, "tpMQTTSetCallbacks result : %d", rc);

	// create
	char subscribeTopic[TOPIC_SUBSCRIBE_SIZE][MQTT_TOPIC_MAX_LENGTH];
	memset(subscribeTopic, 0, sizeof(subscribeTopic));
	char publishTopic[MQTT_TOPIC_MAX_LENGTH] = "";
	snprintf(mClientID, sizeof(mClientID), "%s_%s", ACCOUNT_USER, ONEM2M_CLIENTID);
#ifdef ONEM2M_V1_12
    sprintf(subscribeTopic[0], TOPIC_SUBSCRIBE_REQ, ONEM2M_SERVICENAME, ONEM2M_AE_RESOURCENAME);
    sprintf(subscribeTopic[1], TOPIC_SUBSCRIBE_RES, ONEM2M_AE_RESOURCENAME, ONEM2M_SERVICENAME);
    sprintf(publishTopic, TOPIC_PUBLISH, ONEM2M_AE_RESOURCENAME, ONEM2M_SERVICENAME);
#else
	sprintf(subscribeTopic[0], TOPIC_SUBSCRIBE_REQ, mClientID);
	sprintf(subscribeTopic[1], TOPIC_SUBSCRIBE_RES, mClientID);
	sprintf(publishTopic, TOPIC_PUBLISH, mClientID, ONEM2M_CSEBASE);
#endif
	{
	char* st[] = {subscribeTopic[0], subscribeTopic[1]};

	int port = (!MQTT_ENABLE_SERVER_CERT_AUTH ? MQTT_PORT : MQTT_SECURE_PORT);
	rc = tpMQTTCreate(MQTT_HOST, port, MQTT_KEEP_ALIVE, ACCOUNT_USER, ACCOUNT_PASSWORD, MQTT_ENABLE_SERVER_CERT_AUTH, st, TOPIC_SUBSCRIBE_SIZE, publishTopic, mClientID);
	SKTDebugPrint(LOG_LEVEL_DEBUG, "tpMQTTCreate result : %d", rc);
	if(rc == 0) {
		while(mStep < VERIFICATION_END) {
			if(tpMQTTYield(1000) != 0)	// wait for seconds
			{
				wait_ms(500);
			}
		}
		tpMQTTDisconnect();
	}
	}

exit:
	tpMQTTDestory();
	return 0;
}

redpajama_set_name: RedPajamaGithub


text:
Arctic: The New Great Game Arena – India must keep its Foothold
Posted byAnil Chopra December 11, 2022 Posted inNow In NEWS, Security, Strategy and Policy, Warfare, WeaponsTags:anil chopra, Arctic, China, Europe, India, Russia, Startegy, USA
The Arctic region covers over one-sixth of the earth's landmass and is set to play an increasing role in shaping the course of world affairs. The still less explored region is rich in exploitable natural resources, especially gas and oil and marine living resources. It is estimated that the Arctic could be home to nearly 20 per cent of the world's oil and natural gas. The Arctic Ocean, around Earth's North Pole, is full of floating ice, with ridges up to 20 meters thick. Global industrialisation has raised temperatures because of increased carbon dioxide and other greenhouse gas emissions. Therefore, the glaciers are rapidly melting. The 2021 minimum sea ice extent was nearly 4.724 million square kilometres, which is around 1.6 million square kilometres lower than the long-term average. The Arctic sea ice reduction has been at a rate of almost 13 per cent per decade. At this rate, the Arctic could be ice-free in the summer by 2040. Melting ice will raise the sea level and submerge many island territories and coastal cities. So clearly, climate change and global warming are the main issues engaging the entire world.
Melting Ice and New Sea Routes
The shrinking of ice sheets is resulting in new water bodies getting created. Some of the countries surrounding the Arctic Ocean have started claiming these water bodies and want to exploit the resources, especially oil and natural gas. The melting ice is also creating more maritime trade routes. Normally they should be treated as international waterways, but the territorial claims may restrict open access. It could open a sea route in northern parts of Canada, connecting the Pacific and Atlantic oceans in the summer months. Similarly the Chinese are looking at an Arctic route to the Baltic States and Europe. The shortened sea routes would also reduce transportation costs.
The Arctic Council
Unlike Antarctica, which is uninhabited and administered by a treaty of 1959 that allows only peaceful activities, there is no such treaty covering the Arctic. The Arctic Council was set up in 1996 by the Ottawa declaration. It is a grouping that looks into issues faced by the Arctic countries and the residents of the Arctic. The United States, Canada, Denmark, Iceland, Norway, Sweden, Finland, and Russia are the eight countries having territory within the Arctic Circle. All are members of this council. The council provides for having countries with observer status. In 2011, the Council clarified its criteria for the admission of observers. The critical requirement was that the applicants must "recognise Arctic States' sovereignty, sovereign rights and jurisdiction in the Arctic" and "recognise that an extensive legal framework applies to the Arctic Ocean. The Himalayas are often considered the 'Third Pole' with the commonality of elements with the Arctic and Antarctic. It was thus important for India to have a foothold in all three. In May 2013, India became the 11th country which was made a permanent observer at the Arctic Council.
Thule American Air Base in Northern Greenland in 1966. Image Source: Time.com
Militarisation and the Arctic Cold War
Both Russia and the United States have for long placed weapons, including Russian nuclear deterrence, in the Arctic region. Both had Arctic military bases and had placed significant surveillance systems in the region. Effectively, the Arctic is already militarized. Russia has been operating nuclear-powered icebreakers in the Arctic for some time. The Arctic Military Environmental Cooperation (AMEC) agreement between Russia, the US and Norway did help decommission a significant number of former Soviet nuclear-powered submarines. The US also reduced the assets based in Alaska. Yet control over the Arctic by many countries, especially the US and Russia has begun a new Cold War. With the West and Russia drawing into a fresh showdown over Ukraine since 2014, the once cooperative approach has started breaking down.
Russian Nuclear Ice Breaker "Yamal". Image Source: Wikipedia
Arctic Sea Routes
Higher levels of ice melting due to global climate change have begun opening routes in the Arctic region, more so in summer months, and for longer periods of time. There are three main routes. The Northern Sea Route (NSR) along the arctic coast of Russia. Ice clears up here first and therefore is available for a longer duration. It also has the highest commercial potential. The route reduces the maritime distance between East Asia and Europe from 21,000 km via the Suez Canal to 12,800 km. It implies transit time saving by 10-15 days. NSR was used extensively for natural resource extraction and transportation during the Soviet Era. It was also used for military resupplies. In 2009, two German ships lead by a Russian icebreaker made the first commercial journey across the NSR from Busan in South Korea to Rotterdam in the Netherlands, establishing good commercial prospects.
Arctic Sea Routes. Image Source: transportgeography.org
The North West Passage (NWP), the sea route between the Atlantic and Pacific oceans crossing Canada's Arctic Archipelago began being used first in 2007. It may open for more regular use soon. While Canada claims it is an internal waterway, the United States and various European countries claim that it is an international strait and transit passage, and must allow free and unencumbered movement. This route between East Asia and Western Europe would be around 13,600 km vis-à-vis 24,000 km via the Panama Canal. But the parts of the route are just 15 metres (49 ft) deep, thus reducing viability. But the Chinese seem still interested in using this passage to Eastern USA as Panama Canal also has ship size and tonnage restrictions.
The Transpolar Sea Route (TSR) would use the central part of the Arctic to directly link the Strait of Bering and the Atlantic Ocean of Murmansk. This route is hypothetical as it involves ice-free conditions that are not yet observed. The Arctic Bridge linking Murmansk port in Russia to Narvik in Norway and further to Churchill port in Canada is mostly used for grain trade. Typically it can't be called a trans-Arctic route.
China – A New Player in the Arctic
As China grew into a significant power, it has been showing interest in the Arctic region. It has been building military and other capabilities to defend its interests in the region and has an aggressive Arctic policy. Denmark, backed by the U.S., refused China who offered to buy an old military base in Greenland and build an international airport. China's Arctic forays are being monitored and challenged by the U.S.
China released its official Arctic Policy paper in January 2018. It covers foreign relations with Arctic countries. China has interests in the Arctic to create infrastructure for research, military, and other purposes. It wants to exploit resources. It has plans for a Polar Silk Road, through the Arctic to help expedite global shipping delivery. China considers itself a "Near-Arctic State" and a major stakeholder in the Arctic. While many observer nations consider themselves as "near-Arctic" nations, China claims to be a continental state that is closest to the Arctic Circle. As far back as 1925 China had become a signatory of Spitsbergen, later called the Svalbard Treaty. The treaty allows members to engage in a certain amount of mining while recognising Norway's sovereignty.
China's Northern Sea Route. Image Source: businessinsider.com
China has set up a Polar Research Institute in Shanghai. They began Arctic expeditions in 1984. In 1996 China joined the International Arctic Science Committee. They have a series of research vessels including the Chinese polar icebreakers MV Xue Long. China built the Arctic Yellow River station in 2004. In 2018, Shanghai-based, COSCO Shipping Corporation Limited made eight transits through the Arctic between Europe and China. China insists that their one-fifth of the world's population must benefit from the Arctic resources. China spends more than the U.S. on Arctic research. China's "Polar Silk Road" is a joint initiative with Russia and was launched in 2018. Like Russia, China also wants to have nuclear-powered icebreakers in the Arctic, becoming only the second country to do so. Through the Arctic shipping route, the maritime shipping distance from Shanghai to Hamburg is around 7,000 kilometres shorter than the southern route through the Strait of Malacca and the Suez Canal.
Indian Presence and Interests
India has had a permanent Arctic research station in Svalbard Norway since July 2008. Named "Himadri", it is located within the International Arctic Research base, nearly 1,200 kilometres from the North Pole. The research is centred on monitoring of the fjord dynamics, glaciers, space weather, and carbon recycling, among many others. India is also looking at genetics, glaciology, geology, pollution in the atmosphere, and space weather among other fields. In 2014, India also established an underwater moored observatory "IndARC" at Kongsfjorden fjord, Svalbard. Svalbard is the northernmost year-round settlement on Earth, with a population of about 2,200. The scientific purpose is of finding linkages between the Arctic weather parameters and the southwest monsoon.
Svalbard Islands (Circled). Image Source: Wikipedia
India is a growing major power. It would like to be a significant player of any power structure that evolves in the Arctic region. It would also like to be part of the economic exploitation. India's "ONGC Videsh" has been interested in investing in Russia's Arctic Liquefied natural gas projects.
International North-South Transport Corridor (INSTC). Image Source: Wikipedia.
India released its Arctic policy in March 2022. It was titled 'India and the Arctic: building a partnership for sustainable development. The policy enumerated India's interests in scientific research, climate and environmental issues, economic and resource prospects, sea connectivity, and India's presence in the region. India is also looking at the Arctic sea lanes for improving connectivity to certain northern destinations. Ideally, India must connect with the Arctic sea routes using the already planned 7,200 kilometres long International North-South Transport Corridor (INSTC) multi-mode network of ship, rail, and road routes. It would move freight between India, Iran, Azerbaijan, Russia, Central Asia and Europe. The results showed transport costs were reduced by $2,500 per 15 tons of cargo. Other routes under consideration include Kazakhstan and Turkmenistan. Another option being explored is to have a Chennai-Vladivostok maritime corridor to reach closer to the Arctic.
The Arctic continues to lure researchers to venture northwards to where "the next great game" seems to evolve. Unlike the Antarctic, Arctic states already have ownership over most of the areas through the Law of the Sea regime. Yet the discussions of great power politics, competition and conflict in the Arctic are increasingly engaging the strategic community. Russia's Northern Fleet is strategically located covering the Arctic regions and has the most dominant position among all Arctic states. Interestingly the USA became an Arctic state because it had purchased Alaska from Russia for $7.2 million in 1867. Canada and Northern European states have a great stake and the U.S. will work closely with them. While China is claiming a "near-Arctic state" status, India is too far to make such claims. India would hope that intra-regional cooperation rather than conflict will flourish. But the global completion between USA, Russia and China is already becoming consequential. India must remain keenly engaged and keep a foothold in the Arctic. Its interests are more than just waiting and watching.
This article by the Author First Appeared in First Post in October 2022
Header Image Source: WWF
Published by Anil Chopra
I am the founder of Air Power Asia and a retired Air Marshal from the Indian Air Force. View more posts
British Roadblock in Tejas way to Argentina, and how New Delhi likely to fix it


Two Norwegian diplomats pulled off one of the most ambitious peace accords of our time – but few people know about it, said Brian Kite.
Kite, the chair of the theater department at UCLA, is directing L.A. Theatre Works' production of the Tony Award-winning play "Oslo" – the true story of back-channel negotiations between Israelis and Palestinians that led to the Oslo Accords in 1993. The play, which premieres Friday at the James Bridges Theater, will be recorded for radio as well as performed in front of a live audience. "Oslo" examines the conflict from a behind the scenes perspective, exploring the secret negotiations that occurred before the accords to understand what made such an unlikely peace agreement possible, Kite said.
People tend to think of issues like the Israeli-Palestinian conflict as large scale world affairs, but in reality, they're just human-to-human conflicts, Kite said. Such conflicts, he said, can be boiled down to disagreements between neighbors, and in "Oslo," it took Norwegian diplomats outside of the conflict to organize and mediate negotiations. Kite said "Oslo" considers both sides by humanizing the Israeli and Palestinian characters alike to help people understand the event by showing the fear, trust and love behind it.
The play takes a delicate political situation and explores the limits and possibilities of diplomacy, said Susan Loewenberg, the show's executive producing director. "Oslo" shows what can happen when leaders go beyond the constraints of rigid policies and norms and unite as people of goodwill, she said. It's also a portrait of the Norwegian diplomats who risked damaging their careers to push the boundaries of normal diplomatic behavior and make a breakthrough in the conflict, Loewenberg said. The risks they took regarding their careers helped to humanize them by emphasizing what was at stake, she said.
"These are people who have various skins in the game as it were, various political objectives and personal agendas at work, so you're getting a full-bodied look at their personalities, their inner personal issues," Loewenberg said.
Devon Sorvari, who plays Norwegian diplomat Mona Juul, said that performing a show recorded for radio can be freeing in terms of developing a character. She said talking into a microphone and staring out into the audience can be awkward at first, but allows the actors to be unconstrained by sets. However, Sorvari said the historical basis of the show grounds it in reality. While the play is a fictional rendering of what went on behind closed doors, Sorvari referred to videotapes of the real life Juul to emulate her accent, poise and professionalism.
Kite said "Oslo" remains relevant today, when updates of Israeli and Palestinian attacks and land occupations regularly fill the news. "Oslo" demonstrates that peace is in fact possible, he said. He added he wants to galvanize audiences to play their role in ending this conflict; "Oslo" shows that taking small steps is the only way to enact big change.